#0 

14-02-2007 08:34:26

benicourt
Membre
Lieu: Albi(81)
Date d'inscription: 31-01-2007
Messages: 45
Site web

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)


"Par ce qu'il est dans la nature même de l'homme, d'aller à l'encontre de la nature" (Robert C.W. Ettinger)

Hors ligne


#1 

14-02-2007 13:54:31

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

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 @+


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#2 

14-02-2007 14:04:22

benicourt
Membre
Lieu: Albi(81)
Date d'inscription: 31-01-2007
Messages: 45
Site web

Ok, merci ça me donne une bonne piste, je vais étudier tout cela.


"Par ce qu'il est dans la nature même de l'homme, d'aller à l'encontre de la nature" (Robert C.W. Ettinger)

Hors ligne


#3 

14-02-2007 16:54:07

Jerry Kan
Habitué
Date d'inscription: 21-11-2006
Messages: 265

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


#4 

14-02-2007 17:02:38

benicourt
Membre
Lieu: Albi(81)
Date d'inscription: 31-01-2007
Messages: 45
Site web

Héhé, Jerry "Sait" (blague pour anglophone) laisser un peu de Suspens ... C'est koi cette API ? c'est du spécial Irrlicht ?


"Par ce qu'il est dans la nature même de l'homme, d'aller à l'encontre de la nature" (Robert C.W. Ettinger)

Hors ligne


#5 

14-02-2007 17:05:58

Jerry Kan
Habitué
Date d'inscription: 21-11-2006
Messages: 265

oui smile 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


#6 

14-02-2007 17:15:31

benicourt
Membre
Lieu: Albi(81)
Date d'inscription: 31-01-2007
Messages: 45
Site web

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)


"Par ce qu'il est dans la nature même de l'homme, d'aller à l'encontre de la nature" (Robert C.W. Ettinger)

Hors ligne


#7 

14-02-2007 17:17:57

Jerry Kan
Habitué
Date d'inscription: 21-11-2006
Messages: 265

Code:

      //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 smile

Dernière modification par Jerry Kan (14-02-2007 17:18:25)

Hors ligne


#8 

14-02-2007 17:22:12

benicourt
Membre
Lieu: Albi(81)
Date d'inscription: 31-01-2007
Messages: 45
Site web

En tous cas, merci d'être entré dans le détail, ça fait vraiment plaisir !


"Par ce qu'il est dans la nature même de l'homme, d'aller à l'encontre de la nature" (Robert C.W. Ettinger)

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
34 invités en ligne
Aucun membre connecté
RSS Feed