##### Ninjaライブラリ - モーション関数

# njMotionRotateZXY

ノード・モーション関数(ＺＸＹ回転)

### 書式

  void njMotionRotateZXY( *m, *obj, spline_flag );
  NJS_MATRIX *m
  NJS_OBJECT *obj
  Int spline_flag

### 引数

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

### 戻値

  なし

### 解説

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

### 用例

      #include <Shinobi.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 );
       njMotionRotateZXY( 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 );
      }
      	：

### 備考

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

### 参照

  njSetCurrentMotion()
  njMotionTransform()
  njMotionTransformZXY()
  njMotionTranslate()
  njMotionRotateXYZ()
  njMotionScale()
  njGetMotionTranslate()
  njGetMotionRotate()
  njGetMotionScale()
  njSetNextMotionNode()

njMotionRotateZXY

COPYRIGHT © SEGA ENTERPRISES, LTD., 1998