#0 

03-12-2006 09:57:39

Exedor
Membre
Date d'inscription: 31-10-2006
Messages: 10

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

Code:

a.Y -=  0.3f;
nodeSydney->setRotation(a);

Et ensuite, au moment de bouger le perso :             

Code:

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

Code:

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


#1 

06-12-2006 13:40:19

Dekron
Membre
Lieu: Orléans
Date d'inscription: 21-10-2006
Messages: 46
Site web

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 ? ) ?


Visitez Arcis : MMORPG ammateur utilisant irrlicht !
Etudiant ingénieur, maitrise C++, connaissances python & php.

Hors ligne


#2 

07-12-2006 20:51:49

Exedor
Membre
Date d'inscription: 31-10-2006
Messages: 10

Hé ben j'ai réussit a résoudre ce probleme grace a cette fonction :

Code:

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 smile

( je croyais pas que c'était si compliqué pour une simple rotation )

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
881 membres
1426 sujets
11116 messages
Dernier membre inscrit: Bidule
22 invités en ligne
Aucun membre connecté
RSS Feed