VRChatアバター改変:頭部の移植
※この記事は私がBOOTH( https://kindergarten21.booth.pm )で販売しているアバター「U10」シリーズを基にした内容で、VRChatでの使用を想定しています。U10ちゃんの取説を兼ねていますが、一般的なアバターは同じ手順での頭部の移植が可能です。
Aのアバターの胴体にBのアバターの頭部を移植する方法を解説します。
今回は、U10素体ver.にU10mk3の頭部を移植してみます。必要な作業は頭部の位置合わせと移植、それからマテリアルの調整です。
U10mk3→ https://kindergarten21.booth.pm/items/1550787
U10素体ver.→ https://kindergarten21.booth.pm/items/1131055
1:身体を使いたいアバター(今回はU10素体ver.)と頭を使いたいアバター(今回はU10mk3)の2体のアバターをシーンに配置します。
(とりあえず見やすいように2体の位置をずらしてスクショしましたが、実際には2体を重ねて行います)
次に、これからアバター自体のパーツの削除や修正を行ってしまうので、使う両アバターを一度プレハブ化して操作前の状態を保存しておきます。ヒエラルキータブ上でそのアバターを選んで、それをプロジェクトタブの好きなフォルダの中にドラッグ&ドロップしてください。以下のスクショのようにヒエラルキー上での文字が全て青になっていれば成功です(これでプレハブ化ができてます。
そうしたら、2体を重ねて表示している状態のまま、頭部の位置を合わせる作業をします。移植したい側のアバターを選択して移動させます。2体の頭部の位置(特に目の位置)をできる限りぴったり合わせてください。この時の位置関係が最終的な仕上がりに直結します。
2:次に、移植に使う側(今回はU10mk3)は頭部と髪以外を削除します。
逆に移植される側は頭部と髪が不要ですが、この段階で削除してしまうと後々ちょっと面倒になるのでこの段階では削除せずに非表示にすることで対応します。
今回移植に使う側であるU10mk3は、表にリストされているパーツだけでなく、ボーンの中にもパーツがあるのでそれも探して削除していきます。例えば今回は腰の機械のハネ、尻尾、頭の耳とサイドのリングが不要です。ヒエラルキー上で削除したいパーツを選択し、右クリックからDeleteを選べば選択したものよりも先に配置されているものが全て削除されます。
移植される側の頭部と髪を非表示に、移植する側の頭部髪その他の不要パーツを削除してスッキリした様子が以下のスクショ。
これが最終的な見た目になります。
3:アバターのパフォーマンスを良くするため不要なボーンを削除します。
ちなみにこの工程はやらなくても構いません。
今回は頭と髪の毛のみの移植なので、移植に使う側は「腰から頭までと両目と髪の毛」のボーンがあれば大丈夫で、手足など他のボーンは不要なので削除していきます。ヒエラルキーでボーンを選択して右クリックしてDeleteを選ぶと、選んだボーンより先のボーン全てを削除することができます。今回はUpperLeg_L/RとShoulder_L/Rより先、胸のボーンも削除しました。その他服に割り当てられているであろうボーン等、いかにも不要そうなボーンも削除してしまいましょう。
移植をするにあたってどのボーンが必要かどうかは、実際にボーンを削除してみると確認できます。ボーンを削除してみてパーツの形が崩れてしまう場合は必要なボーンということです。まぁボーンの削除についてはわからない場合はやらなくても構いません。
4:ボーンの削除が完了したら、実際に2体をくっつけていきます。
移植される側のボーンの中に移植に使う側のボーンを入れてあげることでお互いのボーンが同時に動くようになり首を曲げたりした時にも移植した頭部がちゃんとついてくるようになります。この工程がきちんとできていないと、身体を動かしたらパーツがついてこない…という状態になってしまいます。頭のボーンに髪飾りを入れるというようなごく基本の改変とやっていることの原理は実は全く同じです。
ボーンの名前は大体どのアバターも同じなので、名前で判断して、まずは全体を示すアーマチュア(Armature)にアーマチュアを、腰(Hips)に腰を、背骨(Spine)に背骨を、胸(Chest)に胸を、首(Neck)に首を…と各パーツが対応するように入れ子にしていきます。なお髪の毛はアバターごとに違いますので、ボーンは入れ子にせず元々の頭ボーンの中に入っている状態にしておけば問題ありません(髪の毛は頭にだけ追従して入れば良いため。
まずは頭側のArmatureのを胴体側のArmatureの中に…
次は頭側のHipsを胴体側のHipsに…
という感じで、Headおよび左右の目のボーンまでを全て入れ子にしていってください。この時、手順通りに進めていた場合胴体側のアバターはまだプレハブが壊れていないので青字に、移植頭部側のボーンはすでにプレハブが壊れているので黒字になっていますから、どれをどこに入れるかの判断のヒントになると思います(青字のボーンの中に同名の黒字のボーンを入れていく感じになる。
仕上がりは以下のようになります。
なお一般的なhumanoid形式のアバターは以下のようなボーンの流れと名称になっていますので、入れるべきボーンを探す時の参考にしてください。大体の場合似たような名前が付けられているはずです。
全体(armature)
└腰(Hips)
├腹(Spine)
│ └胸(Chest)
│ ├首(Neck)
│ │ └頭(Head)
│ │ └両目(LeftEye/RightEye)
│ └肩(Shoulder)
│ └上腕(UpperArm)→下腕(LowArm)→手(Hand)
└膝上(UpperLeg)→膝下(LowLeg)→足(Foot)→つまさき(Toes)
ボーンの移植が全て終わったら、移植用の頭と髪の毛のパーツも胴体側のアバターの中に入れておきましょう。空っぽになった移植用のアバターは削除してください。
ボーンの操作の最後として、胴体側のもう使わない髪の毛のボーンを削除しておきます。髪の毛は形状ごとに全く違うボーンな上、頭のボーンのみに追従していればいいので入れ子の作業をする必要がなく、そのくせDynamic Bone等でアバターランクに影響を出しがちなのでさくっと削除します。
削除削除。
なおこの作業で胴体側のプレハブも壊れてしまうので、表示は全て黒字になってしまいます。
5:胴体側の頭部と髪を削除する前に、胴体側のマテリアルと移植した頭のマテリアルを合わせる作業を行います。
かなりめんどくさい作業です。
細かい肌色の違いを気にしない場合はやらなくても問題ありませんし、説明内容はU10ちゃん特化なので他のアバターの参考にはならないかもしれません。また、今後全U10ちゃんの肌色系マテリアルは最新のものにアップデートされていくので、最新状態にアップデート後のU10ちゃん同士、あるいは旧版同士を使った場合にも必要のない作業です(2019.12.06現在、素体ver.最新と新作のWinterRose同士はシェーダーにUTSを使用したマテリアル、それ以外同士はシェーダーにarktoonを使用したマテリアルになっているため、同じシェーダー同士の場合はこの作業は不要です。
まずは、胴体側に元々付いていた頭(Body)を選択し、inspectorのマテリアル2種の項目をそれぞれクリックすると割り当てられているマテリアルがプロジェクトタブ上で黄色にハイライトされて表示されるので、それをCtrl+Dで複製しておきます。場所はわかりやすいように別の場所にフォルダなど作って移動させておくと良いでしょう。
次に、移植した方の頭(Body)を選択し、同じように使われているマテリアル2種を探します。
見つけたマテリアルをクリックすると、inspectorタブに詳細が表示されます。
そして、それぞれMainTextuerの項目と、Emissionの項目に割り当てられているテクスチャを探してください。このテクスチャを、先ほど複製したマテリアルに当てていきます。ここでテクスチャの名前をメモしておくと次の作業が楽です。
メモを取ったら、先ほど複製したマテリアル2種の、BaseMapの場所にはMainTextuerの項目に割り当てられていたテクスチャを、Emissionの場所にはEmissonの項目に割り当てられていたテクスチャを当ててください。テクスチャを探して割りあてる際は、小さく表示されているサムネイルの隣の小さな◎を押すことで一覧が出てくるので、上部にある検索フォームにメモったテクスチャの名前の一部を入力すれば簡単に見つけられます。
出来上がったマテリアル2種を、それぞれ移植した頭部の該当箇所に割り当てていきます。U10ちゃんの場合は肌用と目用で分かれているので、元々配置されているマテリアルの名前を参考に同じように割り当ててください。
ぱっと見では違いがわからないと思いますが、シーンタブ上部にある☀︎ボタンをオフにしてみると、
元々の状態だと身体よりも顔が明るかったのが、
マテリアルを修正することで同じ明るさになったことがわかります!
…とはいえこのマテリアル修正は普通の明るさのワールドではそんなに気にならないような気もするのでまぁ気になるかたは頑張って、という程度の内容です。
なお胴体と顔の明るさの差は別の要因でも発生するので、細かいところが気になる場合はそっちも対策しないといけません(参考:光の当たり方を調整するTips【VRChat技術情報】https://jellyfish-qrage.hatenablog.com/entry/2018/08/06/160404 )
6:最後に、いよいよ仕上げを行います。
先ほどのマテリアル修正時に参照するために残したままにしていた胴体側の頭と髪を削除します。
削除すると、アバターに付けられているコンポーネント「VRC_Avater_Descriptor」の、リップシンクを設定する項目が迷子になってしまうので、これを再設定します。
移植した頭(Body)を、FaceMeshの項目にドラッグ&ドロップしてあげればOKです。
これでUnity上での作業は完了です!
完成したら、一番最初にやったように出来上がったアバターをプロジェクトタブの中にドラッグ&ドロップしてプレハブを作っておくと安心です。
7:あとはVRChatにアップロードして確認してね。
おつかれさまでした。おわり。
おまけ:Blenderを使って、ガチに別々のアバターの胴体と頭をくっ付ける方法。
これのメリットは、VRM化が可能になることです。動画を撮ってあるので必要な人は参考にしてみてね。