njMotionRotateXYZ
ノード・モーション関数(回転)。

書 式

#include <Ninja.h>
void  njMotionRotateXYZ( NJS_MATRIX *m, NJS_OBJECT *obj, Int spline_flag );
NJS_MATRIX  *m
NJS_OBJECT  *obj
Int         spline_flag

引 数

m
マトリクス構造体へのポインタ
obj
オブジェクト構造体へのポインタ
spline_flag
スプライン属性フラグ(0:リニア、1:スプライン)

返 値

なし

エラー

なし

機 能

ノード毎の回転モーションを与えられたマトリクスに反映させます。
この関数は、フレーム・モーション等の情報を得るために、使用前にnjSetCurrentMotion関数を呼ぶこと、また必要であれば(階層構造中であれば)使用後にノード情報を更新するためにnjSetNextMotionNodeを呼ぶ必要があります(用例参照)。

用 例

#include <NINJA.H> 

#define  OBJECT    object_sample
#define  MOTION    motion_sample
#define  LINEAR    0
#define  SPLINE    1

extern NJS_MOTION  MOTION[];
extern NJS_OBJECT  OBJECT[];

Float  ff = 0.f;
Int  spline_flg = SPLINE;

...........

Sint32 njUserMain(void)
{
  ...........

  njSetCurrentMotion(MOTION, ff );
  PushPopMotion( OBJECT );

  ff+=0.2f;
  if( ff >= (MOTION->nbFrame-1) ) ff=0.f;
  ...........
}

PushPopMotion(NJS_OBJECT *obj)
{
  njPushMatrix( NULL );

  /* モーション関数の実行 */
  njMotionTranslate( NULL, obj, spline_flg );
  njMotionRotateXYZ( NULL, obj, spline_flg );
  njMotionScale( NULL, obj, spline_flg );
  njSetNextMotionNode();

  /* モデルの描画 */
  if( obj->model != NULL )
    njDrawModel( obj->model );
  
  if( obj->child != NULL )
    PushPopMotion( (NJS_OBJECT*)obj->child );
  
  njPopMatrix( 1 );

  if( obj->sibling != NULL )
    PushPopMotion( (NJS_OBJECT*)obj->sibling );
}

...........

備 考

この関数は親子階層をたどる(プッシュ・ポップ)関数中で使用するための関数です。
これらの(ノード毎のモーション)関数は、3Dの制御部を除けばnjAction、njDrawMotion類と同様です。

関 連

njSetCurrentMotion
njMotionTransform
njMotionTransformZXY
njMotionTranslate
njMotionRotateZXY
njMotionScale
njGetMotionTranslate
njGetMotionRotate
njGetMotionScale
njSetNextMotionNode

njMotionRotateXYZ

Copyright SEGA ENTERPRISES, LTD., 1998