Animazione scheletrica efficiente


11

Sto cercando di adottare un formato di animazione scheletrico ( come richiesto qui ) per un gioco RTS. La rappresentazione individuale di ciascun modello sullo schermo sarà piccola ma ce ne saranno molti!

Nell'animazione scheletrica, ad esempio file MD5, ogni singolo vertice può essere collegato a un numero arbitrario di giunti.

Come puoi supportarlo efficacemente mentre fai l'interpolazione in GLSL? O i motori eseguono l'animazione sulla CPU?

Oppure i motori stabiliscono limiti arbitrari sui giunti massimi per vertice e invocano moltiplicazioni nop per quei giunti che non usano il numero massimo?

Esistono giochi che usano l'animazione scheletrica in un ambiente simile a RTS, dimostrando così che sulle schede grafiche integrate non ho nulla di cui preoccuparmi nel percorrere la strada delle ossa?


+1, questa è una buona domanda. Mi sono sempre chiesto se l'animazione dovesse essere eseguita in linguaggio shading o sulla CPU ...
James

I giochi RTS che utilizzano il motore SAGE di EA (C&C 3 e versioni successive, serie BFME) utilizzano l'animazione scheletrica, ma i vertici sono legati a un solo osso (almeno in BFME)
Bart van Heukelom,

Risposte:


6

Limitare il numero di influenze ossee è comune, sì. Puoi ignorare le influenze inutilizzate a peso 0 o avere un meccanismo loop / early-out da saltare.

Per quanto riguarda il fatto che funzioni per un RTS, non ho un riferimento per te, ma immagino che avrai bisogno di LOD se lavori con un gran numero di personaggi sullo schermo e anche se quei caratteri sono piccoli.

I caratteri scheletrici di LODing sono più o meno gli stessi di LODing di qualsiasi altra cosa, tranne che probabilmente vorrai LOD sulle influenze ossee e sullo scheletro e sulla mesh.

Ad esempio, un livello di dettaglio di basso livello potrebbe utilizzare solo un singolo osso con la massima influenza per vertice (noto anche come "skin skin").

Probabilmente limiteresti anche il numero di ossa nello scheletro per un modello LOD basso.

Infine, considera se hai mai bisogno di rendere i personaggi in primo piano. Probabilmente vuoi solo modellare, skin e animare i personaggi per la distanza di visione più vicina ... sicuramente non vuoi archiviare tutti i dati di runtime a una risoluzione molto più alta di quanto tu abbia mai visualizzato. Potresti scoprire che non hai bisogno di altro che uno scheletro di base e un paio di influenze per vertice per la tua situazione.


Speravo che qualcuno potesse dire "davvero non vuoi ossa per torrette in un rts se i tuoi pezzi sono piccoli; considera invece MD3 con la sua funzione di modelli collegati" o qualcosa del genere
Will

Beh, non userei la skin per quel tipo di maglie in quel tipo di situazione, ma "ossa" sono solo un nome di fantasia per trasformazioni gerarchiche. Nulla ti impedisce di attaccare le maglie a loro invece di appesantire i vertici. (in altre parole, per una torretta potresti avere solo due ossa e due maglie, e niente skinning / peso).
JasonD,

2

Non credo che l'animazione scheletrica sia buona per un gioco RTS, l'animazione scheletrica richiederà un processo extra per tutti i personaggi, mentre l'animazione dei fotogrammi chiave consuma più memoria ma userete lo stesso per molti personaggi, anche un gioco RT richiede piccole animazioni per personaggio

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.