Kinematics Inversa (IK) é uma técnica comum em animação de computador para fazer os personagens se moverem e interagirem de forma realista com seu ambiente. O processo de criação de um movimento realista para um personagem geralmente requer muitas iterações e pequenos ajustes de várias juntas. Com IK, você pode posar e anima várias peças de personagens por posicionar ou ajustar um único Objeto.
Essa técnica de animação pode fornecer soluções aos seguintes exemplos:
IKControl
Você pode usar um IKControl para adicionar IK ao seu rig de personagem lá fora do Editor de Animação. O Studio permite que você aplique IK de forma procedural para todos os personagens, como R15, Rthro e personagens importados personalizados, para criar movimentos e interações realistas em sua experiência.
Ao adicionar um IKControl, defina as propriedades number1 corretamente para evitar resultados de animação inesperados e não naturais. Como com todas as animações, teste seus controles IK para garantir que você obtenha o comportamento desejado.
Propriedades Exigidas
Ao adicionar um IKControl ao seu personagem's Humanoid ou AnimationController, você deve definir as propriedades a seguir necessárias para habilitar o IK:
Propiedad | Descripción |
---|---|
Type | Especifica el tipo de comportamiento del control IK. Consulte Enum.IKControlType para la lista de opciones de comportamiento. Los tipos de comportamiento comunes son Position o Transform . |
EndEffector | Un BasePart o Bone en tu modelo de personaje que se dirige hacia el Target . Por ejemplo, puedes establecer un hueso de mano izquierdo como 1> Class.IKControl.EndE |
Target | El objeto al que el EndEffector llega o apunta. Un Target puede ser cualquier objeto con una posición mundial. |
ChainRoot | Define la cadena de BaseParts o Class.Bone|Bones |
Testando IKControls
Você pode adicionar e editar IKControl programaticamente ou diretamente através do Explorador. Você pode até adicionar e fazer alterações em IKControl durante um teste de Jogo para verificar rapidamente como diferentes propriedades afetam os movimentos de um personagem.
Para testar rapidamente seu IKControl usando um Attachment como alvo:
Na aba Teste, selecione Jogar para iniciar o teste de Jogar.
Clique no ícone ⊕ ao lado do modelo de personagem e adicione um HumanoidRootPart.
Selecione o Ataque e use a ferramenta Mover para posicionar o objeto na frente do seu personagem na janela de visualização.
Na janela Explorer , selecione o ícone ⊕ ao lado do ícone Humanoid do seu personagem e adicione um 1>IKControl1>.
Selecione o IKControl e defina os seguintes valores de propriedade no painel Propriedades :
- Tipo : Selecione Transform no menu suspenso.
- Alvo : Selecione o novamente criado Objeto de Ataque no Explorador.
Seu braço esquerdo deve agora alcançar o alvo Attachment. Você pode experimentar mover o Attachment ou editar as propriedades do IKControl para obter diferentes resultados.
Adicionando Constraints
Você pode usar Constraints para restringir como as articulações podem se mover quando atingem seu alvo. Con約束s podem garantir que as articulações, como os joelhos e tornozelo, se dobrem naturalmente ou fazer as articulações mecânicas girarem em uma orientação específica.
Para adicionar restrições ao seu personagem usando IKControl, seu IKControl e restrição devem atender às seguintes condições:
- Os anexos referenciados nas propriedades Attachment0 / Attachment1 da restrição adicionam-se às mesmas peças que o Motor6D / 1> Class.Motor6D.Part0|Part01> / 4>
- As posições relativas de Attachment0 / Attachment1 devem ser iguais às posições correspondentes do Motor6D1> Class.Motor6D.C0|C01> / 4> Class.Motor6D.C1
- A restrição e a IKControl compartilham o mesmo pai Model .
As seguintes instruções descrevem o processo de adição de um HingeConstraint para restringir a rotação do punho de um personagem e adicionar um BallSocketConstraint ao tornozelo para limitar o ângulo de rotação.
Poleira
Os personagens R15 do Roblox já incluem anexos em suas articulações que você pode usar para aplicar a restrição de ombro. Para o ombro, tanto o LeftUpperArm quanto o LeftLowerArm incluem um LeftElbowRigAttachment . Além de adicionar uma restrição, você também precisa adicionar anexos adicionais às articulações de cada peça para especificar em que
Para adicionar os HingeConstraint e acessórios de filho:
No Explorador, localize o EsquerdoInferiorArmadoModelo e clique no modelo⊕ button.
Adicionar um HingeConstraint com o nome LeftElbowConstraint .
No Explorador, navegue até o LeftUpperArm.LeftElbowRigRotationAttendance e adicione um anexo:
Clique no botão ⊕ para adicionar um Acessório com o nome LeftElbowConstraintAttachment0.
Na janela de visualização, selecione o acessório e use a ferramenta Rodar para girar o acessório para que a eixo principal seja o eixo esperado da rotação do seu punho.
Defina a propriedade LeftElbowConstraint.Attachment0 para este novo anexo.
No Explorador, navegue até o LeftLowerArm.LeftElbowRigRotation adicionar um anexo:
- Clique no botão ⊕ e adicione um Acessório com o nome LeftElbowConstraintAttachment1.
- Defina a propriedade LeftUpperArm.LeftElbowConstraint.Rotation1 para este novo anexo.
- Copie a propriedade LeftElbowConstraintAttachment0.CFrameOrientation e cole-a como o valor LeftElbowConstraint.Execution1.CFrameOrientation .
Teste seu IKControl para verificar se o ombro só gira em torno de seu eixo articulado:
Pulgelas
Mesmo com a restrição do joelho, o IKControl ainda pode produzir poses irrealistas com os pulsos.
Você pode melhorar isso adicionando um BallSocketConstraint para limitar a rotação do pulso. Embora isso seja semelhante ao processo de adição de um HingeConstraint ao tornozelo, você pode usar a propriedade LimitsEnabled neste tornozelo para controlar melhor a faixa de movimento do tornozelo.
Para adicionar um BallSocketConstraint para o pulso:
- No Explorador, localize o seu modelo's EsquerdaMão e clique no botão ⊕ button .
- Adicione um BallSocketConstraint com o nome LeftWristConstraint.
- Localize o LeftLowerArm.LeftWristRigAttachment do seu modelo e adicione um anexo:
- Clique no botão ⊕ e adicione um Acessório com o nome LeftWristConstraintAttachment0.
- Na janela de visualização, selecione o acessório e use a ferramenta Rotate tool para girar o acessório para que os dedos amarelos apontem para o modelo.
- Defina a propriedade LeftWristConstraint.Attachment0 para o novo LeftWristConstraintAttachment0.
- Localize o LeftHand.LeftWristRigAttachment do seu modelo e adicione um anexo:
- Clique no botão ⊕ e adicione um Acessório com o nome LeftWristConstraintAttachment1.
- Copie a propriedade LeftWristConstraintAttachment0.CFrameOrientation e cole-a como propriedade LeftWristConstraintAttachment1.CFrameOrientation .
- Defina a propriedade LeftWristConstraint.Attachment1 para este novo LeftWristConstraintAttachment1 .
- No Explorador, selecione o LeftWristConstraint .
- No Editor de Propriedades, configure o seguindo:
- Habilite LimitsEnabled .
- Definir ângulo superior para 80 . Isso controla o quanto o eixo da restrição pode girar, e 80 graus é aproximadamente o quanto o tornozelo deve ser capaz de dobrar.
- Dependendo do seu personagem, você pode querer ajustar a direção em que o cone está apontando. Você pode fazer isso usando a ferramenta Rotar para girar o restriçãodo Ataque0.
Ao selecionar o LeftWristConstraint , um cone verde aparece visualizando o alcance de movimento do pulso.
Com o conjunto de restrição configurado, teste o IKControl com a mão apontando para a frente do personagem e o pulsar deve girar e se dobrar mais realmente.