Skip to content

Hips位置が特殊/ボーンスケール改変アバターで姿勢の高さ・位置がズレる(avatarHeightUnitの算出前提) #49

Description

@UnisakiStudio

症状

同根とみられる報告がサポート問い合わせで最多クラスタ(23件)です:

  • デルタフレア: デスクトップ時のみ中腰・座りで体が浮き沈み、ビューポイントずれ(高さ調整ツールで一度調整すると解消)
  • 森羅: 体の半分が沈む、中腰で視点が服に埋まる(無改変でも発生)
  • かににちゃん: ポーズのZ軸がずれた状態で再生、アップロード後は足が前に出る
  • キプフェル・くうた・海咲・ミルフィ・怜ほか: すべての姿勢でお尻が床に沈む等
  • ボーンスケール改変アバター: 寝姿勢で足が伸びきる、頭固定で頭位置が大幅にずれる

原因(Ver3.0.6 ソースの静的調査)

PosingSystemConverter.cs:1175-1221 でアバターの「背の高さ係数」を

  1. RootT.y = 1 のみのクリップをサンプリング(HumanoidのRootT.y=1はhumanScale=Hips接地高に相当)
  2. その状態の headBone.position.y / 2avatarHeightUnit とする

という方法で算出し、以降のRootT正規化・footheight BlendTree生成(:1700-1790)・頭位置基準の座標補正(:1275-1307)に使用しています。この計算は「Hipsボーンが腰の位置にある標準的なリグ」を前提としており、以下で破綻します:

  • Hipsが足元付近にあるリグ: humanScaleが極小になり avatarHeightUnit が実際と大きく乖離
  • ボーンスケール改変: humanScaleとメッシュ実寸の乖離で同様のズレ
  • 頭のXZオフセットが大きいリグ: 頭位置XZ差し引き補正が過剰/不足になりZ軸ズレとして発現

「高さ調整ツールで一度調整すると直る」のは、調整クリップが誤った初期値を上書きするためで、この原因と整合します。

修正案

高さ係数の算出をhumanScale(Hips)依存からTポーズ実測ベースへ変更する(頭ボーンの実測位置を直接使う等)。


Generated by Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions