JOGL camera a la souris

Hip7 -  
 Utilisateur anonyme -
Bonjour,

Je veux réaliser un système solaire avec des planètes (et oui!) de la lumière qui vient du soleil, des textures sur les planètes et tout et tout (et ça, c'est bon ça marche super).
Mais mon problème est pour me déplacer dans l'espace à l'aide de la souris, j'entends par là regarder dans les directions avec la souris (monter la tête, la descendre, regarder à droite ou a gauche) ; je peux me déplacer dur les axes X et Y avec le clavier déjà. C'est juste les déplacement du regard avec la souris qu'il me manque, et je n'y parvient pas :(

Donc si quelqu'un pouvait éclairer ma lanterne?
Merci d'avance

Hip7

A voir également:

2 réponses

Utilisateur anonyme
 
Salut, j'ai le même problème que toi et cherche désespérément une réponse aussi :D

Tu utilise quoi pour faire tes rotations ? matrice mvp ?

(\___/)
(='.'=)
(")_(")

This is Bunny. Copy and paste bunny into...
...your signature to help him gain world domination
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

Je ne connais pas JOGL, j'ai fait de l'OpenGL mais ce n'était pas en Java.
Techniquement tu dois avoir des composants Swing je pense, pour faire ton déplacement "X et Y avec le clavier" tu as un KeyListener ? Il faudrait faire pareil avec des MouseListener, MouseMotionListener et MouseWheelListener.
0
Utilisateur anonyme
 
Sauf que je crois qu'il a un probleme de target de la camera (vecteur forward), perso pour bouger la gérée la camera, j'ai 3 angles sur les 3 axes (x y z) et j'ai la position de la camera x, y et z.

Alors oui je peut regarder dans tout les sens via la modification des angles x y z de la camera, mais je ne peut la déplacer que par changer sa position genre if key_Z: cam_position += 1

Et je crois qu'il as le meme probleme.
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Vous utilisez quoi comme instructions pour faire ce déplacement ?
Ça ne fonctionne pas avec un gluLookAt ?

http://www.felixgers.de/teaching/jogl/gluLookAt.html
0
Utilisateur anonyme > KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention  
 
non je n'utilise pas glulookat, j'utilise mon proper algorithm pour le faire, pour faire simple:
- J'ai un vecteur point de mon objet

// Object_Management
- J'addition ce vecteur avec un autre vecteur appellee obj_position[4]
- Puis je passe ce vecteur à travers mes equation de rotations:
                          X-axe
1y = (1y * cos(phi_x)) - (1z * sin(phi_x))
1z = (1z * cos(phi_x)) + (1y * sin(phi_x))

Y-axe
End.1z = 1z' = (1z * cos(phi_y)) - (1x * sin(phi_y))
1x = (1x * cos(phi_y)) + (1z * sin(phi_y))

Z-axe
End.1x = 1x' = (1x * cos(phi_z)) - (1y * sin(phi_z))
End.1y = 1y' = (1y * cos(phi_z)) + (1x * sin(phi_z))

- J'addition le vecteur sortie avec un autre vecteur appellee obj_repere[4]

// Camera_Management
- J'addition le vecteur sortie avec un autre vecteur appellee world_repere[4]
- J'addition le vecteur sortie avec un autre vecteur appellee cam_repere[4]
- Je passe ce vecteur à travers mes equation de rotations une nouvelles fois:
                          X-axe
1y = (1y * cos(phi_x)) - (1z * sin(phi_x))
1z = (1z * cos(phi_x)) + (1y * sin(phi_x))

Y-axe
End.1z = 1z' = (1z * cos(phi_y)) - (1x * sin(phi_y))
1x = (1x * cos(phi_y)) + (1z * sin(phi_y))

Z-axe
End.1x = 1x' = (1x * cos(phi_z)) - (1y * sin(phi_z))
End.1y = 1y' = (1y * cos(phi_z)) + (1x * sin(phi_z))


// Screen_Management
- J'affiche ce vecteur a l'ecran en le mettant dans un tableaux grace a l'equation:

x = (x * distance) / z
y = (y * distance) / z

screen[repere - (x * BPP + PITCH * y)] = color


Et pour gérée le déplacement de la camera, je change le vecteur cam_repere[] selon sur quell axe je veut me déplacer (malheureusement, ça march super, c'est a dire que je me retrouve dans la meme situation que l'auteur de ce topic :D).
0