top of page
Foto del escritorBraulio Madrid

Como hacer un esqueleto en blender compatible con Unity 3D



Llevo tiempo que tuve una vez un proyecto a modo de ejemplo que me descargue por ahi, el proyecto solo mostraba como poner varios trajes a un personaje modelado en blender y aunque el esqueleto funcionaba de manera parcial en unity con el esqueleto humanoide, pero de manera completa en como si se tratase de una araña o un robot.


Hay soluciones a parte que ofrecen usar el armature humanoide que viene por defecto en blender, pero cuando lo probé no me funcionó correctamente y lo veía muy engorroso de manejar. Entonces decidí hacer un personaje por mi cuenta y terminar de completar el esqueleto y los errores que tenía y aunque contiene errores, ya alcancé que fuera bastante jugable.


Para continuar usted debe tener un entendimiento mediano de cómo manejar Blender, actualmente estoy manejando la versión 2.79b de blender y la versión 2019.1 de unity


Preparativos


El único requisito es tener un personaje o el esqueleto de una animación para corregir. anotar los nombres de los huesos tal cual viene por defecto en unity, los huesos opcionales será a su gusto, pero no pueden faltar los huesos indispensables. a continuación dejaré una lista de los huesos y su jerarquía.




Hips

|__>Spine

| |__>Chest

| |__>UpperChest

| |__>Neck

| |__>Head

| | |__>Eye.R/Eye.L/Jaw

| |__>UpperArm.L

| | |__>LowerArm.L

| | |__>Hand.L

| | |__>ThumbProximal.L.>ThumbIntermediate.L>ThumbDistal.L

| | |__>IndexProximal.L>IndexIntermediate.L>IndexDistal.L

| | |__>MiddleProximal.L>MiddleIntermediate.L>MiddleDistal.L

| | |__>RingProximal.L>RingIntermediate.L>RingDistal.L

| | |__>LittleProximal.L>LittleIntermediate.L>LittleDistal.L

| |__>UpperArm.R

| | |__>LowerArm.R

| | |__>Hand.R

| | |__>ThumbProximal.R.>ThumbIntermediate.R>ThumbDistal.R

| | |__>IndexProximal.R>IndexIntermediate.R>IndexDistal.R

| | |__>MiddleProximal.R>MiddleIntermediate.R>MiddleDistal.R

| | |__>RingProximal.R>RingIntermediate.R>RingDistal.R

| | |__>LittleProximal.R>LittleIntermediate.R>LittleDistal.R

|__>UpperLeg.R

| |__>LowerLeg.R

| |__>Foot.R

| |__>Toes.R

|__>UpperLeg.L

|__>LowerLeg.L

|__>Foot.L

|__>Toes.L


Creación del Esqueleto


Para continuar debe saber como hacer un Rig básico.


Nos ponemos en modo Objeto y vamos a agregar el primer esqueleto, tal como se muestra en la imagen.

Blender automáticamente crea el primer hueso que lo llama Esqueleto y el hueso también lo llama esqueleto o armature, dependiendo del idioma configurado, a ese primer hueso lo nombraremos "Hips".


Ahora hay que posicionar el hueso al origen de la escena, para eso en modo objeto ponen las coordenadas a cero.


Ahora nos vamos a modo edición y empezamos a posicionar el hueso desde un poco más arriba del coxis hasta la punta de la cabeza, para desplazar la cola y la punta del hueso deben hacerlo con los ejes de desplazamiento bloqueados a Z, para ser los mas preciso posible, ahora vamos a subdividir este hueso en 5 partes.


Como pueden ver los huesos van quedando emparentados uno seguido del otro, Estos nombres debemos cambiarlos por Hips -> Spine -> Chest -> Neck -> Head.


Posicionamos de manera más o menos proporcional.


  • Head: debe comenzar desde el mentón hasta la coronilla, de forma vertical y recta.

  • Neck: debe comenzar desde donde se posiciona la clavícula hasta el mentón, más o menos debe ir dentro del cuello.

  • Chest: debe ir desde la boca del estómago hasta la clavícula.

  • Spine: debe ir desde el ombligo hasta la boca del estomago.

  • Hips: el resto que quede, Unity permite un hueso adicional que separa el pecho en 2 partes, pero este esqueleto está pensado para que funcione bien con la versión 5.x en adelante.



  • Antes de continuar con la clavícula hasta la mano debemos asegurar que el giro es cero y que el esqueleto tendrá simetría.

  • Es importante recalcar que de ahora en adelante todos los huesos tendrán cero grados de giro.

  • Que las distancias de los huesos simétricos debe ser exactamente el mismo.

  • Que el formato de nombres tiene que ser el mismo y tal cual está en la lista, todas las extremidades deben apuntar al eje Y en el sentido de la dirección del Hueso.

  • ​​El eje Z debe estar apuntando fuera del brazo hacia arriba en el caso de los brazos.

  • El ejeZ en las piernas debe estar apuntando hacia atrás Las manos deben estar lo más rectas y planas posibles, generalmente algunos modelos vienen con un tipo de mano encorvada en una posición relajada. Es necesario modificar la topología para que sea la mano plana.

  • La posición de la cadera respecto a las piernas debe formar un triangulo o un rombo entre las cabezas y las colas de los huesos. esto sirve para el caso que el personaje tenga que sentarse la geometría no se destruya y comience a verse raro.

  • Como pueden ver este esqueleto básico ya está completo para unity, pero aun es engorroso de trabajar en el las animaciones. sin embargo guarde el archivo hasta este punto, porque este esqueleto es preciso para manejar animaciones proveniente de otros esqueletos o animaciones biovision BVH.


Algunos ajustes Extra


Si ha llegado a trabajar animaciones con este esqueleto se habrá dado cuenta que es muy incómodo para manejar animaciones, así que agregaremos unos cuantos huesos extra que serán las cinemáticas inversas para el esqueleto y pondremos restricciones a algunos huesos, para que no haga rotaciones extrañas que pudiera verse antinatural en la animación.


Estos huesos ya va mas a gusto de esté encargado de la animación, estos son los que yo necesito para mi comodidad, la forma fácil de hacer estos huesos es haciendo una extrusión del codo, la muñeca, la rodilla y el talón, los dedos de las manos sale de copiar tres falanges de las manos, del pulgar, el índice y el anular y crear un hueso en medio de los ojos que sirva como objetivo.

Por último un Hueso que no tiene un uso concreto si no es más que el de agrupar los huesos anteriores, el resultado final con las restricciones. a parte de los huesos ya mencionados puedes agregar otros huesos con la finalidad de que sean usados con propósitos físicos, como huesos en el cabello, la falda o accesorios, pero esto ya es a gusto y complejidad del proyecto, estas restricciones fueron tomadas de las mismas limitaciones de unity para que fueran compatibles. para agregar una constricción debes pasar al modo pose, señalar el hueso y agregar el modificador, ya sea limitación de rotación (para los huesos que interactúan en unity), copiar rotación (para la IK de los dedos) o Cinemática(para los codos rodillas). a continuación pondré la lista de las restricciones.


Jaw: Espacio Local

límite en X = 0,20

límite en Y = 0,0

límite en Z = -10,10

Eye L y R: Espacio Local

límite en X = -10,15

límite en Y = 0,0

límite en Z = -20,20

Head: Espacio Local

límite en X = -40,40

límite en Y = -50,50

límite en Z = -40,40

Neck: Espacio Local

límite en X = -40,40

límite en Y = -30,30

límite en Z = -40,40

Chest: Espacio Local

límite en X = -40,40

límite en Y = -40,40

límite en Z = -40,40

Spine: Espacio Local

límite en X = -40,40

límite en Y = -40,40

límite en Z = -40,40

Shoulder L y R: Espacio Local

límite en X = -10,20

límite en Y = 0,0

límite en Z = -10,10

Upper Arm L y R: Espacio Local

límite en X = -100,60

límite en Y = -120,60

límite en Z = -130,70

Lower Arm L y R: Espacio Local

límite en X = 0,0

límite en Y = -90,90

límite en Z = -150,0

Hand L y R: Espacio Local

límite en X = -70,70

límite en Y = 0,0

límite en Z = -30,30

Upper Leg L y R: Espacio Local

límite en X = -120,30

límite en Y = -60,60

límite en Z = -60,60

Lower Leg L y R: Espacio Local

límite en X = 0,130

límite en Y = -75,75

límite en Z = -0,0

Foot L y R: Espacio Local

límite en X = -45,45

límite en Y = -30,30

límite en Z = 0,0

Fingers IK: Espacio Local

límite en X = -90,10

límite en Y = 0,0

límite en Z = 0,10

Fingers IK: Espacio Local

límite en X = -45,20

límite en Y = 0,0

límite en Z = -45,10

dedo anular proximal, mover 10° en Z

dedo meñique proximal, mover 10° en Z

dedo índice intermedio, mover 5° en Y

dedo medio intermedio, mover 5° en Y

dedo anular intermedio, mover 5° en Y


Algunas consideraciones en unity.

  • Al momento de importar el personaje con el esqueleto y remapear los huesos, hay que tener en cuenta algunas observaciones.

  • Unity pinta de rojo los huesos que no logró mapear automáticamente en la plantilla, esto se debe a que el nombre del hueso no coincide y la posición en el espacio tampoco.

  • Si una de las mitades derecha o izquierda no logra ser mapeada, esto es por cuestion de que el formato de los nombres de la derecha no coincide con la izquierda. Debe asegurarse que los nombres coincidan.

  • Si el mapeado es correcto, pero los huesos en el personaje se ven en rojo, esto quiere decir que la pose del personaje no coincide con la pose T, unity tiene la opción de forzar al esqueleto en una pose T (Enforce T Pose), pero yo no recomiendo ese camino. es mejor probar a buscar el ángulo correcto donde el hueso se ve en verde y anotar esos ángulos y luego corregirlo en el archivo de blender.

  • Unity no tiene una manera de mostrar los ángulos correctos, aquí el truco es redondear y medir con un transportador los ángulos directamente en la pantalla.

  • Los ángulos calculados para las limitaciones, los tome directamente del apartado de músculos. tenga en cuenta que son aproximaciones.

  • Unity tiene la opción en el apartado de animaciones del personaje, la importación de las limitaciones provenientes de blender, no estoy seguro si realmente funcionan.

  • Unity tiene la opción de optimizar el esqueleto, en esta opción agregue el hueso GeneralPos, esto evitará que unity cuente con estos huesos extra.

Conclusiones.

Este Blog ya se hizo muy largo, espero que haya llegado hasta aquí, si es asi no te dejaré con las manos vacías. te dejo el esqueleto completo aquí

175 visualizaciones0 comentarios

Comments


bottom of page