Cinemática Inversa (IK) es una técnica común en animación por computadora para hacer que los personajes se muevan e interactúen de manera realista con su entorno de forma eficiente. El proceso de crear un movimiento realista para un personaje a menudo requiere muchas iteraciones y ajustes menores en las diversas articulaciones. Con IK, puedes poseer y animar múltiples partes del personaje al poseer o ajustar un solo objeto.
Esta técnica de animación puede proporcionar soluciones a los siguientes ejemplos:
IKControl
Puedes usar un IKControl para agregar IK de forma procedimental a los rigs de tus personajes fuera del Editor de Animación. Studio te permite aplicar IK programáticamente a todos los personajes, como R15, Rthro y personajes personalizados importados, para crear movimientos e interacciones realistas en tu juego.
Al agregar un IKControl, establece las propiedades requeridas correctamente para evitar resultados de animación inesperados y no naturales. Como con toda animación, prueba tus IKControls para asegurarte de alcanzar el comportamiento deseado.
Propiedades requeridas
Al agregar un IKControl a Humanoid o AnimationController de tu personaje, debes establecer las siguientes propiedades requeridas para habilitar IK:
| Propiedad | Descripción |
|---|---|
| Type | Especifica el tipo de comportamiento del control IK. Consulta Enum.IKControlType para la lista de opciones de comportamiento. Los tipos de comportamiento comunes son Position o Transform. |
| EndEffector | Una BasePart o Bone en el rig de tu personaje que rastrea hacia el Target. Por ejemplo, puedes establecer un hueso LeftHand como un EndEffector para alcanzar un objeto de pomo de puerta establecido como el Target. |
| Target | El objeto al que el EndEffector alcanza o apunta. Un Target puede ser cualquier objeto con una posición en el mundo. |
| ChainRoot | Define la cadena de BaseParts o Bones que el IKControl afecta. Todas las partes conectadas entre el ChainRoot y el EndEffector están afectadas por el IKControl utilizando el tipo de comportamiento definido. Por ejemplo, si el LeftHand de tu personaje está establecido como el Target, puedes aplicar IK a todo el brazo izquierdo estableciendo el ChainRoot en el LeftUpperArm. Para aplicar IK solo a las partes debajo del codo, establece el ChainRoot en el LeftLowerArm. |
Probar IKControls
Puedes agregar y editar IKControl programáticamente o directamente a través del Explorador. Incluso puedes agregar y hacer cambios en IKControl durante una prueba de juego para verificar rápidamente cómo diversas propiedades afectan los movimientos de un personaje.
Para probar rápidamente tu IKControl utilizando un Attachment como objetivo:
Desde el vestíbulo de Studio, inicia una prueba de juego.
Haz clic en el icono ⊕ junto a la HumanoidRootPart del modelo de tu personaje y añade un Attachment.

Selecciona el Attachment y utiliza la herramienta Mover para posicionar el objeto frente a tu personaje en la vista.

En la ventana del Explorador, selecciona el icono ⊕ junto al Humanoid de tu personaje y agrega un IKControl.

Selecciona el IKControl y establece los siguientes valores de propiedad en la ventana de Propiedades:
- Type: Selecciona Transform del menú desplegable.
- Target: Selecciona el objeto Attachment recién creado en el Explorador.

Propiedades del IKControl 
Explorador - Modelo de Personaje El brazo izquierdo de tu personaje ahora debe alcanzar el objetivo Attachment. Puedes experimentar moviendo el Attachment o editando las propiedades del IKControl para lograr diferentes resultados.
Agregar restricciones
Puedes usar Constraints para restringir cómo pueden moverse las articulaciones al alcanzar su objetivo. Las restricciones pueden asegurar que articulaciones como los codos y las rodillas se doblen de forma natural, o para que las articulaciones mecánicas roten en una orientación específica.


Para agregar restricciones a tu personaje usando IKControl, tu IKControl y la restricción deben cumplir con las siguientes condiciones:
- Los attachments referenciados en las propiedades Attachment0/Attachment1 de la restricción deben unirse a las mismas partes que el Motor6D Part0/Part1.
- Las posiciones relativas de Attachment0/Attachment1 deben ser iguales a las posiciones correspondientes de los Motor6D C0/C1 CFrames.
- La restricción y el IKControl comparten el mismo padre Model.
Las siguientes instrucciones describen el proceso de agregar un HingeConstraint para restringir la rotación del codo de un personaje y agregar un BallSocketConstraint a la muñeca para limitar el ángulo de rotación.
Codo
Los personajes R15 de Roblox ya incluyen attachments en sus articulaciones que puedes usar para aplicar la restricción del codo. Para el codo, tanto el LeftUpperArm como el LeftLowerArm incluyen un LeftElbowRigAttachment. Además de agregar una restricción, también debes agregar attachments hijos adicionales al LeftElbowRigAttachment de cada parte para especificar sobre qué eje puede rotar el codo.
Para agregar el HingeConstraint y los attachments hijos:
En el Explorador, localiza el LeftLowerArm de tu modelo y haz clic en el ⊕ button.
Agrega un HingeConstraint con el nombre LeftElbowConstraint.
En el Explorador, navega a LeftUpperArm.LeftElbowRigAttachment y agrega un attachment:
Haz clic en el ⊕ button para agregar un Attachment con el nombre LeftElbowConstraintAttachment0.
En la vista, selecciona el attachment y usa la herramienta Rotar para rotar el attachment de modo que el PrimaryAxis amarillo sea el eje de rotación esperado de tu codo.

Establece la propiedad LeftElbowConstraint.Attachment0 en este nuevo attachment.
En el Explorador, navega al LeftElbowRigAttachment de tu modelo y agrega un attachment:
- Haz clic en el ⊕ button y agrega un Attachment con el nombre LeftElbowConstraintAttachment1.
- Establece la propiedad LeftUpperArm.LeftElbowConstraint.Attachment1 en este nuevo attachment.
- Copia la propiedad LeftElbowConstraintAttachment0.CFrameOrientation y pégala como el valor de LeftElbowConstraint.Attachment1.CFrameOrientation.

Prueba tu IKControl para verificar que el codo solo rota alrededor de su eje de bisagra:
Muñecas
Incluso con la restricción del codo, el IKControl aún puede producir poses poco realistas con las muñecas.

Puedes mejorar esto agregando un BallSocketConstraint para limitar la rotación de la muñeca. Aunque esto es similar al proceso para agregar un HingeConstraint al codo, puedes utilizar la propiedad LimitsEnabled en esta restricción para controlar aún más el rango de movimiento de la muñeca.
Para agregar un BallSocketConstraint para la muñeca:
- En el Explorador, localiza tu modelo LeftHand y haz clic en el ⊕ button.
- Agrega un BallSocketConstraint con el nombre LeftWristConstraint.
- Localiza el LeftWristRigAttachment de tu modelo y agrega un attachment:
- Haz clic en el ⊕ button y agrega un Attachment con el nombre LeftWristConstraintAttachment0.
- En la vista, selecciona el attachment y usa la herramienta Rotar para rotar el attachment de manera que el PrimaryAxis amarillo apunte hacia las yemas de los dedos del modelo.

- Establece la propiedad LeftWristConstraint.Attachment0 en el nuevo LeftWristConstraintAttachment0.
- Localiza el LeftHand.LeftWristRigAttachment de tu modelo y agrega un attachment:
- Haz clic en el ⊕ button y agrega un Attachment con el nombre LeftWristConstraintAttachment1.
- Copia la propiedad LeftWristConstraintAttachment0.CFrameOrientation y pégala como la propiedad LeftWristConstraintAttachment1.CFrameOrientation.
- Establece la propiedad LeftWristConstraint.Attachment1 en este nuevo LeftWristConstraintAttachment1.
- En el Explorador, selecciona el LeftWristConstraint.
- En la ventana de Propiedades, establece lo siguiente:
- Activa LimitsEnabled.
- Establece UpperAngle en 80. Esto controla cuánto puede rotar el eje de la restricción, y 80 grados es aproximadamente cuánto debería poder doblarse la muñeca.
- Dependiendo de tu personaje, puede que desees ajustar la dirección en la que apunta el cono. Puedes hacer esto utilizando la herramienta Rotar para rotar el Attachment0 de la restricción.
Al seleccionar el LeftWristConstraint, aparece un cono verde visualizando el rango de movimiento de la muñeca.

Con la restricción configurada, prueba el IKControl con la mano apuntando hacia abajo frente al personaje y la muñeca debería rotar y doblarse de manera más realista.