Sabamirinのブログ

VRChatで役に立ちそうなことを書いていきたい

VRChatのアバターでお花を飛ばす話(アニメーションオーバーライド編)※追記あり

先程の記事ではお花を飛ばすパーティクルを作成しました
sabamirin.hatenablog.com
この記事ではこのパーティクルを表情に紐付ける方法を説明します
一応オマケとしてアニメーションオーバーライドの作成までの説明もつけています
f:id:Sabamirin:20181014202315g:plain

※10/14追記

Emissionモジュールによる制御だとなんかオンにしていないのにパーティクルが放出させるという現象が確認されました
そうならない方法としてオブジェクトの有効無効による方法を追記しています
2種の違いとして

  1. Emissionモジュールによる制御
    • パーティクルの放出の有無を制御する
    • アニメーションオーバーライドを切り替えてもパーティクルが残る
  2. オブジェクト有効化による制御
    • 放出源のオブジェクト自体の有効無効を制御する
    • アニメーションオーバーライドを切り替えるとパーティクルが消える

となります

Emissionモジュールによる制御

※こちらの方法は非推奨となります
いろいろ原因を探ってはみたものの原因不明(VRC側の仕様?)なので以下の「オブジェクト有効化による制御」を参照してください
とはいえ武器などに付ける場合で、かつその武器自体を出し入れする場合などは有用なので方法自体は残しておきます

ParticleSystem上の設定

f:id:Sabamirin:20181013201842p:plain

  • 作成したParticleSystemのEmissionをオフにします
    • プレビューでもパーティクルの放出が止まります

パーティクルのアニメーション制御

アニメーションにEmissionの有効化の制御を追加する

f:id:Sabamirin:20181013222444p:plain
編集用モデルを選択して、Animationウィンドウを開きます
f:id:Sabamirin:20181013222609p:plain
f:id:Sabamirin:20181013222644p:plain
AddPropertyボタンを押して、ParticleSystemまでたどります
f:id:Sabamirin:20181013222816p:plain
設定できるプロパティの中から「Emission Module.enabled」を選択し、追加します
チェックボックスをクリックし*1、1秒後にもキーを追加して同様に設定します

これで指定したアニメーションを再生することで、アニメーションが再生されます

オブジェクト有効化による制御

ParticleSystem上の設定

f:id:Sabamirin:20181014165418p:plain

パーティクルのアニメーション制御

アニメーションにオブジェクトの有効化の制御を追加する

f:id:Sabamirin:20181013222816p:plain
編集用モデルを選択して、Animationウィンドウを開きます
f:id:Sabamirin:20181014170942p:plain
AddPropertyボタンを押して、ParticleSystemまでたどります
f:id:Sabamirin:20181014171749p:plain
設定できるプロパティの中から「Is Active」を選択し、追加します
1秒後にもキーを追加します

これで指定したアニメーションを再生することで、アニメーションが再生されます

おまけ

※だいたい先人の方の説明を新しくやり直す形になりますのでわかってる人は読む必要ないです

アニメーションの作成

shiasakura.hatenablog.com

アニメーション編集用のモデルを作成する

f:id:Sabamirin:20181013202939p:plain
そのままアニメーションを紐づけるとモデルのポーズが崩れてしまうため*2、現在のモデルを複製します

編集用モデルにアニメーションを新規作成する

f:id:Sabamirin:20181013204634p:plain
Animationウィンドウを表示して作成したモデルにフォーカスを合わせます
f:id:Sabamirin:20181013204805p:plain
このようなウィンドウが表示されたら、中央の「Create」ボタンをクリックします
animファイルの作成先をが尋ねられますので、適当な名前をつけて保存します

  • アニメーションファイルとともにコントローラが作成され、編集用アバターに設定されます

カスタムアニメーションオーバーライドを作成する

コントローラの作成

f:id:Sabamirin:20181013205156p:plain
VRCSDKに入っているカスタムアニメーションオーバーライドコントローラ(長い)を複製します
Projectウィンドウの右上の検索から「override」で検索してでてきたファイルをCtrl+DやCtrl+ドラッグで複製してください

アニメーションをコントローラに紐づける

f:id:Sabamirin:20181013214858p:plain
複製したカスタムアニメーションオーバーライドコントローラを選択します
右のInspectorウインドウのHANDOPENに作成したアニメーションをドラッグアンドドロップしてセットします*3

コントローラをアバターに紐付ける

f:id:Sabamirin:20181013215148p:plain
複製前のアバター(アップロードするアバター)のVRC_AvatarDescriptorのCustomStandingAnimationにコントローラを紐づけます

*1:これで有効化する、ということになります

*2:unityのせいらしい

*3:右上の鍵アイコンをクリックするとProjectフォルダを移動してもインスペクタが切り替わらないので便利です