2017-07-26 3 views
1

J'ai un code qui exécute de nombreuses animations squelettiques en utilisant des matrices, et je veux le convertir en quaternions doubles, pour obtenir de meilleures performances.Deux quaternions et échelles arbitraires

J'ai seulement un problème - je ne peux pas trouver une bonne ressource sur comment manipuler des échelles arbitraires.

Je ne comprends pas très bien comment les échelles dans la hiérarchie squelettique portent. Disons que pour chaque nœud du squelette, j'ai son double quaternion local (rotation + translation) et un vecteur 3D pour l'échelle, que puis-je en faire pour incorporer l'échelle?

Répondre

0

L'animation squelettique et l'échelle, en particulier l'échelle non uniforme, est un sujet délicat.

En utilisant la mise en œuvre standard des hiérarchies squelettiques avec une matrice par os, l'échelle se propage simplement aux enfants, ce qui est généralement considéré comme un comportement indésirable - propagation échelle non uniforme conduirait à cisaillement et autres déformations sur les os des enfants artefacts dans le dépouillement. Pour cette raison, il est souvent "compensé" sur la matrice enfant - par exemple, voir Autodesk Maya implementation de ce concept. Pour une bonne description de l'intégration de l'échelle non propagative dans les quaternions doubles, plusieurs academic papers by Ladislav Kavan fournissent beaucoup de détails. Il a également un certain nombre de conférences sur Dual Quaternions sur youtube.

+0

J'ai effectivement besoin que les échelles se propagent. Mon code implémente un format de modèle 3D qui supporte des échelles de propagation arbitraires, donc je n'ai pas le choix (bien que la partie échelle, en particulier la partie non-uniforme, ne soit pas beaucoup utilisée). – user2503048

+0

Dans ce cas, malheureusement, vous ne pouvez pas représenter toute la transformation utilisant un double quaternion et un vecteur d'échelle - il n'y a pas assez de degrés de liberté pour représenter le cisaillement et l'inclinaison, qui seront le résultat d'une mise à l'échelle non uniforme. à travers la hiérarchie de transformation. –