Browse Source

use generateTransform for geometry transforms

Lewy Blue 7 years ago
parent
commit
ad44277f55
1 changed files with 7 additions and 27 deletions
  1. 7 27
      examples/js/loaders/FBXLoader.js

+ 7 - 27
examples/js/loaders/FBXLoader.js

@@ -814,8 +814,6 @@
 
 		}, null );
 
-		var preTransform = new THREE.Matrix4();
-
 		// TODO: if there is more than one model associated with the geometry, AND the models have
 		// different geometric transforms, then this will cause problems
 		// if ( modelNodes.length > 1 ) { }
@@ -823,35 +821,17 @@
 		// For now just assume one model and get the preRotations from that
 		var modelNode = modelNodes[ 0 ];
 
-		if ( 'GeometricRotation' in modelNode ) {
-
-			var eulerOrder = 'ZYX';
-
-			if ( 'RotationOrder' in modelNode ) {
-
-				eulerOrder = getEulerOrder( parseInt( modelNode.RotationOrder.value ) );
-
-			}
-
-			var array = modelNode.GeometricRotation.value.map( THREE.Math.degToRad );
-			array.push( eulerOrder );
-			preTransform.makeRotationFromEuler( new THREE.Euler().fromArray( array ) );
-
-		}
-
-		if ( 'GeometricTranslation' in modelNode ) {
-
-			preTransform.setPosition( new THREE.Vector3().fromArray( modelNode.GeometricTranslation.value ) );
-
-		}
+		var transformData = {};
 
-		if ( 'GeometricScaling' in modelNode ) {
+		if ( 'RotationOrder' in modelNode ) transformData.eulerOrder = modelNode.RotationOrder.value;
 
-			preTransform.scale( new THREE.Vector3().fromArray( modelNode.GeometricScaling.value ) );
+		if ( 'GeometricTranslation' in modelNode ) transformData.translation = modelNode.GeometricTranslation.value;
+		if ( 'GeometricRotation' in modelNode ) transformData.rotation = modelNode.GeometricRotation.value;
+		if ( 'GeometricScaling' in modelNode ) transformData.scale = modelNode.GeometricScaling.value;
 
-		}
+		var transform = generateTransform( transformData );
 
-		return genGeometry( FBXTree, geoNode, skeleton, morphTarget, preTransform );
+		return genGeometry( FBXTree, geoNode, skeleton, morphTarget, transform );
 
 	}