Je dois changer une implémentation de caméra construite avec gluLookat
et glMultmatrixf
.Rotation de la caméra dans son propre coord en utilisant gluLookat et glMultMatrixf
La caméra mise en œuvre est une caméra arcball dans laquelle la caméra tourne autour d'un point.
Orientation de la caméra est par
//set projection
glMatrixMode(GL_PROJECTION);
gluPerspective (..);
//modelview
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(pCamera.x, pCamera.y, pCamera.z,
pTarget.x, pTarget.y, pTarget.z,
up.x, up.y, up.z);
et est suivi par
glMultMatrixf(transformViewMatrix);
pour déplacer la caméra autour du point où transformViewMatrix
est calculé à partir de la souris coord
Je dois intégrer Oculus Rift avec l'appareil photo pour que l'appareil puisse tourner place au lieu d'un point.
Je peux obtenir une matrice de rotation à partir du capteur Oculus, rotOculus
. J'ai essayé de multiplier transforViewMatrix
avec rotOculus
.
glMultMatrixf(transformViewMatrix*rotOculus);
mais obtenir que l'objet que je suis à la recherche est en rotation sur place au lieu de la caméra
alors j'ai essayé d'assigner transformViewMatrix
avec rotOculus
, mais qui est identique à arcball rotation avec la souris, juste changé Oculus.
Je pense que pour faire pivoter la caméra sur place, j'ai besoin de traduire la caméra à l'origine par pCamera
, puis glMultMatrixf(rotOculus)
?
Mais je n'avez pas accès à la façon dont je peux commander glTranslate
, gluLookAt
, glMultMatrixf
méthodes, car celles-ci sont mises en œuvre dans une dll, je ne peux pas changer pCamera
, pTarget
, up
et viewTransformMatrix
. Est-ce que quelqu'un pourrait indiquer comment je pourrais faire pivoter la caméra sur place dans cette situation? Merci.