3.9 KiB
3.9 KiB
확정 결정 로그 (Decisions)
논의를 통해 확정된 결정과 근거. 뒤집을 땐 여기에 사유와 함께 갱신.
D1. 표현 방식 = 하이브리드 (확정)
리그 + 베이크드 포즈 + 표정 프레임 스왑을 상황별로 조합.
- 근거: 리그는 앰비언트/열린 제스처에 강하고, 팔짱·하트 같은 자기-가림 포즈는 베이크드 이미지가 자연스럽다. 각자의 강점만 사용.
D2. 구현 레벨 = 코드 네이티브 경량 리그 (확정, Live2D/Spine 배제)
- 근거: Live2D/Spine의 리깅은 독점 GUI 에디터에서 사람이 하는 작업 → AI 자동화 목적과 상충. 우리 코드로 리그/모션/반응을 소유하면 데이터(JSON)만으로 자동화·반복이 가능.
D3. 분절 = 완전 해부학 16파츠 (확정)
head·neck·chest·pelvis + (상완·전완·손)×2 + (허벅지·종아리·발)×2.
- 근거: 팔꿈치·무릎·손목·목·허리가 실제로 접혀야 제스처/춤이 자연스럽다.
D4. 얼굴 = 표정 프레임 스왑 (확정)
20종 표정 이미지 교체 + 말하기 = talk 프레임 순환(유사 립싱크).
- 한계 인지: 눈+입이 세트로 고정 → "감정+정밀 립싱크 동시"는 불가. 필요 시 D7로 승급.
D5. 자기-가림 포즈 = 베이크드 이미지 (확정)
팔짱(armscross)·하트(heart) 등은 리그 보간 대신 통짜 포즈 이미지로. (기존 표준 18제스처 자산 재사용.)
D6. 투명 알파 필수 (확정)
모든 파츠/프레임 = 32-bit RGBA(Format32bppArgb), 배경 alpha=0. 24-bit·매트 배경 금지.
D7. mesh-warp(그리드 변형) = 옵션·후속 (보류)
목/얼굴 국소 mesh-warp(WebGL)로 목 이음새·정밀 립싱크·중간 각도 고개돌림을 승급.
- 승급 조건: 강체 리그로 목/얼굴이 실제로 부족할 때, 그 부위에만 국소 도입. 전신 적용 안 함.
D8. 이미지 = ChatGPT 자동생성 (확정)
사람이 안 그림. 생성용 .md 스펙을 우리가 제공.
D9. 색상·모션 = 코드/데이터 (확정)
색 변형 = hairmask hue-shift. 모션 = 리그 클립. 반응 = 시퀀서 데이터.
D10. 프로필 구조 (확정)
Noeul_Profile 구조를 복제해 Noeul_Profile 로 운용(캐릭터별 자료 구조 표준). 시트 표준 위치 = 03_Assets/Reference/noeul_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 둘 다.