我想实现一个带有three.js的3D交互式地球仪,我想知道是否有一种方法可以将Sprites原语与Raycaster相交?
答案 0 :(得分: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附加到精灵的位置,将其旋转设置为摄像机的旋转,使其始终与精灵一样平行于摄像机的视图平面,然后改为检查与网格的交叉点?