فهرست منبع

Modified scene loader to allow objects to specify matrix directly instead of only rotation, scale, and translation

Jeff Terrace 13 سال پیش
والد
کامیت
9c29a68b77
1فایلهای تغییر یافته به همراه26 افزوده شده و 12 حذف شده
  1. 26 12
      src/extras/loaders/SceneLoader.js

+ 26 - 12
src/extras/loaders/SceneLoader.js

@@ -159,6 +159,7 @@ THREE.SceneLoader.prototype.createScene = function ( json, callbackFinished, url
 						r = o.rotation;
 						q = o.quaternion;
 						s = o.scale;
+						m = o.matrix;
 
 						// turn off quaternions, for the moment
 
@@ -181,21 +182,34 @@ THREE.SceneLoader.prototype.createScene = function ( json, callbackFinished, url
 
 						object = new THREE.Mesh( geometry, material );
 						object.name = dd;
-						object.position.set( p[0], p[1], p[2] );
-
-						if ( q ) {
-
-							object.quaternion.set( q[0], q[1], q[2], q[3] );
-							object.useQuaternion = true;
-
+						
+						if ( m ) {
+							
+							object.matrixAutoUpdate = false;
+							object.matrix.set( m[0], m[1], m[2], m[3],
+											   m[4], m[5], m[6], m[7],
+											   m[8], m[9], m[10], m[11],
+											   m[12], m[13], m[14], m[15]);
+							
 						} else {
-
-							object.rotation.set( r[0], r[1], r[2] );
-
+							
+							object.position.set( p[0], p[1], p[2] );
+	
+							if ( q ) {
+	
+								object.quaternion.set( q[0], q[1], q[2], q[3] );
+								object.useQuaternion = true;
+	
+							} else {
+	
+								object.rotation.set( r[0], r[1], r[2] );
+	
+							}
+	
+							object.scale.set( s[0], s[1], s[2] );
+							
 						}
 
-						object.scale.set( s[0], s[1], s[2] );
-
 						object.visible = o.visible;
 						object.doubleSided = o.doubleSided;
 						object.castShadow = o.castShadow;