¿Dónde comenzar al construir un editor de terreno en 3D? [cerrado]

22

Estoy buscando construir (para empezar) una herramienta simple, que pueda elevar, bajar, suavizar y texturizar el terreno.

Entonces, ¿cuáles son las cosas que tengo que pasar para hacer ese editor de terreno?

¿Y tal vez hay recursos valiosos disponibles en el tema?

Sí, olvidé mencionar que estoy interesado en un editor de terreno en 3D.

sacudida
fuente

Respuestas:

24

Para un editor de terreno 3D 'clásico', los pasos podrían ser aquellos:

Genere una malla (por ejemplo, una cuadrícula de cuadrados, cada cuadrado formado por dos triángulos), todos los vértices se comparten entre triángulos (de modo que solo haya una normal por intersección). ingrese la descripción de la imagen aquí

Esto debe hacerse una malla 3D y renderizarse en su programa.

Haga una herramienta para subir y bajar partes (más pequeñas y más grandes) de la cuadrícula (necesita calcular en qué parte de la malla está el cursor del mouse y modificar los vértices de las mallas, pero solo hacia arriba y hacia abajo).

Crea una textura grande (como 1024x1024x4 o mejor) y texturiza con lo que se llama un mapa-splat: ingrese la descripción de la imagen aquí

Haga posible pintarlo (con R, G, B OR Alfa, no rosa por ejemplo) y elegir texturas que reemplacen esos feos colores primarios (Rojo, Azul, Verde, Alfa), o más, estar representados por ellos:

El sombreador (que necesitará crear) debe multiplicar esas texturas agradables (por ejemplo, piedra, hierba, ...) con la intensidad en el splatmap (el feo) y luego mezclar todo para que se vea, por ejemplo (con como solo 2 colores), así: ingrese la descripción de la imagen aquí

Perdón por las imágenes grandes, preparé esto en el trabajo ...

Valmond
fuente
Ah, esto lo hizo un poco más claro. Teóricamente, después de la malla 3D, es simplemente el reposicionamiento de vértices (arriba / abajo) y la textura en este ejemplo que ha hecho en forma de "mapa de puntos", después de lo cual el sombreador se asemeja a un terreno "3D".
joltmode
1
Correcto para la malla 3D. El sombreador no hace nada especial con la malla (el sombreador de vértices), el gran trabajo está en el sombreador de fragmentos (el "sombreador de píxeles") donde la búsqueda de texel del splatmap da la cantidad de hierba, piedra, etc. debe obtener (por supuesto, también puede tener una textura 'base', como piedra, por ejemplo, que siempre está al 100% y otras texturas se salpican sobre ella).
Valmond
6

Lo primero es tener claro la estructura de datos de su terreno y lo que quiere de un editor. ¿Es una malla? ¿Una variedad de alturas? ¿Algún tipo de sistema vóxel estilo Minecraft? ¿Necesita poder agregar características de terreno de malla como árboles y edificios? ¿Manualmente, automáticamente o ambos? Podría seguir, pero entiendes la idea.

Un editor de terreno básico no es tan difícil de escribir, pero los detalles variarán mucho según el juego que estés haciendo y, por lo tanto, el tipo de terreno que quieras hacer.

SimonW
fuente
Bueno, una malla / matriz de alturas / voxels, etc. es solo una forma de almacenar los datos asociados, estaba más interesado, sobre cómo escribir las herramientas para llenar estos datos. En realidad, no tengo ni idea de cómo se ve un editor de terreno "detrás de escena". Puedo reverenciarlo, pero solo a mi manera, apuesto a que hay algunas pautas que debo seguir ...
joltmode
2
-1. Esto no parece una gran respuesta para mí. Estás haciendo algunas preguntas, que habrían sido más adecuadas como comentario.
bummzack
5

Esto es principalmente un seguimiento de la respuesta de Valmond, pero no parece lo suficientemente corto como para agregarlo como comentario.

Una vez que empiece a crear un editor básico, es posible que desee experimentar generando el mapa de altura por completo en la GPU. Esto es completamente opcional, pero es una buena forma de descargar el trabajo en la GPU para un terreno en constante cambio. Valmond ya mencionó las salpicaduras de textura que se están haciendo en el sombreador de píxeles, pero también se puede usar el sombreador de vértices, usando una búsqueda de textura para subir y bajar los vértices en la cuadrícula. Aquí hay un tutorial sobre cómo lograr esto con el sombreador de vértices. El material no sombreado es específico de C # y XNA, pero lo importante está en el código del sombreador.

En este caso, su código en el lado de la CPU solo se ocupará de modificar la textura de escala de grises almacenada en la memoria. Su cuadrícula de malla permanece plana, la CPU no actualiza los vértices. Cada vez que se cambia la textura, la nueva textura se puede pasar a la GPU.

Tenga en cuenta que no todos los modelos de sombreado admiten el muestreo de textura en el sombreador de vértices (por ejemplo, en HLSL necesita al menos el modelo de sombreador 3.0).

ChrisC
fuente
0

Puede echar un vistazo a Ogre's ETM http://www.ogre3d.org/addonforums/viewforum.php?f=16 , debería darle algunas ideas. Artifex Terra se basa en él si quieres verlo en acción.

Johann
fuente
2
Le sugiero que combine sus respuestas y elimine las no utilizadas.
joltmode
Para el terreno creado / manipulado por GPU, consulte los artículos de Scape de Gilliam de Carpentier, lectura muy informativa sobre el tema. decarpentier.nl/scape-render
Johann
Como Tom ya lo sugirió, los artículos de Scape podrían haber servido ya como una referencia interesante sobre la generación y representación del terreno. Pero desde esa sugerencia, he publicado otro artículo de Scape que es aún más relevante para este tema, cubriendo completamente su canal de edición basado en pincel. Así que pensé en hacértelo saber. www.decarpentier.nl/scape-brush-pipeline