Qual è il know-how necessario per scrivere una libreria di animazioni (IK e FK)? [chiuso]


9

Non riesco a trovare una buona libreria per l'animazione, quelle che ho trovato sono davvero vecchie e fuori produzione, ma ho notato che le librerie sono relativamente piccole, quindi sto pensando di codificarne una da sola: da dove dovrei iniziare ? Quali sono le basi per questo? C'è un libro su questo?

Sono anche molto apprezzate alcune ulteriori note su un buon formato di file per l'animazione.

Sto usando C ++.

Risposte:



7

La cinematica diretta è solo un prerequisito per la cinematica inversa, in generale.

Per la cinematica diretta devi avere una certa conoscenza delle catene di trasformazione (cosa significa ad esempio un grafico di scena). Ad esempio, un buon punto di partenza è la convenzione Denavit-Hartenberg. Per la cinematica inversa, studia le soluzioni Cyclic Coordinate Descent (CCD), Jacobian Inverse, Jacobian transpose e pseudo-inverse . Questi concetti e algoritmi offrono una buona panoramica di ciò che riguarda la matematica e in parte la fisica di questo campo. La libreria, il linguaggio di programmazione o i formati di file non sono mai l'elemento chiave se vuoi anche capire cosa succede dietro la magia.

Se hai bisogno di una soluzione rapida o di un componente per qualche applicazione su cui stai lavorando, dai un'occhiata ad alcune delle librerie fornite nelle altre risposte qui. Se sei un appassionato di robotica, OpenRAVE è un mostro degno di nota. Inoltre, c'è una Matlab Robotics Toolbox (a condizione che tu ti occupi di quel tipo di aspetto ingegneristico della questione).

Tutti i concetti generano un camion carico di risultati pertinenti sul tuo motore di ricerca preferito, quindi scusami per non aver pubblicato molti link a materiali interessanti.


1

Articolo originale: cosa devo sapere sulla cinematica inversa?

Probabilmente hai sentito parlare di Inverse Kinematics. IK è uno strumento popolare in Unity e nella computer grafica, ma se è la prima volta che provi a creare o utilizzare un sistema di cinematica inversa, potresti volere maggiori dettagli. Spiegherò cos'è l'IK, definirò il vocabolario e esaminerò gli usi. Qual è il vocabolario necessario per capire IK?

Prima di entrare nel cuore di IK, dobbiamo definire un vocabolario relativo a IK. IK è un metodo applicato a un corpo articolato. Cos'è un corpo articolato?

Corpo articolato

Un corpo articolato può rappresentare la maggior parte dei corpi animati come umani e animali con scheletri. In poche parole, un corpo articolato è un albero di catene collegate. Le catene collegate sono costituite da giunti e maglie, dove una maglia è un cilindro rigido.

inserisci qui la descrizione dell'immagine

Tipi di giunti

Per quanto riguarda le articolazioni, ci sono due tipi. Il primo tipo di giunto è un giunto rotante. È collegato a un collegamento che ruota attorno ad esso.

Un giunto rotante è molto simile al perno centrale di un orologio - con una lancetta dell'orologio come collegamento.

inserisci qui la descrizione dell'immagine

Un giunto prismatico è un giunto in modo tale che il collegamento collegato si traduca dal giunto per estendere / accorciare il collegamento.

inserisci qui la descrizione dell'immagine

Un giunto prismatico si comporta in modo molto simile all'estensione / retrazione della lunghezza della maniglia a scomparsa sul bagaglio. Se guardi da vicino, una maniglia per bagagli a scomparsa ha 4 giunti prismatici. 2 giunti prismatici a metà del manico e altri 2 giunti prismatici lungo il manico nella parte superiore del bagaglio.

Se sei confuso da articolazioni prismatiche, non preoccuparti. Non vengono usati così spesso nella cinematica inversa e, come si potrebbe dire, nessun essere umano ha articolazioni prismatiche, ma solo articolazioni rotanti.

Struttura gerarchica

Un corpo articolato ha un'articolazione della radice. L'articolazione della radice è la base della struttura. L'articolazione della radice per un umanoide è di solito il centro dei fianchi. Il corpo articolato è formato da un albero di articolazioni e collegamenti, a partire dall'articolazione della radice. Un nuovo giunto e collegamento è simile a un nuovo ramo su un albero. Un collegamento / giunto interno è un collegamento / giunto più vicino al giunto radicolare all'interno della gerarchia degli alberi del corpo articolato, in quanto si riferisce a un dato giunto / collegamento. Un collegamento / giunto esterno è un collegamento / giunto che è più lontano dall'articolazione della radice all'interno della gerarchia dell'albero del corpo articolato.

End Effector

Un effettore finale è una posizione nella posizione più esterna del collegamento più esterno. È l'estremità libera della catena di giunti e maglie alternati. L'effettore finale non è un giunto. L'effettore finale è semplicemente la posizione alla fine di un corpo articolato. Un corpo articolato può avere più dispositivi di estremità, proprio come un albero binario può avere più foglie.

inserisci qui la descrizione dell'immagine

End Effector è raffigurato come un cerchio verde qui.

Articolazioni e pose

Un'articolazione è una rotazione / traslazione di un giunto che sposta un collegamento collegato. D'altra parte, una posa è un insieme di articolazioni articolari che porta al posizionamento del corpo articolato. In altre parole, la posa è un valore vettoriale anziché un valore scalare.

Cos'è Forward Kinematics?

Prima di poter capire cos'è Inverse Kinematics, dobbiamo capire cos'è Forward Kinematics. La funzione / algoritmo di Forward Kinematics prende posizione come input e calcola la posizione dell'effettore finale come output. Forward Kinematics è la funzione inversa di Inverse Kinematics. Con Forward Kinematics, è necessario definire l'intera posa di un corpo articolato in modo da fornire alla funzione / algoritmo l'input di posa. Ciò significa che è necessario definire l'articolazione di ciascuna articolazione nel corpo articolato. Questo potrebbe andare bene se hai un basso numero di articolazioni, ma con un alto numero di articolazioni tende ad essere noioso.

Che cos'è la cinematica inversa?

Ora, immagina se desideri che l'effettore finale del tuo corpo articolato raggiunga una determinata posizione target. Ciò significa che conosci la posizione dell'effettore finale che desideri mirare, ma non sai quale deve essere la posa del corpo articolato affinché l'effettore finale raggiunga questa posizione target. È qui che brilla Inverse Kinematics!

inserisci qui la descrizione dell'immagine

Inverse Kinematics è la funzione / algoritmo inversa di Forward Kinematics. La funzione / algoritmo di cinematica diretta prende una posizione target come input e calcola la posa richiesta affinché l'effettore finale raggiunga la posizione target - la posa è l'output.

Come puoi vedere, l'ingresso e l'uscita sono commutati tra FK e IK. Con Inverse Kinematics, non è necessario definire l'intera posa di un corpo articolato: questo viene calcolato per te dall'algoritmo IK. Con IK, devi solo definire una posizione come input.

Inverse Kinematics fa tutto il lavoro computazionale impegnativo per calcolare quale sia la posa. Nello stato precedente, c'è un corpo articolato con qualche posa nota. Definisce una posizione target per l'effettore finale che cerca di raggiungere. Una volta applicato l'algoritmo IK al corpo articolato, abbiamo raggiunto l'After State. Lo stato After mostra che è stata calcolata una nuova posa, in modo tale che l'effettore finale sia ora nella posizione target.

Quali sono gli usi di IK?

A questo punto, sappiamo che IK viene applicato a un corpo articolato, sappiamo di cosa è composto un corpo articolato e conosciamo la differenza tra IK e FK. Finora abbiamo una buona panoramica di IK, ma completiamo con alcuni buoni casi d'uso di IK. IK può essere usato per un braccio umanoide per raggiungere un oggetto / bersaglio, come abbiamo visto. IK può anche essere usato per il passo del piede, in modo tale da dire al piede dove fare un passo e IK capisce come configurare le articolazioni delle gambe. IK non viene solitamente utilizzato come animazione stessa (raggiungendo un oggetto), ma piuttosto come strumento di animazione. Pertanto, se si sta implementando un ciclo di camminata, è possibile posizionare alcuni dei fotogrammi chiave utilizzando lo strumento IK.

inserisci qui la descrizione dell'immagine

Un altro punto chiave su IK è che il tuo obiettivo / target non è limitato alla sola posizione: il tuo obiettivo può essere definito come una rotazione. Ad esempio, se i tuoi piedi devono ruotare in base a un terreno irregolare, il tuo obiettivo di rotazione IK può essere definito in base al normale del pavimento. In questo modo i tuoi piedi sono inclinati lungo il pavimento, come quando cammini su una pendenza. Nota che puoi anche usare IK per guardare la tua testa (o anche gli occhi) in una certa direzione. Se vuoi che la tua testa segua un oggetto, puoi usare IK per fare in modo che la testa segua l'oggetto intorno.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.