Consolidate character profiles and image production docs
This commit is contained in:
@@ -1,36 +1,27 @@
|
||||
# 앱 통합 (App Integration)
|
||||
# App Integration
|
||||
|
||||
이소리 반응 시스템을 **DansoriEQ(및 향후 Dansori 앱)** 에 탑재하는 방식.
|
||||
LeeSori는 DansoriEQ의 캐릭터 호스트에서 표시된다.
|
||||
|
||||
## 런타임 호스트 두 선택지 (O1 — 결정 예정)
|
||||
| 옵션 | 방식 | 장점 | 단점 |
|
||||
|---|---|---|---|
|
||||
| **A. WPF-C# 이식** | 리그·시퀀서를 C#로 포팅, WPF 캔버스에 렌더 | 네이티브·경량·기존 `AlphaTools` 재활용 | 런타임을 두 벌(웹/C#) 유지 |
|
||||
| **B. WebView2 임베드** | 웹 런타임(뷰어 진화형)을 WPF WebView2에 임베드 | 런타임 1벌(데이터·코드 공유) | WebView2 의존·상호작용 브리지 필요 |
|
||||
> 프로토타입은 웹으로 계속. Phase 3에서 A/B 결정. 어느 쪽이든 **데이터(`rig.json`·클립·`reactions.json`·이미지)는 그대로 재사용**.
|
||||
## 앱 표시 기준
|
||||
|
||||
## 트리거 API (앱 ↔ 마스코트)
|
||||
```
|
||||
Mascot.SetIdle("dance_idle") // 배경 기본 루프 지정
|
||||
Mascot.React("success") // 상황키 → reactions.json → 클립 재생 → 끝나면 return(idle)
|
||||
Mascot.React("error")
|
||||
Mascot.Say("환영합니다", "smile") // 임시 대사(mouth+face)만, 포즈 유지
|
||||
Mascot.Stop() / Mascot.SetVisible(b)
|
||||
```
|
||||
- 앱 이벤트(버튼 실패/성공, 화면 진입 등)에서 상황키만 던진다. 표현 방법은 마스코트가 데이터로 결정.
|
||||
- 위치: 앱 우측 캐릭터 영역
|
||||
- 기본 프레이밍: 무릎 위부터 머리끝까지
|
||||
- 우선 상태: idle, thinking, success, error, muted, dance
|
||||
- 파일 기준: Profile 패키지에서 검증된 런타임 자산만 앱에 반영
|
||||
|
||||
## 리소스 번들
|
||||
- **필요한 PNG만** 앱 리소스로 복사(전부 아님): 리그 16파츠 + 사용하는 표정 세트 + 사용하는 baked 포즈 + hairmask.
|
||||
- 데이터 파일(`rig.json`·클립·`reactions.json`)은 소스로 번들.
|
||||
## 런타임 요구
|
||||
|
||||
## 좌표·정렬 규약
|
||||
- 스테이지 캔버스 기준(현재 리그 520×900). 앱 배치 시 전체 스케일/위치만 트랜스폼.
|
||||
- 파츠 앵커 정렬은 기존 `Character_Builder/AlphaTools.cs`(알파 기반 목/어깨 검출)와 동일 알고리즘 재활용.
|
||||
- 색 변형은 런타임 hairmask hue-shift(이미지 추가 없음).
|
||||
- 캐릭터 manifest
|
||||
- rig.json
|
||||
- gesture registry
|
||||
- state-to-gesture mapping
|
||||
- asset cache busting
|
||||
- z-order event support
|
||||
|
||||
## 배경 마스코트 연동(DansoriEQ 예시)
|
||||
- 메인화면 배경 이소리를 **통짜 → 리그**로 교체(부유+말하기 동기화는 기존 `MainWindow.SetBgMascotTalking` 훅 활용).
|
||||
- 참고: `../../HANDOFF.md`, DansoriEQ `docs/HANDOFF.md §8`.
|
||||
## 품질 기준
|
||||
|
||||
## 포터블 원칙
|
||||
- 절대경로 금지. `LeeSori_Profile`은 통째 이동 가능하게 상대경로만 사용.
|
||||
- 팔 중복 없음
|
||||
- 파츠 절단선 최소화
|
||||
- 의상 라인 자연스러움
|
||||
- 손/손목 방향 변화 표현
|
||||
- 루프 연결 자연스러움
|
||||
|
||||
@@ -1,36 +1,37 @@
|
||||
# 로드맵 (Roadmap)
|
||||
# Roadmap
|
||||
|
||||
단계별 구현 계획. 각 Phase는 **완료조건**을 만족하면 다음으로.
|
||||
## 1. 기준 자료 확정
|
||||
|
||||
## Phase 0 — 방향·설계 (완료)
|
||||
- 하이브리드 방식·구현레벨 확정(`../01_Overview/Decisions.md`).
|
||||
- 리그 스키마(`../04_Rig/rig.json`) + 배경춤 프로토타입(`../05_Animation/dance_idle.json`) + 뷰어(`../07_Viewer/`).
|
||||
- **완료조건**: 뷰어에서 플레이스홀더 춤 재생 확인. ✅
|
||||
- Solo Dance 3 키포즈 24~32개 추출
|
||||
- keyframe label 작성
|
||||
- motion reference manifest 작성
|
||||
|
||||
## Phase 1 — 자산 생성 & 리그 실아트 검증
|
||||
1. 이소리 **시트 투명알파 재확정**(`(소스 아카이브)`).
|
||||
2. **리그 16파츠 확보** — **방법 A(마스터-슬라이스) 우선**: 슬라이스용 마스터 1장 생성 → 로컬에서 16조각(관절 자동 정합). 어려우면 **방법 B(개별 생성)** 폴백. (대체 손 attachment는 B로.) 스펙: `../이미지작업_의뢰서.md` · `../03_Assets/Parts/Parts.md` → `Parts/Images/`.
|
||||
3. 뷰어에서 실아트 로드 → `rig.json`의 `imgAnchor/pos` 튜닝(관절 정합).
|
||||
4. 배경춤(`dance_idle`)이 실제 이소리로 자연스러운지 확인.
|
||||
- **완료조건**: 실제 파츠로 배경춤이 이음새 없이 자연스럽게 루프.
|
||||
## 2. 파츠 확장
|
||||
|
||||
## Phase 2 — 반응 시퀀서 런타임
|
||||
1. 시퀀서 구현: `reactions.json` + `clips/*.json`의 **Body/Face/Mouth/Transform/Caption** 레이어 합성·전환(크로스페이드).
|
||||
2. 뷰어 확장(또는 별도 러너)으로 `gesture_no`·`gesture_heart`·`dance_idle` 재생.
|
||||
3. 베이크드 포즈(armscross/heart) + 표정 프레임 연동. 말하기 근사 립싱크.
|
||||
- **완료조건**: 상황키 3종(error/success/idle)으로 반응 재생·복귀 동작.
|
||||
- 상완/전완/손/손가락 분리
|
||||
- 상체/의상 보정 파츠 생성
|
||||
- 머리카락 sway 파츠 생성
|
||||
- z-order mask 생성
|
||||
|
||||
## Phase 3 — 앱 통합 (WPF 본체)
|
||||
1. 런타임 호스트 결정(WPF-C# 이식 vs WebView2 임베드 — `App_Integration.md` 참고).
|
||||
2. 트리거 API(`Mascot.React/SetIdle/Say`)로 앱 이벤트 연결.
|
||||
3. 리소스 번들(필요한 PNG만) + 좌표규약.
|
||||
- **완료조건**: 앱에서 실제 상황에 캐릭터가 반응.
|
||||
## 3. 리그 구축
|
||||
|
||||
## Phase 4 — (옵션) 얼굴 mesh-warp 승급
|
||||
- 조건 충족 시(정밀 립싱크/중간 각도 고개돌림 — `../02_Architecture/Limits_and_Mitigations.md` L4) neck/head 국소 WebGL mesh-warp 도입.
|
||||
- bone hierarchy 작성
|
||||
- pivot 정리
|
||||
- Live2D parameter 정의
|
||||
- 앱 런타임용 경량 rig 변환
|
||||
|
||||
## 반응 확장 (상시)
|
||||
- 같은 프레임워크로 greet/explain/thinking 등 반응을 계속 추가(`../06_Reactions/`).
|
||||
## 4. 모션 제작
|
||||
|
||||
## 현재 위치
|
||||
> **Phase 1 진입 지점.** 다음 액션 = 시트 재확정 + 리그 파츠 생성 의뢰.
|
||||
- idle groove
|
||||
- hand forward
|
||||
- arms up
|
||||
- side turn
|
||||
- return settle
|
||||
- reaction clips
|
||||
|
||||
## 5. 앱 통합
|
||||
|
||||
- DansoriEQ 상태 매핑
|
||||
- gesture registry 등록
|
||||
- 우측 패널 프레이밍 확인
|
||||
- 성능 검증
|
||||
|
||||
Reference in New Issue
Block a user