Kinática inversa

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

Kinemática inversa (IK) es una técnica común en la animación por ordenador para hacer que los personajes se muevan y interactúen de manera realista con su entorno, ambientede manera eficiente.El proceso de crear un movimiento realista para un personaje a menudo requiere muchas iteraciones y ajustes menores de las diversas articulaciones.Con IK, puedes posar y animar múltiples partes de personaje colocando o ajustando un solo objeto.

Esta técnica de animación puede proporcionar soluciones a los siguientes ejemplos:

Agarra y posa la mano de un personaje mientras se ajustan automáticamente los miembros relacionados, como el pulgar, el codo y el hombro.
Haz que los pies de un personaje interactúen de manera realista en diferentes superficies y pendientes.
Agarra y mueve un solo objeto de destino para crear rápidamente interacciones realistas con tu personaje y accesorios.

IKControl

Puedes usar un IKControl para agregar IK de forma procedural a los rigs de tu personaje fuera del editor de animaciones.Studio te permite aplicar IK de forma programática a todos los personajes, como R15, Rthro y personajes importados personalizados con piel, para crear movimientos y interacciones realistas en tu experiencia.

Al agregar un IKControl, establece las propiedades requeridas correctamente para evitar resultados de animación inesperados y poco naturales.Al igual que con toda animaciones, prueba tus controles IK para asegurarte de que alcances 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:

PropiedadDescripción
TypeSpecifica el tipo de comportamiento del control IK. Vea Enum.IKControlType para la lista de opciones de comportamiento. Los tipos de comportamiento comunes son Position o Transform .
EndEffectorUn BasePart o Bone en tu personaje que sigue hacia el Target .Por ejemplo, puedes configurar un hueso de mano izquierda como un EndEffector para alcanzar un conjunto de objetos de bisagra como el Target.
TargetEl objeto al que el EndEffector llega o apunta. Un Target puede ser cualquier objeto con una posición mundial.
ChainRootDefine la cadena de BaseParts o Bones que el IKControl afecta.Todas las piezas conectadas entre el y el se ven afectadas por el tipo de comportamiento definido. Por ejemplo, si el brazo izquierdo de tu personaje está configurado como LeftHand , puedes aplicar IK a todo el brazo izquierdo al configurar a LeftUpperArm .Para aplicar IK solo a las partes debajo del codo, establece ChainRoot a la Brazo inferior izquierdo .

Probar los controles IK

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 reproducción para ver rápidamente cómo varias propiedades afectan los movimientos de un personaje.

Para probar rápidamente tu IKControl usando un Attachment como objetivo:

  1. En la pestaña Prueba de la barra de herramientas, seleccione Jugar para iniciar la prueba de juego.

  2. En el Explorador , navegue a Espacio de trabajo → el Model.Esta instancia Model se llama como tu cuenta de Roblox actual.

  3. Haga clic en el icono junto al modelo de personaje de su HumanoidRootPart y agregue un archivo adjunto .

  4. Seleccione el archivo adjunto y use la herramienta mover para posicionar el objeto frente a su personaje en la ventana de ventanilla.

  5. En la ventana Explorador , seleccione el icono junto a Humanoid y agregue un IKControl .

  6. Seleccione el IKControl y establezca los siguientes valores de propiedad en el panel Propiedades :

    1. Tipo : Seleccione Transform de la lista desplegable.
    2. EndEffector : Seleccione el LeftHand MeshPart de su aplicación de modeladoen el Explorador.
    3. Objetivo : Seleccione el objeto adjunto recién creado en el Explorador.
    4. Raíz de cadena : Seleccione el Brazo superior izquierdo MeshPart de su aplicación de modeladoen el Explorador.
    Propiedades de control de IK
    Panel de explorador - Modelo de personaje

    El brazo izquierdo de tu personaje ahora debería llegar al objetivo Attachment .Puedes experimentar con el movimiento del Attachment o la edición de las propiedades IKControl para obtener diferentes resultados.

Añadir restricciones

Puedes usar Constraints para restringir cómo se pueden mover las articulaciones al alcanzar su objetivo.Las restricciones pueden garantizar que las articulaciones como los codos y las rodillas se doblen naturalmente, o para hacer que las articulaciones mecánicas giren en una orientación específica.

El antebrazo se dobla de manera antinatural
Agarre de codos correctamente

Para agregar restricciones a tu personaje usando IKControl , tus IKControl y restricción deben cumplir las siguientes condiciones:

  • Los archivos adjuntos referenciados en las propiedades Attachment0 / Attachment1 de la restricción se unen a las mismas partes que el Motor6D / Part0 / Part1.
  • Las posiciones relativas de Attachment0 / Attachment1 deben igualar las posiciones correspondientes de los Class.Motor6D``Class.Motor6D.C0|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 de Roblox R15 ya incluyen accesorios en sus articulaciones que puedes usar para aplicar la restricción de la articulación.Para el codo, tanto el LeftUpperArm como el LeftLowerArm incluyen un LeftElbowRigAttachment .Además de agregar una restricción, también debe agregar archivos adicionales para niños a cada parte de LeftElbowRigAttachment para especificar sobre qué eje puede girar el codo.

Para agregar los HingeConstraint y archivos adjuntos de hijos:

  1. En el Explorador, localiza el Brazo inferior izquierdo de tu aplicación de modeladoy haz clic en el botón .

  2. Añade una restricción de bisagra con el nombre LeftElbowConstraint.

  3. En el Explorador, navegue hasta el LeftUpperArm.LeftElbowRigAttachment y agregue un conexión:

    1. Haga clic en el botón ⊕ para agregar un archivo adjunto con el nombre >.

    2. En la ventana de ventanilla, seleccione el archivo adjunto y use la herramienta Rotar para rotar el archivo adjunto para que el amarillo eje principal sea el eje de la rotación esperada de su muñeca.

    3. Establece la propiedad LeftElbowConstraint.Attachment0 a este nuevo conexión.

  4. En el Explorador, navegue hasta el LeftLowerArm.LeftElbowRigAttachment de su aplicación de modeladoy agregue un conexión:

    1. Haga clic en el botón y agregue un archivo adjunto con el nombre LeftElbowConstraintAttachment1.
    2. Establece la propiedad LeftUpperArm.LeftElbowConstraint.Attachment1 a este nuevo conexión.
    3. Copia la propiedad LeftElbowConstraintAttachment0.CFrameOrientation y pégala como el valor LeftElbowConstraint.Attachment1.CFrameOrientation .

Prueba tu IKControl para verificar que el codo solo gira alrededor de su eje pivote:

Muñecas

Incluso con la restricción de la muñeca, el IKControl aún puede producir poses poco realistas con los tobillos.

La muñeca se dobla de forma antinatural en ciertas orientaciones

Puedes mejorar esto agregando un BallSocketConstraint para limitar la rotación del muñeco.Aunque esto es similar al proceso para agregar un HingeConstraint a la muñeca, puedes usar la propiedad LimitsEnabled en esta restricción para controlar aún más el rango de movimiento del pulgar.

Para agregar un BallSocketConstraint para el muñeco:

  1. En el Explorador, localiza el lado izquierdo de tu aplicación de modeladoy haz clic en el botón .
    1. Añade un BallSocketConstraint con el nombre LeftWristConstraint.
  2. Localiza el LeftLowerArm.LeftWristRigAttachment de tu aplicación de modeladoy añade un conexión:
    1. Haga clic en el botón y agregue un archivo adjunto con el nombre LeftWristConstraintAttachment0.
    2. En la ventana de visualización, seleccione el archivo adjunto y use la herramienta Rotar para rotar el archivo adjunto para que los puntos amarillos del eje primario se dirijan hacia los dedos del aplicación de modelado.
    3. Establece la propiedad LeftWristConstraint.Attachment0 a la nueva LeftWristConstraintAttachment0.
  3. Localiza el LeftHand.LeftWristRigAttachment de tu aplicación de modeladoy agrega un conexión:
    1. Haga clic en el botón y agregue un archivo adjunto con el nombre LeftWristConstraintAttachment1.
    2. Copia la propiedad LeftWristConstraintAttachment0.CFrameOrientation y pégala como la propiedad LeftWristConstraintAttachment1.CFrameOrientation .
    3. Establece la propiedad LeftWristConstraint.Attachment1 a este nuevo LeftWristConstraintAttachment1 .
  4. En el Explorador, seleccione la restricción de muñeca izquierda .
  5. En el editor de propiedades, establezca lo siguiendo:
    1. Habilita Límites habilitados .
    2. Establece UpperAngle a 80.Esto controla cuánto puede rotarel eje de la restricción, y 80 grados es aproximadamente cuánto debería poder doblarse el pulgar.
  6. Dependiendo de tu personaje, es posible que desees ajustar la dirección hacia la que apunta el cono.Puedes hacer esto usando la herramienta de rotación para rotar el archivo adjunto 0 de la restricción.

Al seleccionar la restricción de muñeca izquierda , aparece un cono verde que visualiza 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 el pulgar debería girar y doblarse de manera más realista.