3d 将灯光连接到相机时的Three.js DirectionalLightHelper
当我的平行光连接到相机时,我正在尝试使用DirectionalLightHelper。我将灯光连接到相机,以便在使用轨迹球控件时模拟场景旋转3d 将灯光连接到相机时的Three.js DirectionalLightHelper,3d,camera,three.js,light,3d,Camera,Three.js,Light,当我的平行光连接到相机时,我正在尝试使用DirectionalLightHelper。我将灯光连接到相机,以便在使用轨迹球控件时模拟场景旋转 var directionalLight = new THREE.DirectionalLight( 0xffffff, 1.5 ); directionalLight.position.set( 100, 100, 0 ); camera.add( directionalLight ); directionalLightHelper = new
var directionalLight = new THREE.DirectionalLight( 0xffffff, 1.5 );
directionalLight.position.set( 100, 100, 0 );
camera.add( directionalLight );
directionalLightHelper = new THREE.DirectionalLightHelper(directionalLight, 50);
camera.add( directionalLightHelper);
然而,这并没有给我预期的结果。如果我使用轨迹球控件移动相机一点,我最终会“找到”辅助对象渲染的灯光平面和目标线,但它们不在正确的位置。我希望平面的中心是0,0,0,面对光源,直线从100100,0到0,0,0。我是否误解了这里的某些内容,或者在使用灯光连接到摄影机的辅助对象时,我还需要做些什么?只需将灯光辅助对象添加到场景中,而不是添加到摄影机中。确保灯光跟随摄影机坐标,不是世界级的。我在将方向灯连接到相机时也遇到了这个问题。我没有将directionalLightHelper附加到摄影机,而是将其附加到场景
scene.add(directionalLightHelper);
然后,我必须将以下内容添加到渲染循环中,以便在灯光改变位置时正确更新辅助对象
directionalLight.updateMatrixWorld();
directionalLightHelper.position.setFromMatrixPosition(directionalLight.matrixWorld);
directionalLightHelper.updateMatrix();
directionalLightHelper.update();
编辑: 断开帮助器的代码笔
工作助手的代码笔这对我来说还是不行。光平面现在要大得多,但仍然漂浮在某处,似乎是随机的。我发现的唯一一件事似乎把所有事情都放在了正确的位置,就是在DirectionalLightHelper.js中注释掉以下行:this.matrix=light.matrixWorld;不知道为什么会这样?可能是一个评论。