# RigMock — DAIKU 統合前提の使い捨てモック

「1枚の立ち絵を、傾き/呼吸に応じてドットを再配置して動かす（Live2D/Spine工数感の
ピクセルネイティブ・リグ）」を、**DAIKU に統合する前提**で先に別実装して検証するための
プロトタイプ。**統合したら丸ごと消す前提**で `F:\Tool\DAIKU\rigmock\` に隔離してある。
DAIKU 本体（`../app.js` 等）には一切触っていない。

## モックの目的（＝一番怖い所を先に潰す）

「**ピクセルスナップ変形（整数平行移動＋行シア＋縦squash）＋顔のアンカー継承（はめ込み）＋
ばね/まばたき**が、ドット絵として“見られる画”になるか」を最小で確認する。ここが成立しないと
本実装の価値が無いので、UI やタイムラインより前にこれを見る。

## ファイル（残す / 捨てる）

| ファイル | 統合時 | 中身 |
|---|---|---|
| `rigcore.js` | **残す** | 依存ゼロ純エンジン。ピクセルスナップ変形 / パラメータ評価（オシレータ・ばね・まばたき）/ アンカー継承合成 / 自己テスト。`window.RigCore`。node でも `require` 可。 |
| `mock.js` | 捨てる | プレースホルダSDキャラ生成＋UI配線＋rAF合成＋整数アップスケール。 |
| `index.html` | 捨てる | UIシェル（DAIKUのUI規約に準拠：13px・1px境界・角丸≤2px・アクセント1色）。 |
| `deploy-pages.ps1` / `デプロイ.cmd` | 捨てる | Cloudflare Pages 用（別プロジェクト `daiku-rigmock`）。 |

## 動かし方

ローカル: `index.html` を静的サーバで開く（DAIKU と同じく `npx serve` 等）。
公開: `デプロイ.cmd` をダブルクリック → `https://daiku-rigmock.pages.dev/`（publish はユーザー操作）。

## 操作

- 表情ボタン（通常/笑/怒/照れ/眠）＝**離散パラメータ**（差分差し替え）。
- 首振り（2.5D）＝**円筒投影リマップ**（フラット正面絵→横方向に再投影）。1パスで輪郭中心の移動・
  遠側の横圧縮（遠目が細くなる/鼻が寄る）・裏に回った片耳のオクルージョン（消える）が同時に出る。
  列単位コピーなので縦線は割れない。フラットに裏側の絵は無いので中〜小角度向き（大回転は描いた3/4差分が要る）。
- ロール/X/Y/呼吸＝**幾何パラメータ**（ツールが整数スナップで再配置）。
- 髪揺れ＝頭の動きに遅れて追従する**ばね物理**（二次モーション）。
- まばたき自動＝**確率トリガ**。「今すぐ」で手動。
- 頭アンカー＝顔/前髪が継承する基準点を可視化。オニオン＝休めポーズを薄く下敷き。

## DAIKU への統合方針（このモックで検証した上で）

1. **残すのは `rigcore.js`（純エンジン）だけ。** DAIKU の `RasterCore` / Hybrid Raster Engine と
   同じ「ツールがラスタ計算を持つ」流儀。app.js から `window.RigCore` を参照する。
2. **データ契約**: `part = {id, parent, bmp, deform}` / `transform = {dx,dy,shear,sy,pivotY}` /
   表情＝離散インデックス。これを DAIKU のレイヤー/フォルダ＋表情差分マトリクスに対応させる。
   モック側もこの形で持っているので、スキーマがそのまま育つ。
3. **統合の仕方は app.js 直マージを避ける**：(a) データ連携（DAIKU が部位 PNG/差分を書き出し→
   リグが食う・GS-Rack 経路）/(b) 同一オリジン iframe スロットで埋め込み（SEP-5/B-1 と同じ）。
4. **着地先は後で決める**：ボーン/アンカー→GSBone、表情差分→DAIKUネイティブ、
   タイムライン/ステートマシン→GSAnim（Animator互換）。このモックで全フローを1か所で試す。

## このモックに入っていないもの（本実装での次段）

- RotSprite式の真の回転（ロールは今はクリスプな行シアで表現）。
- 2.5D首振りの大角度（裏側の絵が無いので痩せて消える→3/4差分の差し替えが要る）。
- 自由グリッドワープ（メッシュ変形）。
- パラメータのキーフレーム・タイムライン（今はオシレータ＋手動＋物理のみ）。
- 表情差分の登録オニオン／領域ロックのオーサリングUI（差分は固定プレースホルダ）。
- 顔の実画像読み込み（今は手続き生成のプレースホルダ）。
