VRCアバターを推奨設定に変更する【Avatar2RecommendedSettings】

Avatar

Avatar2RecommendedSettingsの機能

Avatar2RecommendedSettingsはアバターのComponentを最適な設定に変更します。
具体的にはアバターに含まれるSkindMeshRenderer(顔とか服とかの形を表示する)のRootboneとAnkerOverridedを設定した上で、最適なBoundsのサイズを計算して変更を行います。

補足 ねこますが販売しているアバターのVRChatアバターアップロード用のSceneに含まれているアバターには実行済みです。FBXから新規にセットアップする場合にご利用ください。
※一応、ねこますが販売しているアバター以外に対しても使用可能ですが、動作保証はできかねます。

使い方

UnityEditorのメニューから[KE33AA]を選択し[アバターを推奨設定に変換する]を選択してウィンドウを表示させます。

ウィンドウの[奨設定に変更するアバター]アバターのRoot(オブジェクトの階層が1番上のオブジェクト)を割り当てて[アバターを推奨設定にする]を押すとセットアップします。

SkindMeshRendererが正しく設定されてるか確認して完了です。
上記のプレビューはHierarchyにあるアバターのオブジェクトを選択してる状態のSceneタブで確認できます。
うまく表示されない場合はUnityの表示設定やInspectorのタブがロックされてる等の可能性があります。

何故こんな事をする必要があるの?(読み飛ばし可)

SkindMeshRenderer(顔とか服とかの形を作る機能)には、Boundsという描画を行うかどうかを判定する仕組みがあります。Sceneタブに表示されてる白い線の四角い枠がBoundsの領域でこれがカメラの中に含まれてると描画されます。

しかし、問題が2点あります。
デフォルトの設定の場合はSkindMeshRendererのBoundsにはオブジェクト毎にそれぞれ別の値が入ってきます。
それでも大まかには問題ないのですが、アバターとしてボーンが動いたりすると顔が見えるのに髪の毛は見えない…というようなエッジケースになったりします。
ゲームなら比較的起こりづらいのですが、VRChatはVRで視点が自由に動かせるので珍しくない程度にはこのエッジケースに遭遇します。

雑な解決法としては…このBoundsのサイズに大きな値を入れてしまう方法ですが、当然ですがいい方法ではありません。Boundsが余計に多いとその分、カメラの外にある余計な描画を行う事になるので余計な負荷を増やす事になります。

Avatar2RecommendedSettingsでは大きすぎず小さすぎない最適なBoundsのサイズを計算し、全てのSkindMeshRendererを同じ設定で統一します。
これによりアバターが部分的に消える問題を防ぎつつ、手動で設定する無駄な手間を省きます。

ついでにAnkerOverridedをHeadBoneに設定、RootBoneをHipsに設定しています。

コメント

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