InstancedBufferGeometry lookatcamera

时间:2018-10-24 17:41:27

标签: three.js

我正在使用Three.js创建一个螺旋星系,我沿着InstancedBufferGeometry向下绘制,以便可以以出色的性能渲染很多恒星。

就目前而言,我使用飞机作为对象,但我遇到的麻烦是,当我绕着银河系绕行时,这些飞机不会看着相机。

我尝试使用lookat函数,但是似乎不起作用。

有人知道如何获取InstancedBufferGeometry来看摄像机。

非常感谢。

Galaxy 7.1 million planes

Orbiting the galaxy, planes not looking at camera

1 个答案:

答案 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

您只需担心它们的位置,并且旋转将始终向摄像机“倾斜”,而无需手动计算旋转。