three.js (照明)

ライトの種類
1. アンビエント ライト (AmbientLight)
● アンビエント ライトは、シーン内のすべてのオブジェクトを均一に照らします。
● アンビエント ライトには方向がないため、影を落とすために使用することはできません。
2. 平行光(DirectionalLight)
●平行光とは、特定の方向に沿って放射される光のことです。この光はあたかも無限に遠くにあるかのように振る舞い、そこから発せられる光線はすべて平行です。平行光は太陽光の効果をシミュレートするためによく使用されますが、太陽は無限に遠いと考えられるほど遠くにあるため、太陽から発せられる光線も平行であると考えられます。
●平行光は影を落とすことができます
3. 点光源(PointLight)
●一点から全方向に放射される光源です。
● 一般的な例は、電球が発する光をシミュレートすることです。
●影を作ることができる光源です。
4. スポットライト(SpotLight)
●一方向に点から光を放射し、遠ざかるにつれて光円錐の大きさが徐々に大きくなります。
●影を落とすことができるライト
の公開プロパティとメソッド
Constructor
Light( color : Integer, Intensity : Float )
● color - (オプションのパラメータ) ライトの色の 16 進数表現。デフォルト値は 0xffffff (白) です。
● 強度 - (オプションのパラメータ) 光の強度。デフォルト値は 1 です。
新しい光源を作成します。これは直接呼び出されないことに注意してください (代わりに、派生クラスの 1 つを使用します)。


Attribute.color
: Color
●光源の色。構築中に渡されなかった場合、新しいカラーが作成され、デフォルトで白に設定されます。

.intensity : Float
●光の強度、またはエネルギー。物理的に正しいモードでは、色と強度の積がカンデラ単位の光度に分解されます。デフォルト - 1.0

isLight : Boolean
● 指定されたオブジェクトのタイプが Light であるかどうかを確認する読み取り専用フラグ。
Method.copy
(source : Light ): this
●ソースから現在の光源オブジェクトに色と強度の値をコピーします。

.toJSON ( meta : Object ) : Object
ライトデータを JSON 形式で返します。
● メタ -- オブジェクトのマテリアル、テクスチャ、画像などのメタデータを含むオブジェクト。ライト オブジェクトを three.js JSON オブジェクト/シーン形式 (three.js JSON オブジェクト/シーン形式) に変換します。


AmbientLight (AmbientLight)
コンストラクター
AmbientLight( color : Integer, Intensity : Float )
●color - (パラメーターはオプション) 色の rgb 値。デフォルト値は 0xffffff です。
● 強度 - (パラメータはオプション) 光の強度。デフォルト値は 1 です。

const light = new THREE.AmbientLight( 0x404040 ); // 创建一个环境光
scene.add( light );//添加到场景中去


Attribute.castShadow
: Boolean
●このパラメータはオブジェクト構築時に未定義に設定されます。環境光が影を落とすことができないためです。

.isAmbientLight : Boolean
● 指定されたオブジェクトがアンビエント ライト タイプであるかどうかを確認するための読み取り専用フラグ。
平行光(DirectionalLight)
コンストラクター
DirectionalLight( color : Integer, Intensity : Float )
●color - (オプションパラメータ) ライトの色を 16 進数で表します。デフォルトは 0xffffff (白) です。
● 強度 - (オプションのパラメータ) 光の強度。デフォルト値は 1 です。

// 半强度的白色定向光从顶部闪耀。
const directionalLight = new THREE.DirectionalLight( 0xffffff, 0.5 );
scene.add( directionalLight );


Property.castShadow
: Boolean
●trueに設定すると、平行光により動的な影が生成されます。警告: これにはコストがかかり、シャドウが正しく見えるまで継続的に微調整する必要があります。このプロパティのデフォルトは false です。

.isDirectionalLight : Boolean
指定されたオブジェクトのタイプが「指向性ライト」であるかどうかを確認するための読み取り専用フラグ。

.position : Vector3
●ライトの位置
●この値を Object3D.DEFAULT_UP (0, 1, 0) に設定すると、ライトは上から下に光ります。

.shadow : DirectionalLightShadow
●この DirectionalLightShadow オブジェクトは、平行光によって生成される影を計算するために使用されます。

.target : Object3D
●指向性ライトの方向は、その位置からターゲット位置への方向です。デフォルトのターゲット位置は原点 (0,0,0) です。
● 注: ターゲットの位置をデフォルト以外に変更するには、シーンにターゲットを追加する必要があります。

scene.add( light.target );


● これにより、属性ターゲットのmatrixWorldがフレームごとに自動的に更新されます。
●ターゲットをシーン内の他のオブジェクト (位置プロパティを持つ任意のオブジェクト) に設定することもできます。例は次のとおりです。

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


上記の操作を完了すると、指向性ライトがターゲット オブジェクトを追跡できるようになります。
Method.copy
( source : DirectionalLight ) : this
●source の値をこの指向性光源オブジェクトにコピーします。
PointLight (PointLight)
コンストラクター
PointLight( color : Integer, 強度 : Float, distance : Number, Decay : Float )
●color - (オプションのパラメーター)) 16 進数のライトの色。デフォルト値は 0xffffff (白) です。
● 強度 - (オプションのパラメータ) 光の強度。デフォルト値は 1 です。
● 距離 - 光源から光強度が 0 になる位置までの距離。0 に設定すると、ライトは決して消えません (距離は無限大)。デフォルト値は 0 です。
●decay - 光の距離に沿った減衰の量。デフォルト値は 2 です。

const light = new THREE.PointLight( 0xff0000, 1, 100 );//创建一个点光源
light.position.set( 50, 50, 50 );//设置点光源的初始位置
scene.add( light );//添加到场景中去


Property.castShadow
: Boolean
●リアルライトに設定すると、動的に影を落とします。
● 注: これは高価であり、影を正しく表示するには微調整が必​​要です。
● デフォルト値は false です。

.decay : Float
レイの距離に沿ってレイがフェードする量。デフォルト値は 2 です。
● 物理的に正しいレンダリングという観点からは、デフォルトを変更すべきではありません。
. distance : Float
●ゼロ以外の場合、光の強度は距離に応じて現在の最大ライト位置から 0 まで直線的に減衰します。デフォルト値は 0.0 です。

.power : Float
●光パワー
●物理正しいモードでは光パワーを「ルーメン(光束単位)」の単位で表示します。デフォルト - 4Math.PI。
●この値は、強度
パワー = 強度 * 4πに直接関係します
。 ●この値を変更すると、光の強度も変化します。

.shadow : PointLightShadow
●PointLightShadow は、このライトの影を計算するために使用されます。
●このオブジェクトのカメラは、fov 90 度、アスペクト 1、近距離 0、遠距離 500 の PerspectiveCamera として設定されています。
Method.copy
(source : PointLight ) : this
●ソースからすべてのプロパティ値をこのポイント ライト オブジェクトにコピーします。
Spotlight (スポットライト)
コンストラクター
SpotLight( color : Integer, 強度 : Float, distance : Float, angle : Radians, 半影 : Float, Decay : Float ) ●
color - (オプションのパラメーター) 16 進数のライトの色。デフォルト値は 0xffffff (白) です。
● 強度 - (オプションのパラメータ) 光の強度。デフォルト値は 1 です。
● 距離 - 光を放射する光源からの最大距離。その強度は、光源からの距離に応じて線形に減衰します。
● angle - 光散乱の角度、Math.PI/2 まで。
● 半影 - スポット コーンの半影減衰率。0 から 1 までの値。デフォルトは 0 です。
●decay - 光の距離に沿った減衰の量。

//白色聚光灯从侧面照射,由纹理调制,投射阴影

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 );//把灯光添加到场景中


Attribute.angle
: Float
●スポットライトの最大範囲をスポットライトの位置からのラジアンで表します。最大値は Math.PI/2 を超えません。デフォルトは Math.PI/3 です。

.castShadow : Boolean
●このプロパティを true に設定すると、スポットライトが影を落とします。
● デフォルト値は false です。

.decay : Float
● レイの距離に沿ってレイがフェードする量。デフォルト値は 2 です。
● 物理的に正しいレンダリングという観点からは、デフォルトを変更すべきではありません。

. distance : Float
●ゼロ以外の場合、光の強度は距離に応じて現在の最大ライト位置から 0 まで直線的に減衰します。デフォルト値は 0.0 です。

.isSpotLight : Boolean
● 指定されたオブジェクトのタイプがスポットライトかどうかを確認する読み取り専用フラグ。

.penumbra : フロート
スポット コーンの半影減衰率。0 から 1 までの値。デフォルト値 - 0.0。

.position : Vector3
●光源の位置
●この値を Object3D.DEFAULT_UP (0, 1, 0) に設定すると、上から下に光が当たります。

.power : Float
●光パワー
●物理正しいモードでは光パワーを「ルーメン(光束単位)」で表示します。デフォルト - 4Math.PI。
●この値は強度
パワー = 強度 * 4πに直接関係します。
● この値を変更すると、光の強度も変わります。

.shadow : SpotLightShadow
●SpotLightShadow はこのライトの影を計算するために使用されます。

.target : Object3D
●スポットライトの方向はスポットライトの位置からターゲット位置への方向で、デフォルトのターゲット位置は原点(0,0,0)です。
●注意: ターゲットの位置をデフォルト以外に変更するには、シーンにターゲットを追加する必要があります。
scene.add( light.target );
● これにより、属性 target の matrixWorld がフレームごとに自動的に更新されます。
●ターゲットをシーン内の他のオブジェクト (位置プロパティを持つ任意のオブジェクト) に設定することもできます。例は次のとおりです。

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

light.target = targetObject


上記の操作が完了すると、スポットライトはターゲット オブジェクトを追跡できるようになります。

.map : Texture
●光の色を変調するために使用されるテクスチャです。,
● スポットライト カラーは、このテクスチャの RGB 値とそのアルファ値に対応する比率で混合されます。ピクセル値(0, 0, 0, 1-cookie_value)を使用してクッキーのようなマスキング効果を再現します。
● 注: マップ: Castshadow: Spotlight が false の場合、スポットライトは無効になります。
Method.copy
(source : SpotLight ) : this
● すべてのプロパティの値をソース ソースからこのスポットライト光源オブジェクトにコピーします。

 

おすすめ

転載: blog.csdn.net/w418856/article/details/130859208