【cluster】VRM1.0で多脚アバターを作ろう!
どうも、カティアです。カタリナ・プロジェクト制作陣の多脚歩行に対する並々ならぬこだわりは何なんでしょうね。人型に生まれてよかった。
そんなわけでclusterでVRM1.0が実装され、VRM1.0を活用するハードルが大きく下がったので、VRM対応多脚歩行アバターを実装したいと思います。
◆人型骨格で人でないものを動かす🦙
私の活動を昔から知っている人がもしいれば、4年余り前のバーチャルマーケット4でボクセル多脚戦車を配布していたことを覚えているかもしれません。
この時のアバターはUnity標準のConstraintで人型骨格に合わせて四本及び六本の足を動かします。右足ボーンを動かすと右前脚と左後脚、左足ボーンを動かすと左前脚と右後脚、対角関係の足を同期させてトロット歩容を実現します。
ちなみにVRchatにconstraintが実装されたのはVket4直前で、それまではアバターランクVeryPoorほぼ確定かつ軸指定が仕事しない上Vketのシステムと干渉するため会場で動かないFixed Joint式が主流でした。納期半日前に全換装したのも今となってはいい思い出。出展者用下見ワールドで何故かFixed Jointが動いたのは今でも謎。
さて、clusterでもワールド作成でよくお世話になるConstraintですが、VRMには対応していませんでした。新規格であるVRM1.0には近しい仕様と思われるVRM constraintが新たに追加されているのに早くから目を付けていたのですが…一向にVRM1.0が普及しない。そして時は流れました。
◆義体ブランド「テトラ・クローバー」🍀
さて、clusterに一昨年リリースしたワールド「電脳都市トロットミュージアム」では四つの架空メーカーが登場しましたが……その一つ、テトラ・クローバーは元々、来たるべきVRM1.0に備えて生み出された多脚アバターブランドでした。
しかし時代はなかなか来なかった。そもそもVRM1.0のドキュメントが不十分で対応アプリも非常に少なく、作るのも動作テストするのも大変な上に用途が限られる有様でした。それだけに、今回のcluster実装は非常に大きな意味を持ちました。
◆具体的実装🔧
さて、思い出話ばかりしていてもつまらないかもなので具体的な実装の話をしましょうか。VRMは人型アバターの規格なのでHumanoidボーンをまず用意します。
今回のように完全に人型から外れた場合はウェイトをまとめてHipsに割り当ててもいいのですが、上半身人型などの場合は対応するボーンにウェイトを当ててください。
さて、多脚歩行する実際の足用のボーンも追加するのですが……ここで問題が。はい、VRM10RotationConstraintは軸指定できません。特にロボット系のアバターの場合、関節部があらぬ方向に曲がってはかっこ悪い。
そこで今回はサンプルアバターのseed-sanを参考に、比較的実装が容易な球体関節を採用しました。
四本の脚にVRM10RotationConstraintを追加し、Humanoidボーンに対して紐付けていきます。対応関係は以下のようになります。
右前脚・左後脚第一関節:rightUpperLeg
右前脚・左後脚第二関節:rightLowerLeg
左前脚・右後脚第一関節:leftUpperLeg
左前脚・右後脚第二関節:leftLowerLeg
六脚以上、あるいは各脚三軸以上の場合は手本になる機械や生物を参考にこれを拡張していきます。あまり人間の足っぽく動かないようにしつつ、そして移動速度に対して動きが少なすぎると歩いて見えないので、うまい塩梅を探しましょう。幸い多脚歩容は資料が探しやすい方です。
ちなみに最初のボーン図を拡大した方は気付いたかもしれませんが、Chestボーンの内側に小さなボーンが。これは車体上のカメラを旋回・仰角制御するためのものでRoll Constraintを使用しています。
はい、Roll Constraintは軸指定できます。こっちで多脚歩行が実装できないかも一応試したのですが足がバラバラになったので断念。
もう少し回転軸やConstraintに対する知見があるといいのですが…。
◆加速する身体拡張🦾
折角なのでVRoid Hubにもアップしました。DL可能にして配布も考えていたのですが、これくらいならだれでも作れそうなので参考出展ということで。欲しい人がいたらまた考えます。
実際問題、VRでの操作やcluster外での展開まで考えると多脚歩行は中々難しいアバターですが、VRM1.0に触れるいい機会なので色々試してみたいと思います。