-
java3d, mouseover box?
Bonsoir,
Je développe un logiciel utilisant java3d et je suis un peu débutant avec cette librairie.
J'aurais voulu savoir si on pouvait executer une fonction lorsque la souris passe au dessus d'un élément 3d (une box par exemple).
A priori a ce que j 'ai vu on peut effectuer des mouvements de translation ou bien de rotation.
Mon but serai de dessiner un élément lorsque la souris passe sur une box.
Est-ce faisable?
-
C'est tout a fait faisable. (meme si je ne sais pas comment avec Java3D)
mais il n'existe pas que java3D,
Pour ma part j'en ai essayé plusieurs (java3D,jpct,xith3D et jme)
Les plus performants sont xith3D et jme (Java Monkey Engine),
Jme est meme le plus performant!
-xith3D est interessant car il permet d'acceder directement au capacité de LWJGL.
-JME est différent, il offre une structure abstraite, en fait il utilise LWJGL pour le moment mais il est concu pour supporter n'importe quel autre (comme son exellence JOGL), Il est aussi tres complet, avec plein d'exemple qui marche(c'est important de le dire), plein de source, et des tutorials complet. Et il gere plein de format 3D (comme 3Dsmax ou maya), ainsi que plein de classe prete a l'emploi, eau, brume,ciel, bloom,...
hein? je suis hors sujet?... bon bon...
-
J'ai pensé ajouté les méthodes de MouseListener à la JInternal frame qui contient mes composants 3D.
De la, sur le click de la souris je récupère la position de celle-ci, et si elle correspond a la position d'un de mes composants 3D, j'execute une fonction...
Mais les coordonnées 2D et 3D sont bien différentes puisqu'il y a une dimension en plus..
Du coup...Comment faire :roll:
-
en theorie :
la ou tu clique avec la souris tu dois tracer une droite qui plonge dans la scene.
et trouve la premiere figure qui coupe cette droite.
Mais tu m'étonne, java3D doit avoir une classe pour gérer ca...
(JME le fait en tout cas)
-
le picking!
En OpenGL, on utilise la méthode du picking pour faire ça. C'est un peu ce que décrit eclesia. Mais si tu es débutant, c'est un peu délicat. Essaie de chercher des tutoriaux sous google.