Japanese | English | Korean

Samples


サンプルでは、右手のボーンに合わせて物を設置しています。このとき、ワールド座標からボーン座標への変換行列が必要になります。このサンプルでは、対象のボーンにバウンディングボリューム(BV)を設置し、BVの変換行列を取得することで、間接的にボーンへの変換行列を取得しています。



1. mcxBVFigure に対して、変換行列を取得したいボーンにバウンディングボリュームを設定

mcxBVFigurex              *pbvfig;
mcxBoundingVolumex    *pbvBone;

/*----- Shapeインスタンスの作成 -----*/
/*----- BVFigure -----*/
pMe -> mcx_data.pbvfig = IMICRO3D_mcx_BVBuilder_createBVFigureOnlyBonex ( pMe -> pIM3D,
         pMe -> pAlc,
         &pMe -> mc_data.figure_player,
         &e ) ;

/*----- Bone BoundingVolume -----*/
pMe -> mcx_data.pbvBone = IMICRO3D_mcx_BVBuilder_createBoneBVx ( pMe -> pIM3D,
           pMe -> pAlc,
           &pMe -> mc_data.figure_player,
           BONE_ID,
           0,
           MCX_SHAPE_TYPE_SPHERE,
           4096,
           MCX_BV_ROTATE_NONE,
           &e ) ;
/*----- 特定のボーンにバウンディングボリュームを設定する -----*/
IMICRO3D_mcx_BVFigure_setBVToBonex ( pMe -> pIM3D,
        pMe -> mcx_data.pbvfig,
        pMe -> mcx_data.pbvBone,
        BONE_ID,
        &e ) ;


2. 設定したバウンディングボリュームに対して、 mcx_BoundingVolume_getTransformx を用いて変換行列を取得

/*----- 変換行列を取得 -----*/
IMICRO3D_mcx_Shape_getTransformx ( pMe -> pIM3D,
 ( mcxShapex* ) pMe -> mcx_data.pbvBone,
 MCX_TRANS_SHAPE_WORLD_NOSCALE,
 &pMe -> mcx_data.shape_trans,
 &e ) ;

取得した変換行列は、持たせたい物のモデルの行列と乗算し、Renderにセットします。




Hold Item実行画面