Creado por Gwizz
Abrimos el Editor Settings, en la pestaña Shortcuts buscamos Reload Saved Scene y asignamos el atajo Ctrl + R, con este atajo, podemos recargar la escena y ver los cambios producidos debido a cambios de parámetros o en el código.
Y eso es todo. Antes de continuar, voy a revisar la lógica del código, ya que este ejemplo me resulta más fácil de entender que el tutorial de MakerTech.
Los vóxeles son un array tridimensional que almacena la información
de cada bloque del mundo. En este caso, un valor de
1 representa un bloque sólido, mientras que un valor de
0 indica que no hay bloque.
La función create_face() se encarga de generar las caras
visibles de los bloques. Haciendo una analogía sencilla, los vértices
son los puntos que forman las esquinas de una cara. Las normales
indican hacia qué dirección está orientada esa cara, algo que Godot
utiliza para calcular la iluminación. Por último, las UV determinan
qué parte de una textura se aplicará sobre la cara, es decir, cómo se
verá visualmente su material o imagen.
Aunque una cara de un cubo parece un cuadrado, internamente se
divide en dos triángulos. Por ello, la función create_face()
devuelve los vértices, normales y UV de los dos triángulos que
forman dicha cara.
Seguimos con generate_mesh(), se crea un array con todas las caras, en cada ciclo dibujamos las 6 caras del cubo, comprobamos si hay cubos contiguos para saber si hay que dibujar la cara o no.
Hasta este punto, cada cara devuelve sus propios vértices, normales y UV. Sin embargo, Godot no puede construir una malla a partir de decenas o cientos de caras independientes, por lo que primero se recopilan todos esos datos en tres arrays más grandes.
Este bloque une la información de todas las caras en una única lista de vértices, normales y UV.
A continuación, estos arrays se convierten a
PackedVector3Array, un formato optimizado que Godot
utiliza para almacenar grandes cantidades de datos geométricos.
Después se crea un array especial donde cada posición tiene una función concreta. Por ejemplo, una posición almacena los vértices, otra las normales y otra las UV.
Finalmente, Godot utiliza toda esta información para construir la
malla mediante ArrayMesh.
En resumen, este bloque reúne toda la información geométrica generada por las caras y la transforma al formato que Godot necesita para crear una malla visible.
Si os cuesta entender las coordenadas y por qué funcionan de esa forma, una herramienta muy útil es GeoGebra. Permite visualizar puntos y figuras en 3D, por lo que resulta ideal para comprender dónde se sitúan los vértices y cómo se construyen las caras de una malla.
No hay comentarios:
Publicar un comentario