¿Qué estás buscando?
Engine & platform

Mecanismos humanoides

ROBERTL / UNITY TECHNOLOGIESContributor
May 26, 2014|16 minutos
Mecanismos humanoides
Para tu comodidad, tradujimos esta página mediante traducción automática. No podemos garantizar la precisión ni la confiabilidad del contenido traducido. Si tienes alguna duda sobre la precisión del contenido traducido, consulta la versión oficial en inglés de la página web.

Este post explica la tecnología detrás de Mecanim Humanoids. Cómo funciona, sus puntos fuertes y sus limitaciones, por qué se han tomado algunas decisiones y, con un poco de suerte, algunas pistas sobre cómo sacarle el máximo partido. Consulte ladocumentación de Unity para obtener instrucciones y configuración general.

Aparejo humanoide y espacio muscular
Aparejo humanoide y espacio muscular

Mecanim Humanoid Rig y Muscle Space son una solución alternativa a las jerarquías de nodos de esqueleto estándar y transformaciones geométricas para representar el cuerpo humanoide y animaciones.

El Aparejo Humanoide es una descripción sobre una jerarquía de nodos de esqueleto. Identifica un conjunto de huesos humanos y crea un Referencial Muscular para cada uno de ellos. Un Referencial Muscular es esencialmente una rotación previa y posterior con un rango y un signo para cada eje.

Brazo y estiramiento

Un Músculo es un valor normalizado [-1,1] que mueve un hueso para un eje entre el rango [min,max]. Tenga en cuenta que el valor normalizado de Muscle puede ir por debajo o por encima de [-1,1] para sobrepasar el rango. La amplitud no es un límite estricto, sino que define el intervalo de movimiento normal de un músculo. Un Aparejo Humanoide específico puede aumentar o reducir el alcance de un Referencial Muscular para aumentar o reducir su amplitud de movimiento.

El Espacio Muscular es el conjunto de todos los valores normalizados de Músculo para el Aparejo Humanoide. Es una pose Humanoide Normalizada. Un rango de cero (mín= máx) para un eje óseo significa que no hay Músculo para él.

Por ejemplo, el codo no tiene un músculo para su eje Y, ya que sólo se estira hacia dentro y hacia fuera (eje Z) y rueda hacia dentro y hacia fuera (eje X). Al final, el espacio muscular se compone de un máximo de 47 valores musculares que describen completamente la pose de un cuerpo humanoide.

Estiramiento del brazo

Una cosa hermosa acerca de Muscle Space, es que está completamente abstraído de su original o cualquier aparejo esqueleto. Se puede aplicar directamente a cualquier Rig Humanoide y siempre crea una pose creíble. Otra cosa bonita es lo bien que interpola Muscle Space. En comparación con la pose de esqueleto estándar, Muscle Space siempre interpolará de forma natural entre los fotogramas clave de la animación, durante la transición de la máquina de estados o cuando se mezcle en un árbol de mezcla.

Desde el punto de vista computacional, también es más eficaz, ya que el espacio muscular puede tratarse como un vector de un escalar que puede interpolarse linealmente, a diferencia de los cuaterniones o los ángulos de Euler.

Una aproximación al cuerpo humano y al movimiento humano

Cada nuevo rig de esqueleto construido para un personaje humanoide o cualquier animación capturada será una aproximación al cuerpo humano y al movimiento humano. No importa cuántos huesos o lo bueno que sea tu hardware MOCAP, el resultado será una aproximación al real.

Riggers, empresas de juegos, escuelas o empresas de software propondrán su propia versión de lo que creen que representa mejor el cuerpo humano y el movimiento y lo que mejor se adaptará a sus necesidades de producción.

La elaboración de Mecanim Humanoid Rig y Muscle Space se enfrentó a algunas decisiones difíciles. Tuvimos que encontrar un compromiso entre rapidez de ejecución y calidad de animación o apertura y definición estándar.

2 Huesos de la columna vertebral
Columna vertebral

Esta es difícil. ¿Por qué 2 y no 3? ¿O un número arbitrario de espinas óseas? Descartemos lo último, no se trata de investigación biomédica. (Tenga en cuenta que siempre puede utilizar un Aparejo Genérico si necesita absolutamente este nivel de precisión). Un hueso de la columna vertebral está claramente mal definido.

Añadiendo un segundo se llega casi hasta el final. Un tercero o incluso un cuarto sólo aportarán una pequeña contribución a la pose humana final. ¿Por qué? Al observar cómo se dobla una columna vertebral humana, notará que la parte de la columna que está sobre la caja torácica es casi rígida. Lo que queda es un punto de flexión principal en la base de la columna vertebral y otro en la base de la caja torácica. Así que hay dos puntos principales de flexión. Observar a un contorsionista incluso en poses extremas lo demuestra claramente. Teniendo en cuenta todo esto decidimos tener 2 huesos de la columna vertebral para el Aparejo Humanoide.

1 Hueso del cuello

Este es más fácil que para la columna vertebral. Tenga en cuenta que muchos rigs de esqueletos de juegos ni siquiera tienen un hueso del cuello y se las arreglan para hacer el trabajo con sólo un hueso de la cabeza.

Rotación DoF

Como con la mayoría de los rigs de esqueleto (es aún más frecuente para juegos), el Mecanim Humanoid Rig solo soporta animación de rotación. Los huesos no pueden cambiar su traducción local respecto a su padre. Algunos paquetes 3D inducen cierta cantidad de traslación en los huesos para simular la elasticidad de las articulaciones o la animación de aplastamiento y estiramiento. Actualmente estamos estudiando la posibilidad de añadir DoF de traslación, ya que es una forma relativamente barata en términos de rendimiento computacional para compensar la calidad de la animación en rigs de esqueletos menos detallados. También permitiría a los usuarios crear animaciones de aplastamiento y estiramiento reajustables.

giro

Sin huesos de torsión

Los huesos de torsión se suelen añadir a los rigs de esqueleto para evitar problemas de deformación de la piel en brazos y piernas cuando están en configuración de torsión extrema.

Los huesos de torsión ayudan a distribuir la deformación inducida por la torsión desde el principio hasta el final de la extremidad.

En el Espacio Muscular, la cantidad de torsión está representada por un Músculo y siempre está asociado al hueso padre de un miembro. Ex: La torsión del antebrazo se produce en el codo y no en la muñeca.

giro

Los Rigs Humanoides no soportan huesos de torsión, pero el solucionador de Mecanim le permite especificar un porcentaje de torsión para ser tomado del padre y puesto en el hijo de la extremidad. Está predeterminado en 50% y ayuda mucho a prevenir el problema de deformación de la piel.

Raíz y centro de masa humanoides

Ahora bien, ¿cuál sería la mejor manera de representar la posición y orientación del cuerpo humano en el espacio mundial?

El hueso más alto de la jerarquía (normalmente caderas, pelvis o como se llame) es donde se encuentran las curvas de posición y orientación del espacio del mundo en un rig de esqueleto estándar. Si bien esto funciona bien para un personaje específico, se vuelve inapropiado cuando se hace retargeting ya que de un rig de esqueleto a otro el hueso más superior suele tener una posición y rotación diferente en relación con el resto del esqueleto.


backflip

El Espacio Muscular utiliza el centro de masa del humanoide para representar su posición en el espacio mundial. El centro de masa se aproxima utilizando una distribución media de la masa de las partes del cuerpo humano. Partimos del supuesto de que, tras los ajustes de escala, el centro de masa para una pose humanoide es el mismo para cualquier personaje humanoide. Es una gran suposición, pero ha demostrado funcionar muy bien para un amplio conjunto de animaciones y personajes humanoides.

Es cierto que para animaciones de pie o caminando, el centro de masa se encuentra alrededor de las caderas, pero para movimientos más dinámicos como una voltereta hacia atrás, se puede ver cómo el cuerpo se aleja del centro de masa y cómo el centro de masa se siente como el punto más estable sobre la animación.

Orientación corporal

De forma similar a lo que hace el centro de masa para la posición en el espacio mundial de Muscle Space, utilizamos una orientación media del cuerpo para la orientación en el espacio mundial. El vector ascendente de orientación media del cuerpo se calcula a partir de los puntos medios de las caderas y los hombros. El vector frontal es entonces el producto cruzado del vector ascendente y los vectores cadera/hombros medios izquierdo/derecho. También se asume que esta orientación media del cuerpo para una pose humanoide es la misma para todos los rigs humanoides. En cuanto al centro de masa, una orientación corporal media tiende a ser un referencial estable, ya que la orientación de la parte inferior y superior del cuerpo se compensa de forma natural al caminar, correr, etc.

Movimiento radicular

A continuación se tratará más en profundidad el movimiento raíz, pero a modo de introducción, se utiliza la proyección del centro de masa y la orientación media del cuerpo para crear automáticamente el movimiento raíz. El hecho de que el centro de masa y la orientación media del cuerpo sean propiedades estables de la animación humanoide conduce a un movimiento raíz estable que puede utilizarse para la navegación o la predicción del movimiento.

La balanza

En Muscle Space sigue faltando una cosa para ser una pose humanoide completamente normalizada... su tamaño general. De nuevo estamos buscando una forma de describir el tamaño de un humanoide que no dependa de un punto específico como la posición del hueso de la cabeza, ya que no es consistente de un rig a otro. La altura del centro de masa de un personaje humanoide en T-Stance se utiliza directamente como su escala. La posición del centro de masa del Espacio Muscular se divide por esta escala para producir la pose humanoide normalizada final. Dicho de otra manera, el Espacio Muscular está normalizado para un humanoide que tiene una altura del centro de masa de 1 cuando está en T-Stance. Se dice que todas las posiciones del espacio muscular están en metros normalizados.

Posición original de manos y pies

Cuando se aplica un Espacio Muscular a un Rig Humanoide, las manos y los pies pueden terminar en diferente posición y orientación que la animación original, debido a la diferencia en las proporciones de los Rigs Humanoides. Esto puede provocar que los pies resbalen o que las manos no alcancen correctamente. Por ello, el Espacio Muscular contiene opcionalmente la posición y orientación originales de manos y pies. La posición y orientación de las manos y los pies se normalizan en relación con la Raíz Humanoide (centro de masa, rotación media del cuerpo y escala humanoide) en el Espacio Muscular. Esas posiciones y orientaciones originales se pueden utilizar para fijar la pose del esqueleto reorientado para que coincida con la posición original del espacio del mundo utilizando un pase IK.

Solucionador IK
Solucionador IK

El objetivo principal de IK Solver en brazos y piernas es alcanzar la posición y orientación originales de manos y pies que se encuentran opcionalmente en el Espacio Muscular. Esto es lo que sucede bajo el capó para los pies cuando "Foot IK" toggle está habilitado en un Mecanim Controller State.

En estos casos, la pose del esqueleto reorientado nunca se aleja mucho de los objetivos IK originales. El error de IK que hay que corregir es pequeño, ya que sólo está inducido por la diferencia de proporción de los rigs humanoides. El solucionador de IK sólo modificará ligeramente la pose del esqueleto reorientado para producir la pose final que coincida con las posiciones y orientaciones originales.

Dado que la IK sólo modifica ligeramente la pose del esqueleto reorientado, raramente inducirá artefactos de animación como saltos de rodilla o codo. Incluso entonces, hay un solucionador de aplastamiento y estiramiento, parte del solucionador IK, que está ahí para evitar el popping cuando los brazos o las piernas se acercan a la extensión máxima. Por defecto, la cantidad de aplastamiento y estiramiento permitida se limita al 5% de la longitud total del brazo o la pierna. Un codazo o un rodillazo se notan más (y son más feos) que un estiramiento del 5% o menos en el brazo o la pierna. Tenga en cuenta que la resolución de aplastamiento y estiramiento puede desactivarse ajustándola al 0%.

Más adelante publicaremos un artículo más detallado sobre las plataformas IK. Explicará cómo manejar los accesorios, utilizar múltiples pases IK, la interacción con el entorno o entre personajes humanoides, etc.

Huesos opcionales

El Aparejo Humanoide tiene algunos huesos que son opcionales. Este es el caso de Pecho, Cuello, Hombro izquierdo, Hombro derecho, Dedos del pie izquierdo y Dedos del pie derecho. Muchos rigs de esqueletos existentes no tienen algunos de los huesos opcionales, pero aun así queríamos crear humanoides válidos con ellos.

El Rig Humanoide también soporta huesos opcionales LeftEye y RightEye. Los huesos de los ojos tienen dos músculos cada uno, uno que sube y baja y otro que se mueve hacia dentro y hacia fuera. Los huesos de los ojos también funcionan con el solucionador LookAt de Humanoid Rig que puede distribuir los ajustes de LookAt en la columna vertebral, el pecho, el cuello, la cabeza y los ojos. Habrá más información sobre el solucionador LookAt en el próximo artículo sobre el aparejo Humanoid IK.

Dedos

Por último, el Humanoid Rig admite dedos. Cada dedo puede tener de 0 a 3 dígitos. El dígito 0 significa simplemente que este dedo no está definido. Hay dos músculos (estiramiento y extensión) para la primera cifra y un músculo (estiramiento) para la segunda y la última cifra. Tenga en cuenta que no hay sobrecarga del solucionador para los dedos cuando no hay dedos definidos para una mano.

Requisitos del equipo de perforación

Huesos intermedios

En muchos casos, los rigs de esqueleto tendrán más huesos que los definidos por el Rig Humanoide. Los huesos intermedios son huesos que se encuentran entre los huesos definidos humanoides. Por ejemplo, un tercer hueso de la columna vertebral en un bípedo 3DSMAX se tratará como un hueso intermedio. Estos son soportados por Humanoid Rig, pero ten en cuenta que los huesos intermedios no serán animados. Permanecerán en su posición y orientación por defecto en relación a su padre definido en el Rig Humanoide.

Jerarquía estándar

El rig de esqueleto debe respetar una jerarquía estándar para ser compatible con nuestro Rig Humanoide. El esqueleto puede tener cualquier número de huesos intermedios entre los huesos humanoides, pero debe respetar el siguiente patrón:

Caderas - Pierna - Pierna - Pie - Dedos

Caderas - Columna vertebral - Tórax - Cuello - Cabeza

Pecho - Hombro - Brazo - Antebrazo - Mano

Mano - Proximal - Intermedia - Distal

La postura en T
Postura T

La postura en T es el paso más importante de la creación de un Aparejo Humanoide, ya que la configuración de los músculos se basa en ella. Se eligió la postura T-Stance como postura de referencia, ya que es fácil de conceptualizar y no hay mucho margen para la interpretación de lo que debería ser:

- Erguido mirando al eje z

- Cabeza y ojos orientados hacia el eje z

- Pies en el suelo paralelos al eje z

- Brazos abiertos paralelos al suelo a lo largo del eje x

- Manos planas, palma hacia abajo paralelas al suelo a lo largo del eje x

- Dedos rectos paralelos al suelo a lo largo del eje x

-Pulgares rectos paralelos al suelo a medio camino (45 grados) entre los ejes x y z

Decir "rectos" no significa necesariamente que los huesos tengan que estar perfectamente alineados. Depende de cómo se fije la piel al esqueleto. Algunos aparejos pueden tener la piel que parece recta, pero por debajo el esqueleto no lo está. Por lo tanto, es importante que la T-Stance se establezca para el personaje con piel final. En el caso de que estés creando un Rig Humanoide para retargeting de datos MOCAP, es una buena práctica capturar al menos algunos frames de un T-Stance realizado por el actor en la suite MOCAP.

Ajustes de la amplitud muscular

Por defecto, los rangos musculares se establecen en los valores que mejor representan los rangos musculares humanos. La mayoría de las veces, no deben modificarse. Para algún personaje más caricaturesco puede que quieras reducir el rango para evitar que los brazos entren en el cuerpo o aumentarlo para exagerar el movimiento de las piernas. Si estás creando un Rig Humanoide para retargeting de datos MOCAP no debes modificar los rangos ya que el clip de animación producido no respetará los valores por defecto.

Retargeting y animación Clip

Mecanim retargeting se divide en dos fases. La primera fase consiste en convertir una animación de transformación de esqueleto estándar en un clip de animación humanoide normalizado (o clip muscular). Esta fase tiene lugar en el editor cuando se importa el archivo de animación. Se denomina internamente "RetargetFrom". La segunda fase tiene lugar en el modo de juego, cuando se evalúa el clip muscular y se aplica a los huesos del esqueleto de un equipo humanoide.

clip muscular

Hay dos grandes ventajas de dividir el retargeting en dos fases. La primera es la velocidad de resolución. La mitad del proceso de reorientación se realiza fuera de línea, y la otra mitad en tiempo de ejecución. La otra ventaja es la complejidad de la escena y el uso de memoria. Dado que el clip muscular está completamente abstraído para su esqueleto original, no es necesario incluir el esqueleto de origen en tiempo de ejecución para realizar el retargeting.

La segunda fase es sencilla. Una vez que tienes un Rig Humanoide válido, simplemente le aplicas Muscle Clip con el solver RetargetTo. Esto se hace automáticamente.

La primera fase, convertir una animación de esqueleto en un clip de músculo, puede ser un poco más complicada. El clip de animación del esqueleto se muestrea a una velocidad fija. Para cada muestra, la pose del esqueleto se convierte en una pose del espacio muscular y se añade una clave al clip muscular. No todos los rigs de esqueleto encajarán, hay tantas maneras diferentes en que un rig de esqueleto puede ser construido y animado. Algunos aparejos de esqueleto producirán una salida válida, pero con posible pérdida de información. Ahora revisaremos lo que se necesita para crear una animación humanoide normalizada sin pérdidas... el Clip Muscular.

Nota: Por "sin pérdidas" nos referimos a que el retargeting desde un rig de esqueleto a Muscle Clip y luego el retargeting de vuelta al mismo rig de esqueleto preservará la animación intacta. De hecho, estará casi intacto. La torsión original de brazos y piernas se perderá y será sustituida por lo que calcule el solucionador de torsión. Como se ha explicado anteriormente en este documento, no hay representación de la repartición de torsiones en Muscle Space.

- La posición local de los huesos debe ser la misma en el rig humanoide y en el archivo de animación. Sucede que el esqueleto utilizado para crear el Rig Humanoide difiere del que se encuentra en el archivo de animación. Asegúrese de utilizar exactamente el mismo esqueleto. Se enviarán advertencias a la consola en la importación, si no es el caso.

- Los huesos intermedios no deben tener animación. Esto ocurre a menudo en un esqueleto 3DSMAX donde el tercer hueso de la columna tiene animación de traslación y rotación. También ocurre cuando Bip001 se utiliza como Caderas y esa Pelvis tiene alguna animación en ella. Se enviarán advertencias a la consola en la importación si no es el caso.

- La orientación local del hueso intermedio debe ser la misma en el Rig Humanoide y en el archivo de animación. Esto puede ocurrir cuando se utiliza Humanoid Auto Configure que se basa en Skin Bind Pose para crear T-Stance. Asegúrese de que la rotación de Skin Bind Pose para los huesos intermedios es la misma que se encuentra en el archivo de animación. Se enviarán advertencias a la consola en la importación si no es el caso.

- Excepto para las caderas, la animación de traslación no es compatible con los huesos. 3DSMAX Biped a veces pone animación de traslación en los huesos de la columna vertebral. Las advertencias se enviarán a la consola en imp o si no es el caso.

El 3DSMAX Biped se señala aquí como un equipo problemático. Probablemente se deba a su popularidad y al hecho de que hemos tenido que soportar muchos casos de su uso con Mecanim. Note que si va a crear nuevas animaciones para ser usadas con Mecanim Humanoid Rig, debe seguir las reglas mencionadas arriba desde el principio. Si desea utilizar animaciones ya existentes que rompen algunas de las reglas, todavía es posible, el Mecanim retarget solver es robusto y producirá una salida válida, pero la conversión sin pérdidas no puede ser garantizada.

Note que si va a crear nuevas animaciones para ser usadas con el Rig Humanoide de Mecanim, debe seguir las reglas establecidas arriba desde el principio. Si desea utilizar una animación ya existente que rompe algunas de las reglas, todavía es posible como el Mecanim retarget solver es robusto y producirá una salida válida, pero la conversión sin pérdidas no se puede garantizar.