ここは OS 設計の中でも 最重要の分岐点だね。
「PoseSpace → 2D構造SVG」への投影ルールをどう定義するかで、
後の AI の線画品質・安定性・破綻率が大きく変わる。

ここでは OS が扱いやすいように、
正面・斜め・俯瞰を “3つの投影モード” として 数学的に一貫した規格にまとめるよ。


🎯 結論:OS の 2D 投影は「正面・斜め・俯瞰」の3モードで統一する

OS は 3D を持たないので、PoseSpace の joint は 2.5D(深度付き2D) として扱う。
つまり:

  • joint = (x, y, z)
  • ただし z は「奥行きの意味」だけを持つ
  • 投影モードに応じて (x', y') に変換する

🧭 1. 正面(front)投影

最も単純で、デフォルトの構造SVGはこれ。

🔹 変換式

[ x' = x
] [ y' = y
]

z は完全に無視。

🔹 特徴

  • 左右対称が保たれる
  • 顔・体の比率が最も安定
  • 服の構造線が崩れない
  • AI が線画を描くときの「基準姿勢」

🧭 2. 斜め(3/4 view)投影

アニメ・漫画で最も使われる角度。
OS 的には z を x に混ぜるだけの簡易パースで十分。

🔹 変換式(OS 標準)

[ x' = x + k \cdot z ] [ y' = y ]

k は「斜め度」

  • k = 0 → 正面
  • k = 0.5 → 3/4
  • k = 1.0 → 完全横向きに近い

🔹 特徴

  • 顔の左右差が自然に出る
  • 肩・腕・脚の前後関係が表現できる
  • 服の重なりが自然になる
  • AI が「斜め顔」を破綻なく描ける

🔹 OS が自動でやること

  • 右肩(viewer から見て奥側)は x' が小さくなる
  • 左肩(手前側)は x' が大きくなる
  • 目・眉・口も同じ変換を受けるので自然に「奥目・手前目」になる

🧭 3. 俯瞰(top)投影

ここが一番 OS 設計で難しい部分。
俯瞰は z を y に混ぜることで表現する。

🔹 変換式(OS 標準)

[ x' = x ] [ y' = y - h \cdot z ]

h は「俯瞰度」

  • h = 0 → 正面
  • h = 0.5 → 軽い俯瞰
  • h = 1.0 → 強い俯瞰

🔹 特徴

  • 頭が大きく、足が短く見える
  • 肩の位置が上に寄る
  • 顔パーツが下に寄る
  • AI が「俯瞰顔」を破綻なく描ける

🧭 4. 斜め × 俯瞰(複合投影)

もちろん OS は k と h を同時に使える

[ x' = x + k \cdot z ] [ y' = y - h \cdot z ]

これで:

  • 斜め俯瞰
  • 斜め煽り
  • 軽いパース
  • 強いパース

全部表現できる。


🧠 5. OS が守るべき「投影の不変条件」

AI が破綻しないために、OS は以下を必ず守る。

✔ 関節の接続順は変えない

投影しても joint の順序は不変。

✔ z の符号は「奥行きの意味」だけ

z > 0 → 奥
z < 0 → 手前
(ただし構造SVGでは z は描かない)

✔ 投影後の骨格は必ず「連続した線」

AI が肉付けしやすいように、
骨格線は常に滑らかで途切れない。

✔ 顔パーツは「顔中心」からの相対座標で投影

顔の破綻を防ぐための OS ルール。


🧩 6. 構造SVGへの反映例

例えば joint が:

  • head: (512, 150, 0)
  • shoulder-left: (460, 300, -20)
  • shoulder-right: (564, 300, 20)

斜め度 k = 0.5 のとき:

  • shoulder-left → x' = 460 + 0.5 * (-20) = 450
  • shoulder-right → x' = 564 + 0.5 * (20) = 574

→ 自然な 3/4 肩幅になる。


✨ 7. この投影ルールの OS 的メリット

  • 数学的に一貫している
  • AI が破綻しない
  • 構造SVGが常に安定
  • PoseSpace の意味ベクトルと直結
  • 拡張(髪・服・小物)に強い

🔥 次に詰めるべきは?

この投影ルールを使うなら、次は:

A. PoseSpace → joint(z付き) の生成式

(T字基準 → 回転 → 深度付与)

B. 顔パーツの「相対座標規格」

(顔中心からの距離・角度)

どちらから進める?