J'ai un cube en GL ouvert. J'ai le cube tournant en multipliant par la matrice de rotation. J'ai également fait tourner la caméra autour du cube sur l'axe des x en utilisant gluLookAt comme vous pouvez le voir ci-dessous.openGL - Rotation au-dessus et en dessous d'un objet en utilisant gluLookAt
case 'j':
eyeX = 10*cos(angle);
eyeZ = 10*sin(angle);
centerX = -cos(angle);
centerZ = -sin(angle);
angle -= 0.1;
break;
case'l':
eyeX = 10*cos(angle);
eyeZ = 10*sin(angle);
centerX = -cos(angle);
centerZ = -sin(angle);
angle += 0.1;
break;
où
gluLookAt(eyeX, eyeY, eyeZ, centerX, centerY, centerZ, 0.0, 1.0, 0.0);
Ce que je me bats avec la caméra devient de faire tourner au-dessus et en dessous du cube encerclant sur l'axe y.
Merci. Je comprends parfaitement ce que vous voulez dire. J'ai juste du mal à comprendre en termes d'OpenGL et de C++. Recommandez-vous glTranslate glRotate et glTranslate? Comment pourrais-je obtenir la position du monde et la position de la caméra? –
La came pos dans les coords du monde est ce que vous entrez comme eyeX, Y, Z dans gluLookAt. Vous pouvez faire pivoter et traduire par tous les moyens que vous voulez (exactitude donnée); mais je peux vous recommander d'ignorer les éléments obsolètes "glTranform/Rotate/Scale" et de passer à GL basé sur Shader/Buffer/Uniform et d'utiliser [glm] (http://glm.g-truc.net/0.9.5/ index.html) pour l'algèbre côté CPU restant. –