将精灵与 Raycaster 相交

nee*_*eeh 5 three.js

我想用three.js 实现一个3D 交互式地球仪,我想知道是否有办法将Sprites 原语与Raycaster 相交?

Lee*_*ski 3

如果您查看 RayCaster 的源代码,请访问

https://github.com/mrdoob/ Three.js/blob/master/src/core/Raycaster.js

看来 intersectObject 函数仅检查属于 THREE.Particle 或 THREE.Mesh 实例的对象,而不检查 THREE.Sprite 的实例。这可能是因为精灵可以设置为使用屏幕坐标,因此投射到 3D 场景中的光线在这种情况下没有意义,或者如果放置在场景中,因为精灵图像始终面向相机,则它不会它的行为就像标准的 3D 网格一样。

也许您可以将 PlaneGeometry 或非常薄的 CubeGeometry 附加到精灵的位置,将其旋转设置为相机的旋转,以便它始终像精灵一样平行于相机的视图平面,然后检查交叉点用网格代替?