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) |
頂点 | 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; :