njCnkPreLightObject English
|INDEX|
チャンクモデルの光源の前計算

書 式

#include <Ninja.h>
void	njCnkPreLightObject( object )
NJS_CNK_MODEL	*object


引 数

object
チャンクオブジェクト構造体へのポインタ

返 値

なし

エラー

なし

機 能

チャンクオブジェクトの光源をあらかじめ計算しておくものです。
光源の計算結果は頂点チャンクに溜め込みます。
そのため、頂点チャンク形式は、NJD_CV_VN_D8 のみになっています。

njCnkDrawObjectと同様の光源計算を行いますが、マテリアルは白として計算します。
また、スペキュラは反映されません。

用 例

	sbInitSystem( NJD_RESOLUTION_640x240_NTSCNI, NJD_FRAMEBUFFER_MODE_RGB565, 1 );

	njInitVertexBuffer( 1000000, 0, 1000, 0, 0 );
	njInitMatrix( matrix, 8 , 0);
	njInit3D( vbuf, 4096 );

	njInitView( &view );
	njSetView( &view );

	njCreateLight(<[0], NJD_SPEC_DIR);
	njCreateLight(<[1], NJD_SPEC_POINT);
	njCreateLight(<[2], NJD_SPEC_POINT);
	njCreateLight(<[3], NJD_SPEC_POINT);
	
	njSetLightDirection(<[0], 0.f, 0.f, -1.f);
	njSetLightLocation(<[1], 0.f, 0.f, -12.f);
	njSetLightLocation(<[2], 0.f, 0.f, -12.f);
	njSetLightLocation(<[3], 0.f, 0.f, -12.f);
	njSetLightRange(<[1], 4.f, 16.f);
	njSetLightRange(<[2], 4.f, 16.f);
	njSetLightRange(<[3], 4.f, 16.f);
	
	njCnkSetAmbient(0.3f, 0.3f, 0.3f);
	
	njSetLightColor(<[0], 0.3f, 0.2f, 0.1f);
	njSetLightColor(<[1], 1.f, 0.0f, 0.0f);
	njSetLightColor(<[2], 0.0f, 1.f, 0.0f);
	njSetLightColor(<[3], 0.0f, 0.0f, 1.f);
	njSetLightIntensity(<[0], 0.f, 1.f, 0.f);
	njSetLightIntensity(<[1], 0.f, 1.f, 0.f);
	njSetLightIntensity(<[2], 0.f, 1.f, 0.f);
	njSetLightIntensity(<[3], 0.f, 1.f, 0.f);

	if( _stop ) {
		njUnitMatrix(&m);
		njTranslate( &m, 0.f, 0.f, zzz );
		njRotateXYZ( &m, xx1,yy1,zz1 );
		njCalcPoint( &m, &p, &p1 );
		
		njUnitMatrix(&m);
		njTranslate( &m, 0.f, 0.f, zzz );
		njRotateXYZ( &m, xx2,yy2,zz2 );
		njCalcPoint( &m, &p, &p2 );
		
		njUnitMatrix(&m);
		njTranslate( &m, 0.f, 0.f, zzz );
		njRotateXYZ( &m, xx3,yy3,zz3 );
		njCalcPoint( &m, &p, &p3 );

		xx1 += 357;
		yy1 += 269;
		zz1 += 211;
		xx2 += 169;
		yy2 += 351;
		zz2 += 223;
		xx3 += 109;
		yy3 += 217;
		zz3 += 273;
		
		njSetLightLocation(<[1], p1.x, p1.y, p1.z);
		njSetLightLocation(<[2], p2.x, p2.y, p2.z);
		njSetLightLocation(<[3], p3.x, p3.y, p3.z);
	}


	njClearMatrix();
	njTranslate( NULL, 0.f, 0.f, zzz );
	njRotateXYZ( NULL, xx,yy,zz );

	if( _stop ) 	njCnkPreLightObject( OBJECT );

	njCnkEasyDrawObject( OBJECT );

備 考


関 連

njCnkDrawObject

njCnkPreLightObject |INDEX|

Copyright SEGA ENTERPRISES, LTD., 1998