njCnkPreLightModel
CHUNK モデルの光源の前計算

書 式

#include <Ninja.h>
void	njCnkPreLightModel( model )
NJS_CNK_MODEL	*model


引 数

NJS_CNK_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(<[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, -10.f );
njRotateXYZ( NULL, xx,yy,zz );

if( _stop ) njCnkPreLightModel( MODEL );

njCnkEasyDrawModel( MODEL );

備 考


関 連

njCnkDrawModel
njCnkPreLightObject

njCnkPreLightModel

Copyright SEGA ENTERPRISES, LTD., 1998