VortexFX
VortexFX

Reputation: 127

InstancedBufferGeometry lookatcamera

I'm using Three.js to create a spiral galaxy I've gone down the InstancedBufferGeometry so I can render lots of stars with great performance.

For now, I'm using a plane as my object, the trouble I have is that when I orbit around the galaxy these planes don't look at the camera.

I have tried using the lookat function however that doesn't seem to work.

Does anyone know how to get InstancedBufferGeometry to look at the camera.

Many thanks in advance.

Galaxy 7.1 million planes

Orbiting the galaxy, planes not looking at camera

Upvotes: 2

Views: 209

Answers (1)

M -
M -

Reputation: 28502

The lookAt method belongs to THREE.Object3D, and it makes the entire object rotate towards a point, not each of its geometry's instances. If you're using InstancedBufferGeometry, you could perform these calculations in the vertexShader, but can be computationally expensive, given the quantity of planes you're rendering.

If you're using InstancedBufferGeometry for planes only, I recommend you use THREE.Points instead, which is made to automatically generate planes that always look towards the camera, as demonstrated in these examples:

https://threejs.org/examples/?q=point#webgl_points_sprites

https://threejs.org/examples/?q=point#webgl_custom_attributes_points

All you'd need to worry about is their positions, and the rotations will always "billboard" towards the camera without the need of manually calculating rotations.

Upvotes: 3

Related Questions