From dc91443e8cfc3908c55c8ad0988564ae62820822 Mon Sep 17 00:00:00 2001 From: Michael Blix Date: Tue, 5 Jul 2016 17:27:56 -0700 Subject: [PATCH] Framerate independent animating for WebVR samples (#9292) --- examples/webvr_cubes.html | 18 +++++++++++------- examples/webvr_rollercoaster.html | 8 ++++++-- examples/webvr_vive.html | 6 +++++- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/examples/webvr_cubes.html b/examples/webvr_cubes.html index 2af86ae6c1..02c89070bc 100644 --- a/examples/webvr_cubes.html +++ b/examples/webvr_cubes.html @@ -35,6 +35,8 @@ // + var clock = new THREE.Clock(); + var container; var camera, scene, raycaster, renderer; var effect, controls; @@ -177,6 +179,8 @@ function render() { + var delta = clock.getDelta() * 60; + if ( isMouseDown === true ) { var cube = room.children[ 0 ]; @@ -184,9 +188,9 @@ cube.position.set( 0, 0, - 0.75 ); cube.position.applyQuaternion( camera.quaternion ); - cube.userData.velocity.x = ( Math.random() - 0.5 ) * 0.02; - cube.userData.velocity.y = ( Math.random() - 0.5 ) * 0.02; - cube.userData.velocity.z = ( Math.random() * 0.01 - 0.05 ); + cube.userData.velocity.x = ( Math.random() - 0.5 ) * 0.02 * delta; + cube.userData.velocity.y = ( Math.random() - 0.5 ) * 0.02 * delta; + cube.userData.velocity.z = ( Math.random() * 0.01 - 0.05 ) * delta; cube.userData.velocity.applyQuaternion( camera.quaternion ); room.add( cube ); @@ -224,7 +228,7 @@ var cube = room.children[ i ]; - cube.userData.velocity.multiplyScalar( 0.999 ); + cube.userData.velocity.multiplyScalar( 1 - ( 0.001 * delta ) ); cube.position.add( cube.userData.velocity ); @@ -249,9 +253,9 @@ } - cube.rotation.x += cube.userData.velocity.x * 2; - cube.rotation.y += cube.userData.velocity.y * 2; - cube.rotation.z += cube.userData.velocity.z * 2; + cube.rotation.x += cube.userData.velocity.x * 2 * delta; + cube.rotation.y += cube.userData.velocity.y * 2 * delta; + cube.rotation.z += cube.userData.velocity.z * 2 * delta; } diff --git a/examples/webvr_rollercoaster.html b/examples/webvr_rollercoaster.html index b291f1600f..d7dfa0c13a 100644 --- a/examples/webvr_rollercoaster.html +++ b/examples/webvr_rollercoaster.html @@ -204,10 +204,14 @@ var velocity = 0; var progress = 0; + var clock = new THREE.Clock(); + function animate( time ) { effect.requestAnimationFrame( animate ); + var delta = clock.getDelta() * 60; + for ( var i = 0; i < funfairs.length; i ++ ) { funfairs[ i ].rotation.y = time * 0.0002; @@ -216,7 +220,7 @@ // - progress += velocity; + progress += velocity * delta; progress = progress % 1; position.copy( curve.getPointAt( progress ) ); @@ -226,7 +230,7 @@ tangent.copy( curve.getTangentAt( progress ) ); - velocity -= tangent.y * 0.0000015; + velocity -= tangent.y * 0.0000015 * delta; velocity = Math.max( velocity, 0.00004 ); train.lookAt( lookAt.copy( position ).sub( tangent ) ); diff --git a/examples/webvr_vive.html b/examples/webvr_vive.html index c374852537..aa89b93235 100755 --- a/examples/webvr_vive.html +++ b/examples/webvr_vive.html @@ -38,6 +38,8 @@ // + var clock = new THREE.Clock(); + var container; var camera, scene, renderer; var effect, controls; @@ -226,6 +228,8 @@ function render() { + var delta = clock.getDelta() * 60; + controls.update(); for ( var i = 0; i < room.children.length; i ++ ) { @@ -257,7 +261,7 @@ } - cube.rotation.x += 0.01; + cube.rotation.x += 0.01 * delta; } -- GitLab