Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Принципы генерации ландшафтов на сферической поверхности (2 стр)

Принципы генерации ландшафтов на сферической поверхности (2 стр)

Страницы: 1 2 3 4 Следующая »
}:+()___ [Smile]Постоялецwww17 янв. 201723:13#15
foxes
> не будет ни каких сжатий и растяжений
> разница только в масштабе по горизонтали
Для альтернативно одаренных, разница в масштабе = сжатие или растяжение.
С практической точки зрения будет видна разница в характере поверхности.
foxesПостоялецwww18 янв. 20173:12#16
}:+()___ [Smile]
> Для альтернативно одаренных, разница в масштабе = сжатие или растяжение.
Сам ты альтернативно одаренный, разница в масштабе по параллелям компенсируется обратным масштабированием!
Найди тут разницу в сжатие или растяжение "характерную":

3d vs 2d | Принципы генерации ландшафтов на сферической поверхности

+ 2D noize merkator
+ 3D noize

Правка: 18 янв. 2017 3:34

MrShoorУчастникwww18 янв. 20173:24#17
foxes
2D справа - это билборд чтоль?
foxesПостоялецwww18 янв. 20173:31#18
MrShoor
2D генератор по XY (широта, долгота) на сфере, со всех сторон круглая без магии и подвоха. Код прилагается.

Правка: 18 янв. 2017 3:35

}:+()___ [Smile]Постоялецwww18 янв. 20173:42#19
foxes
> Найди тут разницу в сжатие или растяжение "характерную":
Так ты полюсом поверни, для начала. Еще у тебя разрывы видны, подозреваю, что из-за твоей "компенсации".
Я уж не говорю, что у тебя отстойный квадратно-гнездовой шум (на 3D, кстати, гораздо менее заметно).
foxesПостоялецwww18 янв. 20174:07#20
}:+()___ [Smile]
> подозреваю, что из-за твоей "компенсации".
Нету там ни каких разрывов, нормали глючат из за тангета, и высоты.
+ 2D noise all view

}:+()___ [Smile]
> Так ты полюсом поверни, для начала.
И вообще - код под носом сам верти как вздумается.

Правка: 18 янв. 2017 4:14

foxesПостоялецwww18 янв. 20174:08#20
Глючный пост

Правка: 18 янв. 2017 4:09

МизраэльПостоялецwww19 янв. 201710:39#21
Делать простым шумом карту - это моветон. Она будет либо не играбельная, либо неинтересная. Лучше покопать в сторону алгоритмов terragen. В случае стратегии вообще не вижу смысла заморачиваться. Либо предполагается игра на каких-то мелких планетоидах-астероидах, где будет видно скругление рельефа, тогда видимо проще сферу случайным шумом помучить. Либо стратегия планетарного масштаба без управления отдельными юнитами, тогда над ландшафтом можно вообще не заморачиваться и делать нормальный бамп. А уж как натянуть текстуру на сферу я думаю разберётесь.
MrShoorУчастникwww19 янв. 201711:07#22
Мизраэль
Думаешь в terragen оно без шумов генерится?
MikleМодераторwww19 янв. 201711:20#23
Мизраэль
> А уж как натянуть текстуру на сферу я думаю разберётесь.
Вообще-то, тема как раз и сводится к проблеме натянуть текстуру на сферу.
Мизраэль
> Делать простым шумом карту - это моветон.
Кто сказал, что это должен быть сырой шум? Естественно, он должен быть с постобработкой.
kasomПользовательwww19 янв. 201714:33#24
Мизраэль
> вообще не вижу смысла заморачиваться
Возможно, Вы и правы, однако хочется до конца разобраться в теме. Игру делаю скорее как хобби, в свободное время, так что никуда не спешу.
Mikle
> Естественно, он должен быть с постобработкой.
Вообще, судя по тому, что я читал, достаточно пройтись по шуму еще раз шумом, чтобы получилась интересная карта (с выступами и пещерами). А какую постобработку подразумеваете Вы?
MikleМодераторwww19 янв. 201714:44#25
kasom
> А какую постобработку подразумеваете Вы?
Любую, на какую хватит фантазии. Вот три с половиной года назад я уже демонстрировал, на сколько улучшается ландшафт на шуме Перлина, если его просто возвести в квадрат:
http://www.gamedev.ru/code/forum/?id=179462#m6
Имитация эрозии тоже может быть всего лишь постобработкой исходного шума.
foxesПостоялецwww19 янв. 201715:14#26
Еще за счет некоторых схем сглаживания шума можно получить вполне реалистичную поверхность, с характерными горными хребтами. По сути это будет аналогом Diamond алгоритма, если выполнять сглаживание в определенных пределах вычисляемых в зависимости от соседних величин шума. Но скорость генерации ооочень медленная.

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

+ Показать

Правка: 19 янв. 2017 16:06

kasomПользовательwww19 янв. 201715:30#27
Еще один вопрос есть, задам его здесь, дабы не засорять форум простыми вопросами. Допустим, я сгенерировал сферу, используя алгоритм кубической проекции. При генерации сферы я еще каким-нибудь шумом или суперпозицией шумов сразу же сгенерировал на ней ландшафт. Теперь если я загружу всю сферу, так сказать, as is, в видеопамять, это будет не очень круто, так как будет одинаковая детализация поверхности для разноудаленных участков, да к тому же будут обрабатываться невидимые области. Для решения первой проблемы есть LOD-алгоритмы, для решения второй - frustum culling. После некой обработки поисковой выдачи гугла, я пришел к выводу, что алгоритм CDLOD + frustum culling - то, что мне нужно. Ознакомившись с авторской реализацией и статьей, я так и не понял: на каком этапе я должен его применить в своем случае? На сколько я понял, алгоритм с ипользованием дерева квадрантов как бы размечает карту высот на LOD'ы и в соответствии с этой разметкой я должен генерировать с определенной детализацией. Значит ли это, что каждый раз мне нужно заново генерировать кусок сферы? То есть, сферу целиком и сразу мне вообще никогда не нужно создавать?
PS: кстати, насколько велики накладные расходы на выгрузку буфера вершин из оперативной памяти в видеопамять? Если я каждый раз буду создавать "хороший" буфер (полученный после CDLOD), а потом грузить его в видеопамять, не будут ли накладные расходы слишком велики? Возможно лучше будет один раз сгенерировать детализированную сферу, полностью загрузить ее в видеопамять, а уже потом как-нибудь работать с готовым буфером и искать LOD'ы?
SlavaLiaПостоялецwww19 янв. 201716:19#28
Вот тут http://unity3d.ru/distribution/viewtopic.php?f=17&t=37940 один разработчик пытается решить вопросы примерно на вашу тему.


Код выложен на github .

Правка: 19 янв. 2017 16:19

AslanПостоялецwww19 янв. 201719:20#29
kasom
никакой тригонометрии, брать треугольник и пока размер/расстояние до наблюдателя > X делить каждую сторону на 2 (получая 4 треугольника)
среднюю точку нормировать по радиусу планеты и применять высоту
Страницы: 1 2 3 4 Следующая »

/ Форум / Программирование игр / Графика

2001—2018 © GameDev.ru — Разработка игр