Mapa de altura vs malla modelo 3D


8

Actualmente estoy trabajando en un juego de PC en 3D (escrito en C ++ y DirectX 9.0) y estoy tratando de encontrar la mejor manera de almacenar datos de nivel en la memoria.

La acción del juego se desarrolla bajo tierra, por lo que siempre hay un techo por encima del jugador. El suelo es bastante irregular y hay cosas como estalagmitas presentes en todo momento. Los niveles son de tamaño pequeño y en su mayoría parecen pasillos. Estas son las opciones que he logrado encontrar hasta ahora:

Dos mapas de altura almacenados en el disco duro como un mapa de bits o un archivo binario / de texto. Un mapa de altura para el techo (arriba), uno para el suelo.

O

Una sola malla 3D en algún formato de modelo 3D (por ejemplo, .fbx, .x, .obj lo que sea).

¿Cómo debo abordar el almacenamiento de datos a nivel? ¿Cuál sería mi mejor opción, hablar en cuanto al rendimiento? También tengo algunos problemas cuando se trata de texturizar un nivel cargado a través de un mapa de altura; El uso de un modelo 3D hace que texturizar sea muy fácil.

¡Gracias!

Respuestas:


4

En cuanto al rendimiento, ambas opciones deberían ser equivalentes, ya que todo se convertirá en un modelo tarde o temprano.

Heightmaps:
+ fácil de almacenar y editar
+ fácil de calcular las coordenadas de textura si no están precalculados
texturizado De los pobres en pendientes superficies
-necesita modelos de compañía para un mejor detalle
-¿Eso no permite la superposición de terreno (sin salientes).

Modelos:
+ Más control sobre el desplazamiento horizontal
+ Posibilidad de superposición del terreno
+ Máximo control sobre las texturas - La
colisión es un poco más complicada -
Podría consumir un poco más de memoria en el disco

En mi experiencia, es mejor usar un mapa de altura algo plano para el terreno base y los modelos de uso para cosas como las estalagmitas, e incluso puede usar modelos repetitivos para tales objetos (para ahorrar memoria).

Por supuesto, podría usar un campo vectorial, pero eso es básicamente un modelo con texturas más fáciles.


1

Puede ser útil que nos digas de qué género es el juego, qué ve la cámara, etc. Supongo que estás hablando de un FPS, pero no estoy seguro.

De todos modos, aquí hay un enlace a una charla sobre el terreno en Halo Wars que encontré interesante y que puede darle ideas: http://www.gdcvault.com/play/1277/HALO-WARS-The- Terra- of . Trata algunos de los problemas y las posibles soluciones que mencionó.


0

No necesariamente tiene que elegir uno sobre el otro, ambos pueden ser efectivos y no hay razón para que no pueda combinar los dos.

Si usa heightmaps, personalmente elegiría un formato de mapa de bits. Directx debería poder cargar todo el mapa de bits por usted y convertirlo en un recurso que pueda usar. Si usa un archivo de texto sin formato, deberá analizarlo usted mismo. Por supuesto, esto le da más libertad para interpretar el archivo, y podría ser un buen punto de partida para permitir una experimentación más fácil.

Sin embargo, una cosa a tener en cuenta es que un mapa de altura te dejará con una resolución fija, por lo que las estalagmitas que mencionas pueden ser difíciles de representar bien, a menos que aumentes la densidad de píxeles de todo el mapa.

En general, diría que un mapa de altura es un medio efectivo para almacenar su terreno, pero agregar detalles como estalagmitas sería mucho más flexible con los modelos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.