見出し画像

Unityのみで非対応衣装を着せる方法

VRChatで何かと話題になりがちなアバターの改変。
昨今はアバターや対応衣装の選択肢が徐々に増えていますが、愛用しているアバターの対応衣装が少ないことに悩まれている方も多いと思います。
そこで注目されるのがいわゆる非対応改変ですが、多くの場合はBlender等を用いてアバターの素体に衣装をフィットさせる作業が必要になります。
当記事ではBlenderが全く扱えない方に向けてUnityのみで非対応衣装を着せる方法について解説したいと思います。


はじめに

記事のタイトルは非対応衣装を着せる方法となっていますが完璧に着せられるケースは少ないです。多少の貫通や破綻は発生すると思いますので予めご了承ください。
また今回の解説は対応衣装を用いた改変がすでに可能であることを前提としていますので、その点も踏まえてお読みいただけると幸いです。


手順① 改変に必要なアセットを用意する

図A

まずは普段の改変と同様、必要なものをUnityにインポートします。
今回は解説しやすくするために狛乃にマヌカの服を着せます。衣装側にアバター用の設定が使われている以外は単なる非対応衣装と同じ作業になりますのでご安心ください。

図B

必要なものが揃ったらアバターと衣装のPrefabをHierarcyに入れましょう。
以後Hierarcy内を往復することが多いので、図Bのように予め右クリック > Prefab > Unpack Completelyをやっておくとラクです。

手順② サイズを合わせる

図C

次に素体と衣装のサイズを合わせます。
あとで微調整するのでここでは大まかに合わせるだけで大丈夫です。
衣装にもよりますが、まずは肩や腕を基準にサイズを合わせるのがオススメです。
なるべく衣装のデザインを崩したくない場合、前後左右(X軸・Z軸)のサイズを元の数値の比率を保ちながら調整すると良いでしょう。


手順③ ボーンを追従させる

図D

まずはHierarcy上の衣装をアバターの直下に移動させます。
続いて図Dのように衣装側のボーンをアバター側に移植し、追従させていきます。

手作業でのボーンの移植

Modular Avatarをはじめ自動的に着せ替えをおこなってくれるツールは予期せぬトラブルの原因となるため使いません。
ですので今回は手動でボーンを移植する方法についてもご紹介します。

ボーンとは素体や衣装の骨にあたる部分です。
ボーンを動かすことで手足などの動きを作り出しています。
このボーンの構造についてですが、同じ人型アバターであれば尻尾やアクセサリーなど細かな点以外はほぼ同じ構造をしていると思ってください。
中には肘やお尻など補助的にボーンが設定されているものがありますが特に問題ありません。

図E
図F

図EはUpperLeg_Lのボーンを移動させる前、図Fは移動させた後の図です。
ボーンはアバター側のボーン直下に衣装側のボーンを移動させることで追従します。
同じ役割のボーンを追従させることでアバターが衣装を着ているように見せるという仕組みですね。

図G

どの部位に相当するかわからないボーンがある場合は座標をずらして確認してみましょう。ずらしたボーンはキーボードのCtrl + Zを押すことで元に戻せます。

実際にボーンを移植しよう

図H

先程の説明にしたがってボーンを移植したものが図Hです。
ボーンは移植するとアバター側のボーンの座標に合わせて少しだけずれてしまうので、後述する手順④の前に移植するようにしましょう。
左右のShoulder・UpperLegのボーンは後で微調整しながら移植するのでこの段階ではそれ以下のボーンには触れません。


手順④ ボーンの大きさと位置を調整する

ここが最も重要な作業になります。
時間がかかる部分でもあるので地道にやりましょう。

図I

ボーンは位置をずらすだけでなくスケールを変えることでその部分の大きさも変えることができます。
図I
はShoulderのボーンを大きくした図となります。
これから図G図Iの操作を応用してアバターの体型に衣装を合わせていきます。

図J
図K

Hip・Spine・Chest・Neck・Headのボーンをアバターに合わせました。
ボーンの大きさを変えるだけでは完全にフィットさせることが難しいのでアバターに用意されているシェイプキーを利用します。

Mesh Deleter With Textureを活用する

先程のようにうまくいけば楽ですが、ボーンのスケールやシェイプキーを変えるだけでは素体の貫通が防げない場合があります。
この場合はMesh Deleter With Textureというツールが有用です。
下記のリンク先からダウンロードできます。

その名の通りメッシュと呼ばれる素体や衣装のパーツを直感的に範囲指定して消すことができるツールとなっています。
消した部分は完全に削除されてしまいますが、服で隠れてしまう部分は消しても見た目に影響がないので貫通に困った場合は活用しましょう。

手足のボーン調整

先程とやる事は変わりませんが、手足は特に動きが多い部分なのでより細かい調整が必要です。

図L
図M
図N

UpperLegを調整してからLowerLegを移植し、LowerLegを調整といったように順番に合わせていくと上手くいきやすいです。

図O

手足のボーンは左右に分かれていますが調整済みの数値をコピーし、反対側のボーンに貼り付けることで左右対称となります。
衣装によっては数値に-(マイナス)を付け加える必要があるので、座標がおかしいと感じた場合は試してみましょう。

アバター側には無いボーン

非対応衣装に限らず、衣装にはアバター側に存在しないボーンが設定されている場合があります。
これらは格納されているボーン内に放置しても問題ありませんが、後述する手順⑤が必要な場合があります。


図P

調整が終わりました。
アバターや衣装のつくりによって難易度が変わるのでご自身での試行錯誤が必要です。


手順⑤ PhysBone Colliderの調整

図Pは衣装を着ているように見えますが、まだ完成ではありません。

図Q
図R

画面上部にある再生ボタンを押して揺れなどを確認すると髪が不自然に浮くなどといったケースが発生します。
これはボーンを調整した際にPhysBone Colliderも一緒に位置をずらされたり、サイズが変わっているためです。
こういった状態を改善するためにはPhysBone Colliderの大きさだけを変える必要があります。

図S

図SはUpperLegに設定されているColliderの例です。
衣装によってColliderが設定されている部分や数は異なります。
画面右側にあるRadiusがColliderの大きさ、Positionが座標の設定項目となっているのでボーン同様アバターに合わせて調整します。
調整後は図Q図Rのように再生ボタンから確認しましょう。

単なる非対応衣装であればこの時点で普段と同じようにアップロードすることが可能です。

図T

今回のようにあるアバターの服を別のアバターに着せる場合、図Tのように衣装側にアバターとしての設定が残っているとアップロードができません。
ですのでHierarcyから衣装側のアバターを選択し、画面右側のPipeline ManagerVRC Avatar DescriptorをRemove Componentで削除してしまいましょう。



完成です。


おわりに

いかがだったでしょうか?
わかりにくい部分も多々あると思いますが、この記事が少しでもお役に立てたら幸いです。
ご不明な点や個別のご相談などございましたら筆者のX(旧Twitter)までご連絡ください。

↓↓↓筆者のX(旧Twitter)はコチラ↓↓↓


この記事が気に入ったらサポートをしてみませんか?