Карта высот против 3D-модели Mesh

8

В настоящее время я работаю над 3D-игрой для ПК (написанной на C ++ и DirectX 9.0) и пытаюсь найти лучший способ хранения данных уровня в памяти.

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

Две карты высоты хранятся на жестком диске в виде растрового изображения или двоичного / текстового файла. Одна карта высот для потолка (сверху), другая для земли.

ИЛИ

Единственная трехмерная сетка в некотором формате трехмерной модели (скажем, .fbx, .x, .obj, что угодно).

Как мне приблизиться к уровню хранения данных? Каким будет мой лучший вариант, если говорить о производительности? У меня также есть некоторые проблемы, когда дело доходит до текстурирования уровня, загруженного с помощью карты высот; Использование 3D-модели делает текстурирование на одном дыхании.

Спасибо!


источник

Ответы:

4

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

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

Модели:
+ Больше контроля над горизонтальным смещением
+ Возможно перекрытие ландшафта
+ Максимальный контроль над текстурами
-В столкновении немного сложнее
-Может занять немного больше памяти на диске

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

Конечно, вы можете использовать векторное поле, но это в основном модель с более легким текстурированием.

яблоки
источник
1

Это может помочь, если вы скажете нам, какой жанр игры, что видит камера и т. Д. Я предполагаю, что вы говорите о FPS, но я не уверен.

В любом случае, вот ссылка на разговор о местности в Halo Wars, который мне показался интересным и может дать вам идеи: http://www.gdcvault.com/play/1277/HALO-WARS-The-Terrain-of . Он касается некоторых проблем и возможных решений, которые вы упомянули.

кувалда
источник
0

Вам не обязательно выбирать один над другим, оба могут быть эффективными, и нет никаких причин, по которым вы не можете объединить оба.

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

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

В общем, я бы сказал, что карта высот является эффективным средством для хранения вашего ландшафта, но добавление деталей, таких как сталагмиты, было бы намного более гибким с моделями.


источник