2009-08-19 7 views
0

Je veux calculer quel visage a été cliqué sur un cube. J'ai la souris en 3D vers le bas, et je peux dessiner des choses, en 3D, à la position de la souris.Obtenir le visage d'un cube

Tout ce que je dois faire maintenant est de calculer QUEL visage d'un cube est touché.

EG. J'ai une fonction, quand je passe la taille, la position et la position de la souris, elle renvoie le visage. Haut, bas, gauche, droite, avant, arrière.

Semble simple, mais je n'ai pas le plus brumeux.

Merci à tous, SilentC

Répondre

1

ne sais pas ce que l'API utilisez-vous, mais OpenGL a une API selection, qui fait cela pour vous

1

Il vous suffit de calculer un line plane intersection pour chaque face du cube avec la ligne définie par l'emplacement de la caméra et la position de la souris sur le plan de la vue. Jetez toutes les intersections qui sont dans le plan, mais pas sur la face du cube et choisissez le plus proche.

Vous pouvez également utiliser des intersections de triangles linéaires si vous représentez le cube en douze trinagles. Mais dans les deux cas, vous devez fournir beaucoup plus d'informations pour une réponse plus spécifique.

+0

Donc la ligne qui serait définie serait de la caméra à la souris, non? –

+0

En outre, je suppose que j'aurais compensé pour la rotation, non? –

+0

La ligne de la caméra ** à travers ** la souris à l'infini croise un ou plusieurs visages (généralement deux s'il n'y a qu'un seul cube). Ignorez les cas dégénérés tels que les arêtes, les sommets et toute autre face parallèle à la ligne. Il pourrait être utile d'éliminer les visages tournés vers l'arrière. L'utilisateur veut presque certainement le visage le plus proche, mais vous voudrez peut-être vous permettre de choisir parmi les visages afin que l'utilisateur puisse choisir un objet caché s'il le souhaite. – RBerteig

Questions connexes