Three.js: Cueillette de zone

Créé le 27 avr. 2012  ·  5Commentaires  ·  Source: mrdoob/three.js

Salut, premièrement, je suis vraiment désolé si ce n'est pas là que je suis censé poser des questions générales?

Existe-t-il un exemple de "sélection de zone" de plusieurs objets 3D? C'est faire glisser un cadre avec la souris et sélectionner tous les objets qu'il contient?

J'ai joué avec l'objet THREE.Ray et ses méthodes intersect (s) mais à court de bouclage et de traçage de chaque coord XY pour trouver toutes les intersections, je suis un peu perdu.

J'ai regardé partout sur le Web et à travers github et le débordement de pile, mais je n'ai trouvé aucune aide.
Toute aide grandement appréciée.

Merci d'avance
Julz

Question

Commentaire le plus utile

Tous les 5 commentaires

Il serait préférable pour vous de suivre vos objets sur scène, puis de parcourir toutes les coordonnées XY. Dans ce cas, vous ne pourrez pas utiliser THREE.Ray et vous devrez implémenter une logique personnalisée pour déterminer si un objet est à l'intérieur du cadre. Je pense que cette approche accélérera considérablement votre code.

Hmmm, c'est un problème intéressant.

Je pense que le rectangle sur l'écran devrait correspondre à un sous-cadre de la caméra. Si vous pouviez construire une matrice pour ce frustum, vous pourriez essayer de faire la même vérification que nous le faisons pour l'abattage de frustum.

Oui, cela a du sens.
Je ne suis pas beaucoup pour les coordonnées 3D ou les matrices complexes tho,
Si je définis un THREE.Matrix4 en passant des sommets rectangulaires (glissement de la souris) et des points presque éloignés vers la méthode Matrix4.makeFrustum.
Puis-je créer un THREE.Frustum en passant le Matrix4 dans la méthode Frustum.setFromMatrix?
Utilisez ensuite la méthode Frustum.contains pour détecter si un objet s'y trouve?

Cela ressemble-t-il à un espoir de travail?

Les coordonnées de la souris se rapportent-elles à des coordonnées du monde 3D? comme dans la position de la souris par rapport aux caméras près du plan ou quelque chose comme ça?

Désolé si je suis juste un n00b, j'ai vraiment besoin d'une réponse à cela.

Vous devez projeter les coordonnées de la souris dans le monde 3D. Jetez un œil à cet exemple:
http://mrdoob.github.com/three.js/examples/webgl_interactive_cubes.html

Cette page vous a été utile?
0 / 5 - 0 notes