Files
Dansori_Characters/Haruka_Profile/04_Rig/Rig.md
T
2026-07-04 10:34:46 +09:00

40 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Rig.md — 스켈레톤 정의 (`rig.json`) 설명
경량 리그의 뼈대. 뷰어(`../07_Viewer/index.html`)와 WPF 앱이 **동일하게** 읽는다.
## 본 계층 (부모 → 자식)
```
pelvis (root)
├─ chest
│ ├─ neck ─ head
│ ├─ upperarm_r ─ forearm_r ─ hand_r (캐릭터 오른팔 = 화면 왼쪽)
│ └─ upperarm_l ─ forearm_l ─ hand_l (캐릭터 왼팔 = 화면 오른쪽)
├─ thigh_r ─ shin_r ─ foot_r
└─ thigh_l ─ shin_l ─ foot_l
```
16 파츠. 각 관절이 실제로 접힌다(팔꿈치·무릎·손목·발목·목·허리).
## 필드 스키마 (bones[])
| 필드 | 의미 |
|---|---|
| `name` | 본 이름(= 애니메이션 트랙 키, = 파츠 파일 접두) |
| `parent` | 부모 본 이름(root는 null). **배열은 부모가 먼저** 오도록 정렬됨 |
| `pos` `[x,y]` | **부모 관절 기준** 이 본 관절의 오프셋(휴지 자세, px) |
| `angle` | 휴지 각도(deg, **+ = 시계방향**). 팔은 살짝 벌린 춤-대기 자세로 프리셋 |
| `z` | 그리기 순서(작을수록 뒤). 화면 왼팔(캐릭터 오른팔)=뒤, 화면 오른팔=앞 |
| `image` | 파츠 PNG 파일명(`imageBase` + 이 값). 없으면 플레이스홀더 |
| `imgAnchor` `[ax,ay]` | **파츠 이미지 안에서 관절이 위치한 정규화 좌표**(0~1) |
| `imgScale` | 이미지 배율(기본 1) |
| `col` / `ph` / `phW` | 플레이스홀더 색/도형(실제 아트 로드 전까지 사용) |
## 좌표계
- 캔버스 520×900, y-아래(+y = 화면 아래). 회전 + = 시계방향.
- 본의 **로컬 원점 = 그 본의 관절**. 자식 `pos`는 이 원점 기준.
## 튜닝 가이드 (실제 아트가 오면)
1. 뷰어에서 **스켈레톤 오버레이 ON** → 관절 점(분홍)이 아트 관절 위에 오도록:
- 위치 어긋남 → `pos` 조정 / 파츠가 관절에서 어긋나 회전 → `imgAnchor` 조정 / 크기 → `imgScale`.
2. 겹침 이상 → `z`. 목 이음새 벌어짐 → 머리 회전 폭↓ 또는 `neck` 피벗 내림.
> 강체 회전 한계상 큰 각도에서 관절이 벌어질 수 있음. 오버랩 파츠 + z가림으로 완화. 더 필요하면 `../02_Architecture/Limits_and_Mitigations.md` 의 mesh-warp 승급.