TSXLightオブジェクトは、一個のライトの設定についての便宜を図ります
TSXLightGroupオブジェクトが内部で生成します。ユーザーが自分でCreateしないで下さい。
| 有効・無効 | Enabled |
| パラメータ | Params |
| 色 | SetupDiffuse |
| SetupSpecular | |
| SetupAmbient | |
| SetupColors | |
| 向き | SetupRanges |
| 光源の特性 | SetupDirectional |
| SetupPoint | |
| SetupSpot | |
| フレームとの連携 | FitFrame |
| その他 | BeginUpdate |
| EndUpdate |
Enabled : Boolean;
ライトの有効・無効を指定します。
デフォルトではFalseなので、必ず光源のうち一つ以上をTrueにするのを忘れないで下さい(^^;)
Params:D3DLIGHT7;
光源についてのパラメータが格納されています。
基本的に、このパラメータを操作すれば、光源の状態に関しては全て制御可能です。
このパラメータを操作した後、EndUpdateメソッドを呼べば、Direct3Dに捜査の結果を反映します。
procedure SetupDiffuse (_R,_G,_B:Single);
光源の拡散反射に対する色を設定します。
procedure SetupSpecular(_R,_G,_B:Single);
光源の鏡面反射に対する色を設定します。
procedure SetupAmbient (_R,_G,_B:Single);
環境光の色を設定します。
procedure SetupColors(difR,difG,difB, specR,specG,specB, ambR,ambG,ambB:Single);
上記3つの色をまとめて設定します。
difR, difG, difB で、光源の拡散反射に対する色
specR, specG, specBで、光源の鏡面反射に対する色
ambR, ambG, ambB で、環境光の色
を、それぞれ設定します。
procedure SetupRanges(range, att0,att1,att2:Single);
光の届く範囲についての設定を行います。
rangeを超える距離には光が届かなくなります。
att1, att2, att3 は、それぞれ減衰の仕方に関するパラメータです。詳しくはDirectX9 SDKをご覧下さい。
procedure SetupDirectional(dir:D3DVector);
光源を、平行光源にします。
dirで光源の向きを設定します。
procedure SetupPoint(pos:D3DVector);
光源を、点光源にします。
posで、光源の位置を設定します。
procedure SetupSpot(pos,dir:D3DVector; theta,phi,falloff:Single);
光源を、スポットライトにします。
posで光源の位置、dirで光源の向きを指定します。
また、thetaで光の強さが減衰し始める角度を、phiで光の強さが完全に無くなる角度をそれぞれラジアンで指定します。
falloffで、減衰具合に関する係数を指定します。1.0が基準値で、値が小さいほど「最初はゆっくり、だんだんきつめ」の変化をし、値が大きいほど「最初はきつめ、だんだんゆっくり」型の変化になります。詳しくはDirectX9 SDKのヘルプをどうぞ
procedure FitFrame(target:TSXFrame);
targetで示されるフレームの位置・向きに、ライトのパラメータを設定します。
procedure BeginUpdate;
Direct3Dに変更の結果を伝えなくなります。
一連のSetup〜メソッドを呼ぶ前に、このメソッドを実行し、その後EndUpdateメソッドを呼ぶことで、内部的なDirect3Dのメソッド呼び出しに伴うオーバーヘッドを低減します。
procedure EndUpdate;
ParamsプロパティとDirect3Dの設定を一致させます。
Paramsプロパティを操作した後には、必ず呼んでください。