Cinematica Inversa

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

La Cinematica Inversa (IK) è una tecnica comune nell'animazione computerizzata per far muovere i personaggi in modo efficiente e interagire realisticamente con il loro ambiente. Il processo di creazione di un movimento realistico per un personaggio richiede spesso molte iterazioni e piccoli aggiustamenti delle varie articolazioni. Con l'IK, puoi posare e animare più parti del personaggio posizionando o regolando un singolo oggetto.

Questa tecnica di animazione può fornire soluzioni ai seguenti esempi:

Afferrando e posando la mano di un personaggio mentre si regolano automaticamente gli arti correlati, come il polso, il gomito e la spalla.
Far interagire i piedi di un personaggio in modo realistico su diverse superfici e pendenze.
Afferrando e spostando un singolo oggetto target per creare rapidamente interazioni realistiche con il tuo personaggio e gli oggetti di scena.

IKControl

Puoi utilizzare un IKControl per aggiungere proceduralmente IK ai tuoi modelli di personaggi al di fuori dell'Animation Editor. Studio ti consente di applicare programmaticamente l'IK a tutti i personaggi 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 IKControls per assicurarti di ottenere il comportamento desiderato.

Proprietà richieste

Quando aggiungi un IKControl al Humanoid o al AnimationController del tuo personaggio, devi impostare le seguenti proprietà richieste per abilitare l'IK:

ProprietàDescrizione
TypeSpecifica 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.
EndEffectorUn BasePart o Bone nel tuo modello di personaggio che punta verso il Target. Ad esempio, puoi impostare un osso LeftHand come EndEffector per raggiungere un oggetto maniglia della porta impostato come Target.
TargetL'oggetto che il EndEffector raggiunge o punta. Un Target può essere qualsiasi oggetto con una posizione nel mondo.
ChainRootDefinisce la catena di BaseParts o Bones che il IKControl influenza. Tutte le parti collegate tra il ChainRoot e il EndEffector sono influenzate dal IKControl utilizzando il tipo di comportamento definito.

Ad esempio, se la LeftHand del tuo personaggio è impostata come Target, puoi applicare l'IK all'intero braccio sinistro impostando ChainRoot su LeftUpperArm. Per applicare l'IK solo alle parti sotto il gomito, imposta ChainRoot su LeftLowerArm.

Testa IKControls

Puoi aggiungere e modificare IKControl programmaticamente o direttamente tramite l'Explorer. Puoi anche aggiungere e apportare 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:

  1. Dalla mezzanina di Studio, inizia un playtest.

  2. Nella finestra Explorer, naviga a Workspace → il modello del tuo utente Model. Questa istanza di Model è nominata come il tuo attuale account Roblox.

  3. Fai clic sull'icona accanto al HumanoidRootPart del modello del tuo personaggio e aggiungi un Attachment.

  4. Seleziona l'Attachment e utilizza lo strumento Move per posizionare l'oggetto di fronte al tuo personaggio nella vista.

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

  6. Seleziona il IKControl e imposta i seguenti valori delle proprietà nella finestra Properties:

    1. Type: Seleziona Transform dal menu a discesa.
    2. EndEffector: Seleziona il MeshPart LeftHand del tuo modello nell'Explorer.
    3. Target: Seleziona il nuovo oggetto Attachment creato nell'Explorer.
    4. ChainRoot: Seleziona il MeshPart LeftUpperArm del tuo modello nell'Explorer.
    Proprietà IKControl
    Explorer - Modello del Personaggio

    Il braccio sinistro del tuo personaggio dovrebbe ora raggiungere il target Attachment. Puoi sperimentare spostando il 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 target. I vincoli possono garantire che articolazioni come i gomiti e le ginocchia si pieghino in modo naturale, o per far ruotare le articolazioni meccaniche in un'orientazione specifica.

Gomito che si piega in modo innaturale
Gomito che si piega correttamente

Per aggiungere vincoli al tuo personaggio utilizzando IKControl, il tuo IKControl e il vincolo devono soddisfare le seguenti condizioni:

Le seguenti istruzioni descrivono il processo di aggiunta di un HingeConstraint per limitare la rotazione del gomito di un personaggio e l'aggiunta di un BallSocketConstraint al polso per limitare l'angolo di rotazione.

Gomito

I personaggi con modelli R15 includono già attacchi nelle loro articolazioni che puoi utilizzare per applicare il vincolo del gomito. Per il gomito, sia il LeftUpperArm che il LeftLowerArm includono un LeftElbowRigAttachment. Oltre ad aggiungere un vincolo, devi anche aggiungere attacchi secondari a ciascun LeftElbowRigAttachment di ogni parte per specificare quale asse il gomito può ruotare.

Per aggiungere il HingeConstraint e gli attacchi secondari:

  1. Nella finestra Explorer, trova il LeftLowerArm del tuo modello e fai clic sul ⊕ button.

  2. Aggiungi un HingeConstraint con il nome LeftElbowConstraint.

  3. Nella finestra Explorer, naviga a LeftUpperArm.LeftElbowRigAttachment e aggiungi un attacco:

    1. Fai clic sul ⊕ button per aggiungere un Attachment con il nome LeftElbowConstraintAttachment0.

    2. Nella vista, seleziona l'attacco e utilizza lo strumento Rotate per ruotare l'attacco in modo che il giallo PrimaryAxis sia l'asse di rotazione previsto del gomito.

    3. Imposta la proprietà LeftElbowConstraint.Attachment0 su questo nuovo attacco.

  4. Nella finestra Explorer, naviga all'LeftLowerArm.LeftElbowRigAttachment del tuo modello e aggiungi un attacco:

    1. Fai clic sul ⊕ button e aggiungi un Attachment con il nome LeftElbowConstraintAttachment1.
    2. Imposta la proprietà LeftUpperArm.LeftElbowConstraint.Attachment1 su questo nuovo attacco.
    3. Copia la proprietà LeftElbowConstraintAttachment0.CFrameOrientation e incollala come valore 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 del gomito, l'IKControl può ancora produrre pose irrealistiche con i polsi.

Il polso si piega in modo innaturale in determinate orientazioni

Puoi migliorare questo aggiungendo un BallSocketConstraint per limitare la rotazione del polso. Anche se questo è 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:

  1. Nella finestra Explorer, trova il LeftHand del tuo modello e fai clic sul ⊕ button.
    1. Aggiungi un BallSocketConstraint con il nome LeftWristConstraint.
  2. Trova il LeftLowerArm.LeftWristRigAttachment del tuo modello e aggiungi un attacco:
    1. Fai clic sul ⊕ button e aggiungi un Attachment con il nome LeftWristConstraintAttachment0.
    2. Nella vista, seleziona l'attacco e utilizza lo strumento Rotate per ruotare l'attacco in modo che il giallo PrimaryAxis punti verso le punte delle dita del modello.
    3. Imposta la proprietà LeftWristConstraint.Attachment0 sul nuovo LeftWristConstraintAttachment0.
  3. Trova il LeftHand.LeftWristRigAttachment del tuo modello e aggiungi un attacco:
    1. Fai clic sul ⊕ button e aggiungi un Attachment con il nome LeftWristConstraintAttachment1.
    2. Copia la proprietà LeftWristConstraintAttachment0.CFrameOrientation e incollala come proprietà LeftWristConstraintAttachment1.CFrameOrientation.
    3. Imposta la proprietà LeftWristConstraint.Attachment1 su questo nuovo LeftWristConstraintAttachment1.
  4. Nella finestra Explorer, seleziona il LeftWristConstraint.
  5. Nella finestra Properties, imposta quanto segue:
    1. Abilita LimitsEnabled.
    2. 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.
  6. A seconda del tuo personaggio, potresti voler regolare la direzione in cui punta il cono. Puoi farlo utilizzando lo strumento Rotate per ruotare l'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 che punta verso il basso di fronte al personaggio e il polso dovrebbe ruotare e piegarsi in modo più realistico.

© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.