Terreno basado en mapa de altura con una carretera

12

¿Cuál es la mejor manera de implementar una función de detalle, como una carretera, en un terreno basado en un mapa de altura?

ingrese la descripción de la imagen aquí

Actualización: es un poco difícil de ver en la imagen, pero el camino desciende desde la parte superior de la cantera para hacer su base.

Adam Kane
fuente

Respuestas:

14

Lo que es genial con las imágenes es que generalmente incrustan hasta 4 canales (rojo, verde, azul y alfa). Como un mapa de altura solo necesita una dimensión, puede usar el canal rojo para almacenar la información de altura (todavía tiene 256 niveles para la altura), y luego usar otros canales para otros fines (como usar el canal verde para mapear las carreteras , canal azul para agua / humedad), etc.

De esta manera, podría asegurarse de que cuando construye su terreno, las zonas donde se debe construir una carretera aparecerán planas en lugar de seguir el gradiente de altura.

XGouchet
fuente
1
¿Es posible usar la imagen HDRI, por lo que los números flotantes se pueden usar para almacenar información de altura más precisa?
Quazi Irfan
1
La imagen HDRI no es un formato de archivo sino un concepto, pero sí, podría usar formatos de archivo específicos para permitir una mayor precisión. Dependerá principalmente de su hardware / software, pero hay una imagen RG flotante que puede almacenar en 32 o 64 bits. Pero sea cual sea el formato, si usa más bits por canal, siempre podría convertir los valores int en un número de coma flotante como este: f = (v / 256.0) donde f es su flotante, v el valor int actual
XGouchet
¿Es una buena idea almacenar todos los objetos estáticos de un mapa en un mapa (de altura)? como vegetación, follaje, casa? o punteros donde se colocará otro objeto? o existe alguna otra forma?
Quazi Irfan
No almacenaría la ubicación exacta, pero tal vez solo una información de densidad, y luego generaría los datos (vegetación, casa, etc.) a partir de la información de densidad. Pero la mejor manera es colocar estos objetos a mano y guardarlos usando un archivo de datos binarios o un archivo de descripción xml
XGouchet
1
@iamcreasy, por supuesto, puede usar el mapa de altura para que su casa toque el piso, pero debe describir cómo se ve el modelo de la casa (paredes, puertas, cualquier mueble adentro), que no se puede describir en un píxel. Además, la información de píxeles jsut no le dará una orientación precisa, por lo que todas sus casas estarán alineadas (lo que no parecerá natural o "bonito").
XGouchet
1

La forma en que lo hago es separar el mapa de altura (uso flotadores, por ejemplo, 513 * 513) y splatmap (la "textura de control") que a menudo necesita una resolución mayor (uso bmps de 32 bits, 512x512).

El mapa de altura crea la malla (el terreno, los triángulos).

El mapa de control abarca todo el terreno y cada una de sus capas (RGBA) dice cuánto dices Piedra, Tierra, Carretera, etc. que deberías ver en el terreno.

De esta manera, puede usar un editor para a) crear el terreno yb) Pintar el terreno (con roca, tierra, carretera, etc.)

Haga un rápido goolge en 'painting heightmap', 'heightmap splatmap' y tal para obtener una explicación más completa o descargue, diga Unity3D para ver cómo podría funcionar en 'realidad'.

Valmond
fuente