Salut,
J'essaye de faire tourner une camera autour d'un point.
Basiquement, je fais regarder ma caméra dans une direction (dans celle du point), puis j'utilise les coordonnées :
gluLookAt(metric*sin(ofDegToRad(transX))*sin(ofDegToRad(transY)), metric*cos(ofDegToRad(transX)), metric*cos(ofDegToRad(transX))*sin(ofDegToRad(transY)) , ofGetWidth()/2, ofGetHeight()/2, 0, 0, 0, 1);
transX et transY, c'est des floats en fonction mouseX, mouseY
En code ofx, c'est équivalent à :
cam.lookAt(ofVec3f(ofGetWidth() / 2, ofGetHeight()/2, 0), ofVec3f(0, -1, 0));
(où cam est un objet ofCamera,) puis à
cam.setPosition(metric*sin(ofDegToRad(transX))*sin(ofDegToRad(transY)),metric*cos(ofDegToRad(transX)),metric*cos(ofDegToRad(transX))*sin(ofDegToRad(transY)));
Et au lieu de voir la caméra tourner autour de mon point (ofGetWidth()/2, ofGetHeight()/2, 0) tout en le regardant, j'ai un mouvement merdique mais qui regarde effectivement (ofGetWidth()/2, ofGetHeight()/2, 0)...
Hors ligne
Accessoirement, je ne souhaite pas utiliser la fonction "orbit" mais vraiment le faire à la main.
A moins que l'on puisse après un cam.orbit() récupérer l'orientation angulaire selon les différents axes X, Y et Z
Hors ligne