Bonjour,
Je code actuellement sur Ogre une caméra libre pour se balader dans l'application. Les mouvements avant, arrière, gauche et droite avec les flèches directionnelles fonctionnent, mais le regarde avec la souris non.
Voila comment je procède :
A chaque mouvement de la souris, la méthode mouseMoved est appelée, on récupère le mouvement relatif en X et Y et on le multiplie par la sensibilité. Ensuite, on appelle la méthode de calcul du vecteur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 bool mouseMoved(const OIS::MouseEvent &arg) { _theta -= arg.state.X.rel * _sensitivity; _phi -= arg.state.Y.rel * _sensitivity; calculerVecteur(); }
_target correspond au vecteur que j'utilise dans la fonction lookAt().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 void calculerVecteur() { static const Ogre::Vector3 up(0,1,0); if (_phi > 89) _phi = 89; else if (_phi < -89) _phi = -89; double r_temp = cos(_phi*M_PI/180); _forward.Z = sin(_phi*M_PI/180); _forward.X = r_temp*cos(_theta*M_PI/180); _forward.Y = r_temp*sin(_theta*M_PI/180 _left = up.crossProduct(_forward); _left.normalise(); _target = _position + _forward; }
Au final, quand je bouge la souris ça regarde un peu ou ça le veut bien, c'est incontrôlable.
J'utilise la bonne méthode?
merci pour votre aide.
Partager