void njCreateLight( *ptr, lsrc ) NJS_LIGHT *ptr Int lsrc
*ptr | ライトのポインタ |
lsrc | 光源の種類 |
NJD_DIR_LIGHT|NJD_SIMPLE_LIGHT(ベーシックモデル) のみ、0〜180度で計算されます。
ライトの種類(lsrc)は以下のとおりです。
●ベーシックモデル:njDrawObject関数、njFastDrawObject() 関数類が対応(njFastDrawObject関数類は輝度のみ対応)
単一ライトモデル
値 | 意味 |
NJD_AMBIENT | 環境光:すべての面に等しく照らされます。 |
NJD_DIR_LIGHT | 平行光源:距離によらず、njSetLightDirection関数で指定された光線の方向、もしくは、njRotateLightX関数等のマトリックス演算後に回転された方向に照らされます。この光源はまた、ライトフラグNJD_SIMPLE_LIGHTを追加できます。 |
NJD_POINT_LIGHT | 点光源:njSetLightLocation関数によって指定された点、もしくは、njTranslateLight関数等のマトリックス演算後に移動された点より放射状に照射されます。この光源は、ライトフラグNJD_SIMPLE_LIGHT、NJD_BLOCK_LIGHTを追加できます。 |
NJD_SPOT_LIGHT | スポットライト:平行光源・点光源と同様に決められた光線方向・位置、そして、njSetLightAngle関数によって指定された角度で定められる円錐内が照射されます。この光源は、ライトフラグNJD_SIMPLE_LIGHT、NJD_BLOCK_LIGHTを追加できます。 |
複合ライトモデル
NJD_SPEC_DIR(NJD_SPEC_POINT) | ハイライト付き平行光源(点光源):スペキュラハイライトはnjSetLightAngle関数によって指定された角度の条件で光ります。他は、平行光源(点光源)に同じです。 |
この光源は、ライトフラグNJD_SIMPLE_LIGHTを追加できます(点光源のみNJD_BLOCK_LIGHTも指定できます)。
NJD_LAMBERT_DIR(NJD_LAMBERT_POINT) | ランバートモデル:平行光源(点光源)に環境光も含めた標準的なライトモデルにしたがって照射されます。この光源は、ライトフラグNJD_SIMPLE_LIGHTを追加できます(点光源のみNJD_BLOCK_LIGHTも指定できます) |
NJD_PHONG_DIR(NJD_PHONG_POINT) | フォンモデル:平行光源(点光源)に環境光・スペキュラ光も含めた標準的なライトモデルにしたがって照射されます。この光源は、ライトフラグNJD_SIMPLE_LIGHTを追加できます(点光源のみNJD_BLOCK_LIGHTも指定できます) |
その他のフラグ
NJD_SIMPLE_LIGHT | 原則として計算を単純化してライトの計算を速くします。ただし、クオリティにも影響する場合があります。使用法は、NJD_SPEC_POINT|NJD_SIMPLE_LIGHTのようにor演算子で設定します。 |
NJD_BLOCK_LIGHT | 距離の演算を頂点ごとではなく代表点で行うので、ライトの計算を速くします。ただし、場合によりクオリティにも非常に影響し、モデルによっては期待する効果が得られないことがあります。使用法は、NJD_SIMPLE_LIGHTと同じです。 |
ユーザー設定(コールバック)ライト
NJD_USER_LIGHT | ユーザーが作成したライト関数を呼びます。 |
●チャンクモデル:njCnkDrawObject関数類が対応します。環境光はシーン(システム)に一つのみです。
NJD_SPEC_DIR(NJD_SPEC_POINT) | ハイライト付き平行光源(点光源):スペキュラハイライトはスペキュラ無視フラグ(NJD_FST_IS)で消すことができ、平行光源(点光源)と同じになります。 |
NJD_SPOT_LIGHT | スポットライト:平行光源・点光源と同様に決められた光線方向・位置、そしてnjSetLightAngle関数によって指定された角度で定められる円錐内が照射されます。 |
: NJS_LIGHT light; : /* 平行光源を登録 */ njCreateLight(&light, NJD_DIR_LIGHT); : /* 平行光源はnjDeleteLight、njLightOffが呼ばれなければ、 この後のすべてのモデル関数で反映されることになります */ njDrawObject(...); :