Publicat per

R3 – Rigging

Publicat per

R3 – Rigging

Introducción En esta entrada hago el rigging de los modelos texturizados de los dos robots de las actividades anteriores. Se nos propone…
Introducción En esta entrada hago el rigging de los modelos texturizados de los dos robots de las actividades anteriores.…

Introducción

En esta entrada hago el rigging de los modelos texturizados de los dos robots de las actividades anteriores. Se nos propone utilizar Mixamo (aunque finalmente yo he utilizado accuRIG) y realizar el esqueleto manualmente en nuestro sofware, en mi caso Blender.

Flujo de trabajo

Mixamo

En el enunciado de la actividad se nos propone Mixamo como herramienta para riggear nuestro modelo automáticamente. No obstante, la web de este servicio no me deja subir los archivos .fbx de mis modelos texturizados (muy probablemente debido al tamaño de las texturas). Por ese motivo únicamente he podido hacer la prueba con el modelo sin texturizar:

AccuRIG

AccuRIG funciona de manera similar a Mixamo pero en local y dejándonos más control, ya que podemos movernos entre las distintas fases del rigging libremente. De esta manera podemos trabajar con modelos más detallados.

Por algún motivo el software no muestra correctamente las texturas en este modelo (en el V1 sí), pero no es preocupante porque la exportación es correcta. En esta fase ponemos indicadores en los puntos de flexión.

Recomiendo también ubicarlos correctamente en la vista lateral (barra lateral izquierda) y desactivar la casilla “Midpoint Placement” (panel derecho) porque si no se nos centran los puntos y perdemos el trabajo de la vista frontal.

En Hand Rig he seleccionado 0 dedos porque mi robot no los tiene modelados individualmente, ya que los tiene en forma de puño.

Finalmente, podemos visualizar con animaciones de ejemplo el modelo riggeado con ejemplos y retroceder en el flujo de trabajo si no nos convence cualquier ajuste.

UPDATE: Resulta que el error sucedía porque en Blender exporté sin querer el modelo con más de un mapa de UVs y accuRIG se hacía un lío. Por suerte podemos cargar el .fbx con los mapas corregidos y cargar los datos del rigging anterior con la opción de “Load AutoRIG Data”.

UPDATE: Y por algún motivo más las texturas exportadas con AutoRIG no son correctas, pero importando el .fbx en Blender y copiando el material que creé en la actividad anterior se resuelve el problema.

Rigging a  mano en Blender

Como en la última actividad para exportar los modelos junté todas las mayas, el primer paso para hacer rigging va a ser seleccionar el objeto en modo edición y separar “By Loose Parts” para tener todos los objetos individualmente en el editor. Me he descargado un armature de Mixamo para tener el mismo número de bones y así facilitar el retargeting.

En las zonas de flexión selecciono las caras que marcan el centro de unión y ubico el centro del objeto en esa zona.

Posteriormente, muevo el cursor a ese punto y por último traigo la cabeza del bone a donde está el cursor.

Ahora borro la mitad del esqueleto y utilizo la función symetrize de Blender para duplicarlos y no tener que hacer el doble de trabajo. Importante incluir .L (o R) al final del nombre de cada bone para que la función haga efecto.

Ahora, para tener los huesos bien numerados, le he pedido a ChatGPT que escriba un script para renombrar todos los bones que se han creado con la simetria, de manera que cambia el nombre de, por ejemplo, “mixamorig:LeftHand.L” a “mixamorig:RightHand.R”

Ahora utilizio el Addon Parent to nearest bone para parentar los objetos a la armature. Menos la parte del torso que la hago con Automatic Weights para que tenga flexibilidad respecto a la spine.

Finalmente aquí tenemos los modelos importados en Unity con los huesos mostrados gracias al package Animation Rigging “Bone Renderer Setup”.

Resultados

Time-lapse workflow: https://youtu.be/3PXBWwFq4Xo

Podéis ver los archivos si sois miembros de la UOC en la siguiente carpeta de Google Drive: https://drive.google.com/drive/folders/1WeB18sHIAXxtb-lJtBhdWBLydxLz7d9s?usp=sharing

Valoraciones finales

Por un lado, opino que los resultados con herramientas de automatización son muchísimo mejores de lo que esperaba sobre todo teniendo en cuenta que mis modelos son hard surface. Creo que son una herramienta muy útil porque deja un esqueleto listo para usar en cualquier motor eliminando incompatibilidades (siempre y cuando, claro está, sea una figura humanoide).

Por otro lado, hacer rigging “a mano” en Blender a mí me resulta cómodo y eficiente. Sobre todo deja muchísimo más control sobre los movimientos, ya que se pueden aplicar constraints a los huesos para que se muevan de una manera determinada. Por contrapartida, la compatibilidad del esqueleto que diseñemos en Blender puede no ser la mejor para softwares estandarizados como animaciones de Mixamo o Unity, de modo que hará falta investigar cuál método es más práctico de cara a animar en la siguiente fase del desarrollo.

 

Debat0el R3 – Rigging

No hi ha comentaris.

Publicat per

R2 – Texturizado

Publicat per

R2 – Texturizado

Introducción En esta actividad texturizo los dos modelos del trabajo anterior con el addon Material Works de Blender Bros y hago un bake…
Introducción En esta actividad texturizo los dos modelos del trabajo anterior con el addon Material Works de Blender Bros…

Introducción

En esta actividad texturizo los dos modelos del trabajo anterior con el addon Material Works de Blender Bros y hago un bake de los materiales para que sean game ready.

Flujo de trabajo

Primero de todo agrupé los distintos elementos del modelo y les asigné vertex groups para mantener la distinción de materiales en un mismo objeto.

Tras crear los nuevos materiales con el plugin Material Works utilicé la función “Remap Users” en los materiales de blender para vincular todas las instancias del material de ejemplo que utilicé al nuevo material:

Seleccionando todas las partes del robot en modo edición “faces”, hago una smart UV project para conseguir el mapa de UVs

Para crear los materiales utilizo Material Works, de Blender Bros. La gracia de este plugin es que permite generar metales con diferentes capas de desgaste configurables a voluntad. He prestado especial atención en el desgaste de los bordes (edges) para resaltar más la silueta de las figuras hard surface.

Y una vez hecho todo esto, llega el momento de hacer el bake de las texturas. Este paso costó mucho más de lo esperado, ya que todas las herramientas de las que disponía para hacer el bake daban herror o no creaban un mapa de UVs coherente. Siguiendo el tutorial “Blender Baking Textures in less that 1 Minute using Omniverse“, decidí utilizar la implementación de Envidia Omniverse en Blender.

Inplementación de nvidia omniverse

Por desgracia, con este método por alguna razón aparecía el error Circular dependency for image “Basic_Metal_basecolor.png” from object “Cube.029_baked” (ejemplo). Tras prueba y error descubrí que se producía debido al uso compartido de las instancias de las texturas del plugin Material Works, de modo que para arreglarlo fui uno por uno en los nodos de las texturas haciendo únicas las instancias (single-user copy):

Crar instancias únicas de textura

Este proceso convierte en tedioso lo que en un principio pensaba que iba a ser sencillo (eso sin contar las diversas otras pruebas que realicé haciendo bake con la herramienta nativa de Blender, usando el blugin Bystedts Blender Baker…). Aun así, creo que Omniverse es una herramienta muy potente y si creas las texturas por tí mismo adecuadamente puede ser un gran aliado (eso sí, su coste computacional es elevado).

Aquí tenemos el resultado con las texturas procedurales:

Y aquí con las texturas de Omniverse:

No obstante, precisamente antes de comenzar a texturizar el robot V2 me encontré con este tutorial: Blender to Unreal and Unity – Export and Bake Anything, que mencionaba un addon que todavía no había probado: Principled Baker.

Y tras probarlo, llegué a la conclusión de que era una mucho mejor opción, ya que era más eficiente, no daba error con mis texturas y el mapa de UVs era más fiel al de las texturas procedurales. Aquí un ejemplo:

En este caso pude añadirle los decals que quise siguiendo este tutorial, y utilizando los recursos de Chuck_CG en Gumroad: https://chuckcg.gumroad.com/l/SXxhW?layout=profile

En el caso de los logos, pertenecientes a cada modelo, le pedí a ChatGPT que creara unas ilustraciones con la sinopsis del trabajo anterior como input y las retoqué con Photoshop:

Para el texturizado podéis ver un time-lapse con el flujo de trabajo ya optimizado:

Mapa de UVs finales:

Robot V1:

Robot V2:

 

Sketchfab links

Robot V1: https://skfb.ly/p8sCw

Robot V2: https://skfb.ly/p8sCD

Final thoughts

Echando la vista atrás, el proceso ha sido más intenso y tedioso de lo que esperaba. Y siendo sinceros ni siquiera he invertido apenas tiempo en el mapa de UVs (también porque creo que las texturas procedurales hacen que no se noten apenas los cortes de sección). Aun así, debería haber dado más margen al desplegar, ya que algunas caras se solapan.

Estoy bastante satisfecho con el trabajo final, aunque para facilitar el proceso he tenido que juntar todos los objetos en uno solo. Ya veremos cómo afecta eso en las siguientes fases del proyecto.

Referencias

Recursos

Material works. (n.d.). Blender Market. https://blendermarket.com/products/material-works

Danielenger. (n.d.). GitHub – danielenger/Principled-Baker: Blender Add-on: Bake PBR textures with a few clicks. GitHub. https://github.com/danielenger/Principled-Baker

Develop on NVIDIA Omniverse platform. (n.d.). NVIDIA Developer. https://developer.nvidia.com/omniverse

Sci Fi decal Kpack for blender and Kit Ops. (n.d.). Gumroad. https://chuckcg.gumroad.com/l/SXxhW?layout=profile

Tutoriales

osasart. (2023, July 23). How to Add Decals/Logos to Any Model in Blender New update!!! [Video]. YouTube. https://www.youtube.com/watch?v=Cev__NKXZe8

Markom3D. (2022, January 6). Blender Baking Textures in less that 1 Minute using Omniverse [Video]. YouTube. https://www.youtube.com/watch?v=C6i–hhNt5M

GDT Solutions. (2022, January 7). How to EXPORT 3D model WITH PACKED TEXTURES from Blender to Unity – Extract textures in Unity [Video]. YouTube. https://www.youtube.com/watch?v=BYf4QnzXynQ

dariomac. (2021, September 30). Blender to unreal and unity – export and bake anything [Video]. YouTube. https://www.youtube.com/watch?v=BhecWp8AcDI

Debat2el R2 – Texturizado

Publicat per

R1 – Modelado

Publicat per

R1 – Modelado

Robots de combate V1 & V2 En un futuro no muy lejano, una facción de poder se dividió en dos después de…
Robots de combate V1 & V2 En un futuro no muy lejano, una facción de poder se dividió en…

Robots de combate V1 & V2

En un futuro no muy lejano, una facción de poder se dividió en dos después de una guerra devastadora. La Resistencia conservó sus robots de combate originales, la versión V1, mientras que el Imperio Asiático desarrolló la versión avanzada, la V2. Ahora ambos bandos se preparan para una batalla épica con estas máquinas titánicas como protagonistas.

Esbozos iniciales

Esbòs Robot V1

Robot V1 – La resistencia

Esbòs Robot V2

Robot V2 – Imperio Asiático

Referencies

Referencias

Bocetos técnicos

Esbòs tècnic en perspectiva

Boceto técnico en perspectiva

Esbòs tècnic front and left

Boceto técnico front and left

Modelos 3D

Capturas del V1 – Viewport, wireframe, render – Sketchfab (.fbx)

Capturas del V2 – Viewport, wireframe, render – Sketchfab (.fbx)

Proceso creativo

Los esbozos (hechos con Procreate) fueron algo rápido para poder empezar con el modelado lo antes posible. Me desarrollo mejor creativamente creando los detalles in situ en Blender. Problemas que me encontré: incoherencias de perspectiva e imposibilidades articulares, por lo que, especialmente en los hombros de los robots, existen diferencias respecto a los esbozos.

Mi “workflow” en Blender pasa por utilizar dos plugins muy conocidos en el hard modeling, que son BoxCutter y HardOps, creando las figuras a partir de booleanos. También me gusta aplicar beveling a todas las prendas para conseguir una estética más realista; el problema de esto es que la densidad de polígonos aumenta considerablemente. En esta primera actividad, al no mover el modelo a Unity, no me he preocupado, pero es muy posible que en iteraciones futuras tenga que simplificar la topología.

Aquí tiene dos vídeos del proceso de modelado como extra ;)

 

Debat2el R1 – Modelado