Artimus
Artimus

Reputation: 138

three.js rotate facing object

I did vector stuff for already 13 years now, but am still struggling with the way three.js handles things. So what I like to do is best described with a fan that always faces the camera and, of course, rotates.

This is how I achieved this in another language:

// Create a vector facing in camera direction.
temp.x = 0;
temp.y = 1;
temp.z = 0;
vec_rotate(temp, camera.pan);

// Apply vector direction to scene object.
vec_to_angle(entity.pan, temp);

// Rotate scene object's angle around another angle / imaginary line from camera to object.
ang_rotate(
    entity.pan, 
    vector(random(360), 0, 0)
);

Thus, after applying entity.lookAt(camera.position) I am missing an angle rotation based on the current angle (last function call of the example).

Upvotes: 2

Views: 2324

Answers (1)

WestLangley
WestLangley

Reputation: 104833

One way to model a fan is like so:

var fan = new THREE.Mesh( ... );

var pivot = new THREE.Object3D();
scene.add( pivot );
pivot.lookAt( camera.position );

pivot.add( fan );

Then in the animation loop (assuming the fan mesh by default faces the positive-z axis),

fan.rotation.z += 0.01;

three.js r.68

Upvotes: 3

Related Questions