Kinematica inversa (IK) è una tecnica comune in animazione del computer per rendere efficacemente i personaggi muovere e interagire in modo realistico con il loro Ambiente. Il processo di creazione di un movimento realistico per un personaggio richiede spesso molte istanze e piccoli regolamenti delle varie articolazioni. Con IK, puoi posare e animare più parti del personaggio posando o regolando un singolo oggetto.
Questa tecnica di animazione può fornire soluzioni ai seguenti esempi:
IKControl
Puoi usare un IKControl per aggiungere in modo procedurale l'IK ai tuoi rig dei personaggi al di fuori del Editor di animazioni. Studio ti consente di applicare in modo procedurale l'IK a tutti i personaggi, come R15, Rthro e personaggi importati personalizzati, per creare movimenti e interazioni realistiche nella tua esperienza.
Quando si aggiunge un IKControl, imposta le Class.IKControls richieste in modo corretto per evitare risultati inaspettati e non naturali. Come con tutte le animazioni, prova i tuoi 2>Class.IKControls2> per assicurarti di ottenere il comportamento desiderato.
Proprietà richieste
Quando aggiungi un IKControl al tuo personaggio, Humanoid o AnimationController, devi impostare le seguenti proprietà richieste per abilitare IK:
Proprietà | Descrizione |
---|---|
Type | Specifica il tipo di comportamento del controllo IK. Vedi Enum.IKControlType per la lista di opzioni di comportamento. I tipi di comportamento comuni sono Position o Transform . |
EndEffector | Un BasePart o Bone nella tua attrezzatura personaggio che si dirige verso il Target . Ad esempio, puoi impostare un 1>LeftHand1> osso come un 4> Class.IK |
Target | L'oggetto a cui il EndEffector raggiunge o punta. Un Target può essere qualsiasi oggetto con una posizione mondiale. |
ChainRoot | Define la catena di BaseParts o Class |
Testare IKControls
Puoi aggiungere e modificare IKControl programmaticamente o direttamente attraverso l'Explorer. Puoi persino aggiungere e apportare modifiche a IKControl durante un test di gioco per controllare rapidamente come le diverse proprietà influenzano le mosse di un personaggio.
Per testare rapidamente il tuo IKControl usando un Attachment come obiettivo:
Nella scheda Test, seleziona Gioca per avviare il test di Gioca.
Nell'Explorer, naviga a Workspace → il tuo utente's Class.Model . Questa istanza Model è chiamata come il tuo AccountRoblox attuale.
Click the ⊕ icon next to your character modello's HumanoidRootPart and add an Attachment .
Seleziona l' Attacco e usa lo strumento Sposta per posizionare l'oggetto davanti al tuo personaggio nella finestra.
Nella finestra Explorer, seleziona l'icona ⊕ accanto al personaggio del tuo personaggio e aggiungi un Humanoid .
Seleziona il IKControl e imposta i seguenti valori di proprietà nel Property Panel :
- digita : seleziona Transform dal menu a discesa.
- Effetto fine : Seleziona la man sinistra del tuo modello in Explorer.
- Bersaglio : Seleziona il nuovo oggetto Attacco creato nell' Explorer.
Il tuo personaggio ora dovrebbe raggiungere il target Attachment . Puoi sperimentare con la spostamento del Attachment o modificare le proprietà IKControl per ottenere diversi risultati.
Aggiungere vincoli
Puoi usare Constraints per limitare il modo in cui le articolazioni possono muoversi quando raggiungono il suo obiettivo. I vincoli possono garantire che le articolazioni come le ossa del gomito e dei piedi si piegano naturalmente, o per fare in modo che le articolazioni meccaniche ruotino in una posizione specifica.
Per aggiungere restrizioni al tuo personaggio usando IKControl, la tua IKControl e la restrizione devono soddisfare le seguenti condizioni:
- Gli allegati riferiti alle proprietà Attachment0 / Attachment1 delle limitazioni si attaccano alle stesse parti come il Motor6D1> Class.Motor6D.Part0|Part01> / 4> Class.Motor
- Le posizioni relative di Attachment0 / Attachment1 devono essere uguali alle posizioni corrispondenti del Motor6D1> Class.Motor6D.C0|C01> / 4> Class.Motor6D.C1|C
- Il vincolo e la condivisione IKControl hanno lo stesso padre Model .
Le seguenti istruzioni descrivono il processo di aggiungere un HingeConstraint per limitare la rotazione dell'elmetto di un personaggio e aggiungere un BallSocketConstraint alla polpa per limitare l'angolo di rotazione.
Polsi
I personaggi Roblox R15 già includono accessori nei loro arti che puoi utilizzare per applicare la limitazione dell'elmetto. Per l'elmetto, sia il braccio superiore sinistro che il braccio inferiore sinistro Vincoloun LeftElbowRigAttachment . Oltre a aggiungere un'限azione, è anche necessario aggiungere ulteriori accessori per ciascuna parte del loro LeftElbowRigAttachment
Per aggiungere i HingeConstraint e gli allegati figli:
Nell'Explorer, individua il braccio inferiore sinistro del tuo modello e fai clic sul pulsante ⊕ .
Aggiungi un HingeConstraint con il nome LeftElbowConstraint .
Nell'Explorer, naviga a sinistraUpperArm.LeftElbowRig e aggiungi un allegato:
Click the ⊕ button to add an Attachment with the name LeftElbowConstraintAttachment0 .
Nella finestra, seleziona l'allegato e usa il Ruota strumento per ruotare l'allegato in modo che il giallo PrimaryAxis sia l'asse della tua rotazione del polso.
Imposta la proprietà LeftElbowConstraint.Attachment0 a questo nuovo allegato.
Nell'modello, naviga a LeftLowerArm.LeftElbowRigRotationAttachment add an allegato:
- Click the ⊕ button and add an Attachment with the name LeftElbowConstraintAttachment1 .
- Imposta la LeftUpperArm.LeftElbowConstraint.Rotation1 proprietà su questo nuovo allegato.
- Copia la proprietà LeftElbowConstraintAttachment0.CFrameOrientation e pasta come valore LeftElbowConstraint.Animation1.CFrameOrientation .
Prova il tuo IKControl per verificare che l'elmetto ruoti solo attorno al suo asse di rotazione:
Polsi
Anche con la limitazione dell'Vincolo, l'IKControl può ancora produrre posizioni irrealistiche con le braccia.
Puoi migliorare questo aggiungendo un BallSocketConstraint per limitare la rotazione del polso. Mentre questo è simile al processo per l'aggiunta di un HingeConstraint all'avambio, puoi usare la proprietà LimitsEnabled su questo vincolo per controllare ulteriormente la gamma di movimento del polso.
Per aggiungere un BallSocketConstraint per il polso:
- Nell'Explorer, individua la mano sinistra del tuo modello e fai clic sul pulsante ⊕.
- Aggiungi un BallSocketConstraint con il nome LeftWristConstraint .
- Individua il LeftLowerArm.LeftWristRigRotationAttachimento del tuo modello e aggiungi un allegato:
- Click the ⊕ button and add an Attachment with the name LeftWristConstraintAttachment0 .
- In the finestra, select the attachment and use the Ruota tool to rotate theattachment so the yellow PrimaryAxis points toward the modello's fingerbread.
- Imposta la proprietà LeftWristConstraint.Attach0 sul nuovo LeftWristConstraintAttachment0 .
- Individua il LeftHand.LeftWristRigRotationAttach del tuo modello e aggiungi un allegato:
- Click the ⊕ button and add an Attachment with the name LeftWristConstraintAttachment1 .
- Copia la proprietà LeftWristConstraintAttachment0.CFrameOrientation e pasta come proprietà LeftWristConstraintAttachment1.CFrameOrientation .
- Imposta la proprietà LeftWristConstraint.Attach1 su questo nuovo LeftWristConstraintAttachment1 .
- Nell'Explorer, seleziona il LeftWristConstraint .
- Nell'Editor delle Proprietà, imposta quanto Seguendo:
- Abilita LimitsEnabled .
- Imposta Angolo superiore su 80 . Questo controlla quanto l'asse della Vincolopuò Rotaree 80 gradi è circa quanto il polso possa piegarsi.
- A seconda del tuo personaggio potresti voler tweak la direzione in cui il cono punta. Puoi farlo usando lo strumento Ruota per ruotare l'attachment0 della Vincolo.
Quando si seleziona il LeftWristConstraint , appare un cono verde che visualizza la gamma di movimento del polso.
Con il vincolo impostato, testare il IKControl con la mano puntando verso il personaggio e il polso dovrebbe ruotare e piegarsi più realmente.