parseDeformers method
Implementation
Map parseDeformers() {
Map skeletons = {};
Map morphTargets = {};
if ( fbxTree.Objects["Deformer"] != null ) {
var DeformerNodes = fbxTree.Objects["Deformer"];
for ( var nodeID in DeformerNodes.keys ) {
Map deformerNode = DeformerNodes[ nodeID ];
var relationships = connections[parseInt( nodeID )];
if ( deformerNode["attrType"] == 'Skin' ) {
var skeleton = this.parseSkeleton( relationships, DeformerNodes );
skeleton[ "ID" ] = nodeID;
if ( relationships["parents"].length > 1 ) print( 'THREE.FBXLoader: skeleton attached to more than one geometry is not supported.' );
skeleton["geometryID"] = relationships["parents"][ 0 ]["ID"];
skeletons[ nodeID ] = skeleton;
} else if ( deformerNode["attrType"] == 'BlendShape' ) {
Map<String, dynamic> morphTarget = {
"id": nodeID,
};
morphTarget["rawTargets"] = this.parseMorphTargets( relationships, DeformerNodes );
morphTarget["id"] = nodeID;
if ( relationships["parents"].length > 1 ) print( 'THREE.FBXLoader: morph target attached to more than one geometry is not supported.' );
morphTargets[ nodeID ] = morphTarget;
}
}
}
return {
"skeletons": skeletons,
"morphTargets": morphTargets,
};
}