En esta siguiente parte del curso Serie de tutoriales de Godot vamos a empezar a ver cómo trabajas en 3D en el motor de juego de Godot. Hoy vamos a cubrir los conceptos básicos de 3D, seguido en breve por otro tutorial sobre cómo trabajar con modelos 3D. Como siempre, asumo que ha leído los tutoriales anteriores de la serie o que comprende los conceptos que cubren.
Hay una versión en video HD de este tutorial. disponible aquí.
3D en Godot
Después de trabajar con 2D en Godot, encontrarás que 3D es notablemente similar. Sin duda has estado pasando por alto la interfaz desde el primer día que cargaste a Godot:
La escena funciona de manera notablemente similar, crea una jerarquía de nodos que componen su escena 3D. En 2D, la clase raíz para los nodos visualizables era CanvasItem. En 3D, la clase base es, en cambio, espacial:
Crear una escena 3D simple
Ahora vamos a armar una escena 3D simple. Más allá de un TestCube, Godot no tiene ninguna primitiva 3D incorporada, ¡así que probaremos con un cubo!
Como sucedió con el mundo 2D, aún necesita un nodo raíz para mantener su escena, en este caso, voy a usar Node. Ahora sigamos adelante y agreguemos un Cubo en el origen del mundo. El nombre del nodo es TestCube:
Así que tu escena debería verse así:
Y en la vista 3D:
Ahora detengámonos un momento para discutir el trabajo en 3D…
Navegación y edición 3D
El panel 3D en Godot funciona de manera bastante similar a la vista 2D, sin embargo, entran en juego diferentes ángulos y ventanas. Una cosa importante a tener en cuenta por adelantado son las direcciones de los ejes en Godot. Godot es una locomotora Y-up. Es decir, el eje Y representa arriba y abajo en la pantalla, mientras que X representa la izquierda y la derecha. Entonces, el eje Z representa la profundidad… imagina que tuvieras la capacidad de empujar tu mano en tu monitor… ese sería el eje Z. Tenga en cuenta que las diferentes herramientas usan diferentes ejes ascendentes, por lo que debe tener esto en cuenta al importar modelos.
También suele ser útil tener varias ventanas abiertas cuando se colocan cosas en 3D. Esto se puede lograr usando el menú Ver:
Aquí está el resultado de una vista de 4 vistas (también disponible presionando Ctrl + 4):
Puede configurar la cámara individual de cada vista haciendo clic en la etiqueta en la esquina superior izquierda de una ventana gráfica:
También puede girar libremente la cámara. Por defecto los controles son:
- Rueda de desplazamiento: acercar y alejar
- Botón central del ratón – Órbita
- Mayús + MMB – Panorámica
- Ctrl + MMB – Ampliar
Modificar entidades en la escena es un poco diferente a 2D ya que ahora hay un eje adicional. Aún puede traducir, escalar y rotar usando la misma barra de herramientas y teclas de acceso rápido:
Sin embargo, el widget resultante es un poco diferente. Hay un widget codificado por colores por eje, lo que le permite realizar ediciones en un solo eje a la vez. Aquí, por ejemplo, hay una rotación en efecto:
Cada eje está codificado por colores. El rojo es el eje x, el verde es y, mientras que el azul es z. Puede ver cada eje representado en la cuadrícula detrás con el esquema de color correspondiente.
También puede transformar utilizando la entrada numérica directa, a través del menú Transformar-> Diálogo de transformación…:
Entonces…
Si vienes de un fondo 3D diferente, en realidad hay varias configuraciones para hacer que Godot funcione de una manera con la que estás más familiarizado. Haga clic en configuración en la esquina superior derecha del IDE y hay una serie de configuraciones 3D que puede configurar, incluida la configuración de Godot para que funcione como Maya o Modo, si lo prefiere. También puede cambiar el tamaño del gizmo y modificar su transparencia, etc.
Crear una cámara
Bien, ahora que sabe cómo navegar por la interfaz 3D, volvamos a nuestra escena 3D y agreguemos algo de vida. Aunque hayas agregado un cuadro a nuestro mundo, si ejecutas el juego no verás nada. Hay un par de razones para esto, la primera de las cuales es que no hay cámara en la escena. A diferencia de un juego 2D, la ventana de visualización predeterminada no es suficiente, debe crear una cámara.
Una cámara es simplemente un nodo derivado espacial, simplemente agregue uno a la raíz de su escena:
Asegúrese de agregar el nodo Cámara heredado de Spatial, Camera2D no funcionará. Además, es probable que InterpolateCamera tampoco sea lo que desea… piense en esa clase más como un brazo giratorio de cámara que ayuda a mover la cámara en lugar de como una cámara en sí. Probablemente cubriré esto en el futuro.
Una vez que la cámara se agrega a la escena, asegúrese de moverla para que pueda ver su cubo, así:
Con una cámara en la escena, puede hacer clic en el botón «Vista previa» en la esquina superior derecha de cualquier vista para obtener una vista previa de lo que ve una cámara. Esta es una de las formas en que una vista dividida ciertamente es útil, use una o más vistas para posicionar su escena y dedique una para obtener una vista previa de su cámara.
Si mira hacia abajo al Inspector con su cámara seleccionada, verá que hay varias configuraciones:
La proyección determina el tipo de su cámara, Perspectiva u Ortogonal. Con una cámara en perspectiva, a medida que las cosas se alejan (eje z), parecen más pequeñas, imitando la forma en que funciona el ojo humano. Con una cámara ortográfica, los tamaños siguen siendo los mismos. Como regla general, un juego 3D usa perspectiva, un juego 2D usa ortografía.
Fovy es el campo de visión, o el número de grados a lo largo del eje Y que la cámara puede ver. Un FoV de 180, por ejemplo, le permitiría ver tanto su mano izquierda como su mano derecha si las extendiera hacia su costado. Sin embargo, la mayoría de los juegos usan valores mucho más bajos. En las consolas, 60-75 son valores típicos, mientras que en una PC donde está mucho más cerca del monitor, a menudo se usa un valor más alto como 90.
Los valores de cerca y lejos controlan qué tan cerca comienza a grabar la cámara y qué tan lejos captura una imagen. Básicamente, este es el «alcance» de la cámara. El campo de visión, la relación de aspecto y el plano cercano/lejano se combinan para calcular el frustum de la vista de la cámara.
El valor actual es muy importante si tiene varias cámaras en su escena. Cualquiera que esté marcado como actual es el que se representará. Si solo se especifica una cámara, no es necesario configurar la corriente.
Agregar una luz
Si presiona reproducir en este punto, todavía no verá nada, ya que no hay luz en el mundo. Como en la vida real, sin luz, sin visibilidad. Hay tres opciones disponibles para la iluminación:
Una luz omni es como una luz que irradia en todas las direcciones. Esta es una lámpara de mesa típica sin pantalla.
Una luz puntual, por otro lado, es una luz con un haz y una dirección definidos. Piense en los faros de un automóvil o en la luz de una linterna.
Una luz direccional, por otro lado, es básicamente una fuente de luz masiva con una dirección y eso es todo. Piensa… el sol.
En este ejemplo, vamos a fingir un sol agregando una luz direccional a la escena. En este punto, su escena debería verse así:
La luz direccional se muestra como una gran flecha de estructura metálica en la escena 3D. Usando el movimiento y la rotación, colóquelo de modo que brille sobre su caja en ángulo, así:
Notarás en el Inspector que ahora puedes establecer propiedades tanto para la luz como para las sombras que crea:
En este caso, nos quedaremos con la configuración por defecto. Los ajustes más importantes que verá en esos cuadros de diálogo son Sombra, que le permite activar y desactivar la generación de sombras, Colores, que establece el color de la luz y Energía, que establece la intensidad de la luz.
Ahora que finalmente tenemos una cámara, una luz y un objeto 3D, si le damos al play deberíamos ver:
¡TADA! ¡Tu primera aplicación Godot 3D!
El video
Programación Godot Tutorial 3D