ENG Новый сайт

Расширенный поиск
[ Новые сообщения · Пользователи · Правила ]
SpaceEngine TODO - обновлено 11 июля 2016
AerospacefagДата: Четверг, 25.08.2011, 20:37 | Сообщение # 91
Строитель Миров
Группа: Пользователи
Российская Федерация
Сообщений: 1019
Награды: 3
Статус: Offline
А я ведь говорил, что придется копаться в генераторе поверхности.



Очень бы хотелось увидеть что-то вроде этого. Я бы даже сказал - ну их, эти межзвездные перелеты, если в планетарии будет такая функциональность.
Прикрепления: 0453288.jpg (66.3 Kb)


Win7
Intel Core i5-2310 2.9 Ghz
4 Gb DIMM DDR3
Asus GeForce GTX760, 2 Gb GDDR-5


Сообщение отредактировал Aerospacefag - Четверг, 25.08.2011, 23:37
SpaceEngineerДата: Пятница, 26.08.2011, 01:42 | Сообщение # 92
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Quote (Duke)
Возможно я не совсем правильно понимаю алгоритм генерации ландшафта. Есть ли где нибудь полное описание алгоритма (видел только пост по LOD на gamedev)?

Нету. Алгоритм состоит ил ЛОД дерева, что описано на геймдеве, и генератора текстур. Генератор просто берёт 3D координаты точки сферы и передаёт её во фрактальную функцию. Всё на GPU.

Quote (Duke)
Ландшафт генерируется по сгенерированной карте высот?

Нет. Ландшафт это и есть карта высот. Никаких низкодетальных шаблонов не используется. Хотя я планирую это ввести, для Земли, Марса и т.п. получится процедурная генерация мелких деталей.

Quote (Duke)
Есть возможность использовать еще какие нибудь текстуры для наложения на этом этапе?

Нет. Каких например? Их же тоже надо как-то сгенерировать.

Quote (Duke)
Когда генерируется текстура для всей планеты (предпологаю что генерируется при выборе планеты и начале движения к ней или при входе в звездную систему)?

При первой необходимости. Т.е. когда планета видна на экране и она больше пикселя. Следующие лоды точно так же генерируются: когда они видны на экране, не загорожены самой планетой, и детализация предка уже недостаточна (приближение или зум).

Quote (Duke)
Когда определяется на каком уровне начинается вода?

Не когда, а как. Элементарно: Если высота меньше заданного одинакового для всей планеты уровня океана, это вода. Высота рельефа обрезается уровнем океана, а цвет задаётся синий с бликом. Когда сделаю нормальную воду, высота не будет обрезаться, а цвет будет цветом дна.

Тот алгоритм, что ты описал, годится для CPU. Направление рек можно определить градиентом высоты (уклоном поверхности). Это как минимум требует построения карты нормалей или градиентов (второй проход). Но как строить древовидную саму фигуру реки на GPU, я не представляю. Алгоритм типа следующая_точка_по_течению = f(предыдущая_точка) не годится - на GPU это означает, что надо сделать столько проходов (рендеров текстуры в буффер с вызовом нужного шейдера), сколько точек в длину хотим получить реку. Если текстура 256*256, надо как минимум 256 проходов, а на самом деле больше, т.к. река извилистая. Лучше уж тогда настоящую эрозию рассчитать, она тоже требует много проходов.

Quote (Duke)
Я думаю имелось в виду наложение текстуры типа http://blog.wonderville.ru/wp-content/uploads/2009-10-03_1.JPG на равнины что бы получилось что то вроде этого http://bestmaps.ru/tag/boloto

Интересно было бы посмотреть на такую "волшебную" функцию smile

Quote (Duke)
Тут http://liris.cnrs.fr/~egalin/Pdf/2010-terrain.pdf видел интересную работу где сперва создаются некоторые детали рельефа, а потом сверху генерируется все остальное. P.S.: Здесь http://wwwcg.in.tum.de/Research/Publications/FractalTerrain видел интересный документ http://wwwcg.in.tum.de/Research/data/Publications/vmv06.pdf где описываются Domain Warping. Эта функция создает эффект эрозия и сглаживает ландшафт, при этом применяется в реальном времени.

Спасибо, гляну.

Quote (Aerospacefag)
Очень бы хотелось увидеть что-то вроде этого.

Редактор поверхности? А зачем? Куда сохранять все редактирования? С процедурными планетами проблема в том, что совместить заданные в файлах куски и процедурно сгенерированные очень сложно.


GV_FiQstДата: Пятница, 26.08.2011, 02:46 | Сообщение # 93
Строитель Миров
Группа: Команда SE
Украина
Сообщений: 1062
Награды: 3
Статус: Offline
Quote (SpaceEngineer)
С процедурными планетами проблема в том, что совместить заданные в файлах куски и процедурно сгенерированные очень сложно.


Можно просто скласть сгенерированые генератором и заданные в файлах куски вместе и написать подпрограму которая б переход од одного куска к другому делала плавным. Например если пиксель одного куска синий а другого красный то можно зделать дорожку с пикселей где с начала идет пиксель цвета в смешении синего (90%) цвета и красного (10%) потом пиксель цвета в смешении синего (80%) цвета и красного (20%) ... и последний пиксель цвета в смешении синего (10%) цвета и красного (90%) цвета. доработать немного и получится что програма склала два куска: заданого и процедурного. Правда этим способом никак нельзя совместить кусок воды и рельефа. Только два рельефа или две воды.
smile


AMD Phenom II X2 555 3200 MHz;
RAM 4GB 1333 Hz;
ATI Radeon HD 5670 1024 Mb;
ОС Win 7 tabulorasa edition 32 bit
DukeДата: Пятница, 26.08.2011, 03:44 | Сообщение # 94
Нет аватара
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
Quote (SpaceEngineer)
Нет. Каких например? Их же тоже надо как-то сгенерировать.

На некоторых форумах предлагали начинать генерацию рельефа с предварительной генерации текстуры сети рек. Дальше уже плясать от нее.

Quote (SpaceEngineer)
Но как строить древовидную саму фигуру реки на GPU, я не представляю. Алгоритм типа следующая_точка_по_течению = f(предыдущая_точка) не годится - на GPU это означает, что надо сделать столько проходов (рендеров текстуры в буффер с вызовом нужного шейдера), сколько точек в длину хотим получить реку. Если текстура 256*256, надо как минимум 256 проходов, а на самом деле больше, т.к. река извилистая. Лучше уж тогда настоящую эрозию рассчитать, она тоже требует много проходов.

На первое время можно использовать несколько предрассчитанных вариантов, пока не найдется эффективный алгоритм. Хранить их можно к примеру в многомерном массиве, координаты точек лучей будут задаваться смещением относительно первого элемента. Ну или в виде заранее подготовленных текстур. Можно подготовить несколько вариантов с разлиным углом отклонения лучей от точки впадения в океан и потом использовать более подходящий.
AerospacefagДата: Пятница, 26.08.2011, 17:51 | Сообщение # 95
Строитель Миров
Группа: Пользователи
Российская Федерация
Сообщений: 1019
Награды: 3
Статус: Offline
Quote (SpaceEngineer)
Редактор поверхности?

Нет, генератор рельефа из http://liris.cnrs.fr/~egalin/Pdf/2010-terrain.pdf


Win7
Intel Core i5-2310 2.9 Ghz
4 Gb DIMM DDR3
Asus GeForce GTX760, 2 Gb GDDR-5
MolodoyДата: Суббота, 27.08.2011, 17:07 | Сообщение # 96
Нет аватара
Наблюдатель
Группа: Новички
Российская Федерация
Сообщений: 6
Награды: 0
Статус: Offline
Народ, вы не задумывались о системных требованиях, у вас же генерация вселенной и генерация ландшафта, будет ложиться на GPU + еще тени, облака и т.п. не стоит ли процессор и оперативку тоже подключить? Все таки память видеокарты имеет предел...Или как либо оптимизировать до частоты хотя бы 36fps для сгдаживания

http://speedtest.net/result/1460369219.png
SpaceEngineerДата: Воскресенье, 28.08.2011, 02:14 | Сообщение # 97
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Процессор проигрывает видеокарте в задачах параллельных вычислений (к которым относится рендер 3D сцен и генерация текстур) раз эдак в 100. А оперативную память просто невозможно использовать для рендера из неё видеокартой - данные постоянно по шине гоняться будут, а это раз в 10-100 замедлит рендер. Так что нет, у CPU и RAM нет шансов. Этим и отличается "игровой" комп от "офисного": нет видеокарты - нет быстрого и сложного рендера. А в движке у CPU найдутся другие задачи - физика, игровая логика, обмен данными с сервером, ...

DukeДата: Понедельник, 29.08.2011, 20:54 | Сообщение # 98
Нет аватара
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
Просматривал блог outerra. Разработчики в нескольких блогпостах (в частности http://outerra.blogspot.com/2011/05/bumpy-grass-effect.html ) упоминали, что они используют модифицированный wavelet noise ( http://graphics.pixar.com/library/WaveletNoise/paper.pdf ) вместо perlin noise для многих эффектов. Хотелось бы узнать, используется ли этот тип шума в SpaceEngine?

*******************************************************************************************************
Добавлено (29.08.2011, 20:54)
---------------------------------------------
Просмотрел сайт Эрика Брунетона http://www-evasion.imag.fr/Membres/Eric.Bruneton/
Насколько я знаю вид атмосферы на планетах в SpaceEngine генерируется на основе модифицированного алгоритма Эрика? Сейчас он работает над проектом Proland. До 2006 года проект был с открытыми исходными кодами и его можно найти здесь http://ebruneton.free.fr/proland/index.html Проект старый, но возможно что-то будет интересно, в частности там есть простая система процедурной генерации городов, облаков и деревьев. Насколько я понимаю его проект Rama ( http://www.youtube.com/watch?v=zBIQCm54dfY ) построен с помощью этих модулей. После 2006 Эрик перешел на текущий сайт. В 2010 согласно этой ссылке http://raweb.inria.fr/rapportsactivite/RA2010/evasion/uid43.html часть Proland была выпущена под открытой лицензией в виде отдельного фреймворка Ork. Его можно найти здесь https://gforge.inria.fr/frs/?group_id=2938 , но помоему там нет ничего особенно полезного.


Сообщение отредактировал Duke - Вторник, 30.08.2011, 01:12
SpaceEngineerДата: Вторник, 30.08.2011, 13:02 | Сообщение # 99
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Спасибо, посмотрю про шум.
Насколько я знаю, Брунетон использует векторное задание дорог, полей и т.д. Мне же из этого можнт пригодиться разве что задание рек и горных хребтов, т.к. Земля одна, а другиз планет триллионы, думаю незачем пока так плотно заниматься Землёй.


MolodoyДата: Вторник, 30.08.2011, 20:23 | Сообщение # 100
Нет аватара
Наблюдатель
Группа: Новички
Российская Федерация
Сообщений: 6
Награды: 0
Статус: Offline
Quote (SpaceEngineer)
SpaceEngineer

Если интересует рендеринг воды, посмотрите тут:
http://www.midnightbeach.com/jon/pubs/3D_Fractal_Landscapes.html
http://www.gameprogrammer.com/fractal.html
http://vterrain.org/Water/


http://speedtest.net/result/1460369219.png
DukeДата: Среда, 31.08.2011, 03:08 | Сообщение # 101
Нет аватара
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
Просмотрел несколько страниц с gamedev-а по spaceengine. Там несколько раз упоминаются примеры из книги Texturing and Modeling A Procedural Approach и проблемы с их реализацией. Не знаю были ли тогда в наличии примеры с CD книги. На всякий случай примеры из той книги видел на сайте издателя здесь http://www.elsevierdirect.com/companion.jsp?ISBN=9781558608481 (правда в не совсем удобном виде).
MolodoyДата: Среда, 31.08.2011, 20:16 | Сообщение # 102
Нет аватара
Наблюдатель
Группа: Новички
Российская Федерация
Сообщений: 6
Награды: 0
Статус: Offline
Как я понял в ближайшее время будет реализована возможность добавления своих 3d объектов, можно будет добавлять любые объекты(корабли, станции, города на планетах, другие 3d объекты на планетах и космосе) либо только корабли? Города будут генерироваться процедурно в самом коде двигателя, либо будут импортироваться из файла?

http://speedtest.net/result/1460369219.png
DukeДата: Среда, 31.08.2011, 22:49 | Сообщение # 103
Нет аватара
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
Просматривая Texturing and Modeling A Procedural Approach возник вопрос, как генерируется текстура для слоя облаков? Она так же как и поверхность генерируется по частям и по мере необходимости или же создается общая текстура для планеты?
В SpaceEngine на планетах с облаками мне ни разу не попадались циклоны. Поддерживаются ли они движком?
В книге на 457 странице был приведен фрагмент кода для создания структуры циклона ( http://www.elsevierdirect.com/compani....LONE.SL ). Возможно ли его использовать для добавления циклонов на планеты в SpaceEngine?

P.S.: На всякий случай залил все примеры с http://www.elsevierdirect.com/companion.jsp?ISBN=9781558608481 в один архив и положил сюда http://narod.ru/disk/23607587001/CD.rar.html (Пароль: spaceengine).


Сообщение отредактировал Duke - Четверг, 01.09.2011, 01:25
SpaceEngineerДата: Четверг, 01.09.2011, 12:15 | Сообщение # 104
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Города - конечно процедурно, но и загрузка из файла будет. Насчёт того, как скоро это всё будет сделано, ничего не могу сказать. Корабли по идее могут появиться в одной-двух ближайших версиях.

GV_FiQstДата: Пятница, 02.09.2011, 00:10 | Сообщение # 105
Строитель Миров
Группа: Команда 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
Поиск:

>