*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 );