El modelo 3D utilizado en este tutorial: Office wall clock 1

¡Hola, todos!

Este es el primero de dos tutoriales introductorios a los GEOMETRY NODES (nodos de geometría) en Blender (realizados, en particular, con la versión 2.92 del software). Estos tutoriales son para aquellos que ya tienen un conocimiento básico de Blender, porque daré por sentado cierta información sobre la interfaz y el modelado (tanto en el modo Object como en el modo Edit).

Geometry Nodes es una herramienta introducida con la versión 2.92 de Blender y que permite transformar objetos de forma paramétrica, es decir, utilizando valores; es, en efecto, un modificador que le permite realizar múltiples operaciones, combinándolas juntas, dentro de un grupo.

B3D Geometry Nodes 1 01

En Youtube hay muchos tutoriales que muestran, sobre todo, cómo usar Geometry Nodes para reemplazar un sistema de partículas, con el fin de "esparcir" instancias de objetos sobre (o dentro) de otros, como rocas y briznas de hierba en una superficie. Bueno, en el próximo tutorial también haré el mismo ejemplo, pero para este primer tutorial sobre el tema quiero centrarme en algunos conceptos básicos.

Hemos dicho que Geometry Nodes es un modificador y sabemos que los modificadores se distinguen de los operadores de Blender porque permiten realizar transformaciones de forma no destructiva, lo que significa que es posible modificar algunos parámetros también en un momento posterior y encontrar las modificaciones aplicadas también en los otros modificadores; por ejemplo, en el video estoy mostrando la diferencia entre una columnata hecha con el modificador Array (arriba) y otra hecha con el operador Spin (abajo): para modificar la altura de las columnas, en el caso de Array, solo necesito vaya al modo de edición y aumente la geometría básica para encontrar el cambio en todos los demás elementos; usando el operador Spin, en su lugar, tendré que eliminar todos los elementos creados, modificar el primer elemento en el modo de edición y luego aplicar Spin nuevamente.

B3D Geometry Nodes 1 02

Además, una vez realizada una operación con un operador, si pasamos a otra herramienta ya no podremos modificar los parámetros aplicados, mientras que con los modificadores estos parámetros siguen disponibles y también podemos modificarlos posteriormente (hasta que apliquemos el modificador, claro).

B3D Geometry Nodes 1 03

Este es un ejemplo realmente elemental, pero la ventaja de usar modificadores, cuando es posible, es evidente, especialmente cuando existe el riesgo de tener que hacer varios cambios en los elementos o, peor aún, tener que hacer operaciones en sucesión, para lo cual una modificación puede obligarnos a tener que rehacer operaciones posteriores también; lo que se ha dicho también explica por qué el modelado con modificadores se denomina paramétrico y no destructivo.

Geometry Nodes es, por lo tanto, un modificador pero, a diferencia de los otros modificadores básicos de Blender, se puede personalizar combinando nodos.

Los nodos son básicamente la representación visual de dos tipos de elementos: información u operaciones; si tienes experiencia en la creación de Materiales o Post-Producción en Blender, sabrás por ejemplo que puedes tomar una información de entrada (definida en un Nodo), realizar operaciones (a través de la combinación de uno o más nodos intermedios) y obtener el final del dar como resultado la salida (que a su vez se definirá en un nodo). Entonces veamos cómo se aplica este concepto a las transformaciones de objetos, usando Geometry Nodes.

B3D Geometry Nodes 1 04

Como modelo para el ejemplo de este tutorial, estoy usando un reloj de pared; Puedes encontrar el enlace a este modelo en la descripción del video, pero no es necesario tenerlo: puedes seguir el tutorial y aprender los conceptos sin necesariamente replicarlos con este modelo, ¡claro!

B3D Geometry Nodes 1 05

Configuré la interfaz de Blender para trabajar con nodos de geometría, abriendo un editor de tipo "Geometry Nodes" en la vista 3D y abriendo la pestaña Modifiers para el objeto seleccionado en el editor de "Properties" (nota: aquí estoy configurando este diseño porque estoy grabando video en un monitor; si está usando un segundo monitor, le recomiendo que use el editor de propiedades y ventana gráfica 3D en un monitor y abra el editor de "Geometry Nodes" en el otro).

B3D Geometry Nodes 1 06

Las manecillas de los minutos y las horas son objetos separados, relacionados con el reloj; ambos objetos tienen el origen donde debería estar (en su pivote), por lo que una rotación alrededor del eje Y (local) de cada objeto conducirá a una rotación correcta; De todos modos, para este tutorial, recuperemos el Origen de una de las dos manos (seleccionándola y eligiendo Cursor to Selected, del menú que podemos abrir con SHIFT S), luego borramos las tres manos presentes en la escena.

Luego agregamos un Cubo, que tendrá el Origen donde estaban los de las otras manos; esto es importante porque las transformaciones se llevarán a cabo alrededor de ese punto.

B3D Geometry Nodes 1 07

Emparejemos el Cubo en la base del reloj original, para que podamos mover, rotar y cambiar el tamaño del Cubo también cuando transformemos el reloj.

Agreguemos un modificador Geometry Nodes; esta operación se puede realizar desde el menú Modifier del objeto o desde el botón “New” en el editor de Geometry Nodes.

B3D Geometry Nodes 1 08

Por defecto, se crean dos nodos, llamados "Group Input" y "Group Output"; la entrada proporciona la geometría del objeto a medida que se suministra al modificador (por lo que aquí el puntero ya se ha modelado y el origen se ha establecido manualmente: la entrada de geometría comenzará a partir de estos datos), mientras que la salida es lo que se devolverá al final de todo el procesamiento, que luego realizaremos entre estos dos nodos.

B3D Geometry Nodes 1 09

Los nodos se agregan eligiéndolos del menú Add (atajo: SHIFT A); en este menú, en particular, notamos que los nodos están divididos en varios grupos, por lo que por ejemplo los nodos de los grupos Mesh y Geometry actuarán sobre todo el objeto y su geometría (con operaciones en modo Object y en modo Edit), mientras que aquellos del grupo Point actuará sobre las partículas generadas; otros nodos servirán por ejemplo para aportar valores con los que transformar los objetos (grupo de entrada), mientras que otros servirán para modificar estos valores (grupos de utilidades y de vectores).

B3D Geometry Nodes 1 10

Para transformar el cubo en el minutero, agreguemos un nodo Geometry - Transform, colocándolo justo en el medio del enlace que va de Group Input a Group Output (Blender hará las conexiones automáticamente).

B3D Geometry Nodes 1 11

Echemos un vistazo al color de los puertos de entrada y salida de los distintos nodos, con los que impulsamos el flujo de datos y sus operaciones: las Geometrías tienen un color verde e indican que allí se pasa información de toda la geometría del objeto, mientras que, por ejemplo, las puertas de tipo vectorial (que contienen tripletes de valores numéricos, una para cada eje de rotación) son de color violeta.

Operamos en Translation y Scale para definir el minutero; en particular, establecemos la Translation Z en 0.049 y la Scale XYZ en 0.001, 0.001 y 0.050 respectivamente.

B3D Geometry Nodes 1 12

Quiero señalar una cosa de inmediato: la rotación alrededor del eje Y local, para definir los minutos, NO debe realizarse en este nodo, ya que aquí las operaciones tienen lugar con respecto a la geometría movida y redimensionada.

B3D Geometry Nodes 1 13

Para rotar alrededor del Origen del cubo, necesitamos agregar un nuevo nodo Geometry - Transform entre el recién creado y Group Output: allí podremos rotar alrededor del eje Y.

B3D Geometry Nodes 1 14

Otra cosa a tener en cuenta es que estas transformaciones tienen lugar, por así decirlo, "dentro del modificador": examinando la pestaña Item - Transform del objeto, en la vista 3D, notamos que en realidad la Location, Rotation y Scale no se aplicaron al objeto original; además, si cambiamos al modo de edición en una vista 3D, notamos que en realidad el cubo sigue ahí, ¡con sus características originales!

B3D Geometry Nodes 1 15

Este comportamiento, similar en todos los aspectos al encontrado por ejemplo con Subdivision Surface, nos hace entender que Geometry Nodes es en realidad un modificador (y de hecho es posible aplicarlo, en la pestaña Modifiers, haciendo así definitivas las transformaciones... pero no lo aplique, ahora).

Regresemos al editor Geometry Node, seleccione el primer nodo Transform y duplíquelo (con SHIFT D), luego arrastre la salida de Geometry de Group Input a la entrada de Geometry de este nuevo nodo, luego pase la salida de este nodo a la entrada Geometry de Group Output.

B3D Geometry Nodes 1 16

Dentro del nodo, cambiamos Scale Z a 0.025 y Translate Z a 0.025, obteniendo así una manecilla de hora.

B3D Geometry Nodes 1 17

Como podemos ver, es posible tomar la geometría inicial del objeto (el cubo, en este caso) y pasarla, desde Group Input, a múltiples operadores ... pero ¿cómo conseguir AMBAS geometrías modificadas en un mismo Objeto?

Es simple: usando un nodo Geometry - Join Geometry, que nos permite fusionar múltiples geometrías en una y pasar el resultado a otros nodos; es, por tanto, lo que hace el operador Join en modo Edit, pero aquí lo estamos usando de forma no destructiva, ¡dentro de un modificador!

B3D Geometry Nodes 1 18

Restablecemos el valor de Rotation Y del minutero a 0, duplicamos este nodo y colocamos la copia en el workflow de la manecilla de las horas creada hace un momento: de esta forma, podremos configurar el ángulo de rotación de forma independiente tanto para las horas que por los minutos.

Así que veamos cómo crear una pequeña interfaz, con Geometry Nodes, para configurar rápidamente las horas y los minutos en la pestaña Modifier y hacer que las manecillas se muevan automáticamente.

Lo que queremos hacer es configurar la Rotation Y en función del tiempo (un número entre 0 y 60 para minutos y entre 0 y 12 para horas, inclusive). Comencemos con la rotación de los minutos.

Tenga en cuenta que la rotación tiene un conector de entrada púrpura, por lo que es un vector; para separar los canales de entrada, agregamos un nodo Vector - Combine XYZ y conectamos la salida Vector del nodo recién agregado a la entrada Rotation de Transform, luego conectamos la entrada Y de Combine XYZ a una nueva entrada de Group Input (simplemente arrastre el enlace de Combine XYZ al conector de entrada semi-visible de Group Input, en Geometría).

B3D Geometry Nodes 1 19

En la pestaña del modificador Geometry Nodes, el parámetro de entrada "Value" aparecerá con un valor predeterminado; para cambiar el nombre de este parámetro a "Minutes", abra la barra lateral del editor "Geometry Nodes" (acceso directo: N, mientras, el cursor del mouse está en ese editor), luego cambie el nombre de "Value" a "Minutes" .

B3D Geometry Nodes 1 20

También establecemos el valor 0.0 para Min (valor mínimo que el usuario puede escribir) y 60.0 para Max.

B3D Geometry Nodes 1 21

Sin embargo, al escribir cualquier valor entre 0 y 60, notamos que el minutero no gira adecuadamente; esto se debe al hecho de que el valor del ángulo Y se expresa en radianes y, en particular, el ángulo redondo vale 6.28 (es decir, dos veces pi).

Para llevar a cabo este mapeo (es decir, traer un valor del rango 0 - 60 al rango 0 - 6.28), agregamos un nodo Utilities - Map Range entre la salida "Minutes" de Group Input y la entrada Y de Combine XYZ, luego establecemos los valores del nodo (que tienen significados bastante intuitivos), de esta manera:

  •  0 - From Min;
  •  60 - From Max;
  •  0 - To Min;
  •  6.28 - To Max.

B3D Geometry Nodes 1 22

Ahora, en la pestaña Modifiers podemos escribir fácilmente el valor de los minutos que queremos que aparezcan en el reloj y el minutero rotará consistentemente: ¡más conveniente que tener que rotar el objeto alrededor del eje Y!

B3D Geometry Nodes 1 23

En cuanto a la manecilla de la hora, el patrón de los nodos es prácticamente idéntico, excepto por los valores de mapeo en el nodo Map Range; así que procedamos de esta manera:

  • seleccionamos y duplicamos Map Range y Combine XYZ de los minutos, colocando las copias en un espacio vacío del editor;
  • conectamos el Vector del nuevo Combine XYZ a la entrada de Rotación de la manecilla de la hora;
  • conectamos la entrada de Value del nuevo Map Range a una nueva salida de Group Input (que podemos renombrar a Hours, entre otras cosas);
  • modifiquemos el valor "From Max" del nodo de Map Range de las horas de 60 a 12.

B3D Geometry Nodes 1 24

ATENCIÓN: seleccionemos Group Input y asegurémonos de que los valores máximos de los puertos de entrada para Minutes y Hours estén configurados correctamente en 60 y 12 respectivamente.

B3D Geometry Nodes 1 25

En este punto podemos configurar las horas y los minutos de las manecillas en la interfaz de Blender y especificar el tiempo que queremos ... ¿hemos terminado? Bueno, no: en un reloj real, a medida que avanza la manecilla de los minutos, la manecilla de las horas también se mueve (de una hora a la siguiente), mientras que esto no sucede en este modelo (intente, por ejemplo, configurar “2:50” o “4:55”: la manecilla de la hora se detiene en 2 o 4, mientras que debería estar cerca de 3 o 5).

Lo que necesitamos es un pequeño incremento, un “desplazamiento” de rotación de la manecilla de las horas, que debe ser, en particular, de 30 grados como máximo (una doceava parte de un ángulo de giro, cuando el minutero está cerca de 60).

Primero, por lo tanto, debemos tomar el valor de la entrada de Minutes y dividirlo por 2, lo que podemos hacer con un nodo Utilities - Math, cambiando su modo a Divide y estableciendo "Minutes" en el primer valor y 2 en la segunda entrada valor.

B3D Geometry Nodes 1 26

El resultado obtenido es un offset de rotación que se suministrará a la manecilla de las horas, pero este valor está expresado EN GRADOS, mientras que nos gustaría en RADIANS ... bueno, podemos convertirlo fácilmente a través de otro nodo Utilities - Math, esta vez en ¡"To Radians"!

B3D Geometry Nodes 1 27

Para agregar este valor al que proviene del Map Range de la manecilla de la hora (que ya está en radianes), agreguemos un nodo Utilities - Math adicional, esta vez en modo Add, agregando Map Range y la salida de "To Radians" para luego pasar el resultado de la operación a Combine XYZ y luego, finalmente, a la rotación Y de la manecilla de la hora.

B3D Geometry Nodes 1 28

En teoría, en este punto todo funciona, como podemos ver haciendo algunas pruebas con la interfaz en la pestaña Modifier; además, si transformamos el reloj, los cambios se aplican de forma coherente también a las manecillas ... o mejor: ¡se aplican al objeto Cube!

Las dos manecillas son en realidad geometrías del mismo Cubo original, que todavía está allí y está relacionado (como un niño) con el reloj: todos los cambios se han realizado en el nodo Geometry Nodes y se pueden cambiar más tarde, hasta que apliquemos el modificador.

Sin embargo, antes de cerrar este tutorial, una última observación: los campos "Hours" y "Minutes" en la pestaña del modificador también aceptan valores decimales y los consideran en sus cálculos, por lo que el resultado visual puede ser incorrecto (intente poner 0 para minutos pero 9.30 horas).

Una forma poco elegante pero funcional de resolver este problema es insertar nodos Utilities - Math, en el modo Rounding - Floor (es decir, redondear al entero INFERIOR más cercano), inmediatamente después de los conectores "Minutes" y "Hours" de Group Input; esto no ocultará los decimales en la interfaz del modificador, pero al menos los ignorará en los cálculos.

B3D Geometry Nodes 1 29

B3D Geometry Nodes 1 30

Aquí, ahora hemos terminado con la interfaz de nuestro reloj ... ¡y también con este primer tutorial sobre Geometry Nodes en Blender 2.92! En la siguiente (y última, para esta miniserie), veremos un ejemplo de dispersión de objetos por una superficie.

¡Nos vemos pronto!