Kinematica inversa

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

Kinematica inversa (IK) è una tecnica comune nell'animazione del computer per rendere i personaggi muoversi 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 dei vari arti.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:

Prendi e posa la mano di un personaggio mentre regoli automaticamente i relativi arti, come il polso, il gomito e la spalla.
>

Fai interagire i piedi di un personaggio in modo realistico su diverse superfici e pendenze diverse.
>

Prendi e muovi un singolo oggetto target per creare rapidamente interazioni realistiche con il tuo personaggio e i props.
>

IKControllo

Puoi usare un IKControl per aggiungere proceduralmente IK ai tuoi rig di personaggio al di fuori dell'Editor di Animazione.Studio ti consente di applicare programmaticamente IK a tutti i personaggi, come R15, Rthro e personaggi skinati importati personalizzati, per creare movimenti e interazioni realistiche nella tua esperienza.

Quando aggiungi un IKControl, imposta correttamente le proprietà richieste per evitare risultati di animazione inaspettati e innaturali.Come per tutta l'animazioni, prova i tuoi IKControls per assicurarti di ottenere il comportamento desiderato.

Proprietà richieste

Quando aggiungi un IKControl al tuo personaggio di Humanoid o AnimationController, devi impostare le seguenti proprietà richieste per abilitare 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 personaggio rig che traccia verso il Target .Ad esempio, puoi impostare un osso a mano sinistra come un EndEffector per raggiungere un set di oggetti doorknob come il Target.
TargetL'oggetto a cui il EndEffector raggiunge o punta può essere qualsiasi oggetto con una posizione mondiale. Un Target può essere qualsiasi oggetto con una posizione mondiale.
ChainRootDefinisce la catena di BaseParts o Bones che l'IKControl influenza.Tutte le parti connesse tra il e il sono interessate dal tipo di comportamento definito. Ad esempio, se la mano sinistra del tuo personaggio è impostata come LeftHand , puoi applicare IK all'intero braccio sinistro impostando a LeftUpperArm .Per applicare IK solo alle parti sotto il gomito, imposta ChainRoot a LeftLowerArm .

Testare IKControls

Puoi aggiungere e modificare IKControl programmaticamente o direttamente attraverso Explorer.Puoi persino aggiungere e apportare modifiche a IKControl durante un test di gioco per controllare rapidamente come diverse proprietà influenzino i movimenti di un personaggio.

Per testare rapidamente il tuo IKControl utilizzando un Attachment come target:

  1. Nella scheda Test della barra degli strumenti, seleziona Gioca per avviare il Test di giocabilità.

  2. Nell' Explorer , naviga a WorkspaceModel.Questa istanza Model è nominata come il tuo attuale AccountRoblox.

  3. Fai clic sull'icona ⊕ accanto al modello di personaggio del tuo personaggio e aggiungi un allegato.

  4. Seleziona il allegato e usa lo strumento Sposta per posizionare l'oggetto di fronte al tuo personaggio nella finestra.

  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 di proprietà nel pannello Proprietà :

    1. Tipo : Seleziona Transform dal menu a discesa.
    2. Effettore finale : Seleziona il LeftHand MeshPart del tuo modello nell'esplorer.
    3. Obiettivo : Seleziona l'oggetto allegato appena creato nell'esploratore.
    4. ChainRoot : Seleziona il LeftUpperArm del tuo modello nell'esploratore.

    Proprietà di IKControl
    >

    Pannello esploratore - Modello di caratteri
    >

    Il braccio sinistro del tuo personaggio dovrebbe ora raggiungere il bersaglio Attachment .Puoi sperimentare con il movimento del Attachment o l'editing delle proprietà IKControl per ottenere risultati diversi.

Aggiungi restrizioni

Puoi usare Constraints per limitare il modo in cui le articolazioni possono muoversi quando raggiungono il loro obiettivo.Le restrizioni possono garantire articolazioni come le ginocchia e le elbici che si piegano naturalmente, o per far ruotare le articolazioni meccaniche in una determinata direzione.

Flessione del gomito innaturale
>

Flessione del gomito correttamente
>

Per aggiungere restrizioni al tuo personaggio utilizzando IKControl , il tuo IKControl e la restrizione deve soddisfare le seguenti condizioni:

  • Gli allegati indicati nelle proprietà di VincoloAttachment0 / Attachment1 si attaccano alle stesse parti del Motor6D / Part0 / Part1 .
  • Le posizioni relative di Attachment0 / Attachment1 devono essere uguali alle corrispondenti posizioni dei Class.Motor6D``Class.Motor6D.C0|C0 / C1 CFrames.
  • La restrizione e l'IKControl condividono lo stesso padre Model .

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 per limitare l'angolo di rotazione.

Caviglia

I personaggi Roblox R15 includono già allegati nelle loro articolazioni che puoi utilizzare per applicare la Vincoloal gomito.Per il gomito, entrambi il LeftUpperArm e il LeftLowerArm includono un LeftElbowRigAttachment .Oltre a aggiungere una Vincolo, è inoltre necessario aggiungere ulteriori accessori figli a ciascuna parte di LeftElbowRigAttachment per specificare su quale asse l'articolazione può ruotare.

Per aggiungere il HingeConstraint e gli allegati figli:

  1. Nell'esploratore, individua il Braccio inferiore sinistro del tuo modello e fai clic sul pulsante .

  2. Aggiungi una Restrizione articolata con il nome LeftElbowConstraint .

  3. Nell'esploratore, naviga verso il LeftUpperArm.LeftElbowRigAttachment e aggiungi un allegato:

    1. Fai clic sul pulsante per aggiungere un allegato con il nome LeftElbowConstraintAttachment0 .

    2. Nella finestra, seleziona l' allegato e usa lo strumento Ruota per ruotare l' allegato in modo che lo yellow Asse primario sia l'asse della rotazione prevista del tuo gomito.

    3. Imposta la proprietà LeftElbowConstraint.Attachment0 a questo nuovo allegato.

  4. Nell'esploratore, naviga verso il LeftLowerArm.LeftElbowRigAttachment del tuo modello e aggiungi un allegato:

    1. Fai clic sul pulsante e aggiungi un allegato con il nome LeftElbowConstraintAttachment1.
    2. Imposta la proprietà LeftUpperArm.LeftElbowConstraint.Attachment1 a questo nuovo allegato.
    3. Copia la proprietà LeftElbowConstraintAttachment0.CFrameOrientation e incollala come valore LeftElbowConstraint.Attachment1.CFrameOrientation .

Prova il tuo IKControl per verificare che l'articolazione gira solo attorno al suo asse a sfera:

Polsi

Anche con la restrizione al gomito, l'IKControl può ancora produrre pose irrealistiche con le caviglie.

Il polso si piega in modo innaturale in alcune orientazioni

Puoi migliorare questo aggiungendo un BallSocketConstraint per limitare la rotazione del polso.Mentre questo è simile al processo per l'aggiunta di un HingeConstraint a gomito, puoi usare la proprietà LimitsEnabled su questa restrizione per controllare ulteriormente l'intervallo di movimento del polso.

Per aggiungere un BallSocketConstraint per il polso:

  1. Nell'esploratore, individua il LeftHand del tuo modello e fai clic sul pulsante .
    1. Aggiungi un BallSocketConstraint con il nome LeftWristConstraint .
  2. Individua il LeftLowerArm.LeftWristRigAttachment del tuo modello e aggiungi un allegato:
    1. Fai clic sul pulsante e aggiungi un allegato con il nome LeftWristConstraintAttachment0.
    2. Nella finestra, seleziona l' allegato e usa lo strumento Ruota per ruotare l' allegato in modo che i punti primari gialli dell'asse primaria si dirigano verso le punte del modello.
    3. Imposta la proprietà LeftWristConstraint.Attachment0 alla nuova LeftWristConstraintAttachment0.
  3. Individua il LeftHand.LeftWristRigAttachment del tuo modello e aggiungi un allegato:
    1. Fai clic sul pulsante e aggiungi un allegato con il nome LeftWristConstraintAttachment1.
    2. Copia la proprietà LeftWristConstraintAttachment0.CFrameOrientation e incollala come Proprietà LeftWristConstraintAttachment1.CFrameOrientation .
    3. Imposta la proprietà LeftWristConstraint.Attachment1 a questo nuovo LeftWristConstraintAttachment1 .
  4. Nell'esploratore, seleziona la Restrizione del polso sinistro .
  5. Nell'editor delle proprietà, imposta quanto Seguendo:
    1. Abilita LimitiAbilitati .
    2. Imposta UpperAngle a 80.Questo controlla quanto l'asse della Vincolopuò Rotare, e 80 gradi è circa quanto il polso dovrebbe essere in grado di piegarsi.
  6. A seconda del tuo personaggio potresti voler modificare la direzione in cui il cono punta.Puoi farlo utilizzando lo strumento Ruota per ruotare l'allegato della restrizione Attach0 .

Quando si seleziona la Restrizione del polso sinistro , appare un cono verde che visualizza la gamma di movimento del polso.

Con il set di restrizioni configurato, prova l'IKControl con la mano che punta verso il basso di fronte al personaggio e il polso dovrebbe ruotare e piegarsi più realisticamente.