##### Ninja Library - モデル・インテンシティー関数

# njCnkSetIntensityLightMode

インテンシティライトの種類の設定

### 書式

> `void njCnkSetIntensityLightMode( eLight, eMode )
> NJD_CNK_INTENSITY_LIGHT eLight
> NJD_CNK_INTENSITY_MODE eMode
> `

### 引数

> eLight | ライト番号
> eMode | ライト種類

### 戻り値

> なし

### 解説

> インテンシティライトの種類を設定します。

> ライト番号にはNJD_CNK_INTENSITY_LIGHT_0〜7が指定できます。 ライトの種類は以下の３つがあります。

> 定義 | 意味
> NJD_CNK_INTENSITY_MODE_DIR | 平行光源
> NJD_CNK_INTENSITY_MODE_POINT | 点光源
> NJD_CNK_INTENSITY_MODE_DIR_POINT | 平行点光源

### 用例

>     njCnkSetIntensityLightMode( NJD_CNK_INTENSITY_LIGHT_0, NJD_CNK_INTENSITY_MODE_DIR       );
>     njCnkSetIntensityLightMode( NJD_CNK_INTENSITY_LIGHT_1, NJD_CNK_INTENSITY_MODE_POINT     );
>     njCnkSetIntensityLightMode( NJD_CNK_INTENSITY_LIGHT_2, NJD_CNK_INTENSITY_MODE_DIR_POINT );

### 備考

> 平行点光源とはモデルの方向を向く平行光源です。

> ■ライトの計算

> ディフューズの合計値を初期化
> TotalDiff = 0.f

> スペキュラの合計値を初期化
> TotalSpec = 0.f

> (1)平行光源と平行点光源の場合
> i = Normal・Vector

> 頂点の法線と光源ベクトルとの内積／結果が負の場合は計算打ち切り

> TotalDiff += Diff * i
> Diffはディフューズ強度

> TotalSpec += Spec * i^Exp
> Specはスペキュラ強度、Expはエクスポーネント

> (2)点光源の場合
> i = Normal・Vector
> 頂点法線と光源から頂点へのベクトルとの内積／結果が負の場合は計算打ち切り／距離がファーレンジを超えている場合は打ち切り

> d = Diff * i

> Diffはディフューズ強度
> s = Spec * i^Exp
> Specはスペキュラ強度、Expはエクスポーネント

> 距離がニアレンジ内のときは次の減衰処理はスキップ
> d *= i * Near * Near / Range * Range
> s *= i * Near * Near / Range * Range
> 距離の２乗で割って減衰させた後にニアを掛ける

> TotalDiff += d
> TotalSpec += s

> 以上の計算を光源毎にやったあとに

> TotalDiff += OffsDiff

> OffsDiffはディフューズのオフセット値

> TotalSpec += OffsSpec

> OffsSpecはスペキュラのオフセット値

> 最終的な頂点カラーは以下のようになります。

> ディフューズカラー
> α = マテリアルのα
> Ｒ = DiffColor.R * TotalDiff
> Ｇ = DiffColor.G * TotalDiff
> Ｂ = DiffColor.B * TotalDiff

> スペキュラカラー
> Ｒ = SpecColor.R * TotalSpec
> Ｇ = SpecColor.G * TotalSpec
> Ｂ = SpecColor.B * TotalSpec

### 参照

> njCnkSetIntensityLightSwitch() | インテンシティライトのオンオフ
> njCnkSetIntensityLightVector() | インテンシティライトの平行光源のベクトルの設定
> njCnkSetIntensityLightPoint() | インテンシティライトの点光源、平行点光源の位置の設定
> njCnkSetIntensityLightExp() | インテンシティライトのエクスポーネントを設定します
> njCnkSetIntensityLightSet() | インテンシティライトの強度の設定
> njCnkSetIntensityLightRange() | インテンシティライトの点光源のレンジの設定
> njCnkSetIntensityLightDiffColor() | インテンシティライトのディフューズカラーを設定します。
> njCnkSetIntensityLightSpecColor() | インテンシティライトのスペキュラカラーを設定します。
> njCnkSetIntensityLightOffset() | インテンシティライトのオフセットを設定します。
> njCnkSetIntensityLightConst() | インテンシティライトのコンスト値を設定します。
> njCnkSetIntensityLightEnvRatio() | インテンシティライトの環境マップの比率の設定

njCnkSetIntensityLightMode

COPYRIGHT © SEGA ENTERPRISES, LTD., 1998-2000