使い方の方は「入門」で宜しくお願いします。
名前 | 型 | 説明 |
---|---|---|
色の設定 | ||
Ambient | Color | ライトが放射するアンビエント光(環境光)の色を取得又は設定します。 |
AmbientColor | ColorValue | ライトが放射するアンビエント光(環境光)の色を取得又は設定します。 |
Diffuse | Color | ライトが放射するディフューズ光の色を取得又は設定します。 |
DiffuseColor | ColorValue | ライトが放射するディフューズ光の色を取得又は設定します。 |
Specular | Color | ライトが放射するスペキュラ光の色を取得又は設定します。 |
SpecularColor | ColorValue | ライトが放射するスペキュラ光の色を取得又は設定します。 |
減衰 | ||
Attenuation0 | float | 光の強さの変化を調整するための変数。詳しくは後述 |
Attenuation1 | float | 光の強さの変化を調整するための変数。詳しくは後述 |
Attenuation2 | float | 光の強さの変化を調整するための変数。詳しくは後述 |
位置と方向 | ||
Direction | Vector3 | ワールド空間でライトが指す方向 |
Position | Vector3 | ワールド空間内での光源の位置 |
XDirection | Vector3 | ワールド空間でライトが指す方向。X軸値 |
YDirection | Vector3 | ワールド空間でライトが指す方向。Y軸値 |
ZDirection | Vector3 | ワールド空間でライトが指す方向。Z軸値 |
XPosition | Vector3 | ワールド空間内での光源の位置。X軸値 |
YPosition | Vector3 | ワールド空間内での光源の位置。Y軸値 |
ZPosition | Vector3 | ワールド空間内での光源の位置。Z軸値 |
ライトの限界設定 | ||
Falloff | float | スポットライトの内部コーンと外部コーンの外側との間における輝度の減少量 |
InnerConeAngle | float | スポットライトの内部コーンの角度。ラジアン単位 |
OuterConeAngle | float | スポットライトの外部コーンの角度。ラジアン単位 |
Range | float | 光源の有効距離 |
共通 | ||
Enabled | bool | ライトの有効無効を切り替える |
Type | LightType | 光源の種類 |
名前 | 説明 |
---|---|
FromLight | 既存のライトに基づいて新しいライトを作る |
Update | 現在のオブジェクトの設定を更新する |
ライトには三つの種類があり、それぞれ使うプロパティの値が違います。
ただし、光源の種類としては4つ目として環境光があります。これはDevice.RenderState.Ambientで設定する事が出来ます。
光源がすごく遠くにあるという仮定の下に使われるライトです。光は放射状ではなく平行になっています。
使われるプロパティは「色の設定」「Direction」「共通」です。
この光には限界値が無く、減衰もしません。
点光源は光が放射状に広がる光源です。
使われるプロパティは「色の設定」「Position」「共通」「Range」「減衰」です。
点光源は平行光光源より負荷が大きいです。たくさん使うと重くなってしまいます。
スポットライトは点光源の方向限定版です。それと、照らす範囲の大きさを角度で指定しますが、「内部コーン」と「外部コーン」があります。外部コーンの外側は完全に光が届きません。反対に内部コーンの中では設定した減衰に完全に従います。そして外部コーンから内部コーンにかけての部分の所について光の変化が設定できるようになっています。
使用するプロパティは全部です。
スポットライトは、点光源よりもさらに負荷が高いです。
ライトはそれぞれのピクセルにおいて明るさを計算するため負荷が高いです。使いどころには注意し、多く使いすぎないようにしましょう。
スペキュラー光は明るさを設定するだけでは使うことが出来ません。使うためにはデバイスの設定をしなければなりません。
Device.RenderState.SpecularEnable
ここを「True」に設定する必要があります。
スペキュラー光は計算式から思うに負荷が高いため、設定項目が用意されているのだと思います。よく考えて利用しましょう。
点光源と、スポットライトでは光の減衰をさせることが出来ます。そのために使う設定は「Attenuation0~2」です。
「d」は距離です。そして、「A」が小さいほど光も弱くなります。この事から、「Attenuation1,2」を0にすることで、減衰しない光が作れることになります。
それと、「点光源は距離の2乗に比例して光が弱くなる」と書いているものがありますが、あくまで一般論であって、光の減衰はこのパラメーターによってのみ減衰します。もちろんこのパラメーターを設定することで、そのような光を作り出すことも可能です。それと、「Attenuation1,2」の値はかなり大きく作用します。光の効果を考えてしっかりと設定しましょう。
ライトのパラメーターは設定しただけでは効果が反映されません。「Enabled」をTrueにするか「Update」メソッドを呼び出して更新する必要があります。