【VRChat】Blender4.2を使用して体形改変をする(5.体型改変したアバターに衣装を着せる)
0.イントロダクション
これまで4部構成でBlenderを用いた体型改変について解説してきました。
今回は体型改変したアバターに、対応衣装を着せる方法について解説します。
今回は以下の作業を実施します…の前に、ちょっと解説を挟もうかなと思います。
補足:そもそも体型改変したアバターに対応衣装ってどうやって着せるの?
多分真っ先に思い浮かぶのがこの疑問だと思います。
この部分はメインで使っている愛莉ちゃんを使って解説します。
Blenderを用いて体型改変した場合、改変した後の状態がスケール1倍として扱われます。
この状態だと元のアバターからボーンの位置や回転・スケールがかけ離れているため、単純に衣装のPrefabをHierarchy上に置くと、「本当に対応衣装か?」ってくらい衣装のサイズが合いません。元のアバタースケールに合わせてあるので当たり前ですね。
この状態からUnityで合わせに行ってもいいですが、ここで一度体型変更の工程を思い出しましょう。
①Blenderで体型改変する時、ポーズモードでボーンのスケールを変更しました。この時は、体のメッシュについているアーマチュアモディファイアのおかげで、ボーンのスケールに合わせてメッシュが変形していました。
②この時の変形量はウェイト(ボーンに対するメッシュの追従度合い)に基づいて変形しますが、対応衣装というのは元々のアバターに合わせたウェイトが設定されています。
①と②をまとめると、変更したスケールを確定する前のデータが存在すれば、そのデータをもとに衣装を改変後の体型に合わせて変形させられそうですね。その時のデータが残っていれば…
と思いましたが、この記事の最後で保存してましたね。
というわけで今回はこのデータを使います。
ということで、「改変した体型に合わせた衣装を、Blenderから再出力する」が正解の手順です。
それを踏まえて今回やる工程は以下の通りです
体型確定前のデータを開いて衣装のFBXを読み込む
衣装独自のボーンがあるかどうかを確認する
もし衣装独自のボーンを見つけたら移植する衣装メッシュを素体に紐づける
衣装メッシュを素体に移植する
モディファイア適用と破綻修正を行う
FBXを出力する
今回はかなりの長期戦です。
全工程を書いていると文字数がとんでもないことになるので、この記事では素体の体型改変の記事で書いていない内容、具体的には1から4までに焦点を絞って書きます。
1.体型確定前のデータを開いて衣装のFBXを読み込む
説明は愛莉ちゃんでやりましたが、解説はマヌカちゃんにBunnySuccubusを着せる想定で行います。
1.1 体型確定前のBlender編集データを開く
まず体型確定前のBlender編集データ(Manuka-体型ベースデータ.blend)とを作業用のフォルダに配置します。
作業用のフォルダに配置したら、ファイル名をリネームしておきます。
今回は01_体型確定前.blendとしておきます。
名前を変更したらblendファイルを開きます。
この時点でボーンの表示を八面体にしておきましょう。
オレンジのArmatureを選択⇒人型のアイコンをクリック⇒ビューポート表示から表示方法を八面体にしておいてください。
1.2 衣装のFBXをインポートする
次にファイル⇒インポート⇒FBXを選び、衣装のFBXをインポートします。
これは衣装のZipファイルの中の物でもよいですし、Unityプロジェクトの中からインポートしても良いです。
インポート後は以下の画像のようになります。赤枠の部分がインポートした衣装のArmatureオブジェクトです。
次に、衣装独自のボーンを探します。
2.衣装独自のボーンを素体に結合する
補足:衣装独自のボーンを探す理由
衣装のメッシュにはそれぞれアーマチュアモディファイアがついています。
アーマチュアモディファイアは、画像赤枠の部分のアーマチュアに合わせて変形するようになっています。
そのため、赤枠の衣装のアーマチュアではなく、素体のアーマチュアに紐づけようとするとどうなるでしょうか?
上の方でも解説した通り、アーマチュアモディファイアはウェイトに合わせてメッシュを変形させるモディファイアなので、素体と同じだけスケールアップして変形します。
これでスケールが合うわけです。
ただし、この方法でスケールを連動させられるのは素体側に存在するボーンだけです。
つまり衣装にしかないスカートやアクセサリが追従してくれないので、これらのボーンを移植する必要があります。
2.1 衣装と素体のボーンを比較する
まず最初に素体と衣装のArmatureを比較し、「衣装にしかないボーン」を探します。その前に、右上のシーンコレクションを分割しましょう。
シーンコレクションの画面とビューポートの境目で右クリックし、垂直に分割をクリックします。
クリックするとグレーの線が出るので、マウスをシーンコレクションの真ん中の辺りでクリックすると左右分割できます。
今回は素体を左側、衣装を右側にして比較していきます。
ここからは間違い探しです。
取りこぼしを防ぐため、浅い階層(Hips)から順番に見ていきましょう。
まずHips直下を確認しましょう。
この衣装は分かりやすいタイプで、先頭に"NM04_"という文字列が付いているのが衣装独自のボーンです。
次に足の方に独自のボーンがないか探します。
こういった深い階層を見る時は、Shiftキーを押しながらオレンジ枠の展開ボタンを押すと、最下層まで一括で開けます。
そうして探した結果、独自のボーンは以下の通りという事が分かりました。
Hipsに5つ(サイドのリボン、しっぽ2つ、翼)
Chestに1つ(胸元のリボン)
LとRのUpperArmにそれぞれ1つ(二の腕のシュシュ)
LとRのLowerArmにそれぞれ1つ(手首のチェーン)
ちなみに、ここで衣装独自のボーンがなかった場合、後述の3.衣装メッシュを素体に紐づけるまで進んで構いません。
2.2 衣装独自のボーンを衣装のArmatureから切り離す
次に、特定したボーンを素体に移植するために、対象のボーンを衣装のArmatureから一度切り離します。
その前に、シーンコレクションのエリア統合をして1つにまとめておきましょう。境目で右クリックして、エリア統合を押すと統合できます。
エリア統合が終わったらボーンの切り離しをします。
一度にすべて切り離すこともできますが、一気にやると元々どこにあったか分からなくなるので、まずは一階層ずつやっていきましょう。
まず、衣装のArmatureを選択してから編集モードに切り替えます。
この時、編集モードのアイコンが衣装のArmatureオブジェクトに表示されていることを確認してください。
次に、Hipsのボーンを展開します。
ボーンを切り出すにはこのボーンまで含めて全選択する必要があるので、Shiftキーを押しながら画像赤枠の部分(切り出す対象のボーン展開ボタン)をクリックします。
次に、切り出す対象のボーンを"子のボーンを含めて"すべて選択します。
Shiftキー+クリックで連続選択したり、Ctrlキー+クリックの個別選択を活用しましょう。
そしたら、左側の3Dビューポート(画像赤枠の部分)にマウスを置いて、キーボードのPを押します。何故か何もメッセージが出ませんが、選択したボーンが別のアーマチュアに分離されます。
2.3 切り離したボーンを素体に結合する
次に、オブジェクトモードに戻して、切り出したArmatureをクリックした後、Ctrlを押しながら素体のアーマチュアをクリックします。
次に、左側の3Dビューポート(画像赤枠の部分)にマウスを置いて、キーボードのCtrl+Jを押します。また何もメッセージが出ませんが、選択した切り出したアーマチュアが素体に結合されます。
ただし、今の状態だとArmature直下にあるので、Hipsの配下に移動させなくてはなりません。
今度は、素体側のオレンジのArmatureを選んだ状態で編集モードに入ります。この時も、メッシュや衣装ではなく素体のアーマチュアに編集モードのアイコン(赤枠)が出ていることを確認しましょう。
スケールを適用していないので元のスケールに戻っていますが、正常なので無視してください。
編集モードに入ったら、結合させたボーンをクリックし、ボーンプロパティからペアレントをクリックしてHipsを選択します。
同じように他のボーンもHips配下に移しましょう。
Hips配下のボーン移植が終わりました。
2.4 切り離し・結合を繰り返す
ここから先は同じ作業の繰り返しです。
①衣装で編集モードに入り対象のボーンを切り離す
②オブジェクトモードで切り離したボーンを素体に結合
③素体で編集モードに入りボーンの親を変更
上の手順を繰り返した結果が以下の通りです。
3.衣装メッシュを素体に紐づける
お待たせしました。
ここから、衣装のメッシュを素体のアーマチュアに紐づけます。
まずオブジェクトモードで衣装のメッシュをクリックし、モディファイア(スパナマーク)をクリックしてアーマチュアモディファイアを確認します。
この段階では衣装側のアーマチュアを向いているはずです。
次に、アーマチュアモディファイアのオブジェクトの部分をクリックし、素体側のArmature(リストの上)を選択します。
そうすると素体とスケールが合います。
スケールが合わない部分が存在する場合は、ボーンの移植漏れがないか確認しましょう。
この作業を全てのメッシュに対して行います。
全てのメッシュに対して行った物が次の画像です。
4.衣装メッシュを素体に移植して変形を確定させる
今のままだと衣装メッシュが素体の一部になっていないので、この後の作業に不便です。
そのため、衣装メッシュを素体に移植します。
4.1 衣装のメッシュを素体に移植する
まずはオブジェクトモードでShiftキーを使いながら衣装側のメッシュを全選択します。衣装のメッシュをすべて選択したら、Ctrlキーを押しながら素体のArmature(オレンジ)をクリックします。
選択が終わったら、左側の3Dビューポート(画像赤枠の部分)にマウスを置いて、キーボードのCtrl+Pを押します。
「ペアレント対象」という選択肢が出るので、2番目のオブジェクト(トランスフォーム維持)をクリックします。
衣装のメッシュが素体側に移動したことを確認します。
4.2 衣装の追従を確認する
次に、ポーズモードに切り替えてHipsのボーンを動かしてみましょう。
ポーズモードでHipsをクリックして、キーボードのGをクリックするとボーンが動かせます。
この段階で、動きについてこないメッシュが存在しない=必要なボーンがそろっていることを確認しましょう。確認したらEscキーでキャンセルします。
ここまで確認したら衣装側のArmatureオブジェクト(オレンジのArmature)は不要になります。オブジェクトモードに戻してオレンジのArmatureを右クリックし、階層を削除をクリックしましょう。
4.3 衣装の変形を確定させる
ここまで終わったら一旦ファイルを保存しましょう。
保存はCtrl+Sで上書き保存(01_体型確定前を更新)してから、名前を付けて保存で"02_体型確定後.blend"として保存します。
この後の流れ
保存が終わったら以下の作業を実施します。
オブジェクトモードでモディファイア適用を行い、メッシュの変形を確定させる
ポーズモードでレストポーズ確定して、ボーンスケールを1にする
アーマチュアモディファイアを付け直す
破綻しているメッシュを修正する
オブジェクトモードでトランスフォームを適用する
FBXを出力する
UnityにFBXをインポートし、PhysBoneなどのコンポーネントを衣装付属のPrefabから移植する
ここから先の作業内容は素体の体型改変をした時と変わりません。
以下の記事を参考にしてください。
アバターの時と異なる注意点として、FBXを出力する前に素体に含まれているメッシュは削除しておきましょう。出力するのはFBXだけで十分です。
また、衣装に関してはリグ(Rig)のアニメーションタイプはジェネリックのままにしておいてください。
ヒューマノイドに切り替えてしまうとModularAvatarのSetupOutfitでエラーが出ます。
後半はかなり駆け足になりましたが、今回はここまでにします。