Browse Source

SceneLoader: Implemented @WestLangley's light target position code as per #3596.

Mr.doob 11 years ago
parent
commit
1cb9e9c8d5
1 changed files with 4 additions and 25 deletions
  1. 4 25
      src/loaders/SceneLoader.js

+ 4 - 25
src/loaders/SceneLoader.js

@@ -363,25 +363,6 @@ THREE.SceneLoader.prototype = {
 
 					} else if (objJSON.type === "PointLight" || objJSON.type === "AmbientLight" || objJSON.type === "SpotLight" || objJSON.type === "HemisphereLight" || objJSON.type === "AreaLight") {
 
-						function rotate(x, y, z, vector3) {
-							var target = new THREE.Matrix4(
-							vector3[0], 0, 0, 0,
-							vector3[1], 0, 0, 0,
-							vector3[2], 0, 0, 0,
-							0		 , 0, 0, 0
-							);
-							var rotateX = new THREE.Matrix4();
-							var	rotateY = new THREE.Matrix4(),
-							var rotateZ = new THREE.Matrix4();
-							rotateX.makeRotationX(x);
-							rotateY.makeRotationY(y);
-							rotateZ.makeRotationZ(z);
-							var rotateM = new THREE.Matrix4();
-							rotateM.multiplyMatrices(rotateX, rotateY, rotateZ);
-							target.multiplyMatrices(rotateM, target);
-							return target;
-						}
-
 						var color = objJSON.color;
 						var intensity = objJSON.intensity;
 						var distance = objJSON.distance;
@@ -403,16 +384,14 @@ THREE.SceneLoader.prototype = {
 								light = new THREE.SpotLight( color, intensity, distance, 1 );
 								light.angle = objJSON.angle;
 								light.position.fromArray( position );
-								var target = rotate(rotation[0], rotation[1], rotation[2],
-													[position[0], position[1] - distance, position[2]]);
-								light.target.position.fromArray( target.elements );
+								light.target.set( position[ 0 ], position[ 1 ] - distance, position[ 2 ] );
+								light.target.applyEuler( new THREE.Euler( rotation[ 0 ], rotation[ 1 ], rotation[ 2 ], 'XYZ' ) );
 								break;
 
 							case 'HemisphereLight':
 								light = new THREE.DirectionalLight( color, intensity, distance );
-								var target = rotate(rotation[0], rotation[1], rotation[2],
-													[position[0], position[1] - distance, position[2]]);
-								light.target.position.fromArray( target.elements );
+								light.target.set( position[ 0 ], position[ 1 ] - distance, position[ 2 ] );
+								light.target.applyEuler( new THREE.Euler( rotation[ 0 ], rotation[ 1 ], rotation[ 2 ], 'XYZ' ) );
 								break;
 
 							case 'AreaLight':