在three.js中,定向燈的陰影計算範圍是基於從定向光源發出的邊界框定義的。因此,如果我想限制計算陰影的距離,我將限制邊界框的幾何形狀。舉例來說:three.js中定向燈的陰影範圍
var directionalLight = new THREE.DirectionalLight(0xffffff);
directionalLight.position.set(50, 50, 50);
directionalLight.intensity = 0.5;
directionalLight.castShadow = true;
directionalLight.shadowCameraLeft = -10;
directionalLight.shadowCameraRight = 10;
directionalLight.shadowCameraTop = 10;
directionalLight.shadowCameraBottom = -10;
shadowCamera變量可以調整到離光源FOV有多遠創建陰影。我希望這個邊界框跟隨用戶相機,以便將陰影渲染到距相機一定距離的地方。
由於邊界框的幾何圖形是基於光線相對於場景原點(或目標)的位置,所以不可能將邊界框移動到相機創建所需效果的位置。
我反而試圖用照相機移動光源,假定邊界幾何圖形相對於照相機的位置。這不起作用,因爲我似乎無法爲方向燈設置目標,它總是試圖指向原點,所以如果我改變了燈的位置,它本質上改變了它的方向。
例如下面什麼都不做:
directionalLight.target.position.set(100,100,100);
如果上面的工作,我在理論上移動方向燈位置和相對目標彼此以保持其角度不變,並可能達到我想要的,但它不起作用。
任何想法如何創建陰影範圍或爲什麼上述不起作用?
看看https://github.com/mrdoob/three.js/issues/5555#issuecomment-61390208解決您的問題。 – WestLangley
使用directionalLight.target = object確實可以按照問題5555中的建議工作。因此,我將不得不創建一個不可見的對象用作目標,並將它相對於相機移動以獲得所需的效果。感謝這裏和GitHub的頭像。 –