VRChatアバターUnityのみでの腕のすげ替えについて


はじめに

このnoteはvrchatで使用するアバターの腕(今回は前腕)をUnityのみですげ替える方法について記述します。やり方を理解すれば体のどの部位も移植できるはずです。
Modular Avatarによる非破壊な移植ではなく(多少使用します)、Humanoidリグを編集する破壊的な改変になります。
事前にUnityプロジェクトをコピーしてバックアップしてください。

準備

作業に際して必要なものを列挙します。

  • ベース用アバター

  • 移植用アバター

  • メイン用Unityプロジェクト

  • 参照用Unityプロジェクト

  • メッシュ削除のマスク画像(必要であれば

今回はベース用アバターをしなのちゃん、移植用アバターをアンティケちゃんとします。

オリジナル3Dモデル「しなの」 - ポンデロニウム研究所 - BOOTH

ベース用アバター
かわいい


オリジナル3Dモデル【アンティケ】 - にゃわて荘BOOTH - BOOTH

移植用アバター
けもかわいい

手順

移植手順は大きく7Stepの作業で完了です。

Unityプロジェクトの用意

まずはベース用のプロジェクトを用意してください。既存のプロジェクトを使用する場合は必ずバックアップを取ってください(めっちゃ重要)。Humanoidリグを編集するため、1プロジェクトで複数の改変を行っている場合は、他の改変アバターを破壊します。
ベース用プロジェクトにはベース用アバターと移植用アバターをインポートしてください。
また、VCCにてGestureManagerとModular Avatar、 Avatar Optimizer、lilToon(アバターのシェーダ)をインポートしてください。

プロジェクト名をshinanoarmにしてます
GestureManager / MA / AAO / lilToonが必要
アバターとマスクをインポート

次に移植用のプロジェクトを用意してください。このプロジェクトはHumanoidリグを編集する際に使用します。プロジェクトには移植用アバターのみインポートします。

プロジェクト名はAntikeにしてます
lilToonぐらいがあればいい?
FBXが編集できればいいので何もいらない
移植用アバターをインポート

移植用アバターの腕の位置合わせ

ベース用プロジェクトにて、移植用アバターの腕をベース用アバターの腕に合わせます。
ポイントは以下の点です。

  • サイズ調整をする際は必ず移植用アバターのプレハブのScaleを調整してください。Humanoidリグの編集に影響します。サイズ調整はXYZ全てのScaleを一致させてください

  • Handボーンを極力一致させてください。

  • 位置合わせはHandボーンを触らずに、Lower Armボーンのみで調整してください。

  • アバター同士の繋ぎ目で、移植用の腕のメッシュがベース用の腕のメッシュを覆うように調整してください。
    アクセサリーや服で繋ぎ目が見えない場合、拘らなくても大丈夫です。

  • 指のボーンは編集不要です

  • 両腕忘れずに行いましょう(片腕だけなら不要)。

ベース用アバターと移植用アバターのプレハブを配置してください。

ベース用と移植用合わせて配置

移植用アバターの位置とサイズの調整とLowerArmの調整を行います。

移植用アバターを調整して位置合わせ
サイズ調整はプレハブのScaleを、細かな位置調整はLower Armを調整する。

腕のつなぎ目はもふもふを利用するため、ベース用アバターの腕がもふもふにかぶさるように配置します。

下から見てOK
上から見てOK!

もふもふがかぶさった状態でベース用アバターと移植用アバターのHandボーンが一致するように調整します。座標の傾きは無視してください。位置の一致が重要です。

ベース用アバターのボーン位置
この位置を目標に合わせる
移植用アバターのボーン位置
LowerArmと移植用アバターのプレハブのScaleの調整で合わせる。

プレハブのScaleは0.8941713となりました。

プレハブのScale調整結果

Humanoid リグの編集

ベース用プロジェクトでベース用アバターのHumanoidリグを編集します。対象のFBXを探してHumanoidリグのConfigure…を開いてください。

ベース用アバターのFBX
プレハブが参照しているFBXを使用します。
おそらく同名か、1つだけFBXがあるはず。

同時に移植用プロジェクトで移植用アバターのHumanoidリグのConfigure…を開いてください。

移植用アバターのFBX

ベース用プロジェクトのベース用アバターの指のボーンを移植用アバターにあわせて行きます。

移植用アバターのFBXの指ボーンを参考にする。
ベース用アバターのFBXの指ボーンを書きかえる。

すべての指に対して先端まで行ってください。
指のボーンを合わせるとHandボーンが赤くなります。アバターによって指のボーンが赤くなることもあります。次の作業で解消されます。

指ボーンを編集するとボーンが赤くなる

ベース用アバターのHandボーンの傾きを移植用アバターのHandボーンの傾きになんとなく合わせます。参照できる場所がないのでなんとなくでしか合わせられません。ボーンが緑色になれば大丈夫です。完成度に影響しますが、余談なので割愛します。

移植用アバターの指の形を参考にする。
X軸とY軸を回転させてなんとなく合わせる。

次にHandボーンのScaleを移植用アバターのプレハブのScaleにします。

Handボーンのサイズ調整

反対側の手も忘れずにやりましょう。
全ての作業後、ボーンが緑色で表示されていれば完了です。

Applyをクリックして編集を適用してください。
以降の作業に移植用プロジェクトは不要なので閉じてください。

編集を適用

ベース用アバターのプレハブの編集

ベース用アバターのプレハブのボーンを変形させます。移植用アバターのLower Armをコピーしてベース用アバターに持ってきます。

コピーで持ってくること!

指のボーンの座標をコピペします。

移植用アバターから座標をコピー
ベース用アバターに座標をペースト

すべての指に対して先端まで行ってください。
指ボーンのパラメータコピペが完了したら、Handボーンの倍率を移植用アバターのプレハブのサイズに変更します。

次に、移植用アバターのHandボーンをベース用アバターのHandボーンに入れ子にして、PositionとRotaionを0にします。

Handの位置合わせの準備

HandボーンをLower Armに移動させ、Lower Armを移植用アバターのLowerArm以下に移動させます。

最後に、Handボーンの座標を移植用アバターのHandボーンにコピーします。ベース用アバターと移植用アバターのボーン構造が完全に一致します。

Handの位置合わせ

反対側の手も忘れずにやりましょう。

MAとAAOとlilToonの設定

移植用アバターのVRC Avatar DescriptorとPipline Manager、Animator(あれば)を削除してください。

次にMAのMesh Settingを付けます。

Mesh Settingをつける

MAのMarge ArmatureをLower Armボーンに付けます。

Marge Armatureをつける

AAOのdelete meshをベース用アバターのbodyと移植用アバターのbodyにつけます。今回はベース用アバターはboxを使用し、移植用アバターはmaskを使用しました。

Remove Mesh By Mashをつける
Remove Mesh By Boxをつける
(余分なアクセサリは非表示)

lilToonを使用している場合、影設定を合わせておくといいです。
移植用アバターを右クリックし、lilToon > [GameObject] Fix lightingをクリックします。

lilToonの影設定

AvatarDescripterの設定

ベース素体のPlayable LayersのGestureを移植用アバターに合わせておきます。

Avatar Descripterの設定

動作確認

gesture managerを使用して動作を確認します。

Fistの選択で破綻なく握れればOK!

指の形がおかしい場合、Humanoidリグの編集かベース用アバターのプレハブの編集でミスしているかもしれません。再度確認してください。

いつも通り改変

移植が完了したらベースアバターに合わせていつも通り改変して完了です。

ぽん

可愛く写真を撮りましょう!

ポポン!

P.S. この技術が非破壊で行える時代を望みます。

いいなと思ったら応援しよう!