2009-07-29 10 views
1

Je travaille sur un projet WPF 3D dans lequel plusieurs objets (1 - 20) ModelVisual3D peuvent être déplacés autour de la scène par animation. Chaque ModelVisual3D a à la fois un RotateTransform3D et un TranslateTransform3D appliqués à chaque mouvement. Et chaque objet ModelVisual3D se déplace indépendamment les uns des autres. Donc maintenant, pour cela, chaque fois que je veux déplacer des objets, je feuillette chaque ModelVisual3D et je configure une double animation pour sa rotation et son mouvement de transformation. Puis appelez le BeginAnimation() sur les deux transformations (pour chaque objet). Donc, si j'ai 20 objets ModelVisual3D, je finirai par appeler BeginAnimation() sur 40 objets de transformation différents ... chaque fois que je dois les déplacer.Animation WPF de plusieurs objets 3D effectuant plusieurs transformations chacun

Cela fonctionne bien, mais il semble qu'il devrait y avoir une meilleure façon. Y at-il quelque chose où je peux regrouper plusieurs transformations ensemble pour plusieurs objets ModelVisual3D, dans un objet "groupe de transformation", puis appeler Begin sur ce?

En outre, j'ai regardé en utilisant l'objet storyboard, mais je fais tout cela en C# (très peu de xaml statique qui se passe ici, la plupart de l'interface utilisateur est créée dynamiquement). L'objet storyboard ne peut être utilisé que pour un seul objet ModelVisual3D. Donc, le meilleur des cas, je serais à 20 objets de storyboard que j'appelle BeginAnimation.

Ou est ce que je fais la meilleure chose à faire?

Répondre

0

Vous pouvez stocker à la fois RotateTransform3D et TranslateTransform3D dans un Transform3DGroup. Cela devrait vous couper vers les appels 20'ish BeiginAnimation.

+0

Cela ne fonctionne vraiment pas, car l'appel Transform3DGroup.BeginAnimation() prend un seul DependencyProperty. Et je fais une transformation traduire sur la propriété OffsetX, et une transformation de rotation sur la propriété Angle. Donc, c'est encore deux appels – Turbo

Questions connexes