Initial Dansori character workspace

This commit is contained in:
eKeerar
2026-07-04 10:34:46 +09:00
commit 5a419816ff
2480 changed files with 38692 additions and 0 deletions
@@ -0,0 +1,88 @@
# WPF 앱 통합
이 문서는 Live2D 모델을 WPF 앱에 탑재하는 방식을 정의한다.
## 런타임 구조
WPF 안에 WebView2를 배치하고, WebView2 내부에서 Cubism SDK for Web 런타임을 실행한다. WPF는 JSON 메시지로 Live2D 캐릭터 반응을 지시한다.
```text
WPF ViewModel / Service
-> WebView2.PostWebMessageAsJson(...)
-> Live2D Web Runtime
-> Cubism SDK for Web
-> LeeSori.model3.json
-> motions / expressions / physics
```
## 리소스 구조
```text
Assets/Live2D/LeeSori/
LeeSori.model3.json
LeeSori.moc3
textures/
texture_00.png
motions/
idle_breath.motion3.json
idle_dance.motion3.json
no.motion3.json
heart.motion3.json
expressions/
neutral.exp3.json
smile.exp3.json
love.exp3.json
negative.exp3.json
LeeSori.physics3.json
reactions.json
```
## WPF API 초안
```csharp
public interface IMascotService
{
Task InitializeAsync();
Task SetVisibleAsync(bool visible);
Task SetIdleAsync(string key);
Task ReactAsync(string key);
Task SayAsync(string text, string expression = "exp_neutral");
}
```
## WebView2 메시지
```json
{ "type": "loadModel", "model": "Assets/Live2D/LeeSori/LeeSori.model3.json" }
{ "type": "setIdle", "key": "idle" }
{ "type": "react", "key": "success" }
{ "type": "react", "key": "error" }
{ "type": "say", "text": "환영합니다", "expression": "exp_smile" }
{ "type": "setVisible", "value": true }
```
## Live2D 런타임 책임
- `.model3.json` 로드.
- idle motion 유지.
- `reactions.json` 로드.
- motion 우선순위 처리.
- expression fade 처리.
- mouth driver로 `ParamMouthOpenY` 구동.
- caption, sfx, TTS 이벤트 처리.
## 앱 이벤트 매핑
| 앱 이벤트 | 메시지 |
|---|---|
| 처리 성공 | `{ "type": "react", "key": "success" }` |
| 오류/불가 | `{ "type": "react", "key": "error" }` |
| 화면 진입 | `{ "type": "setIdle", "key": "idle" }` |
| 안내 문구 | `{ "type": "say", "text": "...", "expression": "exp_neutral" }` |
## 확인 항목
- Live2D Cubism SDK 라이선스와 앱 배포 조건.
- WebView2 배포 방식.
- 앱 리소스 경로와 업데이트 방식.
- TTS/말풍선 정책.
+63
View File
@@ -0,0 +1,63 @@
# 로드맵
## Phase 1 — Live2D 원화/PSD 제작
1. `이미지작업_의뢰서.md``03_Assets/Live2D/Layer_Manifest.md` 기준으로 고해상도 A-pose 원화 생성.
2. `layer_manifest.json` 기준으로 투명 PNG 레이어 번들 또는 PSD 제작.
3. `sori_live2d_material_separation.psd``sori_live2d_import.psd` 작성.
4. PSD import 전 검수: RGB, 8bit/channel, sRGB, 레이어명 중복 없음, 먼지 픽셀 없음.
완료조건: Cubism Editor에 import 가능한 PSD가 준비됨.
## Phase 2 — Cubism 모델링 MVP
1. PSD import.
2. ArtMesh와 Deformer 기본 구조 생성.
3. `04_Rig/live2d_parameters.json`의 core 파라미터부터 세팅.
4. 눈깜빡임, 입열림, 고개 Z, 호흡 검수.
5. `ParamAngleX/Y`, 머리카락 물리, 펜던트/끈 물리 추가.
완료조건: Cubism Editor/Viewer에서 기본 idle, blink, mouth, head movement가 자연스러움.
## Phase 3 — Motion/Expression 제작
1. `05_Animation/live2d_motion_plan.json` 기준 motion 제작.
2. `exp_neutral`, `exp_smile`, `exp_love`, `exp_negative`, `exp_thinking` 제작.
3. `motion_idle_dance`, `motion_no`, `motion_heart` export.
4. 하트와 팔짱 표현에 필요한 swap part 추가.
완료조건: `06_Reactions/``idle`, `error`, `success` 반응이 Live2D Viewer에서 재생됨.
## Phase 4 — Embedded export
1. Texture atlas 정리.
2. embedded export:
- `.moc3`
- `.model3.json`
- texture PNG
- `.motion3.json`
- `.exp3.json`
- `.physics3.json`
3. 앱에 넣을 리소스 폴더 구조 확정.
완료조건: SDK 런타임에서 `.model3.json` 로드 성공.
## Phase 5 — WPF 앱 통합
1. WebView2 + Cubism SDK for Web 런타임 구성.
2. WPF → WebView2 JSON bridge 구현.
3. `React`, `Say`, `SetIdle`, `SetVisible` API 연결.
4. 앱 이벤트 `success`, `error`, `idle` 연결.
완료조건: WPF 앱에서 이소리가 상황별 motion, expression, caption으로 반응.
## Phase 6 — 품질 상향
- greet, present, thinking motion 추가.
- TTS 볼륨 기반 mouth driver 개선.
- 음소 기반 입 모양 확장.
- 라이선스와 배포 조건 확인.
## 다음 액션
`03_Assets/Live2D/sori_live2d_import.psd` 또는 동일 구조의 PNG 레이어 번들을 만든다.