ここは 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. 顔パーツの「相対座標規格」
(顔中心からの距離・角度)
どちらから進める?