在Three.js

时间:2018-03-14 17:03:48

标签: three.js

我试图将阴影相机旋转45度。我已设法使用以下代码旋转它附加的定向灯:

sunlight = new THREE.DirectionalLight(0xffffff, 1);
sunlight.position.x = -camera.position.x ;
sunlight.position.y = 300;
sunlight.position.z = camera.position.z ; //default; light shining from top

var vector = new THREE.Vector3;
vector.subVectors(scene.position, sunlight.position);
var q = new THREE.Quaternion();
q.setFromAxisAngle( vector.normalize(), Math.PI / 4 );
sunlight.applyQuaternion( q );

然而,如我预期的那样,阴影相机不会随着光线旋转。尝试使用相同的代码旋转阴影相机本身不起作用。如何围绕其中心点旋转正交相机?

在附图中,阴影相机可以看作橙色方块。光线是黑色正方形,可见旋转45度。我需要将相同的旋转应用于橙色方块,因此蓝色箭头指向西北方向。

enter image description here

提前致谢。

1 个答案:

答案 0 :(得分:0)

THREE.js中的定向灯不会像你期望的那样表现。有一个light.target Vector3参数,灯总是指向..所以改变灯光旋转不会真的做得太多。尝试改变light.target来瞄准光线。要影响阴影相机的滚动,您可以使用camera.rotation.order =" ZYX"设置其euler的顺序。如果这有帮助,请告诉我。

@Joe Morgan