##### 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