ソースを参照

Update MMDAnimationHelper

Takahiro 7 年 前
コミット
5dc082cc2e
1 ファイル変更14 行追加8 行削除
  1. 14 8
      examples/js/animation/MMDAnimationHelper.js

+ 14 - 8
examples/js/animation/MMDAnimationHelper.js

@@ -275,7 +275,7 @@ THREE.MMDAnimationHelper = ( function () {
 		 */
 		createGrantSolver: function ( mesh ) {
 
-			return new GrantSolver( mesh );
+			return new GrantSolver( mesh, mesh.geometry.grants );
 
 		},
 
@@ -531,6 +531,7 @@ THREE.MMDAnimationHelper = ( function () {
 
 				if ( ikSolver && this.enabled.ik ) {
 
+					mesh.updateMatrixWorld( true );
 					ikSolver.update();
 
 				}
@@ -618,7 +619,7 @@ THREE.MMDAnimationHelper = ( function () {
 
 			}
 
-			return new THREE.CCDIKSolver( mesh );
+			return new THREE.CCDIKSolver( mesh, mesh.geometry.iks );
 
 		},
 
@@ -959,10 +960,12 @@ THREE.MMDAnimationHelper = ( function () {
 
 	/**
 	 * @param {THREE.SkinnedMesh} mesh
+	 * @param {Array<Object>} grants
 	 */
-	function GrantSolver( mesh ) {
+	function GrantSolver( mesh, grants ) {
 
 		this.mesh = mesh;
+		this.grants = grants || [];
 
 	}
 
@@ -979,11 +982,14 @@ THREE.MMDAnimationHelper = ( function () {
 
 			return function () {
 
-				for ( var i = 0, il = this.mesh.geometry.grants.length; i < il; i ++ ) {
+				var bones = this.mesh.skeleton.bones;
+				var grants = this.grants;
 
-					var grant = this.mesh.geometry.grants[ i ];
-					var bone = this.mesh.skeleton.bones[ grant.index ];
-					var parentBone = this.mesh.skeleton.bones[ grant.parentIndex ];
+				for ( var i = 0, il = grants.length; i < il; i ++ ) {
+
+					var grant = grants[ i ];
+					var bone = bones[ grant.index ];
+					var parentBone = bones[ grant.parentIndex ];
 
 					if ( grant.isLocal ) {
 
@@ -1016,7 +1022,7 @@ THREE.MMDAnimationHelper = ( function () {
 
 				}
 
-				this;
+				return this;
 
 			};