J'ai une caméra pointée sur une scène et l'utilisateur regarde par cette caméra. Je veux sélectionner un objet à la souris. Pour cela, je pense au rayCasting entre la position de la caméra et ... et puis quoi ?
Je connais deux choses en fait : la position de ma souris (X,Y) à l'écran, et la position de ma caméra. Cela doit être suffisant. Si je vois ma caméra comme une pyramide, j'ai la position qui correspond au sommet et ma souris, un point placé sur la base carrée de ma pyramide. Tout ce qui est FOV et truc much, au sujet des caméras, je maitrise pas du tout, pourtant j'ai l'intuition que ça va servir ici...
1) Comme réccupérer ce point (x,y,z) correspondant à la position de ma souris (x,y) sur la base de ma pyramide ?
2) Comment on balance un rayon avec Irrlicht et calcule t-on le point d'impact (gestion des collisions ?) avec le premier objet passant par là
3) Est-ce la meilleure méthode ?
4) Est-ce la méthode à utiliser pour savoir s'il faut rendre transparents des éléments de décor qui passent entre un personnage et la caméra ?
Par avance, merci.
Dernière modification par benicourt (14-02-2007 10:49:24)
Hors ligne
Si tu regardes la démo collision fourni avec le sdk y'a un exemple à l'intérieur du code qui utilise un pointage vers les triangles par rapport à la camera.Je sais pas si c'est ça que tu veux faire ? Mais à parament ça permettrai de récupérer les triangles du mesh pointé à l'aide d'une ligne virtuelle.(ligne 223 à 237 du code source)
Sinon dans le même code, y'a carément une méthode de récupération d'un SceneNode par rapport à la camera, mais je n'en connais pas la précision exacte.(ligne 250 à 261)
Voilou @+
Hors ligne
Ok, merci ça me donne une bonne piste, je vais étudier tout cela.
Hors ligne
pour la souris, faut pas faire comme le montre la démo, dans la démo des collisions, ca cree une droite devant la camera et ca trouve les intersection
mais ya une super api pour la souris, qui s'occupe completement de récuperer ce qui se trouve pointée par la souris sous l'écran
Hors ligne
Héhé, Jerry "Sait" (blague pour anglophone) laisser un peu de Suspens ... C'est koi cette API ? c'est du spécial Irrlicht ?
Hors ligne
oui je me souviens plus du nom de la fonction, mais c'est du irrlicht
tu fait un peu comme dans l'exemple, mais au lieu de récuperer l'objet "collidé" par la droite crée un peu artisanalement, ca récupere un objet (un pointeur sur le scene node plus exactement) qui se trouve exactement sous la souris
j'essai de remettre la main sur mon code et je copie colle
Hors ligne
Ah ok, ça simplifie bien les choses en effet, merci.
Oui , je viens de voir The scene Collision Manager provides methods for performing collision tests and picking on scene nodes.
Picking, c'est bien ça que je recherche. Thanks.
getSceneNodeFromCameraBB : Returns the scene node nearest to the camera, which collides with the ray
Dernière modification par benicourt (14-02-2007 17:17:04)
Hors ligne
//picking de ce qui est sous la souris selectedSceneNode = scenemgr->getSceneCollisionManager()-> getSceneNodeFromScreenCoordinatesBB( device->getCursorControl()->getPosition() , 0,false);
edit : je vois que tu as trouvé tout seul
Dernière modification par Jerry Kan (14-02-2007 17:18:25)
Hors ligne
En tous cas, merci d'être entré dans le détail, ça fait vraiment plaisir !
Hors ligne