>Or dans 3DS (et probablement dans pas mal de moteurs 3D, Sanx et Pierre ?)
 
Comptez pas sur moi pour tout ce qui a un rapport avec la hiérarchie et les transformations "à la MAX", j'ai tout viré.
 
Il y a longtemps, dans un moteur appelé Irion (Orion ? Irion ?), on s'était pris la tête de la même manière pour faire "tout comme MAX". Eh ben c'était bien le bordel, et ça n'a pas vraiment été utile au final.
 
Dans mon moteur actuel je me suis bien gardé de refaire les mêmes erreurs, et j'ai joyeusement simplifié tout ça :
 
- Je ne supporte pas le scaling, et d'une. D'abord à l'époque ça flinguait le lighting de DX7 (sauf en utilisant la fonction d'auto-normalize des normales, mais c'était lent), et ensuite sans le scaling inverser mes matrices 4x4 est beaucoup plus rapide. Entre autres.
 
- J'ai à peine une hiérarchie. La plupart des objets ont une world-matrix, point. Quand une hiérarchie est vraiment nécessaire, par exemple pour les persos, elle est gérée directement par la classe "Character" par exemple. Mais au niveau de la scène, il n'y a qu'un seul objet "Character" avec une matrice world.
 
Bon, maintenant la méthode standard c'est d'avoir une matrice 4x4 locale à chaque objet, et de recalculer les matrices world en descendant la hiérarchie en partant du root et en accumulant les matrices à la volée, récursivement. La concaténation est donc juste un produit de matrices 4x4. Après, que ça soit calculé via une matrice ou une PRS, c'est juste un détail d'implémentation, hein.... (non?) C'est aussi prise de tête en matrice ou en PRS. C'est même sûrement plus chiant en PRS. (et au cas où vous aviez des doutes, j'utilise donc des PRS :)
 
MAX est plus pénible encore, vu qu'il gère un paquet de matrices différentes (NodeTM, ObjectTM, offset transform, blah). Faire vraiment "comme MAX" de A à Z, ça va bien une fois..... Mais c'est vrai que ça dépend du but. Faire un jeu ? Un modeleur ?
 
Sinon pour les fonctions de mouvement en virtual, c'est pas vraiment ça qui va ralentir l'ensemble, a priori....
 
Pierre