Ninjaライブラリ - モデル関数

njCnkPreLightModel

CHUNK モデルの光源の前計算

書式

void njCnkPreLightModel( *model )
NJS_CNK_MODEL *model

引数

*modelチャンクモデル構造体へのポインタ

戻値

なし

解説

チャンクモデルの光源をあらかじめ計算しておくものです。

光源の計算結果は頂点チャンクに溜め込みます。 そのため、頂点チャンク形式は、NJD_CV_VN_D8 のみになっています。

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


用例

sbInitSystem( NJD_RESOLUTION_640x240_NTSCNI, NJD_FRAMEBUFFER_MODE_RGB565, 1 );
njInitVertexBuffer( 500000, 0, 10000, 0, 0 );
njInitMatrix( matrix, 128, 0);
njInit3D( vbuf, 4096 );
njInitView( &view );
njSetView( &view );
njCreateLight(&lt[0], NJD_SPEC_DIR);
njCreateLight(&lt[1], NJD_SPEC_POINT);
njCreateLight(&lt[2], NJD_SPEC_POINT);
njCreateLight(&lt[3], NJD_SPEC_POINT);
njSetLightDirection(&lt[0], 0.f, 0.f, -1.f);
njSetLightLocation(&lt[1], 0.f, 0.f, -12.f);
njSetLightLocation(&lt[2], 0.f, 0.f, -12.f);
njSetLightLocation(&lt[3], 0.f, 0.f, -12.f);
njSetLightRange(&lt[1], 4.f, 16.f);
njSetLightRange(&lt[2], 4.f, 16.f);
njSetLightRange(&lt[3], 4.f, 16.f);
	
njCnkSetAmbient(0.3f, 0.3f, 0.3f);
	
njSetLightColor(&lt[0], 0.3f, 0.2f, 0.1f);
njSetLightColor(&lt[1], 1.f, 0.0f, 0.0f);
njSetLightColor(&lt[2], 0.0f, 1.f, 0.0f);
njSetLightColor(&lt[3], 0.0f, 0.0f, 1.f);
njSetLightIntensity(&lt[0], 0.f, 1.f, 0.f);
njSetLightIntensity(&lt[1], 0.f, 1.f, 0.f);
njSetLightIntensity(&lt[2], 0.f, 1.f, 0.f);
njSetLightIntensity(&lt[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(&lt[1], p1.x, p1.y, p1.z);
	njSetLightLocation(&lt[2], p2.x, p2.y, p2.z);
	njSetLightLocation(&lt[3], p3.x, p3.y, p3.z);
}
njClearMatrix();
njTranslate( NULL, 0.f, 0.f, -10.f );
njRotateXYZ( NULL, xx,yy,zz );
if( _stop ) njCnkPreLightModel( MODEL );
njCnkEasyDrawModel( MODEL );

参照

njCnkDrawModel()
njCnkPreLightObject()

njCnkPreLightModel
COPYRIGHT © SEGA ENTERPRISES, LTD., 1998