Three.js中有很多各式各樣的光源,不同的光源可以產(chǎn)生不同的光照效果蘑秽。這篇文章主要介紹他們的區(qū)別淆院,以及各自的應(yīng)用場(chǎng)景薄风。
目錄:
- AmbientLight (環(huán)境光)
- PointLight (點(diǎn)光源)
- SpotLight (聚光燈光源)
- DirectionalLight (平行光)
- HemisphereLight (半球光)
- AreaLight (面光源)
- LensFlare (鏡頭眩光)
這不是一種光源,但是通過(guò)LensFlare 可以為場(chǎng)景中的光源添加眩光效果竹观。
1.AmbientLight
基礎(chǔ)光源镐捧,顏色會(huì)添加到整個(gè)場(chǎng)景和所有對(duì)象的當(dāng)前顏色上潜索。不能作為場(chǎng)景中的唯一光源。一般作為輔助使用懂酱,目的是弱化陰影或者添加一些顏色竹习。
2.PointLight
空間中的一點(diǎn),朝所有的方向發(fā)射光線列牺。就像夜空中的照明彈整陌。點(diǎn)光源不產(chǎn)生陰影。
點(diǎn)光源的屬性:
color:顏色
intensity: 光照強(qiáng)度瞎领,默認(rèn)為1
distance:距離泌辫。決定光線可以照射多遠(yuǎn)。光線的亮度不會(huì)隨著距離的增加而遞減九默。
position:位置
visible:是否可見(jiàn)震放。true,光源打開(kāi)驼修,false,光源關(guān)閉
3.SpotLight
聚光的錐形效果殿遂,類(lèi)似臺(tái)燈、天花板的吊燈或者手電筒乙各∧福可以產(chǎn)生陰影。
4.DirectinalLight
也叫無(wú)限光觅丰。這種光源發(fā)出的光線是平行的饵溅,例如太陽(yáng)光。
場(chǎng)景中對(duì)象接收到的都是相同光強(qiáng)的光妇萄。這種光只用direction蜕企,color,intensity屬性計(jì)算顏色和陰影冠句。
與聚光燈光源一樣轻掩,也可以設(shè)置幾個(gè)屬性來(lái)控制光照強(qiáng)度和投影的方法,屬性基本相同懦底。如position,target,intensity,distance,castShadow,onlyShadow,shadowCameraNear.....
5.特殊光源
HemisphereLight 半球光光源
用以創(chuàng)建更貼近自然的光照效果唇牧。例如室外環(huán)境,并不是所有的光照都來(lái)自上方聚唐,很多來(lái)自空氣散射丐重,地面散射等等。這種光源就是為了這種情形創(chuàng)建的杆查。
var hemiLight = new THREE.HemisphereLight(0x0000ff, 0x00ff00 , 0.6)
hemiLight.position.set(0,500,0);
scene.add(hemiLight);
groundColor:從地面發(fā)出的光的顏色扮惦。
Color:從天空發(fā)出的光的顏色。
intensity:光線照射強(qiáng)度亲桦。
AreaLight 平面光光源
即光源為矩形崖蜜。AreaLight不在Three.js標(biāo)準(zhǔn)庫(kù)中浊仆。因此需要額外引用文件。并且應(yīng)該使用WebGL延遲渲染器(WebGLDeferredRenderer對(duì)象)豫领,而不是WebGLRenderer抡柿。
LensFlare 鏡頭眩光
通過(guò)實(shí)例化THREE.LensFlare對(duì)象來(lái)創(chuàng)建鏡頭眩光效果。