Привет, во-первых, мне очень жаль, если я не здесь задаю общие вопросы?
Есть ли пример "выбора области" нескольких 3D-объектов? То есть перетаскивание рамки мышью и выделение всех объектов в ней?
Я играл с объектом THREE.Ray и его методами пересечения, но за исключением цикла и отслеживания каждой координаты XY, чтобы найти все пересечения, я немного потерялся.
Я искал в Интернете, через github и stack overflow, но никакой помощи не нашел.
Любая помощь очень ценится.
заранее спасибо
Julz
Было бы лучше, если бы вы проследили свои объекты на сцене, а затем перебрали все координаты 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 Как выбрать все объекты в области
Самый полезный комментарий
Я адаптировал пример выбора three.js к выделению области с помощью подпора, построенного на основе прямоугольника экрана. Щелкните и перетащите, чтобы выбрать. Это не кажется таким точным, как проецирование всех 3D-объектов на 2D-пространство экрана, а затем пересечение с прямоугольником экрана , но оно работает прилично, и я думаю, что это быстрее.
Актуальные вопросы при переполнении стека:
THREE.js Как определить пересечение двухмерного квадрата и трехмерного объекта
THREE.js Как выбрать все объекты в области