Browse Source

FBXLoader added support for LookAtProperty

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

+ 42 - 5
examples/js/loaders/FBXLoader.js

@@ -1379,11 +1379,9 @@
 
 
 					case 'Camera':
 					case 'Camera':
 						/* ***********
 						/* ***********
-						* Supported light types:
+						* Supported camera types:
 						* PerspectiveCamera
 						* PerspectiveCamera
 						* OrthographicCamera
 						* OrthographicCamera
-						*
-						* TODO: Support targets via camera.lookAt
 						************** */
 						************** */
 						var cameraAttribute;
 						var cameraAttribute;
 
 
@@ -1477,8 +1475,6 @@
 						* DirectionalLight
 						* DirectionalLight
 						* PointLight
 						* PointLight
 						* SpotLight
 						* SpotLight
-						*
-						* TODO: Support DirectionalLight and SpotLight targets
 						************** */
 						************** */
 
 
 						var lightAttribute;
 						var lightAttribute;
@@ -1755,6 +1751,47 @@
 
 
 			}
 			}
 
 
+			if ( 'LookAtProperty' in node.properties ) {
+
+				var conns = connections.get( model.FBX_ID );
+
+				for ( var childrenIndex = 0, childrenLength = conns.children.length; childrenIndex < childrenLength; ++ childrenIndex ) {
+
+					var child = conns.children[ childrenIndex ];
+
+					if ( child.relationship === 'LookAtProperty' || child.relationship === ' "LookAtProperty' ) {
+
+						var lookAtTarget = FBXTree.Objects.subNodes.Model[ child.ID ];
+
+						if ( 'Lcl_Translation' in lookAtTarget.properties ) {
+
+							var pos = lookAtTarget.properties.Lcl_Translation.value.split( ',' ).map( function ( val ) {
+
+								return parseFloat( val );
+
+							} );
+
+							// DirectionalLight, SpotLight
+							if ( model.target !== undefined ) {
+
+								model.target.position.set( pos[ 0 ], pos[ 1 ], pos[ 2 ] );
+								sceneGraph.add( model.target );
+
+
+							} else { // Cameras and other Object3Ds
+
+								model.lookAt( pos[ 0 ], pos[ 1 ], pos[ 2 ] );
+
+							}
+
+						}
+
+					}
+
+				}
+
+			}
+
 			var conns = connections.get( model.FBX_ID );
 			var conns = connections.get( model.FBX_ID );
 			for ( var parentIndex = 0; parentIndex < conns.parents.length; parentIndex ++ ) {
 			for ( var parentIndex = 0; parentIndex < conns.parents.length; parentIndex ++ ) {