JOGL camera a la souris

Fermé
Hip7 - 10 avril 2015 à 11:09
 Utilisateur anonyme - 11 avril 2015 à 13:20
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

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 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
11 avril 2015 à 12:32
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
11 avril 2015 à 12:44
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 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
11 avril 2015 à 13:04
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 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024
Modifié par shaynox le 11/04/2015 à 13:21
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