見出し画像

【cluster】VRM1.0で多脚アバターを作ろう!

多脚歩行型、航空型をはじめ非人間型に強い特殊なアバターボットメーカー。ラインナップは主に特殊作業用、哨戒用など業務用だが、アイデンティティとして特異な姿を望む個人顧客も一定数存在する。
近年では、電脳空間で利用されるサイバークラフトの設計にも進出している。

-サンドボイジャー登場組織資料「テトラ・クローバー」

どうも、カティアです。カタリナ・プロジェクト制作陣の多脚歩行に対する並々ならぬこだわりは何なんでしょうね。人型に生まれてよかった。

そんなわけでclusterでVRM1.0が実装され、VRM1.0を活用するハードルが大きく下がったので、VRM対応多脚歩行アバターを実装したいと思います。


◆人型骨格で人でないものを動かす🦙

バーチャルマーケット4で配布したヴェカード号。エスペラント語で「目覚め」

私の活動を昔から知っている人がもしいれば、4年余り前のバーチャルマーケット4でボクセル多脚戦車を配布していたことを覚えているかもしれません。

この時のアバターはUnity標準のConstraintで人型骨格に合わせて四本及び六本の足を動かします。右足ボーンを動かすと右前脚と左後脚、左足ボーンを動かすと左前脚と右後脚、対角関係の足を同期させてトロット歩容を実現します。
ちなみにVRchatにconstraintが実装されたのはVket4直前で、それまではアバターランクVeryPoorほぼ確定かつ軸指定が仕事しないVketのシステムと干渉するため会場で動かないFixed Joint式が主流でした。納期半日前に全換装したのも今となってはいい思い出。出展者用下見ワールドで何故かFixed Jointが動いたのは今でも謎。

試作機。ボストン・ダイナミクスのSpotみがある。

さて、clusterでもワールド作成でよくお世話になるConstraintですが、VRMには対応していませんでした。新規格であるVRM1.0には近しい仕様と思われるVRM constraintが新たに追加されているのに早くから目を付けていたのですが…一向にVRM1.0が普及しない。そして時は流れました。

◆義体ブランド「テトラ・クローバー」🍀

トロットミュージアムの静態展示。よく見ると「義体」の表記が。

さて、clusterに一昨年リリースしたワールド「電脳都市トロットミュージアム」では四つの架空メーカーが登場しましたが……その一つ、テトラ・クローバーは元々、来たるべきVRM1.0に備えて生み出された多脚アバターブランドでした。

旧モデル時代に工房で撮影した一枚。赤丸で囲ったオブジェが初稿時代のテトラ社ロボ。

しかし時代はなかなか来なかった。そもそもVRM1.0のドキュメントが不十分で対応アプリも非常に少なく、作るのも動作テストするのも大変な上に用途が限られる有様でした。それだけに、今回のcluster実装は非常に大きな意味を持ちました。

◆具体的実装🔧

サワービー号のボーン図。

さて、思い出話ばかりしていてもつまらないかもなので具体的な実装の話をしましょうか。VRMは人型アバターの規格なのでHumanoidボーンをまず用意します。
今回のように完全に人型から外れた場合はウェイトをまとめてHipsに割り当ててもいいのですが、上半身人型などの場合は対応するボーンにウェイトを当ててください。

驚きのシンプルさ

さて、多脚歩行する実際の足用のボーンも追加するのですが……ここで問題が。はい、VRM10RotationConstraintは軸指定できません。特にロボット系のアバターの場合、関節部があらぬ方向に曲がってはかっこ悪い。
そこで今回はサンプルアバターのseed-sanを参考に、比較的実装が容易な球体関節を採用しました。

Unity上でのリグ設定画面

四本の脚にVRM10RotationConstraintを追加し、Humanoidボーンに対して紐付けていきます。対応関係は以下のようになります。

  • 右前脚・左後脚第一関節:rightUpperLeg

  • 右前脚・左後脚第二関節:rightLowerLeg

  • 左前脚・右後脚第一関節:leftUpperLeg

  • 左前脚・右後脚第二関節:leftLowerLeg

六脚以上、あるいは各脚三軸以上の場合は手本になる機械や生物を参考にこれを拡張していきます。あまり人間の足っぽく動かないようにしつつ、そして移動速度に対して動きが少なすぎると歩いて見えないので、うまい塩梅を探しましょう。幸い多脚歩容は資料が探しやすい方です。

ちなみに最初のボーン図を拡大した方は気付いたかもしれませんが、Chestボーンの内側に小さなボーンが。これは車体上のカメラを旋回・仰角制御するためのものでRoll Constraintを使用しています。

はい、Roll Constraintは軸指定できます。こっちで多脚歩行が実装できないかも一応試したのですが足がバラバラになったので断念。
もう少し回転軸やConstraintに対する知見があるといいのですが…。

◆加速する身体拡張🦾

折角なのでVRoid Hubにもアップしました。DL可能にして配布も考えていたのですが、これくらいならだれでも作れそうなので参考出展ということで。欲しい人がいたらまた考えます。

実はアイコンに合わせてボディカラーが変わる仕様。

実際問題、VRでの操作やcluster外での展開まで考えると多脚歩行は中々難しいアバターですが、VRM1.0に触れるいい機会なので色々試してみたいと思います。