Skip to main content
EspañolTutorial

Guacamaya Grooming Tutorial : (Español)

By March 17, 2025March 20th, 2025No Comments

El siguiente tutorial no es un tutorial paso a paso en el que se explica como lograr un grooming perfecto de plumas, sino más bien la explicación de cómo afronto yo personalmente este tipo de proyecto y en el cual ire planteado el porque tomo las decisiones que aquí muestro, ademas del proceso de I+D, en el cual a veces se hacen pruebas y se explora algunas ideas.
El proceso de grooming y en especial el relacionado con plumas no tiene un unico metodo definitivo ni mejor, cada artista recurre al arsenal de ideas y herramientas que mejor le funcionan.
En este caso en concreto, yo mismo he modelado y esculpido el animal, y yo mismo hare el rig, por lo que teniendo una visión completa de todo el proceso, puedo adaptar cada parte a mi propia visión de trabajo; pero en la mayoría de los casos, el grooming esta sujeto a decisiones externas y condicionado al workflow y pipeline de cada estudio o empresa.
Todo proceso de recreación 3D, y en particular el de personajes y grooming, empieza antes de abrir Houdini (o cualquier otro software 3D), en la etapa de Pre-Producción.

PreProducción.

El primer paso que suele hacer es la recopilación de material de referencia: fotos y videos del animal o la criatura en la que vamos a trabajar, asi como tambien modelos de las plumas especificas del pajaro que vamos hacer.
https://www.featherbase.info
Es una pagina web dedicada a coleccionar y clasificar plumas de todo tipo de animales.Otra cosa que suelo hacer es recopilar información en internet de proyectos similares; Seguramente ya haya alguien que haya creado el grooming al animal con el que estemos trabajando, o al menos uno parecido. Así podremos ver como han afrontado este reto otros artistas, a que acabado final han llegado, y si tenemos suerte, podremos obtener información sobre como trabajaron.
En este caso en Artstation he encontrado varios proyectos de una gran variedad de calidades, entre los que destacan:

https://www.artstation.com/artwork/L3R9vP de Yuriy Dulich
https://www.artstation.com/artwork/AlLBRz de Leonardo Miranda
https://www.artstation.com/artwork/QnYrrL de Vaibhav Gupta
https://www.artstation.com/artwork/YKo4Db de Mahmoud Kamal

Con Pureref he creado un tablero con toda clase de imágenes que he recopilado en mi etapa de investigación, y algunas las he separado por partes: fotos de alas, patas, cabeza, etc.


y me he hecho un pequeño esquema de las diferentes partes del grooming, es solo para tener una idea de la variedad de zonas que a priori voy a trabajar.

Consideraciones de Modelado.

La pose en que vamos a trabajar es muy importante para saber como vamos realizar el groom.
Una de las principales consideraciones es la pose de las alas, el angulo en el que estará modelado y que tan extendida estará.
En mi caso he decidido modelarla con las alas en vertical, creo que es una pose que sigue la postura erguida de este tipo de pájaros al igual que los loros, y a diferencia de las gallinas o los patos, que creo funciona mejor en horizontal.

Guacamaya Model
Este tipo de consideraciones varían dependiendo también de las exigencias de rigging.
Hacerlas horizontales o verticales no solo facilita el grooming sino también el rigging, por lo que se suele descartar poses en ángulos diferentes a 90º, ya que es mas fácil alinearlas.
El modelado lo he hecho por partes, las garras, uñas, parte superior e inferior del pico, ojos y cuerpo son diferentes geometrías, y las he exportado en diferentes niveles de subdivisión: el nivel mas bajo para rigging y una media y alta para grooming y render.
Para trabajar los diferentes aspecto del grooming como son las mascaras, prefiero pintar directamente en la geometria que usar mapas de texturas, es una preferencia personal, que me otorga flexibilidad de hacer cualquier retoque dentro de houdini, y como la información se guardan como atributos, siempre puedo manipularlos con nodos como wrangles, attribute blur, etc.
Es muy difícil tener un modelo que funcione bien a la primera, por lo que hay que estar preparado para posibles cambios y retoques futuros.

GeoPrep

La organización es muy importante en un proyecto tan complejo como este. En OBJ he creado una network solo para la preparación de las diferentes partes y niveles de detalle del modelado.
Con un nodo attributePaint empiezo a dividir mi personaje por las diferentes zonas que trabajare.




Las Alas

El ala estará compuesta por una capa de plumas principales, llamadas “Fligh”, y luego una capa interna y otra externa, cada una con dos filas de plumas: “Coverts” y las “MidCoverts” (las mas cortas).
El proceso empieza con colocación de guías que servirá para luego sustituirlas por las plumas “reales” (aunque nada es real aquí).
Aunque se pueden colocar las guías a mano, yo prefiero trabajar lo mas proceduralmente.
Por eso he decidido seleccionar unos edges en la base inferior del ala (1), que me servirá como base para colocar las plumas principales o “Fligh”, una vez seleccionado esos edges, convierto esa selección en una curva, y la duplico y la desplazo hacia abajo y le doy la forma externa del ala con las puntas de las plumas (2).


Y luego hago un resample usando el nodo “curve_resample_by_density” a ambas curvas (base y punta) con tantos puntos como plumas quiero, y luego paso a generar las guías usando esos puntos.
El nodo “curve_resample_by_density” es un nodo muy util que me permite mover los puntos a travez de las curvas, de manera controlada, así puedo definir exactamente donde quiero que esten las raices de las plumas y sus puntas.

 

Luego en un point wrangle por el input 1 introduzco los puntos (1) que me quedan despues de borrar los polylines.
Y por el input 2 introduzco la curva que he desplazado y que representa el borde exterior de las plumas, donde estaran las puntas de las plumas.
Y uso el siguiente codigo vex para generar las guias:

vector pos = point(1,”P“, @ptnum);         // Leo la posicion de puntos de la linea (2)
int pt1 = addpoint(0, pos);                           // Añado un nuevo punto a la geo de la entrada 1, que llamo pt1, y que representa la punta.
addprim(0,”polyline”, @ptnum, pt1);     // Creo una polyline entre la raiz y la punta

Ya tenemos avanzada las guias, volveremos a trabajar con ella luego, ahora estudiaremos que tipo de plumas colocaremos alli, que formas y aspectos tienen.

Modelado de Plumas Flights

Para las plumas Flights he decidido recrear 4 modelos diferentes de plumas, que son los que he considerado mas extremos en formas, y hare que se interpolen entre ellas dependiendo de su ubicación:

El modelado es simple, sin clumps ni ruidos, porque esto lo controlare luego de haber colocado todas ellas, incluyendo las interpoladas, de esta manera podre crear mas variedad. Así que por ahora, con la forma exterior y bajando un poco las guias exteriores del diseño de las plumas, quedaran un poco mas redondeadas, abultadas en el centro, este efecto tiene que ser muy sutil, sobre todo para las plumas más largas.

Scatter de las plumas


Ahora que tenemos las guías de una de las alas (la del otra lado la crearemos más adelante), y también tenemos los modelos que usaremos, tenemos que ver como las vamos a colocar.

El método que usa el feathertemplateinterpolate que nos conviene es el de “Weights Arrays“, usando atributos de tipo arrays con los nombres y pesos de los modelos de plumas que queremos usar.

La creación manual de estos arrays no seria una solución procedural, y consume tiempo y concentración hacerlo correctamente.
Así que he creado una tool: GRM curveFeathersTemplate que nos ayudara en el proceso de manera mas amigable y visual:

Esta tool no solo nos genera los dos arrays o matrices que usaremos mas adelante, sino que también nos crea un atributo en las guías que va de 0 a 1, para lo cual era necesario que las guías estuvieran ordenadas en su @primnum. Este atributo llamado @uprim se usa para controlar los pesos en la misma tool, pero ademas lo podremos usar luego como mascara para controlar otros aspectos de las plumas. Que aún no podemos visualizar, porque nos falta recrear las guías de la otra ala, y orientar dichas guías, ya que su orientación determinara las direcciones de las plumas.

Pero gracias a GRM curveFeathersTemplate, las plumas luciran algo tal que asi en el futuro:

Orient Along Curve

El siguiente paso que vamos hacer es recrear el lado opuesto del ala, y una vez creado ambos lados, vamos a orientar las guias.
La orientación de las guias es importante para definir la dirección a la que se orientarán las plumas, asi como el calculo correcto de las barbs.

La orientación de las guías es un proceso que hago haciendo pruebas y viendo cuales son los valores que mejor funcionan dependiendo de la pose del personaje, por ejemplo, en este caso he tenido que aplicar un Yaw de 180º para orientarlas adecuadamente, y un Roll de 90º para ponerlas verticales, y le he añadadido 5º de mas para que no se penetren entre ellas, y se solapen mejor.

Y para hacer el lado opuesto, tengo que hacer un “create reference node” del orientalongcurve y corregir el roll para que queden bien orientadas:



Este es un proceso que hago luego, una vez que paso las guías a condensed feathers, y creo los proxy, porque sin esa referencia, teniendo solo las guías, es imposible saber que valores funcionan…. lo menciono ahora, porque es el paso siguiente en el netwkork de nodos.

 

 

Este tutorial está en continuo desarrollo, próximamente habrá más actualizaciones… los mantendré informado.

 

gerardoc

Leave a Reply