Ninja Library - モデル・ダイレクト関数

njSetDirectLight

njDirectDrawObject関数用光源の方向・設定

書式

void njSetDirectLight( x, y, z )
Float x
Float y
Float z

引数

x, y, z   ライトのベクトル

戻り値

なし

解説

njDirectDrawObject関数用のライトを設定します。 ベクトルの座標系はカメラに固定の座標系です。 たとえば、

njSetDirectLight( 0.0f, 0.0f, -1.0f );

のように設定すれば、常に画面正面から光があたっているようになります。 3D空間での座標にするためには、カレントマトリクスで変換してから設定してください。


light.x = LIGHT3D_X;
light.y = LIGHT3D_Y;
light.z = LIGHT3D_Z;
njCalcVector( NULL, &light, &lwork );
njSetDirectLight( lwork.x, lwork.y, lworkz );

このようにすれば、ライトの座標を3D空間(LIGHT3D_X,LIGHT3D_Y,LIGHT3D_Z)に設定できます。


用例


Sint32	UserInit(void)
{
 NJS_DIRECT_COMPILE_LIGHT	light;
 
 njSetDirectLight( -0.011413F, -0.145482F,  0.989295F );
 njSetDirectLightIntensity( 1.0f, 0.2f );
 njSetDirectLightColor( 1.000000F,  0.938650F,  0.791411F );

 direct1 = syMalloc( njCnkDirectObjectCompileSize( object1 ) +  
                     njCnkDirectObjectCompileLightSize( object2 ) );
 direct2 = njCnkDirectObjectCompile( object1, direct1 );

 light.x = -0.011413F;
 light.y = -0.145482F;
 light.z = 0.989295F;
 light.inten = 1.0f;
 light.ambient = 0.2f;
 light.r = 1.000000F;
 light.g = 0.938650F;
 light.b = 0.791411F;

 njCnkDirectObjectCompileLight( object2, direct2, &light );

 njSetDirectClip();

 return USER_CONTINUE;
}
Sint32	UserMain(void)
{
 njPushMatrixEx();
 njTranslate( NULL, 0.f, 0.f, -10.f );
 njRotateXYZ( NULL, xx,yy,zz );
 njDirectDrawObject( direct1 );
 njDirectDrawObject( direct2 );
 xx += 257;
 yy += 179;
 zz += 193;
 njPopMatrixEx();
 return USER_CONTINUE;
}


備考

画角や画面中心など、スクリーンの設定を変更した場合、この関数をコールしてください。

参照

njSetDirectLightIntensity() njDirectDrawObject関数用光源の強さの設定
njSetDirectLightColor() njDirectDrawObject関数用光源の色の設定
njSetDirectClip() njDirectDrawObject関数用クリッピング設定
njCnkDirectObjectCompile() njDirectDrawObject関数用モデルデータ作成
njCnkDirectObjectCompileSize() njDirectDrawObject関数用コンパイルサイズの取得
njCnkDirectObjectCompileLight() njDirectDrawObject関数用モデルデータ作成
njCnkDirectObjectCompileLightSize() njDirectDrawObject関数用コンパイルサイズの取得
njDirectDrawObject() ダイレクトオブジェクトの描画

njSetDirectLight
COPYRIGHT © SEGA ENTERPRISES, LTD., 1998-2000