見出し画像

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の左にあるクリップのようなマークに斜め線が入っていないことを確認する。
もし斜め線が入っている場合はマークをクリックする。

pic1. 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。

pic2. Hips, Spine, Chestを調節

この3つを選択して、InspecterのAdd Componentのボタンを押す。検索のところにMAと入力し、一覧からMA Scale Adjusterを選択。

pic3. MA Scale Adjuster

追加出来たらAdjust position of child objectsのチェックを外す。今後MA Scale Adjusterを追加するときは常に外す。

pic4. Adjust position of child objectsのチェックを外す

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の下のアバターのフォルダのどこかにあると思うのでクリック。デジエルさんの場合は以下の場所にあった。

pic5. FBXファイル

InspectorでRigを選択し、Configureをクリック

pic6. Rig->Configure

HierarchyのArmatureからUpper_Leg.Lを選択し、InspectorのScaleのY軸に先ほどコピーした値をペースト。Upper_Leg.Rにも同じことを行い、Transformの上のApplyを押す。Doneを押して戻る。

pic7. 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軸の向きが異なるため、一括で動かすと変になる。アバターにもよる?)

pic8. Lower_leg.L下全部選択

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を追加する。

pic9. 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軸はマイナスになっているので、引くようなイメージになる。

pic10. View Position

FBXのHierarchyのArmatureのPositionのY軸を調整する。{アバターのpositionのY軸÷アバターのscaleのY軸}を入れる。

おわりに

以上。お疲れさまでした。
もしうまくいったら完成品を見たいので、良ければXの@Anchama_vrcにメンションください。


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