examples/FBXLoader.js
function ( relationships, deformerNodes ) {

			var rawMorphTargets = [];

			for ( var i = 0; i < relationships.children.length; i ++ ) {

				if ( i === 8 ) {

					console.warn( 'FBXLoader: maximum of 8 morph targets supported. Ignoring additional targets.' );

					break;

				}

				var child = relationships.children[ i ];

				var morphTargetNode = deformerNodes[ child.ID ];

				var rawMorphTarget = {

					name: morphTargetNode.attrName,
					initialWeight: morphTargetNode.DeformPercent,
					id: morphTargetNode.id,
					fullWeights: morphTargetNode.FullWeights.a

				};

				if ( morphTargetNode.attrType !== 'BlendShapeChannel' ) return;

				var targetRelationships = connections.get( parseInt( child.ID ) );

				targetRelationships.children.forEach( function ( child ) {

					if ( child.relationship === undefined ) rawMorphTarget.geoID = child.ID;

				} );

				rawMorphTargets.push( rawMorphTarget );

			}

			return rawMorphTargets;

		}
function ( relationships, deformerNodes ) {

			var rawMorphTargets = [];

			for ( var i = 0; i < relationships.children.length; i ++ ) {

				if ( i === 8 ) {

					console.warn( 'FBXLoader: maximum of 8 morph targets supported. Ignoring additional targets.' );

					break;

				}

				var child = relationships.children[ i ];

				var morphTargetNode = deformerNodes[ child.ID ];

				var rawMorphTarget = {

					name: morphTargetNode.attrName,
					initialWeight: morphTargetNode.DeformPercent,
					id: morphTargetNode.id,
					fullWeights: morphTargetNode.FullWeights.a

				};

				if ( morphTargetNode.attrType !== 'BlendShapeChannel' ) return;

				var targetRelationships = connections.get( parseInt( child.ID ) );

				targetRelationships.children.forEach( function ( child ) {

					if ( child.relationship === undefined ) rawMorphTarget.geoID = child.ID;

				} );

				rawMorphTargets.push( rawMorphTarget );

			}

			return rawMorphTargets;

		}
function ( relationships , deformerNodes ) { var rawMorphTargets = [ ] ; for ( var i = 0 ; i < relationships . children . length ; i ++ ) { if ( i === 8 ) { console . warn ( 'FBXLoader: maximum of 8 morph targets supported. Ignoring additional targets.' ) ; break ; } var child = relationships . children [ i ] ; var morphTargetNode = deformerNodes [ child . ID ] ; var rawMorphTarget = { name : morphTargetNode . attrName , initialWeight : morphTargetNode . DeformPercent , id : morphTargetNode . id , fullWeights : morphTargetNode . FullWeights . a } ; if ( morphTargetNode . attrType !== 'BlendShapeChannel' ) return ; var targetRelationships = connections . get ( parseInt ( child . ID ) ) ; targetRelationships . children . forEach ( function ( child ) { if ( child . relationship === undefined ) rawMorphTarget . geoID = child . ID ; } ) ; rawMorphTargets . push ( rawMorphTarget ) ; } return rawMorphTargets ; }
The top level morph deformer node has type "BlendShape" and sub nodes have type "BlendShapeChannel"
The top level morph deformer node has type BlendShape and sub nodes have type BlendShapeChannel