【VRChat】Avatar3.0で自分でアニメーションを作ろう!【Unity】
VRChat向けのUnity解説記事の第4弾
今回は初心者でも簡単にUnityでアニメーションを設定することを目的に・・・したいのは山々なんですけど、流石にここまで来ると誰でも出来るって言い切るのは無理がありますね・・・。
なるべく分かりやすく簡単に書きますが、私の過去記事を読んで予習してもらえると助かります。
○今回の記事で出来るようになること
・物を出し入れする
・物を出し入れする時に出現/消失アニメーションを付ける
・アバターにポーズを取らせる
・他にも色々出来る
1.アバターの初期設定をする
Hierarchy(アバターの一覧)から自分のアバターをクリックして選択すると、設定画面が出てきます。その中のVRC Avatar Descriptorという項目の下の方にPlayable Layersというものがあります。
これらのDefault 〇〇というボタンをクリックすると、自分で中身を設定できるようになります。
とりあえず今回はFXを設定していきましょう。内容を理解できれば他の項目をいじれるようになります。
また、私の記事の第3弾でやった、アバターの表情切り替えなどを実装して既にFXの設定をしている方は、そのままで大丈夫です。同じFXファイルの中身を追加していくことになります。
このFXに設定するファイルはAssets>VRCSDK>Examples3>Controllersのフォルダの中に入っています。その中のvrc_AvatarV3HandsLayerというファイルを選択してCtrl+Dと押して複製します。複製したファイルは分かりやすい名前を付けておいてください。それを適当なフォルダに移動します。(Assetsの直下にアニメーション用のフォルダを作ってまとめておくと良いです)
そしたら先程のVRC Avatar Descriptorの設定画面のPlayable LayersのFXのところにコピーしたファイルをドラッグ&ドロップします。
するとこうなります。画像では他の項目も設定してますが、今回はとりあえずFXだけでいいです。これで準備完了!
2.アニメーションファイルを作成する
Projectのウィンドウの適当な場所で右クリックをしてメニューを開き、Create>Animationをクリックします。
これで出来るのがAnimationファイルです。ここに物の出し入れやアバターのモーションを設定することになります。適当に名前を付けたら、作ったAnimationファイルをHierarchyの自分のアバターにドラッグ&ドロップします。これでAnimationファイルが自分のアバターに紐付けられました。
そしたら一番上の設定からWindow>Animation>Animationを選択します。
Animationのウィンドウを表示させたら、必ず自分のアバターをHierarchyからクリックしてください。下の画像みたいにTestと書いてあるところをクリックしても何も起こらない時は選べてません。
正しい状態はこっち↓
Testの名前の部分をクリックすると、自分のアバターに紐付いてるAnimationが全部表示されます。
ここから選んで編集といった流れ。
ここにアニメーションの中身を設定していきます。まずは赤丸のボタンをクリックしてください。これで録画モードになります。(赤丸はRECのマーク)
この録画モード中に位置を移動させたり、表示非表示を切り替えたり、BlendShapeをいじったり、色を変えたり・・・とにかく何かの数値をいじったりするとアニメーションの中身として書き込まれます。大体のことはなんでもいじれる!ここからが大変・・・。
3.とりあえず物を出し入れしよう
一番簡単な物の出し入れからやります。先程の続きなので録画モードがONになっている状態です。録画モードに入ると自分のアバターが変なポーズを取りますが、これは気にしなくていいです。初期状態がこれ。
そしたらこの状態で出したい(または隠したい)3Dモデルのチェックボックスをクリックします。今回は背中の銃にします。
チェックボックスが赤くなりましたね?これはアバターの初期状態ではチェックは外れてないけど、アニメーションファイルの設定ではチェックが外れた状態になってます。つまりこの設定でアニメーションを再生すると、最初は背中に付いていた銃が消えます。
ちなみに出したり消したりしたい3DモデルにAnimatorという設定が付いている場合、これをやろうとすると画面が切り替わって上手くいきません。下の画像のようなものが入っていたら消しておきましょう。(3敗)
背中に付いてた銃を消すアニメーションが出来たので、出現するアニメーションも作りましょう。といっても先程の消すアニメーションファイルをCtrl+Dで複製して、同じ用にアバターへドラッグ&ドロップして紐付けし、銃のチェックボックスを今度はONにするだけです。
これで物の出し入れのアニメーションは完成!
物の出し入れだけで十分な方は次を飛ばして5に進んでください。
4.物を移動させたりする
録画モード中にチェックボックスを外したのと同じ要領で、TransformのPositionの数値を変えて場所を移動してみましょう。
そうすると項目が赤くなって、AnimationウインドウにPositionの項目が増えました。
一度登録されればAnimationウインドウから直接数値を変えることも出来ます。右側にひし形が表示されています。これは時系列順に設定値を表したものです。今は0.00秒の地点にこの数値が表示されています。
例えばこの銃を1秒かけて他の場所に移動させたい時、1.00秒のところをクリックして白い縦線を移動させます。
そうしたらPositionの数字を変えます。すると1秒の地点に新たなひし形が出現します。
こうすることで、Position.Xが0.57から1秒かけて100まで移動するアニメーションが完成しました。
これはPositionだけじゃなくRotationもスケールでも出来ますし、Transformじゃなくてもシェーダーの色や透明度の変更だったり、とにかく色んなことが出来ます。表示非表示と組み合わせて様々な演出を考えてみてください。ここからは作者のアイディア次第となります。考え方が分かれば人のアニメーションを積極的に見て盗むことも可能です。
私が作った銃の出現アニメーションはこんな感じ↓
5.アニメーションファイルをAnimatorに設定する
アニメーションファイル完成!これで完了!!!!ではないんですね。ここからもまたちょっと面倒な作業が入ります。
下準備として設定していたFXのファイルを覚えていますか?あれをダブルクリックして開きましょう。
画像では既にたくさん設定してるので色んな項目がありますが、基本的には一番上から3つ、AllParts, Left Hand, Right Handだけが設定されていると思います。ここに色々追加して先程作ったアニメーションを実際に再生させることになります。
まずは右上の+をクリックしてFXの中の項目を増やします。New Layerというのが増えるので、適当に名前をつけます。
そしてここ絶対注意!!!歯車マークをクリックしてweightの数字を1にしてください。これやらないと頑張って設定してもVRCでアニメーションが再生されません。最初から1にしとけやボケが!!!!!!!!!(n敗)
次にパラメータを設定します。上の方のタブからParametersをクリック。そうしたら+ボタンを押してIntを選択します。
New Intというものが追加されるので、適当な名前を付けましょう。この名前は覚えておく必要があるので、分かりやすいものにしておきましょう。今回はTestにしておきます。
そしたら右のAny Stateとか良く分からんボックスが表示してあるところで右クリックします。そしてCreate State>Emptyをクリック。
そうするとオレンジのNew Stateが出ます。オレンジ色のこれは無視していいです。初期状態を示すものになります。もう1度Create StateからEmptyをクリックしましょう。
今度は矢印が繋がってない灰色のNew Stateが出来ました。これを銃消すアニメーション用にします。銃出す用のものも作って、適当に名前を付けておきましょう。
こんな感じで作ります。そしたら銃消すのところに先程作った銃を消すアニメーションファイルを、銃出すのところも対応したアニメーションファイルを設定します。
次にオレンジのNew Stateを右クリックします。Make Transitionをクリックすると矢印が伸びるので、銃消すのボックスをクリックして矢印を繋げます。
同じ要領で全部繋げます。
まずはNew Stateと銃消すの間の矢印をクリックして設定画面を出します。
Settingのタブを開くとこう。
Exit Timeは前のアニメーションの再生をどれだけ待つかの設定値です。1だと前のアニメーションを100%再生しきってから次のアニメーションに移ります。Fixed Durationはアニメーションをスムーズに移行させる区間の割合を示してます。(多分)
複雑なアニメーションを作る際は細かく設定した方が良いですが、物の出し入れをするだけの場合はとりあえずHas Exit Timeのチェックを外してTransition Duration Timeを0にすればOKです。物の出し入れは一瞬の切り替えなので、これらの設定は要らないということですね。
物を移動させたり色を変えたりなど、時間経過で変化するアニメーションを作った人はどちらもチェックを入れて、Exit Time 1、Transition Durationには適当な数字を入れておきましょう。
次に同じ設定画面のConditionの+ボタンをクリックします。
最初はこうなっているので、各項目を下の画像のように入力します。
このTestというのは、先程Parametersのところで設定したIntの数値になります。Testというパラメータが1になった時に、New Stateから銃消すに移動するよ、という設定が出来ました。
銃消す→銃出すの矢印にも同じ用に設定します。
銃消す→銃出すの矢印ではTest Equals 0と設定します。これでTestというパラメータが0になったら銃消すから銃出すに移動します。
最後の矢印はパラメータの設定は必要ありません。その代わり、銃出す→Exitの矢印だけは必ずHas Exit Timeのチェックを入れてください。そうすると銃出すのアニメーションが再生し終わったら勝手にExitへ移行します。
これにてAnimatorの設定完了!疲れましたね。まだありますよ。
6.追加メニューをVRCで表示するようにする
Hierarchyから自分のアバターをクリックしてVRC Avatar Descriptorを開きます。下の方にExpressionsという項目があります。
MenuとParametersの2つがありますが、例によってこれも自分でカスタマイズしたものを設定することになります。Assets> VRCSDK> Examples3> Expressions MenuからDefault Expression Menu, Default Expression Parametersの2つを複製して適当なフォルダに移動します。これらをMenu, Parametersにドラッグ&ドロップで設定します。
※Virtual Lensなどを使っている人は元から設定されているかもしれないので、その人は既に設定済みのファイルを編集してください。
Default Expression Parametersを開いて、Parameter 4に新たにTestを追加します。これは5のAnimatorの設定で追加したパラメータの名前と同じにしなければなりません。覚えておいてって言ってたやつですね。
次にDefault Expression Menuをクリックして設定画面を出します。そうしたらAdd Controlをクリック。New Controlが増えるので、タブを開きます。
名前を適当に変えて、TypeをToggleにして、Parameterを先程設定した名前のものに変えて、Valueを1にします。
これで本当に完成!!!!
VRCにアップロードして確認すると、Expression MenuにTestが追加されていると思います。
お疲れさまでした!自分も疲れた!!!!
多分設定ミスったりなんだりでデバッグ作業があると思いますが、なんとか中身を理解して頑張ってください。ちなみにVRCの中から現在のAnimationの状態を確認するデバッグモードもあります。確認してみてください。
以上!初心者でも簡単に設定できるアニメーション解説(大嘘)おわり!!
質問あればコメントしてくれれば分かる範囲でお答えします。走り書きの内容なので抜けあったり後で修正いれたりするかも。とりあえずはVer.1ということでお願いします。
みんな頑張れ!新しい発見あったら教えて!!
この記事が気に入ったらサポートをしてみませんか?