فهرست منبع

ColladaLoader2: Refactoring animations

Mugen87 8 سال پیش
والد
کامیت
19f9abee8c
1فایلهای تغییر یافته به همراه8 افزوده شده و 10 حذف شده
  1. 8 10
      examples/js/loaders/ColladaLoader2.js

+ 8 - 10
examples/js/loaders/ColladaLoader2.js

@@ -373,6 +373,8 @@ THREE.ColladaLoader.prototype = {
 		function buildAnimationChannel( channel, inputSource, outputSource, interpolationSource ) {
 
 			var node = library.nodes[ channel.id ];
+			var object3D = getNode( node.id );
+
 			var transform = node.transforms[ channel.sid ];
 			var defaultMatrix = node.matrix.clone().transpose();
 
@@ -432,10 +434,8 @@ THREE.ColladaLoader.prototype = {
 
 			var keyframes = prepareAnimationData( data, defaultMatrix );
 
-			if ( node.type !== 'JOINT' ) console.warn( 'THREE.ColladaLoader: Animation data for invalid node with ID "%s" found. The loader only supports animation of bones (skeletal animation).', node.id );
-
 			var animation = {
-				name: '.skeleton.bones[' + node.sid + ']',
+				name: object3D.uuid,
 				keyframes: keyframes
 			}
 
@@ -2243,7 +2243,7 @@ THREE.ColladaLoader.prototype = {
 
 		}
 
-		function getSkeleton( skeletons, joints, skinnedMesh ) {
+		function getSkeleton( skeletons, joints ) {
 
 			var boneData = [];
 			var sortedBoneData = [];
@@ -2258,10 +2258,6 @@ THREE.ColladaLoader.prototype = {
 				var skeleton = skeletons[ i ];
 				var root = getNode( skeleton );
 
-				// bone hierarchy is a child of the skinned mesh
-
-				skinnedMesh.add( root );
-
 				// setup bone data for a single bone hierarchy
 
 				buildBoneHierarchy( root, joints, boneData );
@@ -2403,7 +2399,7 @@ THREE.ColladaLoader.prototype = {
 				var skeletons = instance.skeletons;
 				var joints = controller.skin.joints;
 
-				var skeleton = getSkeleton( skeletons, joints, object );
+				var skeleton = getSkeleton( skeletons, joints );
 
 				object.bind( skeleton, controller.skin.bindMatrix );
 				object.normalizeSkinWeights();
@@ -2558,7 +2554,9 @@ THREE.ColladaLoader.prototype = {
 
 			for ( var i = 0; i < children.length; i ++ ) {
 
-				group.add( buildNode( children[ i ] ) );
+				var child = children[ i ];
+
+				group.add( getNode( child.id ) );
 
 			}