对于最后一次修订74!
function SPOT_CLASS(pointIntensity) {
ROOT.sunLight= new THREE.SpotLight(0x0000ff,pointIntensity,2000,Math.PI,1);
ROOT.sunLight.position.set(100, 200 , 0);
// HERE
ROOT.PILOT = new THREE.Object3D(0, 0, 0);
ROOT.sunLight.target = ROOT.PILOT;
ROOT.sunLight.castShadow = true;
ROOT.sunLight.shadow.bias = 1;
ROOT.sunLight.shadow.camera.far =5000;
ROOT.sunLight.shadow.camera.near = 800;
ROOT.sunLight.shadow.camera.fov = 70;
// SHADOW CAMERA HELPER
var shadowCameraHelper = new THREE.CameraHelper(
ROOT.sunLight.shadow.camera);
shadowCameraHelper.visible = true;
ROOT.sunLight.add(shadowCameraHelper);
// try other combination
scene.add(ROOT.sunLight);
scene.add(ROOT.PILOT);
}
请实例是这样的:
变种LIGHTS =新SPOT_CLASS(15);
尝试然后在控制台: LIGHTS.PILOT.position.x = 200;
使此对象>> LIGHTS.PILOT.position做在更新旋转或循环渲染...
ROOT.sunLight.target = LIGHTS.PILOT; 或者更好的 ROOT.sunLight.lookAt(LIGHTS.PILOT);
当你做'light.target = camera'时,这个方法可行,但是我不能让它在网格或物体上工作 – Paul