特定のパーツを基準にする

パーツの透明度によるパーツ切り替えとmoc変更を併用する場合のモーション制作を簡単にする方法です。

モデルの例

例えば以下の様な状況で有効です。
    ●モデル1には腕1と腕2の切り替えがある。
    モデル2にも腕1と腕2の切り替えがある。
    …同様にモデル3、モデル4と存在する。
    さらにそれらは同じキャラクターなのでモーションは同じ物を使いたい。
    
    この場合、通常ではモーションに対して以下のキーを打つことになります。
        モデル1の腕1のアルファ値
        モデル1の腕2のアルファ値        
        モデル2の腕1のアルファ値       
        モデル2の腕2のアルファ値
        …同様にモデルの数だけ続く

    これでは大量の服替えがある場合などは手間が増大することになります。
    そこで基準になるパーツIDを決めて、他のパーツはその表示・非表示をコピーするのがこの方法です。
    そうすることでモーションファイルには以下のキーだけで済むことになります。
        基準にしたモデルの腕1のアルファ値
        基準にしたモデルの腕2のアルファ値

設定方法

基準となるIDを決めて、モーションにはそのIDのキーだけを打ちます。それ以外の扱いは通常のmtnファイルと同様です。
設定方法は単純に基準の値を読み取って、他の値へコピーするだけです。
パーツ切り替えを設定したあとでLive2Dモデルのupdate関数を呼ぶ前に実行します。

 サンプルコードで使用している設定
 基準ID コピーするID
  PARTS_01_ARM_CLOTHES_A_01 PARTS_01_ARM_CLOTHES_B_01
 PARTS_01_ARM_CLOTHES_C_01
  PARTS_01_ARM_CLOTHES_A_02 PARTS_01_ARM_CLOTHES_B_02
 PARTS_01_ARM_CLOTHES_C_02

 サンプルコード

//腕1の基準IDから読み取る
 float opacity_01 = live2DModel->getPartsOpacity("PARTS_01_ARM_CLOTHES_A_01");
//コピーしたいパーツに設定する
 live2DModel->setPartsOpacity("PARTS_01_ARM_CLOTHES_B_01", opacity_01);
 live2DModel->setPartsOpacity("PARTS_01_ARM_CLOTHES_C_01", opacity_01);

//腕2の基準IDから読み取る
 float opacity_02 = live2DModel->getPartsOpacity("PARTS_01_ARM_CLOTHES_A_02");
//コピーしたいパーツに設定する
 live2DModel->setPartsOpacity("PARTS_01_ARM_CLOTHES_B_02", opacity_02);
 live2DModel->setPartsOpacity("PARTS_01_ARM_CLOTHES_C_02", opacity_02);






Comments