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,
};
}