Consolidate character profiles and image production docs

This commit is contained in:
eKeerar
2026-07-04 12:54:11 +09:00
parent 351c3d65ad
commit f8db111d71
1366 changed files with 3743 additions and 21740 deletions
+16 -39
View File
@@ -1,47 +1,24 @@
# 확정 결정 로그 (Decisions)
# Decisions
> 논의를 통해 확정된 결정과 근거. 뒤집을 땐 여기에 사유와 함께 갱신.
## 최종 폴더
## D1. 표현 방식 = 하이브리드 (확정)
리그 + 베이크드 포즈 + 표정 프레임 스왑을 상황별로 조합.
- **근거**: 리그는 앰비언트/열린 제스처에 강하고, 팔짱·하트 같은 자기-가림 포즈는 베이크드 이미지가 자연스럽다. 각자의 강점만 사용.
- LeeSori의 최종 기준 폴더는 `LeeSori_Profile`이다.
- 프로필, 이미지, Live2D, 리그, 댄스 모션, 앱 통합 문서는 모두 이 폴더 안에서 관리한다.
## D2. 구현 레벨 = 코드 네이티브 경량 리그 (확정, Live2D/Spine 배제)
- **근거**: Live2D/Spine의 리깅은 **독점 GUI 에디터에서 사람이** 하는 작업 → **AI 자동화 목적과 상충**. 우리 코드로 리그/모션/반응을 소유하면 데이터(JSON)만으로 자동화·반복이 가능.
## 런타임 방향
## D3. 분절 = 완전 해부학 16파츠 (확정)
head·neck·chest·pelvis + (상완·전완·손)×2 + (허벅지·종아리·발)×2.
- **근거**: 팔꿈치·무릎·손목·목·허리가 실제로 접혀야 제스처/춤이 자연스럽다.
- DansoriEQ에서는 가벼운 웹 기반 캐릭터 호스트를 사용한다.
- 단기 앱 적용은 파츠 기반 런타임으로 처리한다.
- 장기 제작 기준은 Live2D Cubism에서 사용할 수 있는 세분화 파츠와 파라미터 세트다.
## D4. 얼굴 = 표정 프레임 스왑 (확정)
20종 표정 이미지 교체 + 말하기 = talk 프레임 순환(유사 립싱크).
- **한계 인지**: 눈+입이 세트로 고정 → "감정+정밀 립싱크 동시"는 불가. 필요 시 D7로 승급.
## 댄스 기준
## D5. 자기-가림 포즈 = 베이크드 이미지 (확정)
팔짱(armscross)·하트(heart) 등은 리그 보간 대신 **통짜 포즈 이미지**로. (기존 표준 18제스처 자산 재사용.)
- 주 댄스 레퍼런스는 `Solo Dance 3`다.
- 모션 목표는 몸 중심 이동, 흉곽/골반 counter motion, 팔 lift arc, 손목 roll, 손가락 변화, 헤어 secondary motion이다.
- 팔 중복을 방지하기 위해 파츠는 겹침이 명확히 통제된 레이어로 분리한다.
## D6. 투명 알파 필수 (확정)
모든 파츠/프레임 = 32-bit RGBA(`Format32bppArgb`), 배경 alpha=0. 24-bit·매트 배경 금지.
## 자산 관리
## D7. mesh-warp(그리드 변형) = 옵션·후속 (보류)
목/얼굴 국소 mesh-warp(WebGL)로 목 이음새·정밀 립싱크·중간 각도 고개돌림을 승급.
- **승급 조건**: 강체 리그로 목/얼굴이 실제로 부족할 때, 그 부위에만 국소 도입. 전신 적용 안 함.
## D8. 이미지 = ChatGPT 자동생성 (확정)
사람이 안 그림. 생성용 `.md` 스펙을 우리가 제공.
## D9. 색상·모션 = 코드/데이터 (확정)
색 변형 = hairmask hue-shift. 모션 = 리그 클립. 반응 = 시퀀서 데이터.
## D10. 폴더 통합 (확정)
`LeeSori_Rigging`**`LeeSori_Profile`로 통합, Rigging 폐기.** 시트 표준 위치 = `03_Assets/Reference/sori_sheet.png`.
## D11. 리그 파츠 생성 = 마스터-슬라이스 우선, 개별생성 폴백/attachment (확정)
- 핵심 16파츠는 **마스터 1장 → 로컬 슬라이스**(같은 좌표계 → 관절 자동 정합, 접합 오차↓)가 **1순위**. 파츠 개별 생성은 그 **폴백**(같은 16파츠를 만드는 대체 방법 — 둘 다 만들 필요 없음).
- **슬라이스 출력 = 풀캔버스**: 각 파츠는 **크롭 없이 마스터와 동일한 520×900 캔버스에 제자리 배치**(그 외 투명). 16장 스택 시 마스터 복원 → 위치정보 보존, 앵커 튜닝 불필요. (타이트 크롭하면 위치정보가 사라져 정합이 깨짐.)
- **단 마스터에 없는 변형 파츠**(핑거하트·주먹·가리킴 등 대체 손 attachment)는 **개별 생성으로만** 가능 → 그 용도엔 개별 생성이 별도로 필요.
- **근거**: 슬라이스는 좌표 정합에 강함(반복 수정 원인 제거). 생성 AI는 픽셀 좌표를 못 맞추므로 접합 좌표는 **생성 후 이미지에서 측정**(정규화 앵커 `imgAnchor`)해 `rig.json`에 저장.
## 열린 결정 (미확정)
- **O1. 최종 런타임 호스트**: 프로토타입=웹(Canvas). 본체=WPF. WPF에 동일 리그/시퀀서를 이식(C#) 할지, 아니면 WebView2로 웹 런타임을 임베드할지 → `../08_Roadmap/App_Integration.md` 에서 결정 예정.
- **O2. 대사 표시**: 말풍선 캡션 vs TTS 음성 vs 둘 다.
- 모든 의상, 포즈, 제스처, 파츠는 재사용 가능한 카테고리로 분류한다.
- 앱 적용용 baked pose와 Live2D용 source part를 구분한다.
- 임시 확인 이미지와 작업용 디버그 파일은 캐릭터 패키지에 포함하지 않는다.
@@ -1,26 +1,24 @@
# 목적과 방향 (Purpose & Direction)
# Purpose and Direction
## 최종 목적
이소리를 **앱에 탑재된 인터랙티브 마스코트**로 만든다. 사용자의 행동·앱 상태(상황)에 따라 캐릭터가 **적절한 제스처·표정·대사로 반응**해 살아있는 느낌을 준다.
LeeSori는 음악, EQ, 재생 상태, 작업 흐름을 시각적으로 안내하는 메인 캐릭터다. 핵심 인상은 차분한 전문성, 밝은 반응성, 음악 작업에 익숙한 디지털 파트너다.
## 대표 사용 시나리오 (상황 → 반응)
| 상황(트리거) | 반응 |
|---|---|
| 오류/금지된 동작 | 팔짱 끼고 인상 쓰며 고개 저으며 **"안돼요"** |
| 성공/완료/칭찬 | 손 하트 그리며 밝게 **"잘됐어요"** |
| 대기/유휴(배경) | 가볍게 **춤추는** 루프(앰비언트) |
| (확장) 인사 | 손 흔들며 "안녕하세요" |
| (확장) 안내/설명 | 한 손 제시(present) + 말하기 |
| (확장) 생각중/로딩 | 갸웃 + thinking 표정 |
> 확장 반응은 같은 프레임워크로 계속 추가한다(`../06_Reactions/Reactions.md`).
## 캐릭터 역할
## 방향성 (핵심 원칙)
1. **AI 자동화**: 모든 캐릭터 이미지는 **ChatGPT로 생성**(각 생성용 `.md` 스펙 제공). 사람이 그리지 않는다.
2. **동작·색상은 코드/데이터**: 모션(리그 클립)·반응 시퀀스·색 변형(hairmask hue-shift)은 이미지가 아니라 코드/데이터. → 재사용·자동화·경량.
3. **하이브리드 표현**: 상황에 맞춰 **리그(앰비언트/열린 제스처)** + **베이크드 포즈(자기-가림 포즈)** + **표정 프레임 스왑(감정/말하기)** 을 조합.
4. **경량·포터블**: 에디터/외주 없이 **우리 코드**로 리그·모션·반응을 소유. 데이터(JSON)는 뷰어(웹)와 WPF 앱이 동일하게 사용.
5. **투명 알파 필수**: 모든 파츠/프레임은 32-bit RGBA(`Format32bppArgb`), 배경 alpha=0.
6. **점진적 품질 상향**: 강체 리그로 시작 → 필요한 곳(목/얼굴)만 **mesh-warp** 국소 승급(옵션).
- 사용자의 명령을 기다리는 대기 상태 표현
- 분석/처리 중인 상태 표현
- 완료, 오류, 음소거, 경고 등 앱 상태 피드백
- 음악 관련 행동과 감정 표현
- DansoriEQ의 브랜드 캐릭터 역할
## 범위 밖(당분간 안 함)
- Live2D/Spine 도입(GUI 리깅=자동화와 상충). 전신 mesh-warp. 3D. 정밀 음소 립싱크(얼굴 mesh-warp 승급 시 재검토).
## 시각 방향
- 헤드셋과 청록 계열 포인트를 주요 식별 요소로 사용한다.
- 상체 중심 표현에서 얼굴, 손, 팔, 상체 실루엣이 명확히 보여야 한다.
- 앱 우측 패널에서는 무릎 위부터 머리끝까지 보이는 구도를 기본으로 한다.
- 과도한 장식보다 반복 사용에 견디는 선명한 실루엣과 안정적인 파츠 분리를 우선한다.
## 모션 방향
- idle은 사용자의 명령을 기다리는 상태로 자연스럽고 과하지 않게 유지한다.
- dance는 Solo Dance 3 기준으로 상체 리듬, 팔 올림, 손목 회전, 손바닥 방향, 헤어 follow-through를 포함한다.
- 모션은 정지 이미지 컷 전환이 아니라 파츠 리그, 보정 파츠, z-order 이벤트, easing curve로 구성한다.