Ninja Library - モーション関数

njLightMotion

ライトモーションの実行

書式

void njLightMotion( light_num, light, motion, frame )
Int light_num
const NJS_LIGHT *light
const NJS_MOTION *motion
Float frame

引数

light_num   ライト番号
light   ライト構造体へのポインタ
motion   ライト用のモーション構造体へのポインタ
frame   フレーム番号(0〜モーションフレーム数(motion->nbFrame)未満)

戻り値

なし

解説

ライトのモーションをモーションデータにしたがって実行します。 ライト構造体のfuncがEasyMulti、SimleMulti関数の場合は、ライト番号(light_num)を 指定します。設定する値は、EasyMulti、SimpleMulti関数のライト番号と同じです。 ただし、アンビエントライトのときと、Easy、Simple関数のときこの値は参照されません。 ライト構造体のfunc,typeは、njLightMotion関数を使用する前に設定しておいてください。 本関数ではLightSwitch関数、LightMatrices関数は実行していません。ライトを反映させるために 各自実行してください。 通常、本関数の light 引数には、NACファイル(またはNJCファイル)中の NJS_LIGHT 構造体、 motion 引数には、ライトモーション用の NAMファイル(またはNJMファイル)中の NJS_MOTION 構造体 を指定します。

引数の light 構造体は、モーションデータ中にキーフレームデータ列が存在しない場合の デフォルト値として使用されます。従って読み込まれるだけで書き込みは行われません。

引数 frame で示される位置の位置データ、及び姿勢データを、モーションデータのキーフレーム間を補間して 作成します。

例: フレーム数(motion->nbFrame)が10のモーションの場合

引数 frame の範囲と補完のされ方をまとめると次のように成ります。

 引数 frame の範囲   補完のされ方 
  frame < 0   暴走はしませんが通常は使いません。 
  0 <= frame <= motion->nbFrame - 1   通常の補完 
 motion->nbFrame - 1 <= frame < motion->nbFrame   最後のキーフレームと最初のキーフレームの補完 
 motion->nbFrame <= frame   暴走はしませんが通常は使いません。 


用例

#include <Ninja.h>
#define LIGHT           light1;
#define LIGHT_MOTION    light_motion1;
#define ENEMY1_MODEL     model_enemy1;
#define ENEMY1_MOTION    motion_enemy1;

extern NJS_LIGHT      LIGHT;
extern NJS_MOTION      LIGHT_MOTION;
extern NJS_MODEL       ENEMY1_MODEL;
extern NJS_MOTION      ENEMY1_MOTION;

void DrawFunc( Float frame )
{

    njLightMotion( NJD_CNK_EASY_MULTILIGHT_1,&LIGHT, &LIGHT_MOTION, frame );
 	njCnkSetEasyMultiLightSwitch(NJD_CNK_EASY_MULTILIGHT_ALL, 1);
    
	njPushMatrixEx();
	njCnkSetEasyMultiLightMatrices();
    njTranslate( NULL, EneX, EneY, EneZ );
	njCnkEasyMultiDrawMotion( &ENEMY1_MODEL, &ENEMY1_MOTION, frame );
    
    njPopMatrixEx();
}

備考


本関数は0番スロットのモーション情報構造体を使用します。
本関数を呼び出すとカレントモーション情報構造体は0番スロットに設定されます。

参照

njLightAction() ライトモーションの実行(アクション構造体対応)

njLightMotion
COPYRIGHT © SEGA ENTERPRISES, LTD., 1998-2000