VRM0で人外パーツを作ってみる

本稿は [VR法人HIKKY Advent Calendar 2024](https://qiita.com/advent-calendar/2024/hikky) の 23日目の記事です。
昨日の記事は @tuchinikoman さんの「[ゲームやCGのための数学 2024](https://qiita.com/tsuchinokoman/items/072bf46c86fd3d4183af)」という記事でした。

本記事と同時に、@omacharos さんの 
[「【アバターメイカー】ロングヘア3Dモデル完成までの道のり」](https://qiita.com/omacharos/private/99a2637a2aad818b7a48)
という記事も投稿されていますので合わせてご覧下さい。

https://qiita.com/omacharos/private/99a2637a2aad818b7a48

## 注釈
本記事では便宜的に
- VRMの仕様に沿った人型のモデルを「通常」「通常パーツ」
- 上記に沿わない変則的なパーツを「人外」「人外パーツ」

と呼んでいます。

## 概要
今回作ったのはVRM0で動く
- 逆関節脚
- 多脚（くも足みたいなやつ）
- 蛇腹（ラミアみたいなやつ）
のパーツになります。


## はじめに
本記事は[AvatarMaker](https://avatarmaker.vket.com/edit/)というアバターメイキングサービスの制作に関わらせてもらう中で、いろいろなパーツパターンを検証したときの内容を記事にしたものになります。

どちらかというとモデリングツールでモデルを作ったことある人向けの記事になります。

ちなみにAvatarMakerでは誰でも簡単に、UnityやモデリングツールなしでVRChatやCluster、VketCloudなどのVRSNSで使えるハイクオリティなアバターを制作でき、VRM形式でダウンロードすることが可能です！

https://avatarmaker.vket.com/edit/

（近い将来VRChatへの直接アップロードやUnitypackageとしてのダウンロードが可能になります）

## VRMってなんぞ
VRMとは人型のアバターモデルを扱うときの共通規格で、国内外の様々なアプリやサービスが採用しています。

https://vrm.dev/vrm/vrm_about/

現在はVRM1がリリースされその開発が進んでいるのですが、まだ各アプリやサービスではVRM0がメインのところが多く、アバターメイカーでも現在はVRM0の仕様に対応しています。

## VRM0と人外パーツ

VRM1では「コンストレイント」という機能が実装されていて、「あるボーンAの動きと連動して別のボーンBを動かす」といったようなことが可能になっているのですが、VRM0ではこの機能は実装されていません。

なので基本的には人間の構造を超えた手足、例えば腕がいっぱいとか関節が変な方向に曲がるとかは作れません…

のでVRM0で再現できる範囲で人外パーツを試作してみました。

ただここに書いたような内容はおそらくVRM1の機能で対応できそうなのと、
本来はプラットフォームやアプリ側のプログラムで対応するものかと思います。
あまり役に立つかはわかりませんが何かの参考になれば幸いです。

## 逆関節編
通常のVRMで通常の足を作成すると足はアバター左側面から見た場合、膝の関節が「く」の字に曲がります。
この関節が逆「く」の字になっている2パターンを試します

#### ロボ系の逆関節
![2024-12-16 00-57-46.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391719/9a9b5483-d575-0e78-472c-d7b299d880e6.gif)

これは一番シンプルな方法で、逆関節に当たる部分にFootのウェイトを塗ることで
LowerLegが曲がった時に
1. Footが下を向くと関節が伸びる
1. Footが上に上がると関節がさらに曲がる

ような動きになります

| ウェイト | 1 | 2 |
-- | -- | --
| ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391719/7f95f9a0-892d-c601-398e-fb7e2cb2bdc3.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391719/b491246c-22bf-d089-b811-ea44e52ef72c.png)| ![スクリーンショット 2024-12-15 222214.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391719/bea702b3-77eb-666a-0244-c1837b516473.png) |

（ただ2の時はもも部分がかなり痩せて見えます）

#### ケモノ系の逆関節
これも上記の応用で、逆関節に当たる部分にFootのウェイトを付けると同じような動きができます

![kemono_gyakukan (2) (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391719/30cee407-3e1f-f204-c58e-791778411a01.gif)

| ウェイト | 1 | 2 |
-- | -- | --
| ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391719/52d5ad76-b0ba-66b0-4b01-a39d5c2cb3d9.png) |  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391719/fae51943-307c-3b91-5657-62a44b9d95c3.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391719/55349750-54b1-6051-43e5-e8df1bd66852.png) |

## 多脚編
四足歩行の場合は、左右の前後の脚は同時に動けばよいのですが、くも足っぽい多脚では前後の足を交互に動かす必要があります。
そこでここでは、後ろ脚に前足と逆の骨のUpperLegのウェイトを付けて動かして交互の動きを作っています
（くもの足は本来左右合わせて8本ですが今回は調整が大変そうなので4本で制作しました。ゆるして）

![2024-12-16 01-14-51.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391719/e2651c6a-cbd3-2d2c-13db-bbb2bc29e413.gif)

| ウェイト | |
-- | -- 
| ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391719/2bb9ec7f-4ad5-a509-603c-921e82cae275.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391719/99b50f23-715a-9eb7-d30a-e5a20d3fa95e.png) |

脚が8本の場合はおそらく
1. 中央の足を最前列の足の左右逆のUpperLegのウェイトをつける
1. 最後尾の足に最前列の足と同じUpperLegのウェイトをつける

でクモっぽい歩きにできるかと思います
ウェイトを付けるUpperLegを左右交互にしていけば、ムカデ足なども可能になるかもですが距離が離れるほどメッシュがボーンより大きく動くようになるので8本ぐらいが限界になりそうです。

## 蛇腹編（おまけ）
これはとくに変なことをする必要はなく単純に揺れ物設定をするだけなんですがおまけで記述します。
脚のメッシュを通常通り作らずに、揺れ物パーツとして尻尾を作る時のように作成すればできます。

![2024-12-20 05-26-13.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391719/5efa0ae2-8196-f258-6a2b-953e3474159e.gif)


これは取り急ぎ作ったのでカクカクですがメッシュとウェイト、VRM Spring Boneの値を調整すれば滑らかな蛇腹が作れます。

## 最後に
コミュニケーションの取りやすさなど、諸般の事情で人型におちつきがちなVRアバターですが、せっかくのバーチャルなので今後もいろんな形態や可能性を試していきたいです！

目指せ脱人類。

~~誰か人外アバターメイカー作りたい人いますか。いたら連絡ください~~

明日は@hikky_kohchiさんの [コンテンツ開発ディレクターの資格試験勉強について](https://qiita.com/hikky_kohchi/items/4bfb10abf99ac03259e9) になります。お楽しみに！