悪のアバター研究室 Vol.4-ギミックをModular Avatarに対応-
記録日:
2023年12月13日 今回は最終的に頒布を目的としたアバター製作者やアバター用アクセサリー製作者に向けた記事となります。
はじめまして、「内儀・似非」です。あなたたちと同じくらい、たくさん居る怪人です。
ヴァリアールの理念、それはこの仮想世界を我らのような異形・怪人・悪の姿を持つ者達が堂々と闊歩する場所に造り替える事にある。そこでこの「悪のアバター研究室」シリーズでは、異形・怪人の姿を持ちたい、眠れる同志諸君に対しての助力を試みるものである。
◆第四回はMAでギミック共有!!◆
Avatars3.0も次々と機能が増え、改変に便利な外部ツールも充実し、理論上は多種多様な機構構造を生み出せる状況です。ゼロからギミックを開発するのはもちろん、せっかく手の込んだ構造を編み出しても他者に共有するのは、配布者も利用者もお互いにとって難易度が高いものです。
そこで今回は改変ツールのひとつ、Modular Avatarを使って「EXメニューで操作するギミック付きの、アバターの手に持たせるアイテムをプレハブ化するまで」の非公式解説をしていきます。
今回はEXメニューによってギミックを作動させる方法そのものは解説しません。既にそういったギミックを作れる人向けの話になります。
手に持つギミック付きのアイテムとして、今回は光って音が鳴るヴァリアライザーを例に進めて行きます。
Modular Avatarを使用しないでギミック付きアイテムを導入しようとする場合には、各アバターごとに異なるHumanoidボーン名称を元にアニメーションパスを書き換える作業や、EXメニューの再設定が必要ですが、Modular Avatarを使用するのであれば、アイテムの座標を手に沿えるだけで導入作業が完了します。
▼ヴァリアライザーは手元の本体と足元のエフェクターの2つに分かれていて、それぞれのギミック導入を各種MAコンポーネントで一纏めに自動処理させている。
◆必要な環境◆
VCC(Creator Companion)によるプロジェクト管理を行っている前提で、Modular Avatarを設定したいアイテムのプロジェクトに、以下の3つがインポートされていることを確認してください。
(1)VRCSDK3(Avatars3.0用)
(3)Gesture Manager(VCCのManage Projectによって導入できます)
また、アイテムとギミックがアバターに問題なく設定でき、アップロード可能か確認するために、Avatars3.0で設定されたアバターのデータがプロジェクト内にあるとより良いです。
◆オブジェクトの構成◆
Modular AvatarのMA Bone Proxyを用いることで、prefab化したアイテムをprefab化解除することなく、アップロード時のみprefab内の子にあたるオブジェクトをHandボーンなどの子に再配置する事が可能になります。
そのため、Root階層の足元や両手両足など複数個所に配置の必要がある場合には、1つのPrefabとして纏める為に親となるEmptyを用意し、その子として様々なオブジェクトを追加していきます。
その際に、Humanoidボーンのどこかの子に配置したいものそれぞれにBone Proxyを設定します。
Bone Proxyの付けられたオブジェクトは、PrefabをUnpackせずともアップロード時に対象のボーンの子に移動します。アイテムのユーザーは大本のPrefabをアバターのRoot階層に置いた後、各パーツの位置・座標を手に重ねるだけでアップロードの準備が完了します。
▼ヴァリアライザーは手に重ねる様に配置すればOK
なお、ケモ耳など特定のアバター固有のボーンに対してもBone Proxyの詳細設定から事前指定が可能です。一度アバターのRoot階層に置くことでボーンのSub path設定がし易くなります。
Unpack Prefabを行わないメリットとしてはデータの更新が容易になる、改変後にオリジナルの状態に戻し易くなるといったメリットがあります。
◆アニメーションの設定◆
ライターの火を点ける、背中の翼が展開する、足の爪が展開するといった「アバターの各種Humanoidボーンの子で機能するアニメーション」を設定する場合、MA Bone Proxyを用いるとボーン名の一致しないアバターではアニメーションのパスが切れることがあります。
これはConstraintとその対象をMA Bone Proxyコンポーネントで付ける構造を用いれば設定が楽になりますが、今回はモバイル環境や動作の軽量化を想定してConstraintを使用せず進めます。
まずBone Proxyを設定する階層にAnimatorを設定し、中のAnimationはその階層をRootとしてMissingが出ずに機能するよう設定されている必要があります。
Animatorのステート設定は基本的には一般的なアバターギミックと同じ構造で構いませんが、手や胴体など複数パーツにBone Proxyを設定する様な場合には、それぞれに分かれたAnimatorとAnimationが必要です。同じ条件で同期させる場合にはアニメーションの長さやステート設定は一致させる必要があります。
なお、元々何らかのアバターに付けていたギミックをBone Proxyで付ける構造にして設定し直す場合、Humanoidボーンの分だけパスを削除する様な、アニメーションパスの書き換え作業が発生します。オブジェクト名をクリックしてF2キーでパスを編集するか、何らかの書き換えツールを用いるか、あるいはメモ帳でAnimatorを開いて置換ツールでアニメーションパスを書き換えてください。
▼Animatorを設定したオブジェクトをクリックして、中のAnimationを確認した際にMissing状態となっていると黄色く表示される
▼比較用 同様にmissingの無い場合だとこのような表示となる
AnimatorとAnimation設定が済んだら、Bone ProxyやAnimatorを付けた階層にMA Merge Animatorコンポーネントを設定します。
▼この3点のコンポーネントがあれば制作中の段階でもギミック開発を進め易くなります。
パスモードは「相対的」とします。これを用いることで、ボーン名の異なる様々なアバターに対しても自動でアニメーションパスを書き換えて、アバター本体のAnimatorに統合してくれます。
※Humanoidボーンそのものを利用してダンスの様に動かすアニメーションの場合、絶対的パスモードを利用する必要があります。相対的パスモードと併用する場合はそれぞれにMA Merge Animatorコンポーネントを設定します。
まだギミック用アニメーションの調整を終えていない、これから作るなどの場合には「付属animatorを削除」にチェックを入れたままにする事で、ここまでで調整してきたAnimatorコンポーネントを付けたままに出来ます。最終的には手作業でAnimatorコンポーネントを削除しておくことを推奨します。
▼配布先のユーザーが利用する時はMA Merge AnimatorコンポーネントがあればAnimatorコンポーネントは必要ないが、アニメーションの編集がし辛くなります。逆にいえば、アニメーションを壊しにくいといえます。
◆EXメニュー&EXパラメーターの設定◆
アニメーションギミックを操作するExpressions Parameter設定と、必要であればExpressions Menuの追加を進めます。
MAを使用しない場合にはこれらは改変対象のアバターのEXメニューやパラメーター設定を修正する作業が入りましたが、MAを用いることでそれを自動かつアップロード時のみ加えてくれます。
アイテム内にEmptyを追加し、MA Parametersコンポーネントを設定します。ギミックで使用するParameterをすべて列挙し、用途に応じてプレハブ開発者向けの詳細設定を進めます。
▼「保存する」「同期する」の項目はContactやPBからのパラメーターではチェックは不要である。
更にEmpty内に、MA Menu GroupコンポーネントとMA Menu Installerコンポーネントの2つを設定します。これを用いることで、EXメニューをオブジェクトの親子構造として管理が可能となり、更に改変元アバターのEXメニューに手を加えることなく追加が可能となります。
基本的には「メニューアイテムを追加」ボタンをクリックし、最初に生成されたNew itemのタイプをSub Menuに変更し、その中でギミック操作用のボタンを増やしていくのを推奨します。またサブメニューの引用元を「子オブジェクトから生成」とする事でメニューボタンの編集をHierarchy内で完結させることが出来ます。
今回はMA Parametersコンポーネントを同じオブジェクトに設定したため、各ボタンのMA Menu Item設定内にあるパラメーター名の右横の▼からパラメーター名を取る事が可能になります。何らかの理由で設定しない場合はそのまま必要な名称を記入してください。
ここまで終えたらアイテムの親をProjectビューへドラッグ&ドロップしてprefab化すれば配布が可能です。
ProjectビューのそのPrefabを選択した状態で、Unity上部からAssets→Export Packageで書き出しが出来ます。
▼シェーダーやアバターなど不要なデータを同梱しないよう注意しましょう。
まったく問題が無ければ、ここで完成でも良いです。
◆アイテムの導入テスト◆
Gesture Managerが導入されていれば、ギミックの動作が問題なく出来るか確認が可能です。
Unity上部からTools→Gesture Manager EmulatorでクリックしてHierarchyにGestureManagerを追加します。
Hierarchy上で確認したいアバター1体のみが表示されている状態で、Hierarchy上のGestureManagerを選択し、Enter Play-Modeをクリックします。
▼追加ギミック用のメニューが追加されていれば成功です。そのまま各ボタンを使用すればギミックの動作テストも可能。
▼Tools内のPose Avatarを用いることでアバターのボーンを動かすことが可能になります。ポーズを変更してギミックを見やすくする、紹介用のスクリーンショットを撮影する、Contact等でギミックを動作させるためのポーズを確認するなどに便利だ。
◆おわり◆
今回紹介した方法は他ユーザーへのアイテム配布を想定した内容となっているが、別に自分だけが使用するアイテムであっても、複数アバターに渡って使用する想定であるなら充分に時間短縮として有用です。ぜひ活用してみてください。
また、アイテムをオンオフするツールで設定したボタンを、更に別のアイテムのAnimatorに組み込んだAvatar Parameter Driverを使用してパラメーターを変動させる、といった方法も演出上利用できると思われます。
例えば、ヴァリアライザーは変身中のステートでAvatar Parameter Driverを使って衣装のオンオフ用のパラメーターを変更する事で、パーティクルやサウンド演出に各種アイテムの表示/非表示を同期させる事が可能です。
今回の記事は、結社内で筆者が口頭で伝えていた話を振り返るために1つの記事として纏めたものであるが、この記事がアイテム制作の役に立つのならとてもうれしい。これからも沢山のアイテムが生まれるのを楽しみにしています。