ENG Новый сайт

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

Насколько я понял положение астероидов на орбите зависит от точек на текстуре. Тут нет привязки к статичному октодереву, можно вращать текстуру и перерасчитывать положение астероидов.

Quote (SpaceEngineer)
Да это какая-то примитивная анимация, а не симуляция. Под симуляцией я понимаю численный рассчёт. Уже естьдовольно много статей на эту тему, а в фильме "Чужие миры" качественно показана визуализация рассчётов по столкновению планет.

Рендеров много, но реалтайм реализации к сожелению нет.

Quote (SpaceEngineer)
http://spaceengine.org/forum/21-44-1

Дело в том что поверхность статична. Даже если крупные детали будут меняться медленно, поверхность вблизи должна буквально бурлеть. Добавление анимации, на мой взгляд, должно существенно повысить правдоподобность этого типа небесных тел.


Сообщение отредактировал Duke - Понедельник, 22.08.2011, 14:24
SpaceEngineerДата: Понедельник, 22.08.2011, 18:53 | Сообщение # 77
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Quote (Duke)
Насколько я понял положение астероидов на орбите зависит от точек на текстуре. Тут нет привязки к статичному октодереву, можно вращать текстуру и перерасчитывать положение астероидов.

Кольцо астероидов вращается не как целое, и в этом проблема. Единственный выход, который я пока вижу - разбить его на тысячу колечек со статичным положением астероидов в каждом, и вращать колечки со своей скоростью. Но тогда гуд бай эллиптические орбиты (как в поясе астероидов).

Quote (Duke)
Рендеров много, но реалтайм реализации к сожелению нет.

Есть куча игр-песочниц, где в 2D проводятся рассчёты с частицами на видеокарте (типа клеточных автоматов). В некоторых можно симулировать вязкость, давление и гравитацию. Я даже пытался смоделировать столкновение планет - вышло не убедительно, но идея работоспособна. Добавить 3D и более подходящую физику - авось что-то получится. 1000 частиц вполне хватит для начала.

Quote (Duke)
Дело в том что поверхность статична. Даже если крупные детали будут меняться медленно, поверхность вблизи должна буквально бурлеть. Добавление анимации, на мой взгляд, должно существенно повысить правдоподобность этого типа небесных тел.

Я не про свою реализацию говорю, а про ссылку с видео. Там видно "кипение" красного гиганта. Вот только временной масштаб (время жизни пузырей) - годы. На Солнце время жизни гранул - 5-20 минут. Так что такого бурления, как показывают в некоторых играх или клипах, не будет.
Анимация поверхности в моём движке возможна только периодической перегенерацией текстур (используя 4D шум вместо 3D, где по 4 координате - время). При оптимизации ландшафтного движка это в принципе возможно. Другой вариант - не генерировать текстуры вообще, а сразу рендерить на экран фрактальной функцией, но для этого не хватит производительности.


DukeДата: Понедельник, 22.08.2011, 21:56 | Сообщение # 78
Нет аватара
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
Quote (SpaceEngineer)
Есть куча игр-песочниц, где в 2D проводятся рассчёты с частицами на видеокарте (типа клеточных автоматов). В некоторых можно симулировать вязкость, давление и гравитацию. Я даже пытался смоделировать столкновение планет - вышло не убедительно, но идея работоспособна. Добавить 3D и более подходящую физику - авось что-то получится. 1000 частиц вполне хватит для начала.

В одном из предыдущих постов я давал ссылку на демку http://www.fileden.com/files/2008/1/8/1687460//PDemoSuite.zip с исходниками, где на GPU рассчитывалось 300-800.000 объектов с простой физикой и проверкой на столкновения с ландшафтом. На GeForce GTS 250 она давала неплохой fps, правда у меня нет возможности проверить на Radeon-ах, хотя в приложенном pdf файле нет упоминания CUDA, так что вполне возможно что будет работать и на них.

Quote (SpaceEngineer)
Я не про свою реализацию говорю, а про ссылку с видео. Там видно "кипение" красного гиганта. Вот только временной масштаб (время жизни пузырей) - годы. На Солнце время жизни гранул - 5-20 минут. Так что такого бурления, как показывают в некоторых играх или клипах, не будет. Анимация поверхности в моём движке возможна только периодической перегенерацией текстур (используя 4D шум вместо 3D, где по 4 координате - время). При оптимизации ландшафтного движка это в принципе возможно. Другой вариант - не генерировать текстуры вообще, а сразу рендерить на экран фрактальной функцией, но для этого не хватит производительности.

Я просмотрел эти ролики и глянул еще несколько роликов с других сайтов. Все таки гранулы тоже достаточно крупные образования и на их изменения нужно время. Однако я все таки не верю, что огромные массы сильно перегретой плазмы могут находится в покое. На некоторых роликах по поверхности звезды идут волны (например как здесь http://www.youtube.com/watch?v=0Lw3fzGIXKk ) и от мест вспышек расходятся концентрические круги. Возможно можно будет использовать те же методы с помощью которых должна генерироватся поверхность океанов для создания поверхности звезд. Правда остается вопрос о размере этих волн и соответственно с какого расстояния они будут видны.


Сообщение отредактировал Duke - Понедельник, 22.08.2011, 22:21
SpaceEngineerДата: Вторник, 23.08.2011, 00:08 | Сообщение # 79
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Quote (Duke)
В одном из предыдущих постов я давал ссылку на демку http://www.fileden.com/files/2008/1/8/1687460//PDemoSuite.zip с исходниками,

Можешь залить её куда-нибудь, где поддерживается докачка? А то я с этим DSL полдня качал, и на 80% обрубилось sad
ЗЫ: раз 300к объектов, то это может быть только на видюхе. И CUDA тут не при чём, то же можно сделать и на шейдерах (сама CUDA же не использует ничего волшебного).

Quote (Duke)
Правда остается вопрос о размере этих волн и соответственно с какого расстояния они будут видны.

Размер гранул на Солнце - 1-2 тысячи км. На других звёздах он обратно пропорционален ускорению свободного падения на поверхности звезды и температуре. Красные гиганты огромные и холодные - поэтому гранулы в ползвезды размером. На нейтронный звёздах толщина атмосферы порядка... 1 сантиметра (!), а конвективной области можно считать вообще нет. Волны от вспышек тоже считаются. Всё это моя забота как астронома:) А вот что касается расстояния видимости - это зависит от технологии реализации. Если делать гранулы и волны рельефом поверхности (а другого пути я не вижу), то расстояние не имеет смысла - поверхность всегда генерируется так, чтобы отображаться с попиксельной точностью. Так работает алгоритм.


DukeДата: Вторник, 23.08.2011, 03:41 | Сообщение # 80
Нет аватара
Первооткрыватель
Группа: Команда 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 | Сообщение # 81
Первооткрыватель
Группа: Модераторы
Российская Федерация
Сообщений: 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 | Сообщение # 82
Нет аватара
Первооткрыватель
Группа: Команда 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 | Сообщение # 83
Первооткрыватель
Группа: Модераторы
Российская Федерация
Сообщений: 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 | Сообщение # 84
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Моделирование столкновений планет: http://www.boulder.swri.edu/~robin/

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

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

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


GV_FiQstДата: Среда, 24.08.2011, 04:22 | Сообщение # 85
Строитель Миров
Группа: Команда 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 | Сообщение # 86
Первооткрыватель
Группа: Модераторы
Российская Федерация
Сообщений: 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 | Сообщение # 87
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Как раз пару дней назад поднял свою тему на геймдеве с вопросом про реки. Это отнюдь не просто. Я не знаю неитеративных алгоритмов, которые давали бы фрактал, похожий на речные долины. А делать итерации - тогда уж лучше настоящую эрозию считать.

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


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


DukeДата: Четверг, 25.08.2011, 18:58 | Сообщение # 90
Нет аватара
Первооткрыватель
Группа: Команда 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
Поиск:

>