¿Cuál es el conocimiento necesario para escribir una biblioteca de animación (IK y FK)? [cerrado]

9

No puedo encontrar ninguna buena biblioteca para la animación, las que encontré son realmente viejas y descontinuadas, pero he notado que las bibliotecas son relativamente pequeñas, así que estoy pensando en codificar una sola: ¿por dónde empezar? ? ¿Cuáles son los conceptos básicos para esto? ¿Hay un libro sobre esto?

Algunas notas adicionales sobre un buen formato de archivo para animación también son muy apreciadas.

Estoy usando C ++.

usuario827992
fuente

Respuestas:

7

La cinemática directa es solo un requisito previo para la cinemática inversa, en general.

Para cinemática directa, debe tener algún conocimiento de las cadenas de transformación (lo que significa un gráfico de escena, por ejemplo). Como ejemplo, un buen punto para comenzar es la convención Denavit-Hartenberg. Para cinemática inversa, estudie Descenso de coordenadas cíclicas (CCD), inversa jacobiana, transposición jacobiana y soluciones pseudo-inversas . Estos conceptos y algoritmos le ofrecen una visión general decente de lo que se trata la matemática y en parte la física de este campo. La biblioteca, el lenguaje de programación o los formatos de archivo nunca son el elemento clave si también quieres entender qué sucede detrás de la magia.

Si necesita una solución rápida o un componente para alguna aplicación en la que está trabajando, eche un vistazo a algunas de las bibliotecas proporcionadas en las otras respuestas aquí. Si te gusta la robótica, entonces OpenRAVE es un monstruo que vale la pena mencionar. Además, hay una caja de herramientas de robótica de Matlab (siempre que te interese ese tipo de ingeniería).

Todos los conceptos arrojan una gran cantidad de resultados relevantes en su motor de búsqueda favorito, así que lamento no publicar tantos enlaces a buenos materiales.

teodron
fuente
1

Artículo original: ¿Qué necesito saber sobre cinemática inversa?

Probablemente hayas oído hablar de cinemática inversa. IK es una herramienta popular en Unity y gráficos por computadora, pero si es la primera vez que intenta crear o utilizar un sistema de cinemática inversa, es posible que desee más detalles. Voy a explicar qué es IK, definir el vocabulario y revisar los usos. ¿Cuál es el vocabulario necesario para entender IK?

Antes de entrar en el corazón de IK, necesitamos definir un vocabulario relacionado con IK. IK es un método que se aplica a un cuerpo articulado. ¿Qué es un cuerpo articulado?

Cuerpo articulado

Un cuerpo articulado puede representar la mayoría de los cuerpos animados, como humanos y animales con esqueletos. En pocas palabras, un cuerpo articulado es un árbol de cadenas unidas. Las cadenas unidas están formadas por uniones y enlaces, donde un enlace es un cilindro rígido.

ingrese la descripción de la imagen aquí

Tipos de articulaciones

En cuanto a las articulaciones, hay dos tipos. El primer tipo de articulación es una articulación revoluta. Está conectado a un enlace que gira a su alrededor.

Una articulación giratoria es muy parecida al pasador central de un reloj, con una manecilla de reloj como enlace.

ingrese la descripción de la imagen aquí

Una articulación prismática es una articulación tal que el enlace conectado se traduce desde la articulación para extender / acortar el enlace.

ingrese la descripción de la imagen aquí

Una articulación prismática actúa de manera muy similar a extender / retraer la longitud del asa retráctil de su equipaje. Si observa de cerca, un asa de equipaje retráctil tiene 4 articulaciones prismáticas. 2 articulaciones prismáticas a la mitad del asa y otras 2 articulaciones prismáticas en la parte superior del equipaje.

Si te confunden las articulaciones prismáticas, no te preocupes. No se usan con tanta frecuencia en cinemática inversa, y como se puede ver, ningún humano tiene articulaciones prismáticas, solo articulaciones revolutivas.

Estructura jerarquica

Un cuerpo articulado tiene una articulación de raíz. La unión de la raíz es la base de la estructura. La articulación de la raíz de un humanoide suele ser el centro de las caderas. El cuerpo articulado está formado por un árbol de articulaciones y enlaces, comenzando en la articulación de la raíz. Una nueva unión y enlace es similar a una nueva rama en un árbol. Un enlace / unión interno es un enlace / unión que está más cerca de la unión raíz dentro de la jerarquía de árbol del cuerpo articulado, en lo que se refiere a la unión / enlace dado. Un enlace / articulación externa es un enlace / articulación que está más lejos de la articulación raíz dentro de la jerarquía de árbol del cuerpo articulado.

Efector final

Un efector final es una posición en la posición más externa del enlace más externo. Es el extremo libre de la cadena de articulaciones y eslabones alternos. El efector final no es una articulación. El efector final es simplemente la posición al final de un cuerpo articulado. Un cuerpo articulado puede tener múltiples efectores finales, al igual que un árbol binario puede tener múltiples hojas.

ingrese la descripción de la imagen aquí

End Effector se representa como un círculo verde aquí.

Articulaciones y poses

Una articulación es una rotación / traslación de una articulación que mueve un enlace conectado. Por otro lado, una pose es un conjunto de articulaciones articulares que resulta en la colocación del cuerpo articulado. En otras palabras, la pose es un valor vectorial de en lugar de un valor escalar.

¿Qué es la cinemática directa?

Antes de que podamos adentrarnos en lo que es la cinemática inversa, necesitamos descubrir qué es la cinemática directa. La función / algoritmo de cinemática directa adopta una pose como entrada y calcula la posición del efector final como salida. La cinemática directa es la función inversa de la cinemática inversa. Con Forward Kinematics, debe definir la pose completa de un cuerpo articulado para proporcionar la función / algoritmo con la entrada de pose. Esto significa que debe definir la articulación de cada articulación en el cuerpo articulado. Esto podría estar bien si tiene un número bajo de articulaciones, pero con un número elevado de articulaciones esto tiende a ser tedioso.

¿Qué es la cinemática inversa?

Ahora, imagine si desea que el efector final de su cuerpo articulado alcance una posición objetivo particular. Esto significa que conoce la posición del efector final a la que le gustaría apuntar, pero no sabe cuál debe ser la postura del cuerpo articulado para que el efector final alcance esta posición objetivo. ¡Aquí es donde brilla la cinemática inversa!

ingrese la descripción de la imagen aquí

La cinemática inversa es la función / algoritmo inverso de la cinemática directa. La función / algoritmo de cinemática directa toma una posición de destino como entrada y calcula la pose requerida para que el efector final alcance la posición de destino: la pose es la salida.

Como puede ver, la entrada y la salida se cambian entre FK e IK. Con la cinemática inversa, no necesita definir toda la pose de un cuerpo articulado; esto se calcula para usted mediante el algoritmo IK. Con IK, solo necesita definir una posición como entrada.

La cinemática inversa hace todo el desafiante trabajo computacional de calcular cuál es la pose. En el estado anterior, hay un cuerpo articulado con alguna pose conocida. Define una posición objetivo para que el efector final intente alcanzar. Una vez que el algoritmo IK se aplica al cuerpo articulado, hemos alcanzado el estado posterior. El estado posterior muestra que se ha calculado una nueva pose, de modo que el efector final está ahora en la posición de destino.

¿Cuáles son los usos de IK?

En este punto, sabemos que IK se aplica a un cuerpo articulado, sabemos de qué está compuesto un cuerpo articulado y sabemos la diferencia entre IK y FK. Tenemos una buena visión general de IK hasta ahora, pero completémosla con algunos buenos casos de uso de IK también. IK puede usarse para que un brazo humanoide alcance un objeto / objetivo, como hemos visto. IK también se puede usar para pisar los pies, de modo que le decimos al pie dónde pisar y el IK descubre cómo configurar las articulaciones de las piernas. IK generalmente no se usa como una animación en sí misma (buscando un objeto), sino más bien como una herramienta de animación. Por lo tanto, si está implementando un ciclo de caminata, podría colocar algunos de los fotogramas clave utilizando la herramienta IK.

ingrese la descripción de la imagen aquí

Otro punto clave sobre IK es que su objetivo / objetivo no se limita a la posición sola: su objetivo se puede definir como una rotación. Por ejemplo, si sus pies necesitan rotar en función de un terreno irregular, su objetivo de rotación IK puede definirse según la normalidad del piso. De esta manera, sus pies están inclinados a lo largo del piso, como cuando camina por una pendiente. Tenga en cuenta que también puede usar IK para que su cabeza (o incluso sus ojos) miren en cierta dirección. Si desea que su cabeza siga un objeto, puede usar IK para que la cabeza siga al objeto.

Luis B
fuente