見出し画像

Avatars 3.0の機能を使ってフルトラでも腕をまっすぐに伸ばそう!

フルトラでもアバターの腕をきっちり伸ばしたいという願いは、先人の努力の末に様々な方法が生み出されています。
今回はAvatars 3.0の機能を使った簡単な方法を記事にしてみました。

注意事項

VRChatにIKのアップデートが来ています(2022年5月)。
それにともなって、特に何も設定しなくても腕が伸びるようになっています。
以下の記事は、以前はこういう方法があったよという備忘録的記事&調整方法としてこんな手法もあるよという意味で残しておきます。

ですので、新IKでは参考にしないでください

こんなものを作るよ

アバター変える度にOVR Advanced settingsやPlayspace Moverなどを駆使しなくても、ただ普通にキャリブレーションするだけで腕がまっすぐに伸びるようにする設定です。この方法では素体が同じであれば設定を使い回すことが可能です。
地味なデメリットとして周りがちょっとだけ小さく見えます。特に手が普段より小さく感じるかもしれません。(普段より大きいアバターに変えた場合に周りが小さく見えるのと同じ仕組みです。詳しくは余談の項目で解説しています。)

サムネイル2


必要なもの

・Avatars 3.0のアバター


設定方法

まず、今回の設定で重要になるT-Poseのアニメーションを準備します。
SDK内にあるアニメーターとアニメーションを元に設定するため、Assetから次の2つのファイルを探します。
Asset/VRCSDK/Examples3/Animation/Controllers/vrc_AvatarV3UtilityTPose.controller

Asset/VRCSDK/Examples3/Animation/ProxyAnim/proxy_tpose.anim
を適当な場所に複製して名前を変更します。
下の画像ではGrusちゃん用に作ったため、「Grus_TPose_Controller.controller」「Grus_TPose_Animation.anim」としました。
※アニメーションの名前の先頭には「proxy_」を絶対に付けないでください。アニメーションの変更がVRChat上で反映されなくなります。

腕伸ばし001


複製したアニメーターの「TPose」ステートにTポーズのアニメーションを適用します。

腕伸ばし002


アニメーションを編集するために、導入したいのアバターをScene上で選択して、Ctrl+Dで複製します。
複製したアニメーション編集用のアバターに先ほどのアニメーターをドラッグ&ドロップした後、アニメーションウィンドウを表示します。
アニメーションウィンドウのタイムラインを触ると画像のようにGrusちゃんがTポーズになりました。

腕伸ばし003


アニメーションウィンドウを録画モードにしてから、アバターの一番上の階層(Armatureのひとつ上)のScaleのxだけを1より少し大きい値に設定します。
この拡大値はVRChat上でいい感じに腕が伸びるかを確認しながら調整することになるので、とりあえず1.0~1.2ぐらいに設定してください。

腕伸ばし004



複製元の導入したいアバターのT-Poseレイヤーに今回作ったアニメーターを適用します。
その後、アバターをアップロードしてください。
ちなみに、同じ素体のアバターであれば、アニメーションとアニメーターは使い回すことができます。衣装を変えるなどした場合でも作り直す必要はありません。
※アニメーションを編集するために複製したアバターでアップロードしないでください。VRChat上で予期しない挙動をする場合があります。

腕伸ばし005


ここからは実際にVRChat上で確認しながら拡大値を調整していきます。調整する際は、腕を横だけでなく上げたり下げたり前に出したりした場合も確認してください。
拡大値が小さい場合は画像左のように腕が伸びません。逆に拡大値が大きすぎると画像の右のように肩が引っ張られます。
今回は画像中央(Scaleのxの値が1.04)に設定しました。

画像6


余談

VRChatではTポーズ時の腕を左右に伸ばした長さを基準として様々なパラメータを決定しています。(公式のドキュメントにはそう書かれています。)

例えば、IPDのスケールは腕を左右に伸ばした長さによって決まります。IPDはInterpupillary distanceの略で、日本語では瞳孔間距離と訳されます。VRChatにおいてはこのIPDのスケールは周りの景色がどのように見えるかを決めている重要なパラメータです。

もし、自分の体が10cmほどになったら350ml缶はドラム缶のような巨大なものに見えるはずです。ところが、リアルで缶を下から見上げても、ドラム缶のように巨大には見えません。

当然、VRでもこの問題は発生し、単純に視点の位置を低くするだけでは上手くいきません。VRChatではアバターの腕を左右に伸ばした長さを基準にIPDのスケールをいい感じに調整することで、小さいアバターでは周りが大きく見え、大きなアバターでは周りが小さく見えるようになります。

さて、ここで前述のデメリットの話につながります。
今回の設定方法では腕を左右に伸ばした長さが通常よりも長くなるため、VRChatのシステムからは通常よりも一回り大きいアバターだと認識されます。それに合わせてIPDも調整されるため、通常よりも周りが小さく見えてしまうわけです。

とはいえ、普段より周りが小さく見えてしまう問題は、身長の異なるアバターに変えても同様のことは発生します。あまり極端な設定にしない限りはそれほど気にならないでしょうし、そもそも極端な設定ではアバターの動きが破綻します。


もっと余談

SDK内のアニメーションが軒並み「proxy_~」となっていると思いますが、これはVRChatのクライアントにビルトインされたアニメーションを呼び出すためのアニメーションです。なので、中身を変更してもVRChat上では反映されないので注意してください。詳しくは公式のドキュメントを参照してください。

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