UnityでVRCのアバターをロリ化する方法
初めに
UnityでVRCのアバターをロリ化する方法について紹介する。
単純にscaleだけを変えて手足を短くすると、なんかぺらぺらになったり手がすっとんで行ったりして困るので色々工夫したことの覚書。
主にModular AvatarのScale Adjusterの機能を活用した。
このツールの便利なところは以下の二つ。
子ボーンに影響を与えずにサイズを変更できる。
例えばUpper Legのサイズを変更すると、それ以下の足の大きさが全部連動してしまい、太ももだけ太くしたい、などの変更ができない。このツールを使えばUpper Legだけ独立に調整ができてとても便利。
XYZのscaleの変更率が均一でなくてもうまくいく。
足を短くして太くしたい場合、X, Zは1.2倍、Yは0.7倍、みたいなことをしたいがこれをやると動かしたときに変なところが薄くなったり太くなったりして見た目がおかしくなる。このツールを使えば思った通りのScale比にできる。
注記
この方法はWorkshop DIGITALのオリジナル3Dモデル『Digi-el(デジエル)』で検証した。ほかのモデルでうまくいかなかったらすみません。
事前準備
諸々のバージョン
Unity: 2022.3.22f1
Modular Avatar: 1.10.5
Avatar Optimizer: 1.7.13
作業前にやること
アバターとそれに伴うシェーダーのインポート
アバターをHierarchyにドラッグアンドドロップ
Modular Avatarのインポート
Avatar Optimizerのインポート (表情改変用。ほかの方法で表情改変するなら不要)
作業開始
Step1 全体を小さくする
Hierarchyにあるアバターを選択し、Scaleを調整して小さくする。
XYZは同じ比率で変えたいので、Scaleの左にあるクリップのようなマークに斜め線が入っていないことを確認する。
もし斜め線が入っている場合はマークをクリックする。
サイズの目安としては今よりやや小さいくらい。
この値により胴体の長さが決まる。手足の長さや頭の大きさなどは後で変更するし、身長もこれより小さくなる。
後で気になるようならstep6の前に全体のサイズを調整できるので大体で良い。
Step2 胴体の調整
BlendShapesで胸を小さくする
体と服にもし胸の大きさを指定するBlendShapesがあれば一番小さい状態にしておく。(好みによる)
胸の揺れを抑える
いろいろサイズを変えるため、胸が揺れると服を貫通しやすくなるので固定しておく。以下の説明はたぶんアバターによるので違った場合は各自なんとかしてください。
Hierarchyのアバター下のArmature->Hip->Chest->Brest_root.L\R->Brest.L/Rに行く。
InspectorのVRC Phys Boneのチェックを外す。
胴体のX, Z軸の調整
胴体のX, Z軸、つまり横幅と厚さを調整する。
調整するAmatureはHips, Spine, Chest。
この3つを選択して、InspecterのAdd Componentのボタンを押す。検索のところにMAと入力し、一覧からMA Scale Adjusterを選択。
追加出来たらAdjust position of child objectsのチェックを外す。今後MA Scale Adjusterを追加するときは常に外す。
Scale Adjustmentの値、もしくはScene上でX,ZのScaleを調整する。今回はロリにしたいので、くびれを減らす方向でできる限り太らせるといい感じになる。
デジエルさんの場合、Hipsはややデカく、Spineはデカく、ChestはXだけややデカく、のイメージで調節した。
Step3 脚の調整
脚の長さを決める
まず初めに脚全体を短くして脚の長さを決める。太さは後で変更するので気にしなくてよい。
HierarchyのArmatureからUpper Legを左右両方選択し、InspectorのScaleを調整して小さくする。XYZは同じ比率。
ロリっぽくする長さの目安としては、腰のあたりで胴体と脚を分けて、4:6くらいがいいかも。好みとアバターによるので各自調節してください。
FBXの脚の長さを調節
FBXのArmatureにも脚の長さの変更を適用したいので、一旦ScaleのYの値をコピーしておく。
FBXファイルを選択する。多分Assetの下のアバターのフォルダのどこかにあると思うのでクリック。デジエルさんの場合は以下の場所にあった。
InspectorでRigを選択し、Configureをクリック
HierarchyのArmatureからUpper_Leg.Lを選択し、InspectorのScaleのY軸に先ほどコピーした値をペースト。Upper_Leg.Rにも同じことを行い、Transformの上のApplyを押す。Doneを押して戻る。
脚を太くする
太もも
Upper_Leg.LとUpper_Leg.Rを選択し、MA Scale Adjusterを追加する。Scale Adjustmentの値、もしくはScene上でX,ZのScaleを調整してちょっと太くする。
ひざ下
Lower_leg.L/Rの下を全部開いて、全部選択し、MA Scale Adjusterを追加する。選択したまま、Scale Adjustmentの値、もしくはScene上でXのScaleを調整して太くする。Zはまだ動かさない。(それぞれZ軸の向きが異なるため、一括で動かすと変になる。アバターにもよる?)
Lower_leg.Lのみを選択し、scale Adjustmentの値、もしくはScene上でZのScaleを調整して太くする。Lower_leg.Rにも同じことをする。
Step4 腕の調整
腕の長さを決める
脚と同じように、まず初めに腕全体を短くして腕の長さを決める。太さは後で変更するので気にしなくてよい。
HierarchyのArmatureからShoulderを左右両方選択し、InspectorのScaleを調整して小さくする。XYZは同じ比率。
FBXの腕の長さを調節
FBXのArmatureにも腕の長さの変更を適用したいので、一旦ScaleのYの値をコピーしておく。
脚のときと同じように、FBXのHierarchyのArmatureからShoulder.Lを選択し、InspectorのScaleのY軸に先ほどコピーした値をペースト。Shoulder.Rにも同じことを行い、Transformの上のApplyを押す。Doneを押して戻る。
腕を太くする
二の腕
Upper_Arm.LとUpper_Arm.Rを選択し、MA Scale Adjusterを追加する。Scale Adjustmentの値、もしくはScene上でX,ZのScaleを調整して太くする。
ひじ下
Lower_Arm.L/Rの下を全部開いて、全部選択し、MA Scale Adjusterを追加する。選択したまま、Scale Adjustmentの値、もしくはScene上でX,ZのScaleを調整してやや太くする。指の太さに注意しながら調節する。Zに比べてXは小さめのほうがいいかもしれない。
Step5 頭の調整
頭のサイズ調整
HierarchyのArmatureからHeadを選択し、InspectorのScaleを調整してロリっぽくする。X,Zを少しだけ大きくするとよいかも。
表情の調整
HierarchyからBodyを選択し、InspectorのSkinned Mesh Rendererの下のBlendShapesを調整してロリっぽくする。あとで固定するので、lipsyncと干渉しそうな変更は避けたほうがよい。
調整ができたら、Add ComponentからAAOと検索し、AAO Freeze BlendShapesを追加する。
AAO Freeze BlendShapesの下にBlendShapesの一覧が出るので、変更したものにチェックを入れて固定する。
Step6 高さとView Positionの調整
もし全体の大きさを最終調整したい場合はここで変える。Hierarchyからアバターを選択し、ScaleのXYZを同じ比率で変更する。
脚を短くしたことで体が浮いているので、アバター全体を下げる。Hierarchyからアバターを選択し、地面に脚がつくようにPositionのYを変更する。
アバターのInspector->VRC Avatar Descriptor->View->View Positionで目線の高さを調節する。
Y軸の値に{元の値×アバターのscaleのY軸+アバターのpositionのY軸}の値を入れる。今回の場合、アバターのpositionのY軸はマイナスになっているので、引くようなイメージになる。
FBXのHierarchyのArmatureのPositionのY軸を調整する。{アバターのpositionのY軸÷アバターのscaleのY軸}を入れる。
おわりに
以上。お疲れさまでした。
もしうまくいったら完成品を見たいので、良ければXの@Anchama_vrcにメンションください。