Ага, видел в каком-то движке было так сделано. Надо попробовать...
бать-копать 0_о
Neptune
Ну не фига себе :)
Ты контент из каталога вручную наполнял?
Neptune, в моём было так сделано:)
если надо исходники намылю....
Это абсолютное Ъ! Снимаю шапку.
Хотя монолитные кольца Сатурна меня тоже слегка огорчили.
А как задаётся планетная поверхность?
Отличная работа, Neptune! Особенно впечатляет перелёт между планетами, прикольно)
По какому алгоритму сделаны планеты? Это P-BDAM ? geo mipmap (chunked lod) на кубе?
Кто-нибудь пробовал geo clipmap для отрисовки планет?
Каким образом делаешь текстурирование? Альбедо текстура препроцессится в мип-мап пирамиду и потом грузится блоками?
Если не сложно, поделитесь по каким именно публикациям\докам\сорцам делался рендеринг планет? А то в гугле глаза разбегается, много способов...
Класный двиг!
P.S.:
Несколько вопросов:
1. В каком формате хранятся координаты (float, double или что то еще)?
2. Сколько весят ресурсы движка.
3. Какой фпс(Извиняюсь, но я не заметил)
desss
>Ты контент из каталога вручную наполнял?
Не понял вопроса... 2 миллиона звёзд я и за 10 лет вручную не сделал бы...
netkeep
А у тебя что за двиг? Тоже планеты? Какой алгоритм используется? У меня...
Sbtrn. Devil
someone
...больше всего похоже на geo mipmap (chunked lod) на кубе. Берётся куб (точнее сфера, типа "надутого куба"), каждая грань - корень quad tree. Каждой грани соответствует большая текстура например 32768*32768 (текстура поверхности с водой в альфа-канале и 16-битная карта высот). В корене дерева - эта текстура, уменьшенная до размера например 512*512. Корень сплитится на 4 потомка, каждый из них тоже сплитится на 4 узла-потомка и так далее, если надо (это зависит от положения камеры и fov'а (угла зрения)). Первый уровень - 4 потомка корня - исходная текстура, уменьшенная до 1024*1024, и порезанная на тайлы 512*512 (4 штуки). Второй уровень - 2048*2048, - 16 узлов и 16 тайлов по 512*512, и так далее. 6 уровень - исходная детализация 32768*32768, 4096 тайлов. В принципе максимальная детализация не ограничена. При рендере отпределяется, какие узлы видны, какие нужно сплитить на потомки, нужные текстуры грузятся в параллельном потоке (а при записи демки в потоке рендерера). Из тайла карты высот делается нормал мапа для освещения и меш с геометрией этого куска поверхности. Наиболее давно использованные текстурыи меши удаляются из памяти (LRU-кэш).
Статьи только по атмосферам читал:)
Прибой94
Координаты звёзд, галактик и других статичных объектов хранятся во float для экономии памяти. Но при рендере например модели галактики вручную считается матрица в формате double и загружается через glLoadMatrixd. Стандартные средства OpenGL похоже юзают float, что приводит к потерям точности. Координаты планет вычисляются в зависимости от времени (уравнения небесной механики) в double. Координаты вершин в вершинном буфере ландшафта во float.
Из ресурсов самые прожорливые - текстуры планет, одна только Земля весит 6 гигов ("исходник" - Blue Marble Next Generation), все остальные планеты меньше гига. Все каталоги звёзд, галактик и скоплений около 100 метров. Модели галактик создаются по текстурам и кэшируются на диск, сейчас их там около 100 метров. Потом ещё сделаю кэширование моделей распределения звёзд в галактиках, они будут разрастаться неограниченно... И ещё ждут своего часа туманности:) В общем, если понизить детализацию Земли, можно всё на один DVD вместить...
Одна планета сама по себе, когда камера летает там, где всё уже подгружено, выдаёт 600-800 фпс, если вылететь в космос так, чтобы диск планеты был во весь экран - больше 1000. Вот звёзды тормозят, 150-300 фпс, там юзается плохая вещь - апдейт индексного буфера каждый кадр. Модели галактик из спрайтов рисуются в импостеры, поэтому больше 2000 фпс:) Если без импостеров, то 200-300.
Счётчик фпс не выводится при записи видео, он всё равно будет показывать одно и то же число - 30 кадров видео в секунду. Просто при записи используется покадровый счёт времени, а не по системным часам.
Моя машина: Core 2 Duo 3.5 ГГц, 4Gb RAM, GeForce 9800 GTX+ 1Gb
Neptune
Yep, я тоже подумал, что это тупой вопрос, но задал :)
Твоя работа внушает. Как газ в галактиках сделан?
Смахивает на Селесту, но эффекты, Галактики, планеты, поднимай челюсти с пола! =)
Neptune
неплохая работа :)
ты уже переплюнул многих разработчиков космо леталок :)
если сделаешь наподобии Елиты, только чтоб можно было по планетам ходить, по базам и в космических кораблях, то я тебе памятник поставлю :)
desss
Газ - всмысле светящееся вещество? Спрайтами, вперемешку с тёмными пылевыми спрайтами. А вообще есть задумка сделать балджи спиральных и эллиптические галактики примерно так же, как делаются атмосферы. А спрайты в диске галактики текстурировать той большой текстурой, которая видна издалека. И заюзать octree с лодами:)
RinoM
Ну немного плагиата из Селестии есть:)
Viaceslav(C)
Я хочу сделать адский онлайн шутер, где можно будет бомбить города ядерками с орбиты и взрывать планеты:)
Neptune
> Viaceslav(C)
> Я хочу сделать адский онлайн шутер, где можно будет бомбить города ядерками с
> орбиты и взрывать планеты:)
Ну давай. Старайся. :D
респект автору, я бы поиграл.
только не забудь сделать в настройках, чтобы вот эти вот 4 лучика во все стороны можно было отключать. =)
з.ы. и никогда! никогда! не делай эти долбанные "ворота гиперперехода" болтающиеся в космосе! того, кто их придумал, нужно убить. Elite рулит. >=(
slid
В настройках это уже есть:) А в конфиге можно прописать путь к своей текстуре.
Нафига нужны ворота, каждый корабль и так должен уметь летать в гиперспейсе. Хм, интересно, если корабли сами этого не умеют, то кто и как расставил ворота по галактике? =)