У меня есть сценарий THREE.js, где появляется много элементов, и мне нужно определить, на какой объект нажимает пользователь.
То, что я сделал до сих пор, следующее. Камера не двигается слишком сильно - она только изменяет вертикальное положение на ограниченную величину, всегда глядя в ту же точку. Мой приблизительный метод:
- Я беру координаты, если клик относительно холста
- Я переводю их в горизонтальные и вертикальные координаты в сцене webGL с помощью простого масштабирования и добавлю координату Z, которая находится достаточно далеко.
- Я беру горизонтальный луч, начиная с точки выше, построенной с помощью THREE.Ray()
- Я использую ray.intersectObjects(), чтобы найти первый элемент вдоль луча.
Этот метод работает приблизительно, но он иногда находится в нескольких пикселах от фактической точки.
Есть ли более надежный метод для поиска объекта, на который щелкнул пользователь?