我正在使用Three.js创建一个螺旋星系,我沿着InstancedBufferGeometry向下绘制,以便可以以出色的性能渲染很多恒星。
就目前而言,我使用飞机作为对象,但我遇到的麻烦是,当我绕着银河系绕行时,这些飞机不会看着相机。
我尝试使用lookat函数,但是似乎不起作用。
有人知道如何获取InstancedBufferGeometry来看摄像机。
非常感谢。
答案 0 :(得分:3)
lookAt
方法属于THREE.Object3D,它使 entire 对象朝一个点旋转,而不是朝其每个几何实例旋转。如果您使用的是InstancedBufferGeometry
,则可以在vertexShader中执行这些计算,但是鉴于要渲染的平面数量,计算量可能会很大。
如果仅将InstancedBufferGeometry
用于飞机,建议您改用THREE.Points,它可以自动生成始终朝着相机的飞机,如以下示例所示:>
https://threejs.org/examples/?q=point#webgl_points_sprites
https://threejs.org/examples/?q=point#webgl_custom_attributes_points
您只需担心它们的位置,并且旋转将始终向摄像机“倾斜”,而无需手动计算旋转。