Pages: 1
Bonjour,
J'ai créé un programme qui affiche tout un tas de ISceneNode, et j'aimerai savoir lequel est survolé. Pour cela, j'utilise ce code (où Node est un ISceneNode*) :
Cependant, ce code fait appel à la fonction getSceneNodeFromScreenCoordinatesBB. Or, il se trouve que mes ISceneNode ont des formes quelque peu particulières, et que donc l'utilisation des Bounding Box dans la détection des collisions avec la souris n'est pas terrible.
J'aimerai savoir s'il existe une fonction permettant de ne pas passer par ces Bouding Box, et, si oui, comment l'utiliser.
Merci d'avance,
TheCamel
Hors ligne
Détermine si ton rayon traverse un TRIANGLE du mesh de ton node, si oui alors tu sais qu'elle node tu touche
Mais dans un premier temps utilise tout de même les bouding box pour éviter de tester l'ensemble des triangles de l'ensemble de tes nodes
Hors ligne
Bonjour,
Merci beaucoup pour cette réponse très rapide.
Peux-tu m'expliquer comment utiliser le rayon ? (quelles fonctions pour obtenir le rayon en lui-même puis pour détecter quel triangle a été touché)
Encore merci,
TheCamel
Hors ligne
Est il y pas une autres fonctions du même type ?
Je ne sais pas quoi te répondre, je n'est jamais utiliser se genre de fonctions.....
Hors ligne
C'est bon j'ai trouvé dans la doc. Mais j'ai une caméra fixe et j'aimerai faire commencer le ray au niveau de la souris.
Vous sauriez comment trouver les coordonnées 3D de la souris (le Y serait une valeur fixe, 7 en l’occurrence, il me faut donc trouver les coordonnées de la projection de la souris (2D) sur le plan d'équation y=7) ?
Hors ligne
regarde du coté du SceneCollisionManager, une instruction comme 'getRayFromScreenCoordinates' devrait correspondre à tes attentes .
Hors ligne
Merci beaucoup, ça fonctionne nickel.
Hors ligne
Pages: 1