Обнаружение нажатого объекта в THREE.js

У меня есть сцена THREE.js, в которой появляется много элементов, и мне нужно определить, на какой объект нажимает пользователь.

На данный момент я сделал следующее. Камера не сильно перемещается - она только изменяет вертикальное положение на ограниченную величину, всегда смотря в одну и ту же точку. Мой примерный метод таков:

  • Я беру координаты щелчка относительно холста
  • Я перевожу их в горизонтальные и вертикальные координаты в webGL-сцене с помощью простого масштабирования и добавляю координату Z, которая находится достаточно далеко.
  • Я беру горизонтальный луч, начинающийся из точки выше, построенный с помощью THREE.Ray()
  • Я использую ray.intersectObjects(), чтобы найти первый элемент вдоль луча.

Этот метод примерно работает, но иногда он находится в нескольких пикселях от реальной точки.

Есть ли более надежная техника для определения объекта, на который нажал пользователь?

25
задан gman 8 October 2013 в 21:45
поделиться

1 ответ

Проверяет пересечение мыши и любого куба в трехмерном пространстве и изменяет его цвет. Может быть, это поможет вам.

3
ответ дан 28 November 2019 в 21:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: