浏览代码

Merge pull request #16207 from takahirox/UpdateMMDPhysics

Remove redundant renormalization and add comment in MMDPhysics
Mr.doob 6 年之前
父节点
当前提交
12aeaace0a
共有 1 个文件被更改,包括 5 次插入1 次删除
  1. 5 1
      examples/js/animation/MMDPhysics.js

+ 5 - 1
examples/js/animation/MMDPhysics.js

@@ -1046,11 +1046,15 @@ THREE.MMDPhysics = ( function () {
 			thQ.set( q.x(), q.y(), q.z(), q.w() );
 			thQ.set( q.x(), q.y(), q.z(), q.w() );
 			thQ2.setFromRotationMatrix( this.bone.matrixWorld );
 			thQ2.setFromRotationMatrix( this.bone.matrixWorld );
 			thQ2.conjugate();
 			thQ2.conjugate();
-			thQ2.multiply( thQ ).normalize();
+			thQ2.multiply( thQ );
 
 
 			//this.bone.quaternion.multiply( thQ2 );
 			//this.bone.quaternion.multiply( thQ2 );
 
 
 			thQ3.setFromRotationMatrix( this.bone.matrix );
 			thQ3.setFromRotationMatrix( this.bone.matrix );
+
+			// Renormalizing quaternion here because repeatedly transforming
+			// quaternion continuously accumulates floating point error and
+			// can end up being overflow. See #15335
 			this.bone.quaternion.copy( thQ2.multiply( thQ3 ).normalize() );
 			this.bone.quaternion.copy( thQ2.multiply( thQ3 ).normalize() );
 
 
 			manager.freeThreeQuaternion( thQ );
 			manager.freeThreeQuaternion( thQ );