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).
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:
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í:
Perdón por las imágenes grandes, preparé esto en el trabajo ...
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.
fuente
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).
fuente
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.
fuente