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`: 상태별 제스처 매핑
|
||||
|
||||
@@ -1,26 +1,23 @@
|
||||
# 한계와 완화 (Limits & Mitigations)
|
||||
# Limits and Mitigations
|
||||
|
||||
강체 컷아웃 + 프레임 스왑의 본질적 한계와, 우리가 쓰는 완화책. 그리고 mesh-warp 승급 기준.
|
||||
## 리그 한계
|
||||
|
||||
## L1. 관절 이음새 (강체 회전)
|
||||
- **문제**: 파츠를 크게 회전하면 관절 경계가 벌어지거나 겹침(특히 목). 분절을 늘려도 **근육 연속성은 해결 안 됨**(강체의 본질).
|
||||
- **완화**: ① 회전 각도 작게 ② 피벗 낮게 ③ **근위단 오버랩 스텁**(부모가 틈을 덮음) ④ 옷깃/머리/초커로 **가림** ⑤ z-순서.
|
||||
- **잔여 위험**: 큰 각도 고개돌림·큰 팔동작은 여전히 티남 → baked 포즈로 우회 또는 L4 승급.
|
||||
Live2D 수준의 자연스러운 움직임은 단일 전신 이미지나 큰 팔 파츠만으로 만들 수 없다. 자연스러운 결과를 위해서는 상체, 팔, 손, 손가락, 머리카락, 의상 보정 파츠가 필요하다.
|
||||
|
||||
## L2. 립싱크 (프레임 스왑 얼굴)
|
||||
- **문제**: 표정이 눈+입 세트 고정 → "특정 감정 + 정밀 입모양" 동시 불가.
|
||||
- **완화**: 감정 표정 + 고개짓 + talk/neutral 프레임 순환으로 **뉘앙스 전달**. 필요하면 **감정+talk 조합 머리**를 소수 추가 생성(`../03_Assets/Expressions_and_Poses.md`).
|
||||
- **잔여 위험**: 음소 단위 정밀 립싱크는 불가 → L4 승급.
|
||||
## 보완 원칙
|
||||
|
||||
## L3. 자기-가림 포즈
|
||||
- **문제**: 팔짱·하트 등 손이 몸/반대팔에 겹치는 포즈는 리그로 뚫림.
|
||||
- **완화**: **baked 포즈 이미지**로 대체(기존 18제스처 자산). 진입은 크로스페이드.
|
||||
| 한계 | 보완 방식 |
|
||||
|---|---|
|
||||
| 팔 전체가 한 파츠이면 팔꿈치가 굽혀지지 않음 | 상완, 팔꿈치 보정, 전완, 손목, 손, 손가락 파츠 분리 |
|
||||
| 상체가 회전하면 의상 라인이 끊김 | 가슴/복부/자켓/후드/지퍼 보정 파츠 추가 |
|
||||
| 손바닥 방향이 바뀌지 않음 | palm, backhand, side hand, fist, open hand 상태 추가 |
|
||||
| 머리카락이 몸과 함께 굳어 보임 | 앞머리, 옆머리, 뒷머리, 끝머리 sway 파츠 분리 |
|
||||
| 팔이 몸 앞뒤를 오갈 때 어색함 | z-order 이벤트와 occlusion mask 사용 |
|
||||
| 정지 이미지 전환처럼 보임 | motion curve, easing, overshoot, follow-through 적용 |
|
||||
|
||||
## L4. mesh-warp 승급 (옵션·후속)
|
||||
- **무엇**: 목/얼굴에 그리드 메시를 씌워 **피부 늘어남·입/눈썹 독립 변형·중간 각도 고개돌림**을 구현(WebGL). 우리 런타임 내 구현 → 자동화 유지.
|
||||
- **승급 조건(하나라도 강하게 필요할 때)**: (a) 목 이음새가 baked/가림으로도 부족 (b) 감정+정밀 립싱크 동시 필요 (c) 중간 각도 고개돌림 필요.
|
||||
- **한계(승급해도)**: 큰 각도(대략 30°↑) 고개돌림은 **가려진 반대면이 없어** 여전히 각도별 머리 아트 추가가 필요. 자동 워프가 없는 면을 만들지는 못함.
|
||||
- **원칙**: 전신 아님, **국소(neck/head)만**. 품질 튜닝은 스크린샷 피드백 루프.
|
||||
## 품질 기준
|
||||
|
||||
## 요약
|
||||
> 강체+프레임스왑으로 **대부분의 상황 반응은 충분히 자연스럽게** 만든다(가림·baked·잔모션 조합). 정밀 립싱크/큰 고개돌림만 별도 승급(L4/각도 아트) 대상.
|
||||
- 팔은 한쪽당 최소 상완/전완/손 3단계 이상으로 나뉜다.
|
||||
- 손은 최소 relaxed, open palm, fist, pointing 상태를 갖는다.
|
||||
- 상체는 neutral, left bend, right bend, forward bend, chest-up 보정이 가능해야 한다.
|
||||
- 댄스 루프는 2.5~4초 단위로 재사용 가능해야 한다.
|
||||
|
||||
Reference in New Issue
Block a user