diff --git a/src/extras/animation/MorphAnimation.js b/src/extras/animation/MorphAnimation.js index 683d9b3ef02a1c10c6dc9d721738cfed0d634fad..6c18bdab7615a6281091afc19b710f76734d330e 100644 --- a/src/extras/animation/MorphAnimation.js +++ b/src/extras/animation/MorphAnimation.js @@ -47,8 +47,8 @@ THREE.MorphAnimation.prototype = { this.currentTime = Math.min( this.currentTime, this.duration ); - var interpolation = this.duration / this.frames; - var frame = Math.floor( this.currentTime / interpolation ); + var frameTime = this.duration / this.frames; + var frame = Math.floor( this.currentTime / frameTime ); var influences = this.mesh.morphTargetInfluences; @@ -63,8 +63,10 @@ THREE.MorphAnimation.prototype = { } - influences[ frame ] = ( this.currentTime % interpolation ) / interpolation; - influences[ this.lastFrame ] = 1 - influences[ frame ]; + var mix = ( this.currentTime % frameTime ) / frameTime; + + influences[ frame ] = mix; + influences[ this.lastFrame ] = 1 - mix; } diff --git a/src/objects/MorphAnimMesh.js b/src/objects/MorphAnimMesh.js index d263cf91b4a19860bcad94183afc6f9f43f5ab22..6cd1f54f3edff1f728a5b76010d5de6ccbe74368 100644 --- a/src/objects/MorphAnimMesh.js +++ b/src/objects/MorphAnimMesh.js @@ -22,7 +22,7 @@ THREE.MorphAnimMesh = function ( geometry, material ) { this.direction = 1; this.directionBackwards = false; - this.setFrameRange( 0, this.geometry.morphTargets.length - 1 ); + this.setFrameRange( 0, geometry.morphTargets.length - 1 ); }; @@ -152,12 +152,13 @@ THREE.MorphAnimMesh.prototype.updateAnimation = function ( delta ) { var keyframe = this.startKeyframe + THREE.Math.clamp( Math.floor( this.time / frameTime ), 0, this.length - 1 ); - if ( keyframe !== this.currentKeyframe ) { + var influences = this.morphTargetInfluences; - this.morphTargetInfluences[ this.lastKeyframe ] = 0; - this.morphTargetInfluences[ this.currentKeyframe ] = 1; + if ( keyframe !== this.currentKeyframe ) { - this.morphTargetInfluences[ keyframe ] = 0; + influences[ this.lastKeyframe ] = 0; + influences[ this.currentKeyframe ] = 1; + influences[ keyframe ] = 0; this.lastKeyframe = this.currentKeyframe; this.currentKeyframe = keyframe; @@ -172,8 +173,8 @@ THREE.MorphAnimMesh.prototype.updateAnimation = function ( delta ) { } - this.morphTargetInfluences[ this.currentKeyframe ] = mix; - this.morphTargetInfluences[ this.lastKeyframe ] = 1 - mix; + influences[ this.currentKeyframe ] = mix; + influences[ this.lastKeyframe ] = 1 - mix; }; diff --git a/src/renderers/webgl/WebGLShadowMap.js b/src/renderers/webgl/WebGLShadowMap.js index 42acf20f8700fa3c7e2866fb0c1daa67f3f01695..781c6d118a2b3a2e90f8f6cf722a61941c5193cd 100644 --- a/src/renderers/webgl/WebGLShadowMap.js +++ b/src/renderers/webgl/WebGLShadowMap.js @@ -308,7 +308,6 @@ THREE.WebGLShadowMap = function ( _renderer, _lights, _objects ) { } - _renderer.setMaterialFaces( objectMaterial ); _renderer.renderBufferDirect( shadowCamera, _lights, fog, material, object ); }