Skip to content
めかにゃんこロゴ めかにゃんこの技術メモ
Go back

【VRChat】Avatars3.0の基礎、アニメーターについてのおさらい☆

【VRChat】Avatars3.0の基礎、アニメーターについてのおさらい☆

みなさん、こんにちにゃんこ!Vtuberのめかにゃんこです!
今回はこちらの「④ネコでもわかるAvatars3.0:第3回」で説明した**アニメーション**と**アニメーター**についての説明を改めて分紹介してまとめてみようと思いますにゃ!

https://www.youtube.com/watch?v=17sLdrmuKMU

*ネコでもわかるAvaters3.0 再生リスト*

なお、動画内では話せなかった、より詳しいところも一部追加してより理解が深まるように解説してみますのでよろしくおねがいしますにゃ♪

1.そもそも、Avatars3.0とは?

解説するにあたって、まずはそもそものところからお話していきますにゃ!
Avatars3.0が登場したのは2020年8月6日。これまでのSDK(以後「SDK2」と呼ぶにゃ!)と比べて大幅に**アニメーションでの動作制御**を向上させ、**ユーザーがイメージした動作をより手軽に実現できる**ようになりましたにゃ!
SDK2では、アニメーションでのオブジェクトの出し入れなどの制御が難しく、**EmoteSwitch**というツールが非常に重宝されていましたにゃ!
この**EmoteSwitch**は**アニメーションオーバーライド**という、アニメーションをアニメーションで制御してものの出し入れをするアニメーションを一時停止することで物が出ているように見せるという方法でした。(下図参照)
このツールの欠点として後からJOINしてきたユーザーには表示されない等の**同期の問題**がありましたにゃ。この辺を解決させた上で、更にカスタマイズ性も改善させた仕組みが**Avatars3.0**ということですにゃ!

2.Avatars3.0で重要になるアニメーションとコントローラーについて

Avatars3.0は主に**5つのアニメーションコントローラー**で制御されていて、5つそれぞれが別の役割を持って動き、一つのアバターとして成り立っていますにゃ。
まずは**5つのレイヤー**についてかんたんに説明しますにゃ!

2-1.Baseレイヤー(あまり使わない)

Baseレイヤーには歩行やしゃがみ等、**基本的な動き**に関するアニメーションがセットされますにゃ。**基本的にユーザー側で変更する必要はない**ですが、浮遊移動モーションなど、体の動きを変更するときは触る必要がありそうですにゃ!

2-2.Additiveレイヤー(ほとんど使わない)

Baseレイヤーに追加で乗せるアニメーションをセットしますにゃ!例えば呼吸で胸が動く様子など、基本的な動きに付加する生体反応などを実装するのに使うみたいですにゃ!
※ただし**基本的にこのレイヤーは触らない**でいいみたいですにゃ。

2-3.Gestureレイヤー(よく使う!)

Gestureレイヤーではアバターの**移動以外の体の動き**を制御するのに使われますにゃ!
主に手の動き(ハンドジェスチャー)を設定することがほとんどとだけど、例えば、耳の動きや尻尾の動きなどボーンの動きを制御するときにも使いますにゃ!

2-4.Actionレイヤー(たまに使う)

Actionレイヤーではアバターのアクションについてのアニメーションをセットできますにゃ!
ここでのアクションは**SDK2のEmoteのようなもの**と思ってくださいにゃ♪
踊ったり、リアクションしてみたり、突然死してみたり、皆さんがよく見るアニメーションなどはここにセットしますにゃ!
また、**AFKアニメーション**もここにセットすることになりますにゃ♪

2-5.FXレイヤー(超よく使う!)

FXレイヤーは上の4つのレイヤーと違ってマテリアルやシェーダー、オブジェクトのON/OFFなど、**オブジェクトの状態やコンポーネントのパラメーターに変更を加える**アニメーションなどを実装できますにゃ!逆に**1~4のレイヤーではそのような変更を加えようとしても反映されないようになっています**にゃ!ここ注意にゃ!基本的に私達がものの出し入れやお着替えなどを実装しようと思ったらFXレイヤーにセットすれば大丈夫ですにゃ。**迷ったらFXレイヤー!**覚えておくといいにゃ♪

3.アニメーターの要素で覚えてほしいもの

3-1.アニメーションレイヤー(レイヤー)

アニメーションレイヤーは**それぞれが独立して動いていて、それぞれでアニメーションを再生する**にゃ。上のレイヤーから順番に処理されて下に行くほどアニメーションの内容が上書きされていきますにゃ!

3-2.アニメーションパラメーター(パラメーター)

このパラメーターは**そのコントローラー内のすべてのレイヤーが参照**しますにゃ!
パラメーターが変化したときにはそのパラメーターを使っているレイヤーで状態の遷移(変化)が起こってアニメーションが切り替わったりオフになったりしますにゃ!

3-3.アニメーションステート(ステート)

ステートは四角い箱状のもので、アニメーションがセットされていて**状態遷移で入ったところのアニメーションが再生されます**にゃ!
**一つのレイヤー上で再生されるアニメーションは一つだけ。**
これはつまり、**1つのレイヤー上で状態は一つだけ**ということですにゃ!(複数のステートがONになることはないということ!)

3-4.トランジッション(状態遷移)

各レイヤー内でステートは上のような白い線でつながっていて、**白い線の真ん中にある矢印の方向**に状態遷移が進みますにゃ!
この状態遷移の方法には色々あるので詳しくは別途説明しますにゃ!

4.ステートの種類について

ステートにはいくつかの種類があり、それぞれに役目がありますにゃ!それぞれ説明しますにゃ!

4-1.Entry ステート

Entryステートはアバターが表示されたときにアニメーションコントローラーが動き出してレイヤーが**状態遷移を始めるにあたってのスタート地点**ですにゃ!
ここから状態遷移が始まるので覚えておいてにゃ!

4-2.Any ステート

Anyステートはそこから伸びているすべてのトランジッションの条件を監視して、パラメーターと一致する条件の状態に遷移させる特殊なステートになりますにゃ!
おそらく**大抵の人は多用することになると思う**ので覚えておいてにゃ!
とっても便利だけど、**バグを生みやすいので注意**して使おうにゃ!

4-3.Exit ステート

Exitステートはいわゆるゴール地点ですにゃ。レイヤー上でExitステートにたどり着いた場合、実行が終了するかと言うと、そうではなく**またEntryステートからスタートする**ので注意してにゃ!アニメーションレイヤーが動作を停止することはないので覚えておこうにゃ!
ただし、**一つのステートにとどまって実質止まった状態になることはある**ので**Exit→Enterという遷移**になることを覚えておこうにゃ!

4-4.初期ステート

**Enterステートから入ってきたときに一番最初に入るステート**ですにゃ!Enterステートからオレンジ色の矢印でつながっているのでわかりやすいにゃ!
ちなみに、他のステートを右クリックして「Set as Layer Default State」をクリックすると選んだステートがオレンジになってEnterステートとつながるので覚えておくと役立つかもにゃ♪

4-5.通常のステート

上の1~4以外のステートは一部を覗いて5番の通常のステートになりますにゃ!
トランジッションを伝って状態が遷移していくので思い通りの動きをするようにステート同士をつないで行くにゃ!**パズルみたいで面白い**のにゃ♪

5.パラメーターの種類

パラメーターにはいくつか種類がありますにゃ!ここで紹介しておきますにゃ!
※なお、下の図で上から**4番目の「Trigger」は使えない**ので注意にゃ!

5-1.Float型

**Float型**は[-1.0~1.0]まで**0.1刻みで変化**させることができますにゃ!細かな微調整や、徐々に変化するといった動作に使用しますにゃ!
※ただし** VRChatでは[0.0~1.0]までの値しか使えない**ので注意にゃ!

5-2.Int型

**Int型**は0~254までの255通りの数字を使って状態を指定できますにゃ!**衣装の変化や複数の状態**を管理する場合に使用しますにゃ!
以前は物のON/OFFもInt型で行っていたけど、今は**Bool型**が登場したのでそっちでやるようになりましたにゃ!

5-3.Bool型(New!!!)

**Bool型**はTrue(真)とFalse(偽)の2つの状態を持つパラメータになりますにゃ!
プログラミングをしているとめっちゃ使う概念ですが、なかなかみんながみんな知っているものではないと思うのでイメージで言うと、**TrueがON、FalseがOFF**といったイメージですにゃ!
※ただし、FalseがON、TrueがONといった場合もあるので**2つの状態があるパラメーター**と思ってもらえたらそれでいいと思うにゃ!

5.補足

最近のアップデート(2021/02/06:執筆時現在)では上の3つのパラメーターが使用できますにゃ!
このときそれぞれに持つ情報量が決まっていて、FloatとIntが8ビット、Boolが1ビットとなっていて、**合計で128ビットまで**パラメーターを使うことができるようになりましたにゃ!
これはどういうことかと言うと、FloatとIntだけを使う場合は **128ビット / 8ビット = 16個のパラメーター**が使えることになりますにゃ!
代わりにうまくBoolのパラメーターを使うと最大でBoolだけで128個のパラメーターを使うことができますにゃ!ただしそんなことはありえないと思うのであくまで「最大で」ですにゃ!

6.まとめ

ここまで説明してきましたが、結局の所、**実際に触ってみることが一番理解しやすい方法**なので、上で覚えておいたほうがいいと書いているところを中心にサラッと見てもらったら**動画や、実際に設定済みのアバターを購入して設定を見てみる**のもいいかもしれませんにゃ!
以上めかにゃんこがお送りしました!
なお、**上記の情報もアップデートによって変わってしまう可能性がある**ので注意してくださいにゃ♪

最後に、改めて動画のプレイリストを貼っておくので良かったら見てみてにゃ♪
また、下記の記事で、レベル別のおすすめの動画も紹介しているのでよければこちらもどうぞにゃ★ミ

https://mekanyanko.staba.jp/2021/01/23/avatar3\_movie

https://www.youtube.com/watch?v=17sLdrmuKMU

*ネコでもわかるAvater3.0 再生リスト*


Share this post on:

Previous Post
【Avatars3.0】WriteDefaultsを使用せずに表情をブレンドしたりできるアニメーター設定方法
Next Post
☆「ネコでもわかるAvatars3.0」のレベル別おすすめ動画紹介☆