Avatars3.0で自アバターに実装したものと、その実装方法

この記事は約6分で読めます。

Avatars3.0が正式リリースされ、同じ世界線でAvatars3.0で動けるようになりました。
Avatars3.0ではより自由度が高くなっている一方で、Avatars2.0よりも実装の難易度は高まっています。

ここでは、いくつかの機能の実装とそのアプローチについて説明します。

Avatars3.0は実装直後の技術であることから、予告のない突然のメテオフォール(仕様変更)が起きる可能性があります。
この記事の内容は急速に古くなることがあるためご注意ください。

ここで例に挙げているアバターはロジウラキッサにて販売されているオルフェネシアちゃんです。

約束されし栄光、オルフェネシア - ロジウラキッサ - BOOTH
約束されし栄光、オルフェネシア / Orphenesia, The promised glory "共に参りましょう。貴方の往く道が歴史となるのです"

大きなドラゴンメイドで、シェイプキーでさらに調整することもできます。このシェイプキーもAvatars3.0では後述の通り動的に変更することができます。

Avatars3.0の設計思想

Avatars3.0では、今まで既存のアニメーションをオーバーライドする形でカスタマイズしていたアニメーションをAnimation Controllerで自由に定義できるようになっています。

Animation Controllerを使用することで、アバターの状態やExpression Menuの操作から書き換えられる値を使用して自由度の高い動作を行うことができるようになります。

Avatars3.0では、従来のアニメーションオーバーライドに相当するほとんどの動作は基本的にAnimation Controllerで実現されています。

Animation Controllerでは条件に応じてアニメーションを再生するという思想であることから、既存の2.0環境のアバターに設定されていたアニメーション自体はほぼそのまま持ってくることができます。
単純に、そのアニメーションの設定方法が変わっているだけです。

1からAnimation Controllerを実装することは非常に面倒であるため、VRCSDK3に同梱されているサンプルファイルをコピーすることをお勧めします。

やりたいこと別の記録

雑な書き方ですが、何をするためにどうすればいいのかを記録しています。

Avatars3.0へのマイグレーション(持ち込み)

SDK2のアバターをAvatars 3.0へ移行する - 黒鳥のメモ
黒鳥(@kurotori4423)の備忘録兼ポートフォリオです。

上記サイトの手順を踏むことで、既存の2.0アバターをとりあえずAvatars3.0環境に持ち込むことができます。

アバター本体、ハンドサインはこの手順に従うことで引き継ぐことができます。

エモートスイッチの移植

Avatars3.0ではエモートスイッチが廃止されました。
代わりにAnimator Controllerで同等の機能を実装できます。

Avatar3.0の導入
Avatars 3.0の導入説明書 制作:Ryuban 2020/08/07 ※非常に項目が多い為、目次を見ながら小分けに進めていく事をおすすめします。 ※設定済みAnimator controllerやExpression Menuをboothでの配布を予定しています。ドキュメント完成ののち、簡易導入と一緒に配布予...

「Animator Controllerの編集」および「Expression Parameters」を参照してください。
Expression Parametersには、Int型またはFloat型の変数を持たせることができ、この変数をフラグとしてAnimator Controllerで動作が定義できるようになっています。

物を持たせる動作を定義するのであれば、Int型を定義した上で持っていない場合は0、持っている場合は1として定義すると良いでしょう。
物の出し入れやコライダージャンプ時のスイッチとして利用するのが便利です。

2018年の記事ですが、コライダージャンプ自体は現在でも有効な方法です。
ハンドサインの代わりにAnimator Controllerで実装することでハンドサインに囚われずに片手で有効と無効を切り替えられます。

Expression Parametersでは、Toggleに設定をしておくと状態を保持できます。

この方法で実装し直すことで、エモートスイッチで発生していた起動時の硬直、後から入室したプレイヤーに状態が反映されないといった欠点を改善できます。

ホバー移動の移植

Animator Controller内で、BlendTreeを使用することで設定できます。

左右方向の移動速度をVelocityX、前後方向の移動速度をVelocityZで取得することができます。
また、立位状態かどうかを判定するヒントとして、Upright変数を確認することで判定ができます。うつぶせの場合で0、完全に直立の場合で1と判定され、その間はFloat値で取得ができます。

移動速度はデスクトップモード時、走行時で4.00m/s、歩行時で2.00m/sです。斜めに移動する場合はそれぞれの成分に分かれます。

胸の大きさの調整

シェイプキーを変更するアニメーションを2つほど用意し、それらをBlendTreeに設定することで実現できます。
Blendtreeに設定された複数のアニメーションは、与えられたパラメーターの値に応じて滑らかに変化します。
Expression ParametersでRadial Puppetを指定してFloat型の値を取得しておくのがおすすめです。

ParameterにExpression Menuで指定した値を受け取る変数を設定し、Paramater RotationでAnimation Controllerに渡す変数を設定します。
Parameterの下にあるValueは、その変数の最大値を指定しますが、ユーザー定義のFloat値の値域は±1.0に制限されているため、変更することはないかと思われます。
つまり、Expression Menuで指定した値が事実上そのままAnimation Controllerに渡ります。
どうしてもInt型で使用しなければならないような場合に、ここで指定します。

AFKモーションを変えたい

デフォルトのAFKポーズは、座禅を組んで浮遊します。それをカスタマイズするための方法です。
Avatars2.0ではカスタマイズできませんが、3.0ではカスタマイズが可能です。

AFKポーズは任意のアニメーションを登録できるので、選択や調整に迷った場合は配布や販売されているIdleモーションを使うと簡単に可愛くなれます。

VRChat向けIDLEアニメーション - Coquelicotz shelf - BOOTH
VRChatでの利用を想定したIDLEアニメーションです。 ●変更 19/09/24 Animファイル名がIDLEだったものを変更。 ●利用方法 CustomOverrideAnimationのIDLE(立ちIDEL、椅子座りIDLE)またはProneIDEL(床座り=PRONEIDEL)に設定してお使いください。 ・...

わたしはここのIdleモーションをAFKモーションとして使わせていただきました。

ドローンを飛ばしたい

何かしら飛行物体を飛ばしたいような場合は、べりりん氏開発のエクスプレッションドローンを導入することで実現できます。
VRモードでの利用前提です。導入にはパラメーターに5変数以上の空きが必要です。

https://note.com/berylmoon/n/n89f42ef9f7db

これを導入することで、エクスプレッションメニューから任意のオブジェクトをワールド固定オブジェクトとして動かすことができるようになります。

このような感じに召喚し、Expression Menuから6方向に動かすことが可能です。召喚したオブジェクトが向いている方向は右手の方向に連動します。

タイトルとURLをコピーしました