Three.js: Выбор области

Созданный на 27 апр. 2012  ·  5Комментарии  ·  Источник: mrdoob/three.js

Привет, во-первых, мне очень жаль, если я не здесь задаю общие вопросы?

Есть ли пример "выбора области" нескольких 3D-объектов? То есть перетаскивание рамки мышью и выделение всех объектов в ней?

Я играл с объектом THREE.Ray и его методами пересечения, но за исключением цикла и отслеживания каждой координаты XY, чтобы найти все пересечения, я немного потерялся.

Я искал в Интернете, через github и stack overflow, но никакой помощи не нашел.
Любая помощь очень ценится.

заранее спасибо
Julz

Question

Самый полезный комментарий

Я адаптировал пример выбора three.js к выделению области с помощью подпора, построенного на основе прямоугольника экрана. Щелкните и перетащите, чтобы выбрать. Это не кажется таким точным, как проецирование всех 3D-объектов на 2D-пространство экрана, а затем пересечение с прямоугольником экрана , но оно работает прилично, и я думаю, что это быстрее.

Актуальные вопросы при переполнении стека:
THREE.js Как определить пересечение двухмерного квадрата и трехмерного объекта
THREE.js Как выбрать все объекты в области

Все 5 Комментарий

Было бы лучше, если бы вы проследили свои объекты на сцене, а затем перебрали все координаты XY. В этом случае вы не сможете использовать THREE.Ray, и вам придется реализовать собственную логику, чтобы выяснить, находится ли объект внутри кадра. Я считаю, что такой подход значительно ускорит ваш код.

Хммм, это интересная проблема.

Думаю, прямоугольник на экране должен соответствовать какому-то поджаристому краю камеры. Если бы вы могли построить матрицу для этой усеченной вершины, то вы могли бы попытаться проделать ту же проверку, что и мы для отсечения усеченной вершины.

Да, в этом есть смысл.
Я не очень люблю 3D-координаты или сложные матрицы,
Если я определю THREE.Matrix4 путем передачи вершин прямоугольника (перетаскивание мышью) и ближних дальних точек методу Matrix4.makeFrustum.
Могу ли я затем создать THREE.Frustum, передав Matrix4 в метод Frustum.setFromMatrix?
Затем используйте метод Frustum.contains, чтобы определить, находится ли в нем объект?

Это похоже на то, что у него есть надежда на чертову работу?

Относятся ли координаты мыши к каким-либо координатам трехмерного мира? как в положении мыши относительно камеры около плоскости или что-то в этом роде?

Извините, если я просто новичок, мне действительно нужен ответ на этот вопрос.

Вам нужно спроецировать координаты мыши в трехмерный мир. Взгляните на этот пример:
http://mrdoob.github.com/three.js/examples/webgl_interactive_cubes.html

Я адаптировал пример выбора three.js к выделению области с помощью подпора, построенного на основе прямоугольника экрана. Щелкните и перетащите, чтобы выбрать. Это не кажется таким точным, как проецирование всех 3D-объектов на 2D-пространство экрана, а затем пересечение с прямоугольником экрана , но оно работает прилично, и я думаю, что это быстрее.

Актуальные вопросы при переполнении стека:
THREE.js Как определить пересечение двухмерного квадрата и трехмерного объекта
THREE.js Как выбрать все объекты в области

Была ли эта страница полезной?
0 / 5 - 0 рейтинги