ENG Новый сайт

Расширенный поиск
[ Новые сообщения · Пользователи · Правила ]
SpaceEngine TODO - обновлено 11 июля 2016
DukeДата: Вторник, 23.08.2011, 03:41 | Сообщение # 76
Нет аватара
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
Quote (SpaceEngineer)
Можешь залить её куда-нибудь, где поддерживается докачка? А то я с этим DSL полдня качал, и на 80% обрубилось

Залил на Народ Диск http://narod.ru/disk/22595478001/PDemoSuite.zip.html он вроде поддерживает докачку.
А есть еще что то из моих постов что не удалось скачать?

*******************************************************************************************************
Добавлено (23.08.2011, 03:41)
---------------------------------------------
Quote (Crab)
Кстати видел в фильме от Discovery, показывали женщину-учёного у которой на компе была симуляция столкновения Земли с Тейей. Выглядело красиво если найду скину видео.

Это видео http://www.youtube.com/watch?v=zc4HL_-VT2Y ?
Оно же но с более высоким разрешением http://www.youtube.com/watch?v=ofu9Rh5U-vk


Сообщение отредактировал Duke - Вторник, 23.08.2011, 03:43
CrabДата: Вторник, 23.08.2011, 12:00 | Сообщение # 77
Первооткрыватель
Группа: Модераторы
Российская Федерация
Сообщений: 444
Награды: 1
Статус: Offline
Quote (Duke)
Оно же но с более высоким разрешением http://www.youtube.com/watch?v=ofu9Rh5U-vk


Неа. Это видео далеко не симуляция, а просто красивая графика.

Что то типо этого я имел ввиду:
http://www.youtube.com/watch?v=ibV4MdN5wo0&feature=related
Урааа! Нашёл)
Кстати вот тоже интересная нарезка)
http://www.youtube.com/watch?v=IO45ZiGql8E&feature=related


Windows 8 x64
Intel Core2 Duo CPU E7500 2.93GHz.
4 GB RAM.
Nvidia GeForce 550Ti 1024mb.
DukeДата: Вторник, 23.08.2011, 16:24 | Сообщение # 78
Нет аватара
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
На геймдеве поднимался вопрос по рекам. На мой взгляд для них неплохо подошли бы Фигуры Лихтенберга
http://en.wikipedia.org/wiki/Lichtenberg_figure
Единственную реализацию по ним удалось найти на Java здесь
http://apricot.ap.polyu.edu.hk/~lam/dla/dla.html
Исходники на той же странице внизу
http://apricot.ap.polyu.edu.hk/~lam/dla.tgz
http://apricot.ap.polyu.edu.hk/~lam/dla/dla.java

Upd.: Есть еще одна работа но без реализации здесь
http://classes.yale.edu/fractals/Panorama/Physics/DLA/DBM/DBM.html
Математическое описание здесь
http://classes.yale.edu/fractals/Panorama/Physics/DLA/DBM/DBM2.html


Сообщение отредактировал Duke - Вторник, 23.08.2011, 16:34
CrabДата: Вторник, 23.08.2011, 16:38 | Сообщение # 79
Первооткрыватель
Группа: Модераторы
Российская Федерация
Сообщений: 444
Награды: 1
Статус: Offline
http://mx.coldstorageonline.com/index.php?bid=53

Код прямо под симуляцией.


Windows 8 x64
Intel Core2 Duo CPU E7500 2.93GHz.
4 GB RAM.
Nvidia GeForce 550Ti 1024mb.
SpaceEngineerДата: Вторник, 23.08.2011, 18:29 | Сообщение # 80
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Моделирование столкновений планет: http://www.boulder.swri.edu/~robin/

Quote (Duke)
На геймдеве поднимался вопрос по рекам. На мой взгляд для них неплохо подошли бы Фигуры Лихтенберга
Единственную реализацию по ним удалось найти на Java здесь

Это итеративный алгоритм, не катит. Раз надо прогнать готовую текстуру через N итераций, то проще сразу честную эрозию считать.

Crab
Да, это итеративный алгоритм, ещё и довольно сложный для реализации в шейдере.


GV_FiQstДата: Среда, 24.08.2011, 04:22 | Сообщение # 81
Строитель Миров
Группа: Команда 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
CrabДата: Среда, 24.08.2011, 10:09 | Сообщение # 82
Первооткрыватель
Группа: Модераторы
Российская Федерация
Сообщений: 444
Награды: 1
Статус: Offline
Всё это будет, но не сразу. Сейчас есть вещи которые гораздо важнее травы)

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

DukeДата: Среда, 24.08.2011, 20:53 | Сообщение # 84
Нет аватара
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
На мой взгляд можно использовать итеративные алгоритмы если они не будут требовать информации о соседних точках и их удастся эффективно реализовать на GPU. Можно даже попробывать их в фоне начать рассчитывать пока пользователь в космосе. Правда это во многом зависит от того как генерируется текстура для планеты.
На нескольких сайтах предлагали использовать тот же Ridged Perlin's noise или Ridged multifractal для создания эффекта сети рек.


Сообщение отредактировал Duke - Среда, 24.08.2011, 21:58
SpaceEngineerДата: Четверг, 25.08.2011, 00:38 | Сообщение # 85
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Под словом итеративный я имею в виду когда надо сгенерировать текстуру, а потом прогнать её N раз через другой шейдер, который вычисляет одну итерацию эрозии например. Очевидно, это чертовски замедлит генерацию планеты в целом.
А как Ridged noise сделать похожим на сеть рек? Видел как у меня горные массивы выглядят? Как сеть хребтов с примерно круглыми долинами между ними. Если горы не прибавлять, а вычитать из глобального рельефа, получатся каньоны, но очень не реалистичные. А как получить реки? Они ведь не должны иметь рандомную глубину и замыкаться на самих себя.


DukeДата: Четверг, 25.08.2011, 18:58 | Сообщение # 86
Нет аватара
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
Quote (SpaceEngineer)
Под словом итеративный я имею в виду когда надо сгенерировать текстуру, а потом прогнать её N раз через другой шейдер, который вычисляет одну итерацию эрозии например. Очевидно, это чертовски замедлит генерацию планеты в целом.

Возможно я не совсем правильно понимаю алгоритм генерации ландшафта. Есть ли где нибудь полное описание алгоритма (видел только пост по LOD на gamedev)? Ландшафт генерируется по сгенерированной карте высот? Есть возможность использовать еще какие нибудь текстуры для наложения на этом этапе? Когда генерируется текстура для всей планеты (предпологаю что генерируется при выборе планеты и начале движения к ней или при входе в звездную систему)? Когда определяется на каком уровне начинается вода?
На основе моих предположений по генерации планеты могу предложить такой алгоритм.
После полного окончания генерации текстуры планеты, делается один проход по всей текстуре (предпологаю что первая текстура всей планеты небольшая, просчет идет слева-направо сверху-вниз) при котором определяется положение океанов (океаны определяются отслеживанием непрерывной последовательности точек находящихся ниже заданного уровня), центра океана (среднего значения по высоте и ширине для этой последовательности точек находящейся ниже заданного уровня), крайней точки океана переходящей в сушу, центра равнин граничащих с океаном (вычисляется так же как и океаны, но точки должны быть выше уровня моря и ниже определенного уровня, что бы реки на горы не налезли и распологались на равнинах).
Затем от точки перехода океана в сушу в сторону центра равнины строится фигура Лихтенберга или нечто похожее при этом проверяются только высота точек на которые переходит лучи этой фигуры и если высота больше определенной для равнин этот луч заканчивается, а если входит в диапазон, то точка опускается ниже уровня моря. И так до достижения определенной длины лучей или достижения центра равнины. Лучи думаю можно считать паралельно для увеличения скорости.
Остается вопросы скорости алгоритма и масштабируемости полученного результата.

Quote (SpaceEngineer)
А как Ridged noise сделать похожим на сеть рек? Видел как у меня горные массивы выглядят? Как сеть хребтов с примерно круглыми долинами между ними. Если горы не прибавлять, а вычитать из глобального рельефа, получатся каньоны, но очень не реалистичные. А как получить реки? Они ведь не должны иметь рандомную глубину и замыкаться на самих себя.

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

Тут 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. Эта функция создает эффект эрозия и сглаживает ландшафт, при этом применяется в реальном времени.


Сообщение отредактировал Duke - Четверг, 25.08.2011, 19:09
AerospacefagДата: Четверг, 25.08.2011, 20:37 | Сообщение # 87
Строитель Миров
Группа: Пользователи
Российская Федерация
Сообщений: 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 | Сообщение # 88
Автор 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 | Сообщение # 89
Строитель Миров
Группа: Команда 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 | Сообщение # 90
Нет аватара
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
Quote (SpaceEngineer)
Нет. Каких например? Их же тоже надо как-то сгенерировать.

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

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

На первое время можно использовать несколько предрассчитанных вариантов, пока не найдется эффективный алгоритм. Хранить их можно к примеру в многомерном массиве, координаты точек лучей будут задаваться смещением относительно первого элемента. Ну или в виде заранее подготовленных текстур. Можно подготовить несколько вариантов с разлиным углом отклонения лучей от точки впадения в океан и потом использовать более подходящий.
Поиск:

>