LoginSignup
0
0

【VRChat】 boothで買ったアニメーション付きのアクセサリーを自分のアバターに反映する方法

Last updated at Posted at 2023-11-25

前段

boothで買ったギミック付きのアクセサリーなどがいざ自分のプロジェクトにインポートしても、うまく動作しない場合が往々としてあります。
調べてもその内容に特化した記事がなかったので、備忘録も兼ねてその場合の対応と導入手順を記載しておきます。

この記事で分かること

  • アバターに仕込んだオブジェクトの出し入れの方法
  • Animationの割り当て方法
  • Expression Menuのデバッグ方法
  • Animation処理が実行される条件の変更方法
  • Gestureギミックの修正方法

前提条件

・Unityを使ってアバターをサーバーにアップロードできる人
・基礎的なアバター改変(手順書に沿ってオブジェクトの位置の調整したり基本的なUnity操作)ができる人

使うpackage

Tabaco and Lighter - 誰でも使えるタバコとライター (PB)
VRC Avatar Parameters Integration 0.3.0
VRCAvatarFXControllerIntegration
AnimationValidator

これらのPackageをダウンロードしてインストールしておきます。タバコとライターは説明用なので、適宜使いたいオブジェクトに置き換えて下さい。

手順

1. オブジェクトの位置調整

1-1. タバコとライターのオブジェクトのprefabをDrag & Dropして、自分の手の位置に適宜調整します。

この時、ライターは手のArmature(ボーン)、タバコは人差し指のArmatureに入れるようにします。
Armatureに入れないとオブジェクトは体の動きに追従してくれません。

image.png

image.png

World Constraintを右の人差し指に入れる。World Constraintはタバコを吸った後に煙を発生させるためのものです。
Constraint Settingsに人差し指のボーンを指定しておきます。
これによって煙の発生源を人差し指のボーンにすることができます。

image.png

2. オブジェクトの取り出し、収納

タバコとライターを常に手に握りしめておきたい人はそんなにいないと思います。
なので、必要な時だけオブジェクトを表示できるようにします。

2-1. アバターの最上位の親オブジェクトを選択し、InspecterからVRC Avatar DescriptorのExpressionのparameterファイルを確認します。

booth等で買ったアバターなら大抵設定済みのParameterファイルがあると思います。
ここでは既にParameterファイルが指定されているかだけ確認して下さい。

image.png

2-2. Parametersの追加

VRC Avatar Parameters Integration 0.3.0を使います。
このツールを使うと、boothで買ったオブジェクトが既にParameter設定済みの場合、自分のアバターのParameterと統合することができます。
自分で手作業でParameterを追加したり、統合する必要がなくなります。

Unity メニューの「TearRain > VRCAvatarParametersIntegration」をクリックします。

image.png

結合先(マスター)のParametersファイルと対象(追加したいParameterが入っている方)のParametersファイルを指定して、結合対象のパラメータに追加したいParameterがチェックされていることを確認して、「結合する」ボタンをクリックします。

image.png

2-1と同様の操作をして、自分のParametersに対象のParameterが追加されているかどうかを確認します。

image.png

2-3. ExpressionのMenuの設定

ここでタバコとライターを出し入れするためのメニューコマンドを追加します。
ExpressionのMenu追加は手動で行います。
ExpressionのMenuをクリックします。

image.png

Add Controlをクリックします。
image.png

ここでMenuのMenuを作成します。(SubMenu)
理由は一つのMenuに8つまでしか登録ができないので調子に乗って色々と追加していくとすぐにいっぱいになってしまうからです。
自アバター以外のMenuを作成する場合は新たにSubMenuを作成する方が、内蔵のMenuと追加Menuが区別しやすくて良いと思います。

Nameは任意の名前を設定します。
Iconは選択しなくても問題ないです。
TypeはSubMenuを選択します。
Parameterは入力不要です。
Sub MenuでMenuファイルを指定する必要があります。

image.png

ここからSubMenuファイルを作成していきます。
SubMenuファイルを作成する前に、自分の作業が分かるようにAssets配下に任意の名前のフォルダを作成します。ここでは「MyWork」としています。

image.png

「MyWork」フォルダ内で右クリックして、Create > VRChat > Avatars > Expressions Menu を選択してExpressions Menuファイルを作成します。

image.png

ファイル名を分かりやすい名前に変更して、Add Controlボタンをクリックします。

image.png

MenuのNameを入力します。
Iconは選択しなくても問題ないです。
TypeはToggleを選択します。
Parameterは2-2で追加したパラメータを割り当てます。
メニューを操作することで、設定したパラメータの値を操作するイメージです。

image.png

作成できたら元のMenu画面からSub Menuを割り当てます。
image.png

これでMenuの設定は完了です。
image.png

2-4. Controllerの統合

このタバコとライターはControllerの設定が既に設定されているので、既存のControllerとの統合を行います。
アバターの親オブジェクトを指定して、FXファイルをクリックします。

image.png

デフォルトのFXレイヤーが表示されます。ここにタバコとライターのLayerを追加していきます。

image.png

VRCAvatarFXControllerIntegrationを使います。
2-2のVRC Avatar Parameters Integration 0.3.0のController版です。
Unity メニューの「TearRain > VRCAvatarFXControllerIntegration」をクリックします。
image.png

Paramaterの時と同様に結合するControllerと対象のControllerを指定して、「結合する」をクリックします。
image.png

Layerが追加されていることを確認します。
image.png

2-5. Animationの統合

タバコとライターのアニメーションをアバターの親オブジェクトにDrag & Dropします。

image.png

Animationsウィンドウを開くとAnimationが追加されているのが確認できます。

image.png

任意のAnimationを開くと、Animationのオブジェクトが黄色文字になってMissing!と表示されているオブジェクトがあると思います。

image.png

これはHierarchy上でのオブジェクトの階層が元々のtabacoオブジェクトのAnimationを登録した時の階層と異なることが原因です。
このままだと火をつけるギミックやキャップが動かなかったりします。
解決方法としては今のタバコの入っている階層と同じ階層に再度Animationを登録し直す必要があります。
いちいち手動で割り当てしなおすのは面倒くさすぎるので先駆者の方が作って下さった【Unity】Animationのmissingを自動で修正するエディタ拡張を使います。
これを使うと自動でMissingしているオブジェクトを正しいパスに修正してくれます。

アバターの親オブジェクトを右クリックして「アニメーションクリップ修正」を選択します。

image.png

「全部まとめて修正」をクリックします。

image.png

「パスを変更しました」と表示されれば成功です。

image.png

Animationをもう一度開くとMissingが消えています。
これでAnimationの階層の修正は完了です。

image.png

GestureのControllerも同様に統合しておきます。
image.png

ここまでで一度タバコとライターが出し入れできるか確認しておきます。

Expression Menuの動作確認をUnity上ですることができます。
メニューのTools > Gesture Manager Emulatorを選択するとHierarchyにGestureManagerが追加されます。

image.png

この状態でUnityを実行するとお馴染みのAction Menuが表示されます。
image.png

VRCと同じように操作するとライターとタバコが手のあたりで表示・非表示ができているのが確認できると思います。

image.png

2-6. Animatorの修正

ギミックの動作条件に特に問題がない方は2-5まででいいと思いますが、このタバコギミックは左手のfistジェスチャーでライターをつけた後、タバコに火をつけて顔に近づけて右手のfistジェスチャーをすることでタバコを吸う音が発生します。
その後、Fist以外のジェスチャーをすると煙が出る方式になっています。
個人的にFistでタバコを吸うのは違和感があったので(あくまで個人の見解です。作成者様の設計を揶揄する意図はありません)、顔に近づけて右手のPeaceジェスチャーをすることでタバコを吸う音が発生、その後Peace以外のジェスチャーをすると煙が出る方式に変更していきます。

まず、Gestureがどういった条件の時に発生するのかを確認します。
割り当てられているBase Gestureを選択します。

image.png

Right Hand Layerを選択して(Leftでも可)、Layerの中身を見てみると色々なGestureが分岐していることが分かります。

image.png

例えばFistに繋がっている矢印を選択して、Conditionsを見てみるとGestureRight equals 1の時がFistのジェスチャーモーションを取るということが分かります。

VRChat Avatars3.0 公式ドキュメント 非公式翻訳 その1 (Animator Parameters)の記事のGestureLeft と GestureRight の値とハンドサインの対応表でも同様の内容が記載されています。

image.png

今回だとPeaceのジェスチャーをした時に、タバコを吸いたいのでtabaco soundがOnになる条件をGesture Right Equal 1を1から4に変更します。
image.png

また、tabaco soundが消える条件もGesture Right NotEqual 1から4に変更します。

image.png

tabaco smokeも同様に変更します。
image.png

image.png

image.png

あと、デフォルトの設定のままだとライターを出した状態でFistジェスチャーをするとなぜかライターの蓋が開かずに、火のエフェクトが発生する仕様になっています。
このままだと困るので条件を変更します。

image.png

GestureLeft Equal 1から7に変更します。これでFistジェスチャーでライターの蓋を開いて、Thumbs upジェスチャーでライターに火をつけるというギミックになります。

image.png

さらにライターの蓋を開けた後に、再度蓋を閉めて更に開けられるようにしたり、ライターの火をつけた後に消したりできるようにもします。

Hand Openジェスチャーでライターの蓋を閉じられるようにしています。

image.png

火をつけてからThumbs upジェスチャー以外のジェスチャーをすることで火を消すことができます。

image.png

これでアバターをサーバーにアップロードすれば完了です!

※トラブルシューティング

2-5. Animationの統合してMissingが消えたのにアニメーションが動かない

A.
AnimationValidator赤線のpathを自動で修正してくれるのだが、Animationファイルの中身を確認すると一部パスが変更されていない、AnimationClipがあった。
これらのpathは2枚目の画像のように手動で直す必要がある。
恐らくAnimationValidatorのバグだと思われる。(詳しく調べていないので正しい原因は知りません)

image.png

image.png

参考文献

【Unity/VRChat】アニメーションのMissing もう恐れる必要はない
【Unity】Animationのmissingを自動で修正するエディタ拡張
VRChat Avatars3.0 公式ドキュメント 非公式翻訳 その1 (Animator Parameters)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0