Salut!
J'utilise ogre3d pour coder un petit modeleur.
J'ai mis en place des fonctions de mise à l'échelle de mes objets 3D.
Ces mises à l'échelles doivent donc etre faisable dans le plan camera. C'est à dire etirement/contraction verticale, etirement/contraction horizontal et etirement/contraction globals.
Le probleme est que ogre ne permet pas une mise à l'echelle dans le repere monde, mais seulement dans le repere local de l'objet. Or mes axes de transformation sont connus dans le repere monde.
Il me semble que les quaternions soient une solution pour resoudre mon probleme, mais je but un peu sur la question.
Il me semble qu'un bon debut soit de multiplier l'orientation de l'objet (ici un node) avec l'axe de mise à l'echelle souhaité, afin d'obtenir un nouvel axe de transformation dans le repere local (est ce que j'ai raison? parce que la c'est 100% experimental :p ).
Vector3 v = (Quaternion.Multiply(node.GetWorldOrientation(), axis));
Cela doit me donner un espce de triedre avec des longueurs d'axes normalisées correspondant à la "puissance" de la mise à l'echelle dans le repere local de l'objet (est ce que je me trompe?).
Apres je ne voit pas vraiement comment faire pour définir si la mise à l'échelle est un retrecissement ou une extension.....
Est ce que quelqu'un pourrait m'eclairer sur tout ca (peut etre existe t-il une methode super simple pour arriver au resultat).
Partager