three.js SpotLight

2023-02-16 17:42 更新

光線從一個點沿一個方向射出,隨著光線照射的變遠,光線圓錐體的尺寸也逐漸增大。

該光源可以投射陰影。

代碼示例

// white spotlight shining from the side, modulated by a texture, casting a shadow

const spotLight = new THREE.SpotLight( 0xffffff );
spotLight.position.set( 100, 1000, 100 );
spotLight.map = new THREE.TextureLoader().load( url );

spotLight.castShadow = true;

spotLight.shadow.mapSize.width = 1024;
spotLight.shadow.mapSize.height = 1024;

spotLight.shadow.camera.near = 500;
spotLight.shadow.camera.far = 4000;
spotLight.shadow.camera.fov = 30;

scene.add( spotLight );

例子

lights / spotlight

lights / spotlights

構造器(Constructor)

SpotLight( color : Integer, intensity : Float, distance : Float, angle : Radians, penumbra : Float, decay : Float )

color - (可選參數(shù)) 十六進制光照顏色。 缺省值 0xffffff (白色)。
intensity - (可選參數(shù)) 光照強度。 缺省值 1。
distance - 從光源發(fā)出光的最大距離,其強度根據(jù)光源的距離線性衰減。
angle - 光線散射角度,最大為Math.PI/2。
penumbra - 聚光錐的半影衰減百分比。在0和1之間的值。默認為0。
decay - 沿著光照距離的衰減量。

創(chuàng)建一個新的聚光燈。

屬性(Properties)

公共屬性請查看基類Light。

.angle : Float

從聚光燈的位置以弧度表示聚光燈的最大范圍。應該不超過 Math.PI/2。默認值為 Math.PI/3。

.castShadow : Boolean

此屬性設置為 true 聚光燈將投射陰影。警告: 這樣做的代價比較高而且需要一直調整到陰影看起來正確。 查看 SpotLightShadow 了解詳細信息。 默認值為 false

.decay : Float

燈光沿燈光距離變暗的量。默認值為 2。在物理正確渲染的上下文中,不應更改默認值。

.distance : Float

如果非零,那么光強度將會從最大值當前燈光位置處按照距離線性衰減到0。 缺省值為 0.0。

.isSpotLight : Boolean

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

.penumbra : Float

聚光錐的半影衰減百分比。在0和1之間的值。 默認值 — 0.0。

.position : Vector3

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

.power : Float

光功率在 physically correct 模式中, 表示以"流明(光通量單位)"為單位的光功率。 缺省值 - 4Math.PI。

該值與 intensity 直接關聯(lián)

power = intensity * 4π

修改該值也會導致光強度的改變。

.shadow : SpotLightShadow

SpotLightShadow用與計算此光照的陰影。

.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)在就可以追蹤到目標對像了。

.map : Texture

用于調制光顏色的紋理。聚光燈顏色與該紋理的 RGB 值混合,其比率對應于其 alpha 值。使用像素值 (0, 0, 0, 1-cookie_value) 再現(xiàn)類似 cookie 的掩蔽效果。警告:如果 castShadow : SpotLight 為 false,則 map : SpotLight 被禁用。

方法(Methods)

公共方法請查看基類 Light。

.copy ( source : SpotLight ) : this

將所有屬性的值從源 source 復制到此聚光燈光源對象。

源碼

src/lights/SpotLight.js


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號