Cinemática Inversa

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Cinemática Inversa (IK) é uma técnica comum em animação por computador para mover personagens de forma eficiente e interagir realisticamente com seu ambiente. O processo de criar um movimento realista para um personagem muitas vezes requer muitas iterações e pequenos ajustes nas várias articulações. Com IK, você pode posturar e animar várias partes do personagem ajustando um único objeto.

Essa técnica de animação pode fornecer soluções para os seguintes exemplos:

Pegue e posicione a mão de um personagem enquanto ajusta automaticamente os membros relacionados, como o pulso, o cotovelo e o ombro.
Faça os pés de um personagem interagirem realisticamente em superfícies e inclinações diferentes.
Pegue e mova um único objeto-alvo para criar interações realistas rapidamente com seu personagem e props.

IKControl

Você pode usar um IKControl para adicionar IK de forma procedural aos seus rigs de personagem fora do Editor de Animação. O Studio permite que você aplique IK programaticamente a todos os personagens, como R15, Rthro e personagens importados personalizados, para criar movimentos e interações realistas em seu jogo.

Ao adicionar um IKControl, defina as propriedades necessárias corretamente para evitar resultados de animação inesperados e não naturais. Assim como em toda animação, teste seus IKControls para garantir que você alcance o comportamento desejado.

Propriedades necessárias

Ao adicionar um IKControl ao Humanoid ou AnimationController do seu personagem, você deve definir as seguintes propriedades necessárias para habilitar IK:

PropriedadeDescrição
TypeEspecifica o tipo de comportamento do controle IK. Veja Enum.IKControlType para a lista de opções de comportamento. Os tipos de comportamento comuns são Position ou Transform.
EndEffectorUma BasePart ou Bone no rig do seu personagem que rastreia em direção ao Target. Por exemplo, você pode definir um osso LeftHand como um EndEffector para alcançar um objeto de maçaneta definido como o Target.
TargetO objeto que o EndEffector alcança ou aponta. Um Target pode ser qualquer objeto com uma posição no mundo.
ChainRootDefine a cadeia de BaseParts ou Bones que o IKControl afeta. Todas as partes conectadas entre o ChainRoot e o EndEffector são afetadas pelo IKControl usando o tipo de comportamento definido.

Por exemplo, se a LeftHand do seu personagem estiver definida como o Target, você pode aplicar IK em todo o braço esquerdo definindo o ChainRoot para o LeftUpperArm. Para aplicar IK apenas nas partes abaixo do cotovelo, defina o ChainRoot para o LeftLowerArm.

Testar IKControls

Você pode adicionar e editar IKControl programaticamente ou diretamente através do Explorer. Você pode até adicionar e fazer alterações no IKControl durante um teste de Jogo para verificar rapidamente como várias propriedades afetam os movimentos de um personagem.

Para testar rapidamente seu IKControl usando um Attachment como alvo:

  1. No mezzanino do Studio, inicie um teste de jogo.

  2. Na Explorer, navegue até Workspace → o Model do seu usuário. Esta instância Model é nomeada como sua conta Roblox atual.

  3. Clique no ícone ao lado do HumanoidRootPart do modelo do seu personagem e adicione um Attachment.

  4. Selecione o Attachment e use a ferramenta Mover para posicionar o objeto na frente do seu personagem na viewport.

  5. Na janela Explorer, selecione o ícone ao lado do Humanoid do seu personagem e adicione um IKControl.

  6. Selecione o IKControl e defina os seguintes valores de propriedade na janela Properties:

    1. Type: Selecione Transform no dropdown.
    2. EndEffector: Selecione o MeshPart LeftHand do seu modelo na Explorer.
    3. Target: Selecione o novo objeto Attachment criado na Explorer.
    4. ChainRoot: Selecione o MeshPart LeftUpperArm do seu modelo na Explorer.
    Propriedades do IKControl
    Explorer - Modelo do Personagem

    O braço esquerdo do seu personagem agora deve alcançar o alvo Attachment. Você pode experimentar movendo o Attachment ou editando as propriedades do IKControl para alcançar resultados diferentes.

Adicionar restrições

Você pode usar Constraints para restringir como as articulações podem se mover ao alcançar seu alvo. As restrições podem garantir que articulações como os cotovelos e joelhos se dobrem de forma natural, ou para fazer as articulações mecânicas girarem em uma orientação específica.

Cotovelo se dobrando de forma não natural
Cotovelo se dobrando corretamente

Para adicionar restrições ao seu personagem usando IKControl, seu IKControl e a restrição devem atender às seguintes condições:

As instruções a seguir descrevem o processo de adicionar um HingeConstraint para restringir a rotação do cotovelo de um personagem e adicionar um BallSocketConstraint ao punho para limitar o ângulo de rotação.

Cotovelo

Os personagens Roblox R15 já incluem attachments em suas articulações que você pode usar para aplicar a restrição do cotovelo. Para o cotovelo, tanto o LeftUpperArm quanto o LeftLowerArm incluem um LeftElbowRigAttachment. Juntamente com a adição de uma restrição, você também precisa adicionar attachments filhos adicionais ao LeftElbowRigAttachment de cada parte para especificar em torno de qual eixo o cotovelo pode girar.

Para adicionar o HingeConstraint e os attachments filhos:

  1. Na Explorer, localize o LeftLowerArm do seu modelo e clique no ⊕ button.

  2. Adicione um HingeConstraint com o nome LeftElbowConstraint.

  3. Na Explorer, navegue até o LeftUpperArm.LeftElbowRigAttachment e adicione um attachment:

    1. Clique no ⊕ button para adicionar um Attachment com o nome LeftElbowConstraintAttachment0.

    2. Na viewport, selecione o attachment e use a ferramenta Rotacionar para girar o attachment de modo que o PrimaryAxis amarelo seja o eixo da rotação esperada do seu cotovelo.

    3. Defina a propriedade LeftElbowConstraint.Attachment0 para este novo attachment.

  4. Na Explorer, navegue até o LeftLowerArm.LeftElbowRigAttachment do seu modelo e adicione um attachment:

    1. Clique no ⊕ button e adicione um Attachment com o nome LeftElbowConstraintAttachment1.
    2. Defina a propriedade LeftUpperArm.LeftElbowConstraint.Attachment1 para este novo attachment.
    3. Copie a propriedade LeftElbowConstraintAttachment0.CFrameOrientation e cole-a como o valor da propriedade LeftElbowConstraint.Attachment1.CFrameOrientation.

Teste seu IKControl para verificar se o cotovelo gira apenas em torno de seu eixo de dobradiça:

Pulsos

Mesmo com a restrição do cotovelo, o IKControl ainda pode produzir poses não realistas com os pulsos.

O pulso se dobra de forma não natural em certas orientações

Você pode melhorar isso adicionando um BallSocketConstraint para limitar a rotação do pulso. Embora isso seja semelhante ao processo de adicionar um HingeConstraint ao cotovelo, você pode usar a propriedade LimitsEnabled nesta restrição para controlar ainda mais o alcance de movimento do pulso.

Para adicionar um BallSocketConstraint para o pulso:

  1. Na Explorer, localize o LeftHand do seu modelo e clique no ⊕ button.
    1. Adicione um BallSocketConstraint com o nome LeftWristConstraint.
  2. Localize o LeftLowerArm.LeftWristRigAttachment do seu modelo e adicione um attachment:
    1. Clique no ⊕ button e adicione um Attachment com o nome LeftWristConstraintAttachment0.
    2. Na viewport, selecione o attachment e use a ferramenta Rotacionar para girar o attachment de modo que o PrimaryAxis amarelo aponte para as pontas dos dedos do modelo.
    3. Defina a propriedade LeftWristConstraint.Attachment0 para o novo LeftWristConstraintAttachment0.
  3. Localize o LeftHand.LeftWristRigAttachment do seu modelo e adicione um attachment:
    1. Clique no ⊕ button e adicione um Attachment com o nome LeftWristConstraintAttachment1.
    2. Copie a propriedade LeftWristConstraintAttachment0.CFrameOrientation e cole-a como a propriedade LeftWristConstraintAttachment1.CFrameOrientation.
    3. Defina a propriedade LeftWristConstraint.Attachment1 para este novo LeftWristConstraintAttachment1.
  4. Na Explorer, selecione o LeftWristConstraint.
  5. Na janela Properties, defina o seguinte:
    1. Ative LimitsEnabled.
    2. Defina UpperAngle para 80. Isso controla quanto o eixo da restrição pode girar, e 80 graus é aproximadamente quanto o pulso deve ser capaz de se dobrar.
  6. Dependendo do seu personagem, você pode querer ajustar a direção que o cone está apontando. Você pode fazer isso usando a ferramenta Rotacionar para girar o Attachment0 da restrição.

Ao selecionar o LeftWristConstraint, um cone verde aparece visualizando o alcance de movimento do pulso.

Com a restrição configurada, teste o IKControl com a mão apontando para baixo na frente do personagem, e o pulso deve rotacionar e se dobrar de forma mais realista.

©2026 Roblox Corporation, Roblox, o logotipo Roblox e Powering Imagination estão entre nossas marcas registradas e não registradas nos EUA e em outros países.