Tôi có cảnh THREE.js nơi có rất nhiều phần tử xuất hiện và tôi cần phát hiện đối tượng nào người dùng đang nhấp vào.Phát hiện đối tượng được nhấp trong THREE.js
Điều tôi đã làm cho đến thời điểm này là như sau. Máy ảnh không di chuyển nhiều - nó chỉ thay đổi vị trí dọc theo một lượng giới hạn, luôn hướng về cùng một điểm. Phương pháp gần đúng của tôi là như sau:
- Tôi lấy tọa độ nếu bấm tương đối so với vải
- tôi dịch chúng thành toạ độ ngang và dọc trong cảnh WebGL bằng phương tiện của một rescaling đơn giản, và thêm một Z phối hợp đủ xa.
- Tôi lấy một tia ngang bắt đầu từ điểm trên, được xây dựng bởi THREE.Ray()
- Tôi sử dụng ray.intersectObjects() để tìm phần tử đầu tiên dọc theo tia.
Phương pháp này xấp xỉ, nhưng đôi khi chỉ cách điểm thực tế vài điểm ảnh.
Có kỹ thuật đáng tin cậy hơn để tìm ra đối tượng mà người dùng đã nhấp vào không?
Lề và đệm có thể khiến cho tọa độ của bạn bị lệch bit. Bạn có tài khoản cho nó? – Prusse
Hiện tại trong bản demo không có lề và phần đệm, nhưng kỹ thuật mà tôi mô tả vẫn chưa chính xác. – Andrea
Hãy xem [ví dụ này] (http://mrdoob.github.com/three.js/examples/canvas_interactive_cubes.html). –