Consolidate character profiles and image production docs
This commit is contained in:
@@ -1,50 +1,33 @@
|
||||
# 아키텍처 (Architecture)
|
||||
# Architecture
|
||||
|
||||
## 레이어 모델
|
||||
```
|
||||
[상황 이벤트] 예: "error" / "success" / "idle"
|
||||
│
|
||||
▼
|
||||
[트리거 매퍼] reactions.json 상황키 → 반응 클립 이름
|
||||
│
|
||||
▼
|
||||
[반응 시퀀서] clips/<name>.json 타임라인으로 아래 레이어들을 조율
|
||||
├─ Body 레이어 ── 리그 클립(rig.json+track) │ 또는 │ 베이크드 포즈 이미지
|
||||
├─ Face 레이어 ── 표정 프레임 스왑(neutral/negative/love/…)
|
||||
├─ Mouth 레이어 ── 말하기(talk 프레임 순환, 유사 립싱크)
|
||||
├─ Transform 레이어 ── 리그 위에 덧입히는 잔모션(고개젓기·바운스)
|
||||
└─ FX/Caption 레이어 ── 말풍선·효과음(옵션)
|
||||
│
|
||||
▼
|
||||
[컴포지터] 파츠 합성 + 표정 오버레이 + 앵커 정렬(AlphaTools 재활용)
|
||||
│
|
||||
▼
|
||||
[렌더러] Canvas(웹 프로토타입) / WPF(본체) — 60fps
|
||||
```
|
||||
LeeSori 패키지는 캐릭터 설정, 이미지 라이브러리, Live2D 파츠, 리그, 모션, 앱 통합 자료를 한 폴더 안에서 관리한다.
|
||||
|
||||
## 레이어 책임
|
||||
- **Body**: 캐릭터 몸의 자세/모션. 두 모드.
|
||||
- `rig` 모드 = 16파츠 리그를 클립으로 구동(앰비언트·열린 제스처·전환).
|
||||
- `baked` 모드 = 통짜 포즈 이미지 1장(자기-가림 포즈: 팔짱·하트).
|
||||
- **Face**: 감정 = 표정 프레임 교체(머리 이미지 스왑).
|
||||
- **Mouth**: 말하기 = talk/neutral 프레임 순환(유사 립싱크). *정밀 립싱크는 mesh-warp 승급 시.*
|
||||
- **Transform**: 리그 본에 delta를 더하는 잔모션(고개 좌우·호흡·바운스). Body가 baked여도 전체 트랜스폼은 적용 가능.
|
||||
- **FX/Caption**: 말풍선 텍스트·효과음(옵션).
|
||||
## 구성 계층
|
||||
|
||||
## 하이브리드 선택 규칙 (언제 무엇을)
|
||||
| 상황 | Body 모드 | 근거 |
|
||||
|---|---|---|
|
||||
| 배경춤·유휴·호흡 | **rig** | 부드러운 앰비언트, 자산 최소 |
|
||||
| 손 흔들기·가리키기·제시·박수 | **rig** | 열린 자세 → 리그로 자연스러움 |
|
||||
| 고개 끄덕/젓기 | **rig**(Transform) | 작은 각도 + 가림 |
|
||||
| 팔짱·핑거하트·볼하트 | **baked** | 손이 몸에 겹침 → 리그는 뚫림/어색 |
|
||||
| 큰 감정 포즈(만세·좌절) | **baked** 또는 rig(joy/cheer) | 필요 정밀도에 따라 |
|
||||
1. Character Identity
|
||||
- 이름, 역할, 성격, 주요 시각 요소
|
||||
2. Asset Library
|
||||
- 헤드, 의상, 포즈, 액세서리, baked pose
|
||||
3. Live2D Source
|
||||
- PSD, 레이어 PNG, 레이어 manifest, 파츠 분리 기준
|
||||
4. Rig
|
||||
- bone hierarchy, pivot, z-order, deformation group
|
||||
5. Motion
|
||||
- idle, reaction, dance, transition, loop segment
|
||||
6. Runtime Integration
|
||||
- DansoriEQ 캐릭터 호스트, 상태 매핑, 제스처 레지스트리
|
||||
|
||||
## 전환 (transition)
|
||||
- rig→rig: 트랜스폼 보간(부드럽게).
|
||||
- rig↔baked: 짧은 **크로스페이드**(150~250ms) 또는 리그로 근사 진입 후 스냅.
|
||||
- 반응 종료 후 `return` 지정 클립(보통 `idle`/`dance_idle`)으로 복귀.
|
||||
## 최종 자산 원칙
|
||||
|
||||
## 데이터 재사용
|
||||
- `rig.json`·클립·`reactions.json`·표정/포즈 이미지는 **웹 뷰어와 WPF가 동일하게** 사용(플랫폼 독립 데이터).
|
||||
- 앵커 정렬은 기존 `Character_Builder/AlphaTools.cs`(알파 기반 목/어깨 검출) 로직을 재활용.
|
||||
- 원본 제작 자산과 앱 런타임 자산을 같은 패키지에서 추적한다.
|
||||
- 파일명은 캐릭터, 의상, 파츠, 상태, 방향을 식별할 수 있어야 한다.
|
||||
- 파츠는 독립 회전/변형이 가능한 단위로 분리한다.
|
||||
- 겹침이 필요한 영역은 z-order 이벤트나 보정 파츠로 관리한다.
|
||||
|
||||
## 주요 데이터
|
||||
|
||||
- `layer_manifest.json`: Live2D 레이어 구조
|
||||
- `rig.json`: 앱/뷰어용 리그 정의
|
||||
- `live2d_parameters.json`: Live2D 파라미터 정의
|
||||
- `live2d_motion_plan.json`: 모션 설계 데이터
|
||||
- `reactions.json`: 상태별 제스처 매핑
|
||||
|
||||
Reference in New Issue
Block a user