three.js DirectionalLight

2023-02-16 17:42 更新

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

關(guān)于位置、目標(biāo)和旋轉(zhuǎn)說明

Three.js 的平行光常見的困惑是設(shè)置旋轉(zhuǎn)沒有效果。這是因?yàn)?three.js 的平行光類似與其他引擎的"目標(biāo)平行光"。

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

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

代碼示例

// 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

構(gòu)造器

DirectionalLight( color : Integer, intensity : Float )

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

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

屬性

公共屬性請(qǐng)查看基類 Light。

.castShadow : Boolean

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

.isDirectionalLight : Boolean

只讀標(biāo)志,用于檢查給定對(duì)象是否屬于 DirectionalLight 類型。

.position : Vector3

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

.shadow : DirectionalLightShadow

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

.target : Object3D

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

scene.add( light.target );

這使得屬性target中的 matrixWorld 會(huì)每幀自動(dòng)更新。

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

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

light.target = targetObject;

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

方法

公共方法請(qǐng)查看基類 Light。

.copy ( source : DirectionalLight ) : this

復(fù)制 source 的值到這個(gè)平行光源對(duì)象。

源碼

src/lights/DirectionalLight.js


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)