見出し画像

Modular AvatarとVRCFuryを比べてみる

今回はいわゆる解説記事ではなく、私の感想を書き連ねるやつです。

共に非破壊改変ツールである Modular Avatar (MA)とVRCFury(VRCF)ですが、両方使ってみると結構というか全然別物だなと感じたので、どう違うのか、何が違うのかを考察してみます。
この記事で書いている内容はあくまで私の感想であって本当の設計思想とかは知りません。全ては私の感想と思い込みです。

VRCFuryとは?

この記事を読んでいる方にはVRCFuryを知らない方もいるかもしれません。というより、私の認識する限り日本のコミュニティでVRCFをがっつり使っている人はほぼいない気がします。私めっちゃ使ってます!という人がいたら教えてください。
公式サイトリンク↓

VRCFuryとは、Modular Avatarのように非破壊でアバター改変ができるツールです。主に海外コミュニティで使われているようで、MAと同じような機能もあれば、Furyにしかない機能もあります。

Fury固有の機能でおそらくもっとも有名な機能はSPS(Super Plug Shader)で、これはDPS、TPSの後継に当たる物です。SPSの大きな特徴は前述の二つと異なり既存のシェーダーにDPS機能を後付けする仕組みになっていることで、(だいたい)どんなシェーダーでも使えるようになっています。早い話liltoonがそのまま使えます。あなたが作ったカスタムシェーダーも多分使えます。それ以外にも色々機能があるようです。

他の機能としては、MA Merge Armatureに相当するArmature Link、MA Merge Animatorに相当するFull Controller、オンオフなどのトグルメニューを簡単に作れるToggle、AAOのAutomatically Freeze Blend Shapeに相当するBlendshape Optimizer、Write Defaultsのオンオフを自動で統一してくれるFix Write Defaults、Expression menuを操作するMove Menu Itemなど、本当にさまざまな機能を持っています。

MAとVRCFの違い

MAとVRCFはどう違うのか。一言で表すなら
MAはアバターモジュール化システム
VRCFはアバター改変便利ツールセット
です。

MAの目的はModular Avatarの名の通りアバター機能のモジュール化です。モジュールとはそれぞれに機能を持った、組みあわせ可能な部品のことです。
例えば、アバターの素体と服を分離する。ギミックを分離する。
分離するためには、それらを合体させる機能が必要ですよね?じゃあ、その機能を作りましょう。それがModular Avatarです。

一方VRCFuryは確かにMAと同等の服などを着せられる機能(Armature Link)やギミックをPrefab化できる機能(Full Controller)もありますが、SPSやGlobal Colliderをはじめとするモジュール化と関係ない便利機能も多数搭載しています。さらに、VRCFuryのコンポーネントを何か一つでもアバターにつけているだけで、勝手にさまざまな処理をしてくれます。
(勝手にする処理の一覧↓)

この”勝手にする”というところにVRCFuryの思想が表れている気がします。良くも悪くも、Furyは”勝手にいい感じにしてくれる”のです。

一方Modular Avatarはあくまでモジュール化のための仕組みなので、それぞれの機能ごとにコンポーネントがきちんと分離していて、余計なことはしません。ギミックを統合しようとする時など特にわかりやすいです。
例えば服の上着をオンオフするアニメーションを作りたいとします。これをMAで実現するためには以下の作業が必要です。

  1. オンオフそれぞれの状態に対応するAnimation Clipを作る

  2. パラメータを1つ作り、オンオフの状態を制御するAnimator Controllerを作る

  3. MA Merge Animatorを使ってControllerを統合する

  4. MA Parametersを使ってExpression Parametersで使いたいパラメータを設定する

  5. MA Menu Itemパラメータを制御するためのメニュー項目を作る

  6. MA Menu Installerを使って6.で作ったメニューをアバターのExpression Menuに統合する

ややこしいですね。これだけでMA⚪︎⚪︎コンポーネントを4種類も使う必要があります。なぜこんなにややこしいかというと、そもそもオンオフメニューを作るということ自体がややこしいからです。普通に作る場合でも、

  1. Animation Clipを作る

  2. Animator Controllerに状態遷移を作る

  3. Expression Parameterを設定する

  4. Expression Menuを作る

の4工程は必要です。MAは操作を楽にしてくれるわけではなく、単にそれをアバター本体から分離できるようにしてくれるだけです。

一方、VRCFuryで同じことをしたい場合どうなるか見てみましょう。

  1. VRCFury Toggleをつける

  2. メニュー項目を入れたいメニュー階層を指定する

  3. オンオフしたいオブジェクト(この場合は上着)を選ぶ

以上です。
実際に設定したものがこちらです。

VRCFury Toggle

VRCFuryではまさにこのような目的のためのToggleというコンポーネントがあるので、オンオフしたいやつはこれ!メニューの場所はここ!あとは頼んだ!でOKです。
もちろん内部的にはMAと同様にアニメーションクリップを作ってコントローラーも作ってパラメータも勝手に作ってメニューも作って、としてくれているわけですが、内部構造を知らなくても使えるようになっています。この辺が便利ツールと感じる所以です。

一応補足しておくと、Modular Avatarの機能ではありませんが、Avatar Menu Creatorのような他のNDMF対応のツールを使うことで、VRCFuryのように勝手にオンオフアニメーションを作るようなことはできます。
ここで言いたいのはMAはめんどくさい!ということではなく、それぞれ目指すところがそもそも違うということです。アバターをモジュール化するためのシステムなのに、アニメーションの中身まで勝手に作るのはおかしいですよね?それはそもそもMAの領分ではありません。

そして、VRCFuryが必ずしも便利とは限りません。
例えば、VRCFury Toggleの場合、細かく設定しようとすると途端にめんどくさくなります。

VRCFury Toggleのオプション

ParameterをSavedにしたいときはOptionsからSaved Between Worldsを追加します。
初期値をFalseではなくTrueにしたいときはOptionsからDefault Onを追加します。
Parameter名を自分で決めて、他のギミックと共有できるようにしたい場合はUse a Global Parameterを追加します。
メニューのアイコンを設定したいときはSet Custom Menu Iconを追加します。

はい、一気にごちゃごちゃしてきましたね。色々設定したい人は内部構造をわかっている場合が多いと思うので、そうであれば、最初から直接全部設定できるMAの方がわかりやすく使いやすいと感じるはずです。VRCFury Toggleの場合、この設定はつまり内部的にはアレのことかな…?と推測しないといけません。めんどくさいですね。

がっつりアニメーションを作るなら普通にControllerを自作した方がいいと思いますが、これをアバターに統合するFull Controllerも、やっぱりMAよりちょっと使いづらいです。
こちらもMAと違って「ギミックを合体する」という目的に対して1コンポーネントなので、MAでいうMerge Animator、Parameters、Menu Installerの機能がセットになっています。内部の仕組み的にはコントローラーを統合するのとパラメータを追加するのとメニュー項目を追加するのは別の機能ですが、Fury的には「要はギミックを合体するのが目的なんでしょ?」というところでしょうか。

VRCF Full Controller

また、VRCFuryの場合、Prefabは一般ユーザーが作るのではなく、一部のクリエイターが作って配布(ないし販売)するもので、Prefabはそれぞれが完全に独立してアバターに入れるだけで使えるもの、という前提があるように感じます。
その証拠に、一度Prefab化したオブジェクトでは、VRCFuryの設定はPrefab modeでしかできません。シーン上ではグレーアウトして、強制的にPrefabを開いてから編集させられます。この仕様はMAのようにPrefabを活用しようと思うとかなり不便に感じます。Prefab化はするけどアバターごとにInstance側でアバター依存の部分を編集するような使い方はできません。

Prefab InstanceでのVRCFury

FuryとMAの併用ってどうなの?

VRCFuryの話をするならこの話は避けて通れないので触れておきます。
そもそも、複数の非破壊改変ツールを併用するのは本質的に危険です。なぜなら、それぞれのツールが適切な順番で動かなければ容易にアバターを壊してしまうからです。
例えば、Avatar Optimizerには使われていないオブジェクトやシェイプキーを自動削除する機能があります。しかし、この機能が正しく動くためには他の非破壊ツールの動作が全て終わってからでないといけません。でないと、必要なものまで消してしまってアバターを破壊してしまいます。
そのような事故を防止するためには、この世の全ての非破壊ツール作者が他の全てのツールの実行タイミングを把握して順番をいい感じに調整するか、誰かがまとめて順番の整理役をするしかありません。
そこで、順番整理をしているのがNon-Destructive Modular Framework(NDMF)(読み:なでもふ)です。NDMFはMA作者のbd_さんが開発していて、NDMF対応のツールであれば、いいかんじに順番制御をしてくれます。Modular AvatarやAvatar Optimizer、VirtualLens2やましゅまろPBなど、非破壊で使えるツールはたくさんありますが、皆NDMF対応であれば上手いこと動いてくれるわけです。
ところでNDMFって名前がいいですよね。声に出して読みたい日本語。(日本語??)なでもふ。なでなでもふもふ。もふ……

さて、ではVRCFuryはどうかというと、VRCFuryはNDMFに対応していません。
なので正しい順番で動くことは保証されていません。
しかし、MA系統(NDMF)もVRCFも非常に有名で使用者が多いツールのため、お互いに気にしていないわけではなく、併用できるように対応はしてくれています。その歩調が合っていなかったりして紆余曲折ありましたが、ここ数ヶ月(今は2024年2月です)の複数のアップデートを経て、とりあえず今は多分併用してもちゃんと動くっぽいです。
ぽいというのは何もどちら側も100%の動作を保証しているわけでもなく、今後のアップデートで壊れない保証もないからです。
併用したいのであれば、その辺は理解して使う必要があります。

補足:ここではMA系統と言っていますが、実際に互換性が問題になったのは主にAvatarOptimizerの自動最適化機能です。不要なオブジェクトを削除したりする機能がFuryより先に動いてしまうとアバターの機能が壊れてしまいます。

とりあえずFuryの機能もいろいろ触っている私としては、今のところはあまり気にせず併用しても問題なさそうと判断しています。
が、壊れてても知りません……
もっとも、どちらも非破壊ツールなので、うまく動かなければどちらかの機能を外したりすれば問題ありません。回復不可能なことにはならないはずなので、気になった人は気軽に試してみたらいいんじゃないでしょうか。(適当)

まとめ

以上、適当に思ったことをつらつらと書いてみました。個人的にはFuryのToggleとか最高に便利でいい感じなので、何も心配せずどっちもいい感じにつかえる世界になってほしいなぁと思います。


参考になったら「スキ❤️」してくださると私が喜びます。
「フォロー」すると新しい記事の通知が受け取れます。
「気に入ったらサポート」すると私がとても喜びます。ありがとうございます。

VRChat関連の技術的な情報などを書いています。「スキ❤️」や「フォロー」していただくとモチベになります。「サポート」していただいたら私が美味しいものを食べます。