BoundsUnificator
- SkinnedMeshRenderer の Bounds を統一し、
RootBone
やAnchorOverride
を揃える Unity 拡張ツールです。
何ができますか?
複数メッシュの設定 1 を統一し、ライトからの影響ができるだけ均一になるよう設定します。
Bounds
設定のミスで変にカリングされてしまうメッシュに対し、Bounds
をリセットして正しく表示されるようにすることもできます。
使い方
手動で設定する
Tools
→ whiteflare
→ Bounds Unificator
から開くと、こんなウィンドウが出てきます。
Root Object
にアバターのルートを設定してください。この配下から SkinnedMeshRenderer 等を検索しま す。VRC_AvatarDescriptor が付いていなくても問題ありません。- 設定すると
SkinnedMeshRenderer
,MeshRenderer
,RootBone (Hip)
,AnchorOverride
が検索されて、自動で割り当てられます。 - 自動割り当ての後に、設定を変更しても問題ありません。不都合がある場合はこのタイミングで差し替えてください。
- 設定すると
Calculate Bounds
ボタンを押すと、SkinnedMeshRenderer から AABB を自動で計算してBounds
に設定します。- 計算された値を後から変更しても構いません。ボタンを押さずにすべて手動で入れても良いです。微調整はこのタイミングで行ってください。
Apply Bounds To Renderer
ボタンを押すと、ウィンドウ内の設定内容をもとに SkinnedMeshRenderer と MeshRenderer を書き換えます。- 問題がある場合は Undo (CTRL+Z) して元に戻してください。
Apply Bounds To Renderer
の後、白枠 (SkinnedMeshRenderer の Bounds) がアバターを包んでいるかどうか2結果を確認してください。
自動で設定する (NDMF併用)
VRCSDK3 Avatar のルートオブジェクトに Add Component
から [BU] Set Anchor And Bounds
を追 加してください。
Non-Destructive Modular Framework を用いて、アバタービルド時に自動的に AnchorOverride/RootBone/Bounds を調整します。
計算方法は Skinned Vertex
が用いられます。
細かい仕様
Calculate Bounds の計算について
- 計算方法は Calc Method から選ぶことができます。
Skinned Vertex
: ボーンを反映した後のメッシュ頂点座標をもとに AABB を計算します。Prefab Value
: プレハブ(多くはFBX自体)のなかの SkinnedMeshRenderer に設定された Bounds をもとに AABB を計算します。Current Value Only
: プレハブ外にて現在設定された Bounds をもとに計算します。Bone Transform
: ボーンの根元座標をもとに AABB を計算します。
- Bounds の値は、自動計算ではキリよく 0.01 単位になるはずです。
RootBone の自動検索について
RootBone (Hip)
には、以下の順でオブジェクトを検索して最初に見つかったものが設定されます。- Humanoid リグの Hips
- 見つからない場合、
Root Object
がそのまま設定されます。
AnchorOverride の自動検索について
RootBone (Hip)
には、以下の順でオブジェクトを検索して最初に見つかったものが設定されます。AnchorTarget
という名前のオブジェクト (レターケース不問、空白文字は無視)AnchorOverride
という名前のオブジェクト (レターケース不問、空白文字は無視)- Humanoid リグの Chest
- 見つからない場合、
Root Object
がそのまま設定されます。
ボーンを持たない SkinnedMeshRenderer の扱いについて
- ボーンで動かない SkinnedMeshRenderer は、MeshRenderer と同じく AnchorOverride の統一だけするようになっています。