3

I am new to Tween JS, and trying to make a simple animation of moving to the right using Tween.

Below is my code in the init function ( I am using Three JS):

var geometry = new THREE.CylinderGeometry( 200,200, 200, 4, 0 );
    var material =  new THREE.MeshPhongMaterial( { ambient: 0xf0f0f0, color: 0x006699, specular: 0x006699, shininess: 60, shading: THREE.FlatShading } );
    var mesh = new THREE.Mesh( geometry, material );
    mesh.position.x = 0;
    mesh.position.y = 0;
    mesh.position.z = 0;
    mesh.updateMatrix();
    mesh.matrixAutoUpdate = false;
    scene.add( mesh );

     var tween = new TWEEN.Tween( { x: 0, y: 0 } )
     .to( { x: 400 }, 2000 )
     .easing( TWEEN.Easing.Elastic.InOut )
     .onUpdate( function () {

      mesh.position.x =  Math.round( this.x );
       } ).start();

And my animate function:

requestAnimationFrame(animate);        
renderer.render(scene, camera);
TWEEN.update();
update();

The cube is there but the tween is not working. Is there something I miss?

1 Answer 1

4

The following is what I did to my scene.

  1. Create a separate render() function

  2. Put the TWEEN code into a function that you can call. You want to remove all TWEENs at beginning of this function. I am not entirely sure why, but I learned that from tutorial code.

  3. In TWEEN function, call render function on update.

  4. Call TWEEN.update in your animation through your non-stop animation loop. Note: render() will be called every time you update the TWEEN.

The following is the skeleton code. Check if that could apply to your program:

//TWEEN function
function moveObject( ) {
    TWEEN.removeAll();
    new TWEEN.Tween( { x: 0, y: 0 } )
    .to( { x: 400 }, 2000 )
    .easing( TWEEN.Easing.Elastic.InOut )
    .onUpdate( render )
    .start();   
};
//NON-STOP animation loop
function animation(){
    requestAnimationFrame(animate);  
    TWEEN.update();
}
//Render function
function render(){
    renderer.render(scene, camera);
}

Hope it helps.

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks! I figured out how to use the tween :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.