three.js DirectionalLight

2023-02-16 17:42 更新

平行光是沿著特定方向發(fā)射的光。這種光的表現(xiàn)像是無限遠,從它發(fā)出的光線都是平行的。常常用平行光來模擬太陽光 的效果; 太陽足夠遠,因此我們可以認為太陽的位置是無限遠,所以我們認為從太陽發(fā)出的光線也都是平行的。

關于位置、目標和旋轉說明

Three.js 的平行光常見的困惑是設置旋轉沒有效果。這是因為 three.js 的平行光類似與其他引擎的"目標平行光"。

這意味著它的方向是從一個平行光的位置 position 到 target的位置。 (而不是一個只有旋轉分量的'自由平行光')。

這樣做的原因是為了讓光線投射陰影。shadow攝像機需要一個位置來計算陰影。

代碼示例

// White directional light at half intensity shining from the top.
const directionalLight = new THREE.DirectionalLight( 0xffffff, 0.5 );
scene.add( directionalLight );

例子

controls / fly

effects / parallaxbarrier

effects / stereo

geometry / extrude / splines

materials / bumpmap

構造器

DirectionalLight( color : Integer, intensity : Float )

color - (可選參數(shù)) 16進制表示光的顏色。 缺省值為 0xffffff (白色)。
intensity - (可選參數(shù)) 光照的強度。缺省值為1。

創(chuàng)建一個新的 DirectionalLight。

屬性

公共屬性請查看基類 Light。

.castShadow : Boolean

如果設置為 true 該平行光會產(chǎn)生動態(tài)陰影。 警告: 這樣做的代價比較高而且需要一直調(diào)整到陰影看起來正確. 查看 DirectionalLightShadow 了解詳細信息。該屬性默認為 false。

.isDirectionalLight : Boolean

只讀標志,用于檢查給定對象是否屬于 DirectionalLight 類型。

.position : Vector3

假如這個值設置等于 Object3D.DefaultUp (0, 1, 0),那么光線將會從上往下照射。

.shadow : DirectionalLightShadow

這個 DirectionalLightShadow 對象用來計算該平行光產(chǎn)生的陰影。

.target : Object3D

平行光的方向是從它的位置到目標位置。默認的目標位置為原點 (0,0,0)。注意: 對于目標的位置,要將其更改為除缺省值之外的任何位置,它必須被添加到 scene 場景中去。

scene.add( light.target );

這使得屬性target中的 matrixWorld 會每幀自動更新。

它也可以設置target為場景中的其他對象(任意擁有 position 屬性的對象), 示例如下:

const targetObject = new THREE.Object3D();
scene.add(targetObject);

light.target = targetObject;

完成上述操作后,平行光現(xiàn)在就可以追蹤到目標對像了。

方法

公共方法請查看基類 Light。

.copy ( source : DirectionalLight ) : this

復制 source 的值到這個平行光源對象。

源碼

src/lights/DirectionalLight.js


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號