Ninja Library - モーション関数

njCnkEasyMultiDrawMotionLink

モーションリンクの描画(CHUNK-EASY MULTI)

書式

void njCnkEasyMultiDrawMotionLink( object, motionlink, rate )
const NJS_CNK_OBJECT *object
const NJS_MOTION_LINK *motionlink
Float rate

引数

object   オブジェクト構造体へのポインタ
motionlink   モーションリンク構造体へのポインタ
rate   補完レイト(0〜1)

戻り値

なし

解説

モーションリンク構造体によって指定された2つのモーションを結合したモーションを描画します。

モーションリンク構造体中の2つのフレーム番号は、リンク元のモーションおよびリンク先のモーションの フレーム番号を指定します。

一方、引数の rate にはそれらのモーション間の内分比を指定します。

引数の rateが 0 のときはリンク元のモーションに、rate が 1のときはリンク先の モーションに一致します。rate がその間(0 < rate < 1)にあるときはリンク先のモーションと リンク元のモーションを補完します。

リンク元やリンク先のモーションを実行するときの補完方法は、それぞれのモーション構造体の inp_fn メンバのビットによって制御できます。デフォルトでは線形補完ですが、 スプライン補完も可能です。

一方、それらを結合する際の補完方法は、線形補完のみ対応しています。

また、リンク元やリンク先の回転の表現が Angle 形式であっても、それらを結合する 際には、いったんそれぞれの回転表現を共にクォータニオン形式に変換してから、 クォータニオンによる線形補完をします。これにより、リンク元とリンク先のモーションに 関連性が薄い場合でも自然な補完が行えます。


用例

#include <Ninja.h>
#define	OBJECT    object_sample
#define	MOTION1   motion_sample1 /* Entered in NAM file */
#define	MOTION2   motion_sample2 /* Entered in NAM file */
extern NJS_MOTION	MOTION1[];
extern NJS_MOTION	MOTION2[];
extern NJS_CNK_OBJECT	OBJECT[];
NJS_MOTION_LINK         motionlink;
Float                   rate = 0.0f;
	:

{
    motionlink.motion[0]  = MOTION1;/* Link source */
    motionlink.motion[1]  = MOTION2;/* Link target* /
    
    /* Interpolate from last frame of MOTION1 to 1.5 frames of MOTION2*/
    motionlink.frame[0]   = MOTION1->nbFrame-1;
    motionlink.frame[1]   = 1.5;
                      :
    /* rate specifies 0 to 1 */
    
    njCnkEasyMultiDrawMotionLink( OBJECT, &motionlink, rate );
    
    rate   += 0.01f;
    if ( rate > 1.0f ) {
        rate = 0.0f;
    }
}


備考


本関数は、他のモーションリンク描画関数と描画関数以外は完全に共通です。

参照

njCnkEasyMultiDrawObject() CHUNKオブジェクトのEASY MULTI描画
njCnkEasyMultiDrawMotion() モーションの描画(CHUNK-EASY MULTI)
njCnkEasyMultiDrawShapeMotion() シェープモーションの描画(CHUNK-EASY MULTI)
njCnkEasyDrawMotionLink() モーションリンクの描画(CHUNK-EASY)
njCnkSimpleDrawMotionLink() モーションリンクの描画(CHUNK-SIMPLE)
njCnkSimpleMultiDrawMotionLink() モーションリンクの描画(CHUNK-SIMPLE MULTI)

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