Cinematica Inversa (IK) è una tecnica comune nell'animazione computerizzata per far muovere i personaggi in modo efficiente e interagire in modo realistico con il loro ambiente. Il processo di creazione di un movimento realistico per un personaggio richiede spesso molte iterazioni e piccole regolazioni delle varie articolazioni. Con l'IK, puoi posare e animare più parti di un personaggio posizionando o regolando un singolo oggetto.
Questa tecnica di animazione può fornire soluzioni ai seguenti esempi:
IKControl
Puoi utilizzare un IKControl per aggiungere in modo procedurale l'IK ai tuoi modelli di personaggi al di fuori dell'Animation Editor. Studio ti consente di applicare in modo programmato l'IK a tutti i personaggi, come R15, Rthro e personaggi personalizzati importati, per creare movimenti e interazioni realistiche nel tuo gioco.
Quando aggiungi un IKControl, imposta correttamente le proprietà richieste per evitare risultati di animazione inaspettati e innaturali. Come per tutte le animazioni, testa i tuoi IKControl per assicurarti di ottenere il comportamento desiderato.
Proprietà richieste
Quando aggiungi un IKControl al Humanoid o a AnimationController del tuo personaggio, devi impostare le seguenti proprietà richieste per abilitare l'IK:
| Proprietà | Descrizione |
|---|---|
| Type | Specifica il tipo di comportamento del controllo IK. Vedi Enum.IKControlType per l'elenco delle opzioni di comportamento. I tipi di comportamento comuni sono Position o Transform. |
| EndEffector | Una BasePart o Bone nel tuo modello di personaggio che traccia verso il Target. Ad esempio, puoi impostare un osso LeftHand come EndEffector per raggiungere un oggetto maniglia di porta impostato come Target. |
| Target | L'oggetto che il EndEffector raggiunge o punta. Un Target può essere un qualsiasi oggetto con una posizione nel mondo. |
| ChainRoot | Definisce la catena di BaseParts o Bones che il IKControl influenza. Tutte le parti connesse tra il ChainRoot e il EndEffector sono influenzate dal IKControl utilizzando il tipo di comportamento definito. Ad esempio, se il LeftHand del tuo personaggio è impostato come Target, puoi applicare l'IK all'intero braccio sinistro impostando ChainRoot sul LeftUpperArm. Per applicare l'IK solo alle parti sotto il gomito, imposta ChainRoot sul LeftLowerArm. |
Testa IKControls
Puoi aggiungere e modificare IKControl in modo programmato o direttamente attraverso l'Explorer. Puoi anche aggiungere e fare modifiche a IKControl durante un test di Gioco per controllare rapidamente come varie proprietà influenzano i movimenti di un personaggio.
Per testare rapidamente il tuo IKControl utilizzando un Attachment come target:
Dalla mezzanina di Studio, avvia un test di gioco.
Fai clic sull'icona ⊕ accanto a HumanoidRootPart del modello del tuo personaggio e aggiungi un Attachment.

Seleziona l'Attachment e usa lo strumento Sposta per posizionare l'oggetto di fronte al tuo personaggio nella vista.

Nella finestra Explorer, seleziona l'icona ⊕ accanto al Humanoid del tuo personaggio e aggiungi un IKControl.

Seleziona il IKControl e imposta i seguenti valori di proprietà nella finestra Properties:
- Type: Seleziona Transform dal menu a discesa.
- Target: Seleziona il nuovo oggetto Attachment creato nella Explorer.

Proprietà di IKControl 
Explorer - Modello del Personaggio Il braccio sinistro del tuo personaggio dovrebbe ora tendere verso l'Attachment target. Puoi sperimentare spostando l'Attachment o modificando le proprietà del IKControl per ottenere risultati diversi.
Aggiungi vincoli
Puoi utilizzare Constraints per limitare come le articolazioni possono muoversi quando raggiungono il loro obiettivo. I vincoli possono garantire che articolazioni come gomiti e ginocchia si pieghino in modo naturale, o far ruotare le articolazioni meccaniche in un'orientazione specifica.


Per aggiungere vincoli al tuo personaggio utilizzando IKControl, il tuo IKControl e il vincolo devono soddisfare le seguenti condizioni:
- Gli allegati riferiti nelle proprietà Attachment0/Attachment1 del vincolo devono attaccarsi alle stesse parti del Motor6D Part0/Part1.
- Le posizioni relative di Attachment0/Attachment1 devono essere uguali alle posizioni corrispondenti dei Motor6D C0/C1 CFrames.
- Il vincolo e l'IKControl condividono lo stesso genitore Model.
Le seguenti istruzioni descrivono il processo di aggiunta di un HingeConstraint per limitare la rotazione del gomito di un personaggio e aggiungere un BallSocketConstraint al polso per limitare l'angolo di rotazione.
Gomito
I personaggi Roblox R15 includono già allegati nelle loro articolazioni che puoi utilizzare per applicare il vincolo al gomito. Per il gomito, sia il LeftUpperArm che il LeftLowerArm includono un LeftElbowRigAttachment. Oltre ad aggiungere un vincolo, è necessario aggiungere anche ulteriori allegati figli all'LeftElbowRigAttachment di ciascuna parte per specificare quale asse il gomito può ruotare.
Per aggiungere il HingeConstraint e gli allegati figlio:
Nella Explorer, trova il LeftLowerArm del tuo modello e fai clic sul pulsante ⊕.
Aggiungi un HingeConstraint con il nome LeftElbowConstraint.
Nella Explorer, vai a LeftUpperArm.LeftElbowRigAttachment e aggiungi un allegato:
Fai clic sul pulsante ⊕ per aggiungere un Attachment con il nome LeftElbowConstraintAttachment0.
Nella vista, seleziona l'allegato e usa lo strumento Ruota per ruotare l'allegato in modo che il giallo PrimaryAxis sia l'asse di rotazione previsto per il gomito.

Imposta la proprietà LeftElbowConstraint.Attachment0 su questo nuovo allegato.
Nella Explorer, vai all'LeftLowerArm.LeftElbowRigAttachment del tuo modello e aggiungi un allegato:
- Fai clic sul pulsante ⊕ e aggiungi un Attachment con il nome LeftElbowConstraintAttachment1.
- Imposta la proprietà LeftUpperArm.LeftElbowConstraint.Attachment1 su questo nuovo allegato.
- Copia la proprietà LeftElbowConstraintAttachment0.CFrameOrientation e incollala come valore di LeftElbowConstraint.Attachment1.CFrameOrientation.

Testa il tuo IKControl per verificare che il gomito ruoti solo attorno al suo asse a cerniera:
Polsi
Anche con il vincolo al gomito, l'IKControl può comunque produrre pose irrealistiche con i polsi.

Puoi migliorare questo aggiungendo un BallSocketConstraint per limitare la rotazione del polso. Sebbene questo sia simile al processo per aggiungere un HingeConstraint al gomito, puoi utilizzare la proprietà LimitsEnabled su questo vincolo per controllare ulteriormente l'ampiezza di movimento del polso.
Per aggiungere un BallSocketConstraint per il polso:
- Nella Explorer, trova il LeftHand del tuo modello e fai clic sul pulsante ⊕.
- Aggiungi un BallSocketConstraint con il nome LeftWristConstraint.
- Trova il LeftLowerArm.LeftWristRigAttachment del tuo modello e aggiungi un allegato:
- Fai clic sul pulsante ⊕ e aggiungi un Attachment con il nome LeftWristConstraintAttachment0.
- Nella vista, seleziona l'allegato e usa lo strumento Ruota per ruotare l'allegato in modo che il PrimaryAxis giallo punti verso le punte delle dita del modello.

- Imposta la proprietà LeftWristConstraint.Attachment0 sull nuovo LeftWristConstraintAttachment0.
- Trova il LeftHand.LeftWristRigAttachment del tuo modello e aggiungi un allegato:
- Fai clic sul pulsante ⊕ e aggiungi un Attachment con il nome LeftWristConstraintAttachment1.
- Copia la proprietà LeftWristConstraintAttachment0.CFrameOrientation e incollala come proprietà LeftWristConstraintAttachment1.CFrameOrientation.
- Imposta la proprietà LeftWristConstraint.Attachment1 su questo nuovo LeftWristConstraintAttachment1.
- Nella Explorer, seleziona il LeftWristConstraint.
- Nella finestra Properties, imposta quanto segue:
- Abilita LimitsEnabled.
- Imposta UpperAngle su 80. Questo controlla quanto può ruotare l'asse del vincolo, e 80 gradi è approssimativamente quanto il polso dovrebbe essere in grado di piegarsi.
- A seconda del tuo personaggio, potresti voler regolare la direzione verso cui punta il cono. Puoi farlo utilizzando lo strumento Ruota per ruotare il Attachment0 del vincolo.
Quando selezioni il LeftWristConstraint, appare un cono verde che visualizza l'ampiezza di movimento del polso.

Con il vincolo impostato, testa l'IKControl con la mano rivolta verso il basso di fronte al personaggio e il polso dovrebbe ruotare e piegarsi in modo più realistico.