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

njCnkEasyDrawShapeMotionLink

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

書式

void njCnkEasyDrawShapeMotionLink( *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_VN

(ただし、線形補間のみ)


用例

#include <Shinobi.h>
#define	OBJECT	object_sample
#define	MOTION1	motion_sample1 /* NAMファイル内に記載 */
#define	MOTION2	motion_sample2 /* NAMファイル内に記載 */
#define	SHAPE1	shape_sample1 /* NASファイル内に記載 */
#define	SHAPE2	shape_sample2 /* NASファイル内に記載 */
#define	STEPS	60
	:
#define	VERTEX_NUM	600	/* maximum model's verteices */
#define	TYPE_VN	6	/* vertex(3) + normal(3) */
#define	HEADER_NUM	2
#define	NUM	(VERTEX_NUM * TYPE_VN + HEADER_NUM)
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;
	:
njCnkEasyDrawShapeMotionLink( OBJECT, &motionlink, &shapelink, ff/STEPS ); 
/* フレームは0−1を指定 */
ff+=0.2f;
if( ff >= STEPS - 1 ) ff=0.f;
	:

備考

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

参照

njInitShape()
njCnkEasyDrawObject()
njCnkEasyDrawMotion()
njCnkEasyDrawMotionLink()

njCnkEasyDrawShapeMotionLink
COPYRIGHT © SEGA ENTERPRISES, LTD., 1998