parseMeshGeometry method
dynamic
parseMeshGeometry(
- dynamic relationships,
- dynamic geoNode,
- dynamic deformers
Implementation
parseMeshGeometry( relationships, geoNode, deformers ) {
var skeletons = deformers["skeletons"];
var morphTargets = [];
List modelNodes = relationships["parents"].map( ( parent ) {
return fbxTree.Objects["Model"][ parent["ID"] ];
} ).toList();
// don't create geometry if it is not associated with any models
if ( modelNodes.length == 0 ) return;
var skeleton;
for(var child in relationships["children"]) {
if ( skeletons[ child["ID"] ] != null ) {
skeleton = skeletons[ child["ID"] ];
}
}
relationships["children"].forEach( ( child ) {
if ( deformers["morphTargets"][ child["ID"] ] != null ) {
morphTargets.add( deformers["morphTargets"][ child["ID"] ] );
}
} );
// Assume one model and get the preRotation from that
// if there is more than one model associated with the geometry this may cause problems
Map modelNode = modelNodes[ 0 ];
var transformData = {};
if ( modelNode['RotationOrder'] != null ) transformData["eulerOrder"] = getEulerOrder( modelNode["RotationOrder"]["value"] );
if ( modelNode['InheritType'] != null ) transformData["inheritType"] = parseInt( modelNode["InheritType"]["value"] );
if ( modelNode['GeometricTranslation'] != null ) transformData["translation"] = modelNode["GeometricTranslation"]["value"];
if ( modelNode['GeometricRotation'] != null ) transformData["rotation"] = modelNode["GeometricRotation"]["value"];
if ( modelNode['GeometricScaling'] != null ) transformData["scale"] = modelNode["GeometricScaling"]["value"];
var transform = generateTransform( transformData );
return this.genGeometry( geoNode, skeleton, morphTargets, transform );
}