見出し画像

【VRChat】Avatars3.0でProneIdleを使って寝たい

タイトルの通りの事が中々実現出来ずに4ヶ月が経ちました。
この記事ではこの問題の(恐らく一時的な)解決策を提示します。

画像1

これは失敗例の写真です。
足を伸ばして寝ているProneIdleを使用したいのに、Unity上で確認するとちゃんと動作するのにVRCに持っていくとこのザマでした。最悪。

画像2

しかもその状態から直立状態に変移すると頭以外が固定されてジャミラになります。意味がわからん!

ネット上にある記事もデスクトップユーザーやフルトラッキング向けの記事がメインで、非フルトラVR勢へ向けた解決策は今の所見当たりません。もしかしたらあるのかも。

海外のVRCフォーラムにも「膝が曲がる」「正しくアニメーションが設定されない」などのスレッドが建てられていますがどれも未解決でした。これももう答えがあるのかも。少なくとも4ヶ月間探し続けましたが見つかりませんでした。

今回はこの問題が意外と単純な理由で解決できたので、以下に記していきます。
(情報は2021年2月17日現在。Unity2018.4.20f1、VRCSDK3 2021.01.19.18.17使用。)

SDK3でProneIdleを使う方法

多くの人はProneIdleの変更方法自体はわかっていて、VRC上で正常に動作しないという状況だと思われるので、LocomotionLayerの詳細な変更方法などについての私からの説明は省略します。

アニメーションの変更方法について、Kluele氏の以下の記事を参考にしています。ありがとうございます。
皆さんも読んで下さい。この記事が前提です。

上の記事を元にして、ProneIdleの変更方法について改めて以下に記述します。(万が一消えてしまった時用でもあります。)
まずは「vrc_AvatarV3LocomotionLayer」の中身を開いて下さい。

画像3

ProneのStateに入れるMotionはデフォルトで入っている「vrc_ProneLocomotion」を改変したものにします。
※私はここをBlendTreeにしているからおかしくなるのだと思って直接アニメーションを入れていましたが結局関係なかったです。

画像4

↑のMotionに入っている「vrc_ProneLocomotion」を改変していきますが、ここはシンプルに「proxy_low_crawl_idle」のみの改変で問題ありません。移動も変更したい場合はお好みで。

画像5

画像6

変更しました。今回は「アンテナショップ【ねここや】」さんで配布されているポーズセットを利用させていただきました。ありがとうございます。

【約100種類 無料!】ポーズ詰め合わせ【Unity Animation】 | アンテナショップ【ねここや】 https://necocoya.booth.pm/items/1634088

右のチェックボックスが外れていますがこれは前述の記事でそうなっていたのでそうしています。よくわかっていません。

さて、このままでは最初と同じで、主に膝がおかしくなります。
前述の記事からの変更点はここからになります。

画像7

さて、件の記事ではProneに「VRC Animator Tracking Control」を入れてHeadのAnimationにチェックを入れないとアニメーションがおかしくなる(膝が曲がる)と書かれています。
これは事実で、実際にAnimationにチェックを入れると膝が曲がる問題は解消されます。

ちなみに、ここでProneのHeadをAnimationにした上でCrouching、StandingのHeadをTrackingにしないとジャミラになります。

しかし、これは頭のトラッキングができなくなるという事です。
わざわざProneIdleを入れたがるようなVRCユーザーが頭を動かせない事に我慢出来るわけありません!!!

というわけで、ここをTrackingにした上で膝が曲がらなくなるようにする必要があります。

まずは、ここをAnimationにするとどうなるのかというと、以下の図のようになります。

画像8

分かりにくいと思うので補足すると、頭の位置(ViewPoint)がProne状態のモーションになると本来頭がある位置ではなく、体の中心に来てしまいます。

これはモーションの原点(X:0, Y:0, Z:0)にViewPointが来るという事です。

これがわかれば今まで膝が曲がっていた理由も分かると思います。

画像9

上記の図の通り、足の位置をそのままに頭(ViewPoint)だけが原点に移動しているため、膝が曲がってしまっていたのです。

これを解決するためには、使用しているProne用のモーションの原点に頭が来るように改変してしまえば良いのです!

やっと本題です。モーションを改変していきましょう。

画像10

適当なモデル(今回は新たに導入したネツァクちゃんです)を複製(Ctrl+D)して、改変したいアニメーションをこのモデルにドラッグ・アンド・ドロップします。

画像11

Animationタブを開いて「Animator.Root T」という項目を見つけて、左の三角形を押して展開し、「Root T.z」という項目の数字を変更して下さい。

画像12

今回変更したアニメーションは複数のフレームがあるものだったので、上記の図のように最後のフレームのキーにもコピペしています。
0:00以外にもキーがあるアニメーションを変更する場合はすべてのキーに変更した「Root T.z」の値をコピペしてあげると良いです。多分。

ここで編集したアニメーションを「vrc_ProneLocomotion」の中に入れてあげましょう。

画像13

下の画面の真ん中に頭の位置があるのがわかるでしょうか。
この「vrc_ProneLocomotion」を今度は「vrc_AvatarV3LocomotionLayer」に登録してあげましょう。

画像14

画像15

画像では念の為「VRC Animator Tracking Control」を入れていますが、よく考えたらいらない気もしてきました。不要かどうかを自身で判断できる方は任意で外しても大丈夫だと思います。
念には念を入れて、CrouchingとStandingにもProneと同様に「VRC Animator Tracking Control」を入れており、全て上記の図と同じくHeadのTrackingのみにチェックをいれています。

画像16

最後に、完成した「vrc_AvatarV3LocomotionLayer」をアバターの「Playable Layers」の「Base」に入れてアップロードすれば完了です。

完成したものがこちら!

画像17

やってのけたぜ…見事に…。

最後に一つ問題点があり、この状態でコントローラーを使って移動をすると不規則的にViewPointが腰に移動してしまいます。しかも再現性不明。
こういった際は一旦頭の位置を上げてまた下げると目線が頭の位置に戻ってくれます。
多少不安定ですがかなり正解に近いのではないでしょうか。

お試し下さい。

おまけ:Proneに変移する際の頭の位置を変更しよう!

画像18

「vrc_AvatarV3LocomotionLayer」を開いて「Crouching」から「Prone」、「Prone」から「Crouching」に向かっている矢印を選択すると、しゃがみ状態から伏せ状態になる頭の位置の高さを変更することが出来ます。

画像19

上記の画像の下部にある「Conditions」の右側の数値を変更することでカスタマイズ出来ます。今回の記事で変更したProneのモーションは完全に倒れているモーションなので、本来の数値よりも低い数値にする事をオススメします。

画像20

「Crouching」から「Prone」の矢印(Crouching -> Prone)のConditionsを変更したら、逆向きの矢印(Prone -> Crouching)のConditionsを変更するのも忘れずに。

以上を持ちましてAvatars3.0でProneIdleを使う方法についての記事を終わります。

皆さんのご参考になれば幸いです。


参考、お借りしたもの

【オリジナル3Dモデル】ネツァク(Netzach) ver1.0.0 | エルフの森静岡支部 https://sephir.booth.pm/items/2735913

画像21

可愛いですね。

この記事が気に入ったらサポートをしてみませんか?