ENG Новый сайт

Расширенный поиск
[ Новые сообщения · Пользователи · Правила ]
SpaceEngine изнутри
SHWДата: Понедельник, 21.11.2011, 13:27 | Сообщение # 46
Строитель Миров
Группа: Команда SE
Нидерланды
Сообщений: 618
Награды: 10
Статус: Offline
diamond-square скорее рассчитан на CPU, чем на GPU. Вроде он позволяет оптимизировать ландшафт по количеству полигонов.

Win7 Pro x64
Intel Core2Quad 2.5GHz 4GiB RAM
NVidia GForce 9800 1 GiB
GV_FiQstДата: Вторник, 22.11.2011, 20:50 | Сообщение # 47
Строитель Миров
Группа: Команда SE
Украина
Сообщений: 1062
Награды: 3
Статус: Offline
Наткнулся на описание создания системы частиц.
кликнуть


AMD Phenom II X2 555 3200 MHz;
RAM 4GB 1333 Hz;
ATI Radeon HD 5670 1024 Mb;
ОС Win 7 tabulorasa edition 32 bit
SpaceEngineerДата: Среда, 23.11.2011, 22:41 | Сообщение # 48
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Quote (SHW)
использовать не квадратные текстуры патчей, а прямоугольные.

И получить дополнительные тормоза при перемещении камеры? Ведь эти текстуры придётся перегенерировать, если они понадобятся в полном разрешении.

Quote (GV_FiQst)
Нашел алгоритм «diamond-square» для построения фрактальных ландшафтов. я в этом мало чего смыслю но всеравно спрошу у SE лутше или хуже алгоритм создание ландшафтов?

diamond-square это построение сетки, меша, на ЦПУ. У меня же видюха генерирует текстуру, по которой потом быстро строится меш. Собираюсь построение меша тоже перенести на видюху, или вообще отказаться от него - смещать вершины в вершинном шейдере или сделать трассировку луча.


SHWДата: Четверг, 24.11.2011, 14:25 | Сообщение # 49
Строитель Миров
Группа: Команда SE
Нидерланды
Сообщений: 618
Награды: 10
Статус: Offline
Quote (SpaceEngineer)
И получить дополнительные тормоза при перемещении камеры? Ведь эти текстуры придётся перегенерировать, если они понадобятся в полном разрешении.

Они и так перегенерируются из-за переключения лодов. Так что не думаю, что большая разница будет. К тому же можно настраивать максимальный Aspect Ratio, чтобы они генерились с некоторым запасом. К тому же и на генерацию текстур тоже будет уходить несколько меньше времени, так как они будут в разы мельче. Вы же сами писали, что основная проблема на данный момент - большое потребление видеопамяти.


Win7 Pro x64
Intel Core2Quad 2.5GHz 4GiB RAM
NVidia GForce 9800 1 GiB
Trojan32Дата: Суббота, 26.11.2011, 20:02 | Сообщение # 50
Нет аватара
Космонавт
Группа: Пользователи
Российская Федерация
Сообщений: 49
Награды: 0
Статус: Offline
а быстрая загрузка ландшафта, как то вредит графике, генерации или нет? просто вызывает подозрение. Что то же должна она портить, иначе бы входила в стандартную не изменяемую функцию SE
SpaceEngineerДата: Воскресенье, 27.11.2011, 00:38 | Сообщение # 51
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Quote (Trojan32)
а быстрая загрузка ландшафта, как то вредит графике, генерации или нет? просто вызывает подозрение. Что то же должна она портить, иначе бы входила в стандартную не изменяемую функцию SE

Она должна ускорять генерацию ландшафта, но пока не работает как надо.


CrabДата: Воскресенье, 25.12.2011, 13:36 | Сообщение # 52
Первооткрыватель
Группа: Модераторы
Российская Федерация
Сообщений: 444
Награды: 1
Статус: Offline
Это я на тему генерации городов, и определения рельефа. не хочу Оффтопить в теме "Жизнь"
Конечно представляю как это может повлиять на производительность, но всё же. Может для определения рельефа использовать проверку на столкновения? Например. Опускать с орбиты обьекты. Которые останавливаются при столкновении, и сообщают свои координаты. Но представляю сколько их надо что бы определить весь рельеф хотя бы одного участочка.


Windows 8 x64
Intel Core2 Duo CPU E7500 2.93GHz.
4 GB RAM.
Nvidia GeForce 550Ti 1024mb.
SpaceEngineerДата: Воскресенье, 25.12.2011, 17:58 | Сообщение # 53
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Это всё самоочевидные вещи. Проблема в том, как определить, где расположить процедурный город. Он должен распологаться на сравнительно ровном участке поверхности, а не на горном хребте или на краю кратера. Но движок не может выдать величину типа "средняя ровность поверхности в радиусе 20 км" или "координаты ближайшей ровной площадки диамтером 20 км". Таки функций просто нет, а их реализация скорее всего будет очень медленно работающей.

Поэтому обычно делают наоборот - генерируют массив координат городов и передают его генератору поверхности, чтобы он генерировал поверхность так, чтобы в местах под города получались плоские площадки.


GV_FiQstДата: Воскресенье, 25.12.2011, 20:28 | Сообщение # 54
Строитель Миров
Группа: Команда SE
Украина
Сообщений: 1062
Награды: 3
Статус: Offline
Quote (SpaceEngineer)
Поэтому обычно делают наоборот - генерируют массив координат городов и передают его генератору поверхности, чтобы он генерировал поверхность так, чтобы в местах под города получались плоские площадки.


Но тогда это лишает нас возможностинаблюдать за эволюцией города (как он развивается с самого начала) и эволюцией всей рассы.


AMD Phenom II X2 555 3200 MHz;
RAM 4GB 1333 Hz;
ATI Radeon HD 5670 1024 Mb;
ОС Win 7 tabulorasa edition 32 bit
MibusДата: Воскресенье, 25.12.2011, 20:31 | Сообщение # 55
Первооткрыватель
Группа: Команда SE
Украина
Сообщений: 301
Награды: 0
Статус: Offline
Quote (SpaceEngineer)
Поэтому обычно делают наоборот - генерируют массив координат городов и передают его генератору поверхности, чтобы он генерировал поверхность так, чтобы в местах под города получались плоские площадки.


Если разрешать игрокам строить на планетах - такую проверку надо уметь делать.
Неужели обычное среднеквадратичное отклонение высот посчитать так долго?
Еще можно поступить наоборот, массив площадок для городов выдавать игроку при исследовании.


Win7 64 prof, Athlon II x2 256 3.3Mhz, RAM 4GB, GeForce GTS 250 512MB
GV_FiQstДата: Воскресенье, 25.12.2011, 20:55 | Сообщение # 56
Строитель Миров
Группа: Команда SE
Украина
Сообщений: 1062
Награды: 3
Статус: Offline
Quote (SpaceEngineer)
Это всё самоочевидные вещи. Проблема в том, как определить, где расположить процедурный город. Он должен распологаться на сравнительно ровном участке поверхности, а не на горном хребте или на краю кратера. Но движок не может выдать величину типа "средняя ровность поверхности в радиусе 20 км" или "координаты ближайшей ровной площадки диамтером 20 км". Таки функций просто нет, а их реализация скорее всего будет очень медленно работающей.


А просто взять точку (центр города) разместить ее в случайном месте на поверхности планеты потом провести через эту точку два перпендикулярно перетинающихся отрезков (диагоналей квадрата) потом из этих отрезков образовать квадрат и проверить на то чобы небыло резких изменений высоты рельефа. Как видно на рисунке 1) изменение высоты рельефа (разница между самой высокой точкой и самой низкой) составляет 25 м значит здесь город строить нельзя. а на рисунке 2) мы видим что изменение рельефа составляет 5 м. значит город строить можно. Надо установить колыбание размеров квадрата (25 км2 - 2500 км2). и надо задать движку таких городов еще одно. если город уже построен точку нельзя рзмещать ближе к другой точке как на 100 км.

Прикрепления: 3245112.png (27.7 Kb)


AMD Phenom II X2 555 3200 MHz;
RAM 4GB 1333 Hz;
ATI Radeon HD 5670 1024 Mb;
ОС Win 7 tabulorasa edition 32 bit
SpaceEngineerДата: Воскресенье, 25.12.2011, 21:14 | Сообщение # 57
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Quote (GV_FiQst)
А просто взять точку (центр города)

А на каком масштабе смотреть эти точки? На самом детальном уровне 16 расстояние между точками - 10 метров. Для площади города придётся учесть миллионы таких точек. На уровне 10 расстояние между точками порядка 100 метров. Можно учесть 4 точки, но уровень 10 не несёт информации о мелких деталях.


GV_FiQstДата: Воскресенье, 25.12.2011, 21:50 | Сообщение # 58
Строитель Миров
Группа: Команда SE
Украина
Сообщений: 1062
Награды: 3
Статус: Offline
Quote (SpaceEngineer)
А на каком масштабе смотреть эти точки?

На любом. Главное чтобы поверхность была относительно ровной. Ведь неимеет значения будет ли город на низине или на плато на висоте 1 км от уровня моря.

Добавлено (25.12.2011, 21:50)
---------------------------------------------

Quote (SpaceEngineer)
На самом детальном уровне 16 расстояние между точками - 10 метров.

Это уже не понял. про какой уровень идется?


AMD Phenom II X2 555 3200 MHz;
RAM 4GB 1333 Hz;
ATI Radeon HD 5670 1024 Mb;
ОС Win 7 tabulorasa edition 32 bit
CrabДата: Воскресенье, 25.12.2011, 22:20 | Сообщение # 59
Первооткрыватель
Группа: Модераторы
Российская Федерация
Сообщений: 444
Награды: 1
Статус: Offline
А может быть сделать так:
Генерировать город не на поверхности планеты, а генерировать(Именно генерировать, а не вставлять везде одинаковую) Поверхность (Подходящую под город). То есть её поверхность не надо проверять. Участок будет генерироваться специально под город. Он будет иметь радиус в несколько раз превосходящий город. А при приближении к краю этой поверхности сравнивать его с рельефом планеты.
Если сказал слишком непонятно могу переформулировать.

Кстати сейчас сижу Cinema 4D ковыряю. Нашёл плагин генерирующий города, заподного типа.
По поводу создания домов из блоков: Очень неэффективно. Легче задать их функцией добавив модификатор случайности. Ведь легче рендерить 1 коробку с текстурой, чем 200 Под-обьектов наложенных друг на друга.
Город и так очень тяжёлая для рендера структура. Тысячи домов... А если каждый дом будет состоять в среднем из 50 обьектов то уже резко возрастает нагрузка на железо. А ещё рассчитывать надо и графику.

Во!! А может для начала просто ввести в генератор рельефа участки под города? Подобно кратерам, и горам.


Windows 8 x64
Intel Core2 Duo CPU E7500 2.93GHz.
4 GB RAM.
Nvidia GeForce 550Ti 1024mb.
MibusДата: Понедельник, 26.12.2011, 18:01 | Сообщение # 60
Первооткрыватель
Группа: Команда SE
Украина
Сообщений: 301
Награды: 0
Статус: Offline
Есть еще один вариант - с собственно рельефом ничего не делать.
Генерить город как рельеф + дороги + дома.
Рельеф оставить как есть. Дороги - текстура нарисованная поверх рельефа.
Дома - вписываются в рельеф, нижняя поверхность дома всегда плоская - в общем
эмулировать строительство котлована - как и делают в строительстве.
Если цивилизация определена как развитая техногенная - срезать рельеф до плоскости.
Если цивилизация совсем нетехнологическая - набор пещер и гротов, являющийся частью ландшафта.
Если цивилизация развитая биологическая - пофиг в чем они там живут для движка это всеравно здание.

В общем все что нужно - режим сглаживания уже сгенеренного ландшафта и возможность вписывать
в него здания с плоским дном.


Win7 64 prof, Athlon II x2 256 3.3Mhz, RAM 4GB, GeForce GTS 250 512MB
Поиск:

>