Bonjour, j'ai un probleme dans les rotations avec irrlicht.
Pour faire une rotation sur l'axe Y, je n'ai pas de probleme ; je fait
a.Y -= 0.3f; nodeSydney->setRotation(a);
Et ensuite, au moment de bouger le perso :
PosSydney.X += cos(SydneyRot.Y * 3.14159265384 /180 )*0.3f; PosSydney.Z -= sin(SydneyRot.Y * 3.14159265384 /180 )*0.3f;
Mais pour les rotations sur l'axe des Z, j'ai un probleme. En effet sela marche quand je n'ai fait aucune rotation sur l'axe Y , mais quand il y a déja eu rotation, le perso ne bouge pas dans le bon sens
De plus, je ne sais pas quoi mettre a la place de
PosSydney.X += cos(SydneyRot.Y * 3.14159265384 /180 )*0.3f; PosSydney.Z -= sin(SydneyRot.Y * 3.14159265384 /180 )*0.3f;
pour cette rotation sur l'axe Z
Voila, je ne suis pas sur d'avoir été bien explicite.
Merci et au revoir
Hors ligne
hummm ... je ne connais pas ces fonction la, mais je me demande ... est ce que le référentiel se replace par rapport au personnage a la fin de la première rotation ?
Quand ca va dans le mauvais sens, ca va dans lequel ( en fait, peux tu etre plus précis ? ) ?
Hors ligne
Hé ben j'ai réussit a résoudre ce probleme grace a cette fonction :
void rotate(vector3df rp) //rp is angle to turn, pitch or roll { vector3df r = nodeSydney->getRotation(); //get current rotation (euler) matrix4 m; matrix4 mp; m.setRotationDegrees(r); //set matrix to current rotation mp.setRotationDegrees(rp); //set second matrix to rotation to add m *= mp; //multipy them r = m.getRotationDegrees(); //get rotation vector from matrix (euler) nodeSydney->setRotation(r); //rotate node }
Trouvée sur le forum d'irrlicht
Merci quand meme
( je croyais pas que c'était si compliqué pour une simple rotation )
Hors ligne