[Atelier Blue アトリエブルー]HomeプログラミングManaged DirectX3D>ライト(Light)

ライト(Light)

使い方の方は「入門」で宜しくお願いします。

プロパティ

名前 説明
色の設定
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で設定する事が出来ます。

平行光光源(LightType.Directional)

光源がすごく遠くにあるという仮定の下に使われるライトです。光は放射状ではなく平行になっています。

使われるプロパティは「色の設定」「Direction」「共通」です。

この光には限界値が無く、減衰もしません。

点光源(LightType.Point)

点光源は光が放射状に広がる光源です。

使われるプロパティは「色の設定」「Position」「共通」「Range」「減衰」です。

点光源は平行光光源より負荷が大きいです。たくさん使うと重くなってしまいます。

スポットライト(LightType.Spot)

スポットライトは点光源の方向限定版です。それと、照らす範囲の大きさを角度で指定しますが、「内部コーン」と「外部コーン」があります。外部コーンの外側は完全に光が届きません。反対に内部コーンの中では設定した減衰に完全に従います。そして外部コーンから内部コーンにかけての部分の所について光の変化が設定できるようになっています。

使用するプロパティは全部です。

スポットライトは、点光源よりもさらに負荷が高いです。

ライト全般

負荷

ライトはそれぞれのピクセルにおいて明るさを計算するため負荷が高いです。使いどころには注意し、多く使いすぎないようにしましょう。

スペキュラー光

スペキュラー光は明るさを設定するだけでは使うことが出来ません。使うためにはデバイスの設定をしなければなりません。

Device.RenderState.SpecularEnable

ここを「True」に設定する必要があります。

スペキュラー光は計算式から思うに負荷が高いため、設定項目が用意されているのだと思います。よく考えて利用しましょう。

減衰

点光源と、スポットライトでは光の減衰をさせることが出来ます。そのために使う設定は「Attenuation0~2」です。

光の減衰

「d」は距離です。そして、「A」が小さいほど光も弱くなります。この事から、「Attenuation1,2」を0にすることで、減衰しない光が作れることになります。

それと、「点光源は距離の2乗に比例して光が弱くなる」と書いているものがありますが、あくまで一般論であって、光の減衰はこのパラメーターによってのみ減衰します。もちろんこのパラメーターを設定することで、そのような光を作り出すことも可能です。それと、「Attenuation1,2」の値はかなり大きく作用します。光の効果を考えてしっかりと設定しましょう。

ライトの更新

ライトのパラメーターは設定しただけでは効果が反映されません。「Enabled」をTrueにするか「Update」メソッドを呼び出して更新する必要があります。


ページの一番上へ
前のページへ 一覧に戻る 次のページへ
初版2006-3-20
[Atelier Blue アトリエブルー]HomeプログラミングManaged DirectX3D>ライト(Light)