💡
【three.js】ライトの種類まとめ
AmbientLight
シーン全てのジオメトリに全方位から均等に照明をあてる。色と強さを指定
全体的に明るくしたい時に使う。ただし影はできないので基本的に他のライトと併用する
const ambientLight = new THREE.AmbientLight(0xffffff, 0.5)
DirectionalLight
太陽光のようなもの。1方向から照らす
const directionalLight = new THREE.DirectionalLight(0xa09e5f, 0.5)
AmbientLightとの併用
HemisphereLight
上から照らす色と、下から照らす色、それぞれ指定できる
第一引数が上からの色、第二引数が下からの色、第三引数が強さ
const hemisphereLight = new THREE.HemisphereLight(0x507fff, 0xd0e040, 0.3)
AmbientLightとの併用
PointLight
電球のようなもの。光源は小さく、全方向を照らす
const pointLight = new THREE.PointLight(0xffffff, 0.5)
pointLight.position.set(2, 3, 4)
AmbientLightとの併用
RectAreaLight
光る板のようなイメージ。一定の方向を照らす
一引数は色、第二は強さ、第三はエリアライトの幅、第四はエリアライトの高さ
下から照らしてみる
const rectAreaLight = new THREE.RectAreaLight(0x507fff, 2, 3, 3)
rectAreaLight.position.set(0, -0.5, 0)
rectAreaLight.rotation.x = Math.PI * 0.5
AmbientLightとの併用
エリアライトは下から上に向かって照らしているので
下の板に光が当たっていないことが確認できる
SpotLight
名前の通りスポットライト
光源から広がるように前方を照らす
引数は、色、強さ、照らす距離、アングル(角度)、輪郭のボケ具合(0~1でデフォルトは0)、ライトの距離に沿ってライトが暗くなる量(?)
const spotLight = new THREE.SpotLight(0x78ff00, 0.5, 10, Math.PI * 0.1, 0.25, 1)
spotLight.position.set(0, 2, 3)
AmbientLightとの併用
注意
ライトが多いほど計算量が増え負荷になるので最小限にする
- 低コスト: AmbientLight, HemisphereLight
- 中コスト: DirectionalLight, PointLight
- 高コスト: RectAreaLight, SpotLight
3DモデルはBlender等でテクスチャにベイクしてしまう手もある◎
Discussion