Animation squelettique efficace

11

Je cherche à adopter un format d'animation squelettique ( comme demandé ici ) pour un jeu RTS. La représentation individuelle de chaque modèle à l'écran sera petite mais il y en aura beaucoup!

Dans l'animation squelettique, par exemple les fichiers MD5, chaque sommet individuel peut être attaché à un nombre arbitraire d'articulations.

Comment pouvez-vous prendre en charge efficacement cela tout en faisant l'interpolation dans GLSL? Ou les moteurs font-ils leur animation sur le CPU?

Ou les moteurs fixent-ils des limites arbitraires sur les articulations maximales par sommet et invoquent-ils des multiplications nop pour les articulations qui n'utilisent pas le nombre maximum?

Existe-t-il des jeux qui utilisent l'animation squelettique dans un cadre de type RTS prouvant ainsi que sur les cartes graphiques intégrées, je n'ai rien à craindre pour suivre la route des os?

Volonté
la source
+1, c'est une bonne question. Je me suis toujours demandé si l'animation devait se faire en langage d'ombrage ou sur le CPU ...
James
Les jeux RTS utilisant le moteur SAGE d'EA (C&C 3 et versions ultérieures, série BFME) utilisent l'animation squelettique, mais les sommets ne sont liés qu'à un seul os (au moins dans BFME)
Bart van Heukelom

Réponses:

6

Oui, limiter le nombre d'influences osseuses est courant. Vous pouvez soit pondérer les influences inutilisées à 0, soit avoir un mécanisme de boucle / sortie anticipée à ignorer.

Quant à savoir si cela fonctionne pour un RTS, je n'ai pas de référence pour vous, mais j'imagine que vous aurez besoin de LOD si vous travaillez avec un grand nombre de caractères à l'écran, et aussi si ces caractères sont petits.

LODer les caractères squelettiques est très similaire à LODer autre chose, sauf que vous voudrez probablement LOD les influences osseuses et le squelette ainsi que le maillage.

Par exemple, un niveau de détail faible peut n'utiliser qu'un seul os ayant la plus grande influence par sommet (également connu sous le nom de "peau dure").

Vous limiteriez probablement également le nombre d'os dans le squelette pour un modèle à faible LOD.

Enfin - si vous considérez jamais besoin de rendre les personnages en gros plan. Vous ne voulez probablement que modéliser, habiller et animer les personnages pour la distance de vue la plus proche ... vous ne voulez certainement pas stocker toutes les données d'exécution à une résolution bien supérieure à celle que vous n'aurez jamais rendue. Vous pourriez constater que vous n'avez tout simplement pas besoin de plus d'un squelette très basique et de quelques influences par sommet pour votre situation.

JasonD
la source
J'espérais que quelqu'un pourrait dire "vous ne voulez vraiment pas d'os pour les tourelles dans un rts si vos pièces sont petites; pensez plutôt au MD3 avec sa fonctionnalité de modèles liés" ou quelque chose
Will
Eh bien, je n'utiliserais pas le skinning pour ce genre de mailles dans ce genre de situation, mais "os" n'est qu'un nom de fantaisie pour les transformations hiérarchiques. Rien ne vous empêche de simplement y attacher des maillages plutôt que de pondérer les sommets. (en d'autres termes, pour une tourelle, vous pourriez simplement avoir deux os et deux mailles, et pas de peau / pondération du tout).
JasonD
2

Je ne pense pas que l'animation squelettique soit bonne pour un jeu RTS, l'animation squelettique nécessitera un processus supplémentaire pour tous les personnages, tandis que l'animation d'images clés consomme plus de mémoire mais vous utiliserez la même chose pour beaucoup de personnages, également un jeu rts nécessite peu d'animations par personnage

James
la source