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

njCnkDrawShapeMotionLink

シェイプ付きモーションの結合

書式

void njCnkDrawShapeMotionLink( *object, *motionlink, *shapelink, frame ) 
NJS_CNK_OBJECT *object 
NJS_MOTION_LINK *motionlink 
NJS_MOTION_LINK *shapelink 
Float frame 

引数

*object   オブジェクト構造体へのポインタ
*motionlink   モーションリンク構造体へのポインタ
*shapelink   モーションリンク構造体へのポインタ(頂点アニメーション)
frame   フレーム番号(0〜1)

戻り値

なし

解説

2つのモーション構造体をつなげます。 モーションリンク構造体中のフレームはリンク元とリンク先のモーション・フレームで、引数のフレームが0のときにリンク元のフレーム、1のときにリンク先のフレームの モーションにあり、その他(0<ff<1)はリンク先とリンク元のフレームを補完します。 シェープ(頂点アニメーション)についても同様です。 頂点アニメーションの対応している頂点型は下記のとおりです。

 頂点   NJD_CV, NJD_CV_D8, NJD_CV_UF, NJD_CV_NF, NJD_CV_S5, NJD_CV_S4, NJD_CV_IN 
 頂点・法線   NJD_CV_VN, NJD_CV_VN_D8, NJD_CV_VN_UF, NJD_CV_VN_NF, NJD_CV_VN_S5, NJD_CV_VN_S4, NJD_CV_VN_IN 

スプライン補間はモーション時の頂点のみでモーション間はリニアとなります。 ただし、ベーシックモデルではスプライン補間されます。


用例

	:
extern NJS_MOTION	MOTION1[];
extern NJS_MOTION	MOTION2[];
extern NJS_MOTION	SHAPE1[];
extern NJS_MOTION	SHAPE2[];
extern NJS_CNK_OBJECT	OBJECT[];
NJS_MOTION_LINK	motionlink;
NJS_MOTION_LINK	shapelink;
Float	sbuf[NUM * 3];
	:
njInitShape(sbuf);
	:
motionlink.motion[0] = MOTION1;/*リンク元*/
motionlink.motion[1] = MOTION2;/*リンク先*/
shapelink.motion[0] = SHAPE1;/*リンク元*/
shapelink.motion[1] = SHAPE2;/*リンク先*/
/*MOTION1の最後のフレームからMOTION2の1.5フレームを補間*/
motionlink.frame[0] =
shapelink.frame[0] = MOTION1->nbFrame-1;
motionlink.frame[1] =
shapelink.frame[1] = 1.5;
	:
njCnkDrawShapeMotionLink( OBJECT, &motionlink, &shapelink, ff/STEPS );
/* フレームは0−1を指定 */
ff+=0.2f;
if( ff >= STEPS - 1 ) ff=0.f;
	:

備考

チャンクオブジェクト構造体用のシェープ付きモーション・リンクです。

参照

njInitShape()
njCnkDrawObject()
njCnkDrawMotion()
njCnkDrawMotionLink()

njCnkDrawShapeMotionLink
COPYRIGHT © SEGA ENTERPRISES, LTD., 1998,1999