Войти
ПрограммированиеФорумГрафика

Пещера в ландшафте строящемся на основе карт высот.

#0
22:45, 9 авг. 2017

Вот думаю наверное прикольно генерировать пещеры на ряду с ландшафтом. Вот только не соображу вставить пещерки в свой lod quadtree ландшафт. По такой причине интересуюсь, вдруг есть техники создания пещер с ландшафтами на основе карт высот. Естественно карта высот не позволяет хранить данные о пещерах, и вообще данные о плоскостях с отрицательным уровнем уклона,  думаю генерировать пещерки отдельно от основного ландшафта. Трабла в соединении ландшафта с пещерой. Наверняка в меше ландшафта надо вырезать дырку по контуру пещеры и стыковать меш ландшафта и меш пещеры, и вообще сначала вырезать дырку и по контуру дырки строит начальный профиль пещеры. Естественно проверять геометрию пещеры с геометрией лодов ландшафта во избежание пересечений. Тут во входе основная хрень. Ландшафт я уже говорил на основе карты высот и лоды стоятся исходя из значений карты и неясно хранение данных о нахождении входов в пещеры. Ещё одна хрень если вход в пещеру слишком большой то с учётом разных уровней лодов, quadtree это вообще супер трудная работа. По такой причине думаю, если есть техники то вариант сделать пещерки, но если нет то либо уходить от карт высот либо оставить идею в принципе не влияющую на геймплей, но уходить от карт высот не вариант, я этот quadtree вытачивал кучу дней.


#1
23:06, 9 авг. 2017

Ivashka
Вероятно, я глупость скажу ...

Сделай три карты высот, вместо одной.

Первая карта высот - в местах пешер, уходит вниз - как-будто сняли крышу у пешер.

Вторая карта высот - обрабатывай её _относительно первой карты, и создавай _обратные полигоны,
чтобы получилась крыша пешер, на местах, которые выше, чем полигоны из первой карты высот.

Третья карта высот - бывшая первая и единственая, которая должна учитывать первую карту,
и вторую карту. Создавать нормальный триуг, если его высота явно выше первой карты,
и поправлять высоту вверх, если высота _накрывашки меньше, чем у второй карты высот.

Таким образом, три карты высот, с авто-поправкой,
добавят свои полигоны в ноды какого-то дерева.

#2
0:07, 10 авг. 2017

Годная тема. Что за игру делаешь?

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

В других жанрах считаю эту идею бесполезной.

#3
0:08, 10 авг. 2017

Ivashka

Собсно, классически например в линяге:

http://l2j-geodata.sourceforge.net/index.php?p=4

#4
0:19, 10 авг. 2017

3д карта высот

#5
1:15, 10 авг. 2017

WoW:
1) Карта высот
2) До катаклизма: Если нужно вставить в карту высот пещеру - в карте высот делается дырка и пещера размещается так, чтобы эту дырку полностью закрывать от игрока
3) После катаклизма: вершины карты высот могут блендится с вершинами вставляемой модельки, что не исключает ту самую дырку, а дополняет её

#6
3:17, 10 авг. 2017

Ivashka
> вдруг есть техники создания пещер с ландшафтами на основе карт высот
Вот прямо пещеры-пещеры не видел, но нависающие скалы можно сделать, заменив высоты на карте на вектора-смещения:

+ Показать

#7
5:55, 10 авг. 2017

Собственно посты 2 и 6 полезные, но блин по ходу прикол в виде прикручивания к карте высот либо карты векторов либо карты слоёв нехило ресурсоемкий.
nonamezerox
Я так понял вы имели ввиду скачать сей движёк расположеный на сайте по ссылке.

#8
15:04, 10 авг. 2017

Генерировать ландшафты на основе карты высот имеет смысл, если предполагается динамический ландшафт с терраморфингом. В противном случае добавление вот этих вот пещерок и подвалов - нетривиальная задача. Насколько я знаю тот же движок Arma не умеет в пещеры вообще. Вот как раз по этой причине.

#9
19:48, 10 авг. 2017

Могу сказать как делаются дырки в террайне Юнти. Он тоже по карте высот сделан.

Поверх террайна ставится меш с специальным шейдером, показывающим "пещеру". На входе ставится триггер, отключающий коллайдер террайна. Т.к. меш "дырки" обычно угловат - края его драпируются чем то (камнями, кустами,...) За террайном располагается собственно меш пещеры.
Вот тут на китайском расписано: http://www.smokymonkeys.com/kyrill/index.asp?direct=22
Ну а как Вы сгененрируете меш пещеры - ручками или процедурно - это уже второй вопрос.

Есть второй вариант. Стык двух "террайнов". На этом стыке элементарно сделать дырку.

#10
21:13, 10 авг. 2017

1) Воксельные ландшафты могут пещеры, дырки и нависающие арки (например, погугли smooth voxel terrain, TransVoxel, Voxel Farm; в последнем можно даже создавать здания в ландшафте, и при этом всё - и ландшафт, и здания - унифицировано, т.е. не надо делать дырки в карте высот, чтобы вставить меш здания).

2) Для гладких ландшафтов - конформные тетраэдальные сетки (Longest Edge Bisection, Diamond Hierarchies) (по сути, расширение BDAM для трёхмерного случая):
"Level of Detail for Real-Time Volumetric Terrain Rendering" [2013]

"Real-Time Isosurface Extraction with View-Dependent Level of Detail and Applications" [2015]

Этот парень уже их реализовал.

3) Также можно использовать лучевое представление (Ray-Rep) для хранения ландшафта и специальный алгоритм построения сетки по нему (это будет легче, чем делать полноценный воксельный ландшафт).
Каждый блок ландшафта (== узел квадродерева) хранится, как набор вертикальных лучей. На каждом луче - список точек пересечения с поверхностью и нормаль к поверхности в этой точке. Сетка может быть построена алгоритмом, изложенным в "A Dual Method for Constructing Multi-material Solids from Ray-Reps" [2012].

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

Тема в архиве.