Bonjour,
J'ai un souci avec ma Transform3D en WPF .
J'ai lu les informations qui sont disponibles sur le site de Daniel Lehenbauerhttp://blogs.msdn.com/danlehen/archive/2004/08/08/210961.aspx
concernant les Rotation et la différence entre l'espace de la pièce "Model Space" et l'espace de mon viewport "World Space "
J'ai effectué une transformation de mon Model3DGroup suivant l'axe x de -90 degrès avec le code ci-dessous .
RotateTransform3D myRotateTransform_1 = newRotateTransform3D(newAxisAngleRotation3D(newVector3D(1, 0, 0), -90));
(_robotArmReader3ds.NamedObjects[RobotModel3D] asModel3DGroup).Transform = myRotateTransform_1;
Si j'ai bien suivi le blog de Daniel, mon repère Model Space s'est tourné de -90 degrès également selon x.
Quand je regarde ma figure. L'objet s'est retouné de -90degrès comme je veux. Jusque la pas de problème.
Si maintenant je veux retourner mon objet GeometryModel3D de mon Model3Dgroup selon l'axe z, par la commande ci-dessous, je remarque que la rotation se fait selon l'axe z du repère ModelSpaceet non pas du world space.
R otateTransform3D myRotateTransform = newRotateTransform3D(newAxisAngleRotation3D(newVector3D(0, 0, 1), Convert.ToInt32(Slider1.Value)), newPoint3D(0, 0, 0));
(_robotArmReader3ds.NamedObjects["__RootModelsGroup"] asModel3DGroup).Transform = myRotateTransform;
Ne devrait-t-il pas tourner selon le repère du WorldSpace?
En plus si je veux maintenant faire tourner tout mon Model3Dgroup selon l'axe y de mon Model Space par la commande ci-dessous, il fait la rotation selon l'axe y de World space !!!
RotateTransform3D myRotateTransform = newRotateTransform3D(newAxisAngleRotation3D(newVector3D(0, 0, 1), Convert.ToInt32(Slider1.Value)), newPoint3D(0, 0, 0));
(_robotArmReader3ds.NamedObjects[Blade] asGeometryModel3D).Transform = myRotateTransform;
Conclu: Si je fais une rotation d'un objet Model3DGroup l'objet tourne selon les anciens repère ( le World Space) . Si je fais la rotation d'un GeometryModel3D appartenant au Model3DGroup, la rotation se fait par rapport au Model Space!!
Merci pour votre aide,
Sondos