Initial Dansori character workspace
@@ -0,0 +1,59 @@
|
||||
# 결정 기준
|
||||
|
||||
## D1. 최종 구현 방식
|
||||
|
||||
WPF 앱에 들어갈 캐릭터는 Live2D Cubism 모델로 제작한다.
|
||||
|
||||
산출물:
|
||||
|
||||
- `.moc3`
|
||||
- `.model3.json`
|
||||
- texture atlas PNG
|
||||
- `.motion3.json`
|
||||
- `.exp3.json`
|
||||
- `.physics3.json`
|
||||
|
||||
## D2. AI 제작 범위
|
||||
|
||||
AI는 다음을 담당한다.
|
||||
|
||||
- 캐릭터 정체성 유지.
|
||||
- Live2D PSD용 분리 레이어 생성.
|
||||
- 움직임으로 드러나는 부위 보강.
|
||||
- 표정, 입, 눈, 머리카락, 손 파츠 생성.
|
||||
- 레이어 파일명과 투명 알파 검수.
|
||||
|
||||
## D3. PSD 구성
|
||||
|
||||
- `sori_live2d_material_separation.psd`: 작업용 PSD.
|
||||
- `sori_live2d_import.psd`: Cubism import용 PSD.
|
||||
- PNG 레이어 번들은 `03_Assets/Live2D/layer_manifest.json`의 `file` 값을 따른다.
|
||||
|
||||
## D4. Cubism 파라미터
|
||||
|
||||
기본 파라미터는 `04_Rig/live2d_parameters.json`을 기준으로 한다. 표준 이름을 유지해 SDK, 표정, 모션, 외부 컨트롤러 연동을 단순하게 만든다.
|
||||
|
||||
## D5. WPF 통합 방식
|
||||
|
||||
WPF 앱은 WebView2와 Cubism SDK for Web을 사용해 Live2D 런타임을 호스팅한다.
|
||||
|
||||
## D6. 반응 시스템
|
||||
|
||||
앱 이벤트는 `motion`, `expression`, `mouth`, `caption`, `sfx` 조합으로 실행한다. 매핑은 `06_Reactions/reactions.json`과 `06_Reactions/clips/*.json`을 따른다.
|
||||
|
||||
## D7. 이미지와 색공간
|
||||
|
||||
원화 레이어는 투명 알파를 유지하고, Cubism import용 PSD는 RGB, 8bit/channel, sRGB 기준으로 관리한다.
|
||||
|
||||
## D8. 레이어명 안정성
|
||||
|
||||
PSD 레이어명은 `layer_manifest.json`의 `id`를 따른다. Cubism 작업 중 레이어명, 그룹명, 파일명을 임의로 바꾸지 않는다.
|
||||
|
||||
## 열린 항목
|
||||
|
||||
| ID | 내용 | 기준 |
|
||||
|---|---|---|
|
||||
| O1 | 런타임 방식 | WebView2 우선 |
|
||||
| O2 | 대사 출력 | 말풍선과 TTS 모두 고려 |
|
||||
| O3 | 원화 해상도 | 1600x2800 권장 |
|
||||
| O4 | 입 모양 제어 | 볼륨 기반부터 시작, 음소 기반 확장 가능 |
|
||||
@@ -0,0 +1,40 @@
|
||||
# 목적과 방향
|
||||
|
||||
## 최종 목적
|
||||
|
||||
이소리를 **WPF 앱에 탑재되는 Live2D 인터랙티브 마스코트**로 제작한다. 앱의 상태와 사용자 행동에 맞춰 캐릭터가 자연스럽게 움직이고, 표정과 입 모양, 제스처, 말풍선 또는 TTS가 함께 반응해야 한다.
|
||||
|
||||
## 대표 사용 시나리오
|
||||
|
||||
| 상황 | Live2D 반응 |
|
||||
|---|---|
|
||||
| 오류/금지된 동작 | `motion_no` + `exp_negative` + 고개 젓기 + "안돼요" |
|
||||
| 성공/완료/칭찬 | `motion_heart` + `exp_love` + 바운스 + "잘됐어요" |
|
||||
| 대기/유휴 | `motion_idle_dance` 루프 + 자동 눈깜빡임 + 호흡 + 머리카락 물리 |
|
||||
| 인사 | `motion_greet` + `exp_smile` + 손 흔들기 |
|
||||
| 안내/설명 | `motion_present` + `exp_neutral` + 말하기 |
|
||||
| 생각중/로딩 | `motion_thinking` + `exp_thinking` + 갸웃 |
|
||||
|
||||
## 제작 원칙
|
||||
|
||||
1. **Live2D Cubism 모델을 최종 산출물로 한다**
|
||||
WPF 앱에는 Cubism export 산출물을 탑재한다.
|
||||
|
||||
2. **AI는 원화 분리와 보강에 집중한다**
|
||||
AI는 PSD 레이어 원화, 누락 부위 보강, 입/눈/머리카락/손 파츠 생성을 담당한다.
|
||||
|
||||
3. **PSD 레이어 품질을 최우선으로 한다**
|
||||
눈, 눈썹, 입, 얼굴 윤곽, 앞머리, 옆머리, 뒷머리, 목, 어깨, 팔, 손가락, 의상 겹침 부위를 Live2D 제어에 맞게 분리한다.
|
||||
|
||||
4. **Cubism 표준 파라미터를 사용한다**
|
||||
`ParamAngleX/Y/Z`, `ParamEyeLOpen`, `ParamMouthOpenY`, `ParamBodyAngleX/Y/Z`, `ParamBreath`, `ParamHairFront/Side/Back`을 우선 사용한다.
|
||||
|
||||
5. **WPF 앱 이벤트는 상황키로 연결한다**
|
||||
앱은 `success`, `error`, `idle` 같은 상황키만 보낸다. Live2D 런타임은 motion, expression, caption, mouth driver를 선택한다.
|
||||
|
||||
## 제작 범위
|
||||
|
||||
- Live2D PSD 레이어 원화.
|
||||
- Cubism 리깅과 모션.
|
||||
- WPF WebView2 런타임 연동.
|
||||
- 상황별 반응 데이터.
|
||||
@@ -0,0 +1,96 @@
|
||||
# 아키텍처
|
||||
|
||||
## 전체 파이프라인
|
||||
|
||||
```text
|
||||
[입력 이미지와 캐릭터 기준]
|
||||
|
|
||||
v
|
||||
[AI Live2D 원화 분리]
|
||||
- material PSD
|
||||
- 투명 PNG 레이어 번들
|
||||
- 숨은 부위 보강
|
||||
|
|
||||
v
|
||||
[Cubism import PSD]
|
||||
- 고유 레이어명
|
||||
- RGB, 8bit/channel, sRGB
|
||||
- 먼지/프린지/마스크 잔여물 제거
|
||||
|
|
||||
v
|
||||
[Live2D Cubism Editor]
|
||||
- ArtMesh
|
||||
- Warp/Rotation Deformer
|
||||
- Parameter
|
||||
- Physics
|
||||
- Motion/Expression
|
||||
|
|
||||
v
|
||||
[Embedded Export]
|
||||
- .moc3
|
||||
- .model3.json
|
||||
- texture atlas PNG
|
||||
- .motion3.json / .exp3.json / .physics3.json
|
||||
|
|
||||
v
|
||||
[WPF Runtime Host]
|
||||
- WebView2
|
||||
- Cubism SDK for Web
|
||||
|
|
||||
v
|
||||
[앱 이벤트 반응]
|
||||
- error / success / idle / greet / explain / thinking
|
||||
```
|
||||
|
||||
## 제작 레이어
|
||||
|
||||
| 레이어 | 책임 | 주요 파일 |
|
||||
|---|---|---|
|
||||
| Source Art | AI가 만드는 분리 원화 | `03_Assets/Live2D/Layer_Manifest.md`, `layer_manifest.json` |
|
||||
| Cubism Model | 리깅, 파라미터, 물리 | `04_Rig/live2d_parameters.json` |
|
||||
| Motion | idle, no, heart, greet 등 | `05_Animation/live2d_motion_plan.json` |
|
||||
| Reaction | 앱 상황키 매핑 | `06_Reactions/reactions.json`, `clips/*.json` |
|
||||
| WPF Host | 모델 로드와 앱 브리지 | `08_Roadmap/App_Integration.md` |
|
||||
|
||||
## AI 원화 분리 규칙
|
||||
|
||||
- 최종 PSD의 각 파츠는 Cubism에서 하나의 ArtMesh가 될 수 있도록 단일 레이어로 정리한다.
|
||||
- 눈, 눈썹, 입은 좌우와 세부 요소를 분리한다.
|
||||
- 머리카락은 앞머리, 옆머리, 뒷머리, 잔머리, 하이라이트를 분리한다.
|
||||
- 몸과 의상은 Rotation Deformer와 Warp Deformer 적용을 고려해 분리한다.
|
||||
- 손하트, 팔짱, 손흔들기 같은 제스처는 손과 팔 파츠를 충분히 확보한다.
|
||||
|
||||
## Cubism 파라미터 계층
|
||||
|
||||
```text
|
||||
ParamBaseX/Y
|
||||
ParamBodyAngleX/Y/Z
|
||||
ParamAngleX/Y/Z
|
||||
Face / Eyes / Brows / Mouth
|
||||
Arms / Hands
|
||||
Hair physics
|
||||
```
|
||||
|
||||
기본 파라미터 범위는 `04_Rig/live2d_parameters.json`을 따른다.
|
||||
|
||||
## WPF 통합 구조
|
||||
|
||||
WPF는 WebView2를 띄우고 Live2D 런타임 HTML/JS에 메시지를 보낸다.
|
||||
|
||||
```text
|
||||
WPF
|
||||
-> WebView2.PostWebMessageAsJson({ type: "react", key: "success" })
|
||||
-> Live2D runtime
|
||||
-> reactions.json
|
||||
-> StartMotion + SetExpression + caption/TTS event
|
||||
```
|
||||
|
||||
## 공식 기준 확인 항목
|
||||
|
||||
- PSD import.
|
||||
- ArtMesh.
|
||||
- Deformer.
|
||||
- Parameter.
|
||||
- Physics.
|
||||
- Embedded export.
|
||||
- Cubism SDK for Web.
|
||||
@@ -0,0 +1,61 @@
|
||||
# 한계와 완화
|
||||
|
||||
## L1. AI 원화와 Cubism 리깅의 역할 분리
|
||||
|
||||
AI는 원화 분리와 보강에 강하고, Cubism Editor는 ArtMesh, Deformer, Physics, Motion 검수에 필요하다.
|
||||
|
||||
**완화**
|
||||
|
||||
- AI 산출물은 PSD/PNG 레이어와 manifest 기준으로 검수한다.
|
||||
- Cubism 작업은 파라미터, 디포머, 물리, 모션 단위로 검수한다.
|
||||
- 반복 작업은 레이어명, 파라미터명, 모션명, 체크리스트로 관리한다.
|
||||
|
||||
## L2. Live2D 세부 레이어 필요
|
||||
|
||||
정밀한 Live2D 표현에는 눈꺼풀, 눈동자, 눈 하이라이트, 입 안쪽, 치아, 혀, 눈썹, 앞머리, 옆머리, 뒷머리, 옷 주름 레이어가 필요하다.
|
||||
|
||||
**완화**
|
||||
|
||||
- `03_Assets/Live2D/layer_manifest.json`의 required 레이어를 모두 만든다.
|
||||
- 얼굴, 머리카락, 손 파츠를 우선 제작한다.
|
||||
- 숨은 피부, 머리, 의상 밑그림을 충분히 채색한다.
|
||||
|
||||
## L3. 누락 부위 보강
|
||||
|
||||
고개 회전, 팔 움직임, 머리카락 흔들림에는 피부, 머리, 의상 밑그림이 필요하다.
|
||||
|
||||
**완화**
|
||||
|
||||
- AI 프롬프트에 "Paint hidden areas underneath overlaps"를 명시한다.
|
||||
- 목 뒤, 귀 뒤, 헤어 안쪽, 어깨 뒤, 소매 안쪽, 손목, 허리 주변을 별도 확인한다.
|
||||
- Cubism에서 큰 회전 각도는 자연스러운 범위로 제한한다.
|
||||
|
||||
## L4. 립싱크
|
||||
|
||||
정밀 립싱크에는 입 레이어와 파라미터 설계가 필요하다.
|
||||
|
||||
**완화**
|
||||
|
||||
- 입은 `mouth_inside`, `mouth_line`, `upper_lip`, `lower_lip`, `teeth`, `tongue`로 분리한다.
|
||||
- `ParamMouthOpenY`와 `ParamMouthForm`을 기본으로 만든다.
|
||||
- WPF/TTS 연동은 볼륨 기반 mouth open으로 시작한다.
|
||||
- 음소 표현이 필요하면 입 morph 파라미터를 추가한다.
|
||||
|
||||
## L5. WPF 통합 비용
|
||||
|
||||
WPF 통합에는 모델 로드, WebView2 메시지 브리지, 리소스 경로, 배포 구성이 필요하다.
|
||||
|
||||
**완화**
|
||||
|
||||
- WebView2 + Cubism SDK for Web을 1차 경로로 사용한다.
|
||||
- 메시지는 JSON 형식으로 통일한다.
|
||||
- 앱 리소스 구조는 `08_Roadmap/App_Integration.md`를 따른다.
|
||||
|
||||
## L6. 라이선스와 배포 조건
|
||||
|
||||
Live2D Cubism Editor와 SDK 사용 조건을 확인해야 한다.
|
||||
|
||||
**완화**
|
||||
|
||||
- 앱 배포 전 Live2D 공식 라이선스와 SDK 사용 조건을 확인한다.
|
||||
- 리소스와 SDK 배포 범위를 체크리스트로 관리한다.
|
||||
@@ -0,0 +1,45 @@
|
||||
# 자산 전체 맵
|
||||
|
||||
이 폴더는 Live2D 제작에 필요한 입력 이미지, 레이어 명세, PSD 제작 자료를 관리한다.
|
||||
|
||||
## 입력 이미지
|
||||
|
||||
| 종류 | 위치 | 용도 |
|
||||
|---|---|---|
|
||||
| 정체성 시트 | `Reference/sori_sheet.png` | 얼굴, 헤어, 의상, 색상 기준 |
|
||||
| A-pose 이미지 | `Parts/Images/sori_part_master_apose.png` | 전신 비율과 관절 위치 기준 |
|
||||
| 표정 이미지 | `Library/Heads/` | Live2D expression 목표 설정 |
|
||||
| 포즈 이미지 | `Library/BakedPoses/` | Live2D motion 키포즈 설정 |
|
||||
| 머리 영역 이미지 | `Library/Hairmasks/` | 머리카락 레이어 분리 기준 |
|
||||
| 액세서리 이미지 | `Library/Accessories/` | 헤드폰, 마이크, 소품 기준 |
|
||||
|
||||
## Live2D 제작 자산
|
||||
|
||||
| 산출물 | 위치 | 설명 |
|
||||
|---|---|---|
|
||||
| 레이어 명세 | `Live2D/Layer_Manifest.md` | PSD/PNG 레이어 제작 지시서 |
|
||||
| 레이어 manifest | `Live2D/layer_manifest.json` | 레이어 파일명, 그룹, 필수 여부 |
|
||||
| PSD 제작 워크플로 | `Live2D/AI_PSD_Workflow.md` | AI 생성과 PSD 조립 순서 |
|
||||
| 자산 체크리스트 | `Live2D/Asset_Audit.md` | 제작 입력 자료와 산출물 확인 |
|
||||
| 작업 PSD | `Live2D/sori_live2d_material_separation.psd` | 원화 편집용 PSD |
|
||||
| import PSD | `Live2D/sori_live2d_import.psd` | Cubism import 대상 |
|
||||
| 레이어 PNG 번들 | `Live2D/LayerPNGs/` | PSD 조립용 투명 PNG |
|
||||
|
||||
## PSD 요구사항
|
||||
|
||||
- 권장 캔버스: 1600x2800.
|
||||
- 배경: 완전 투명.
|
||||
- 색공간: sRGB.
|
||||
- Cubism import PSD: RGB, 8bit/channel.
|
||||
- 모든 import 레이어명은 고유해야 한다.
|
||||
- 눈, 눈썹, 입, 머리카락, 액세서리, 팔, 손, 의상 겹침 부위를 별도 레이어로 만든다.
|
||||
- 각 레이어에는 움직임으로 드러날 숨은 밑그림이 있어야 한다.
|
||||
|
||||
## 제작 우선순위
|
||||
|
||||
1. 고해상도 A-pose 원화.
|
||||
2. 얼굴, 눈, 눈썹, 입, 머리카락 레이어.
|
||||
3. 상체, 팔, 손, 의상 레이어.
|
||||
4. Cubism import PSD.
|
||||
5. 눈깜빡임, 입열림, 고개 회전, 호흡, 머리카락 물리.
|
||||
6. 하트, 거절, 대기춤 motion.
|
||||
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 639 KiB |
|
After Width: | Height: | Size: 636 KiB |
|
After Width: | Height: | Size: 636 KiB |
|
After Width: | Height: | Size: 638 KiB |
|
After Width: | Height: | Size: 638 KiB |
|
After Width: | Height: | Size: 636 KiB |
|
After Width: | Height: | Size: 636 KiB |
|
After Width: | Height: | Size: 640 KiB |
|
After Width: | Height: | Size: 640 KiB |
|
After Width: | Height: | Size: 639 KiB |
|
After Width: | Height: | Size: 639 KiB |
|
After Width: | Height: | Size: 639 KiB |
|
After Width: | Height: | Size: 640 KiB |
|
After Width: | Height: | Size: 639 KiB |
|
After Width: | Height: | Size: 640 KiB |
|
After Width: | Height: | Size: 657 KiB |
|
After Width: | Height: | Size: 559 KiB |
@@ -0,0 +1,172 @@
|
||||
{
|
||||
"name": "LeeSoriDance",
|
||||
"status": "leesori_solo3_dance_pose_parts_2026_07_04",
|
||||
"canvas": {
|
||||
"width": 773,
|
||||
"height": 1448
|
||||
},
|
||||
"imageBase": "./Images/",
|
||||
"note": "Solo Dance 3 inspired pose-part rig. Parts are broad overlapping masks for the CSS Live2DHost dance loop.",
|
||||
"bones": [
|
||||
{
|
||||
"name": "base",
|
||||
"parent": null,
|
||||
"pivot": [
|
||||
386.5,
|
||||
839.8399999999999
|
||||
],
|
||||
"z": 0,
|
||||
"image": "solo3_base.png"
|
||||
},
|
||||
{
|
||||
"name": "pelvis",
|
||||
"parent": "base",
|
||||
"pivot": [
|
||||
386.5,
|
||||
695.04
|
||||
],
|
||||
"z": 2,
|
||||
"image": "solo3_pelvis.png"
|
||||
},
|
||||
{
|
||||
"name": "chest",
|
||||
"parent": "base",
|
||||
"pivot": [
|
||||
386.5,
|
||||
448.88
|
||||
],
|
||||
"z": 4,
|
||||
"image": "solo3_chest.png"
|
||||
},
|
||||
{
|
||||
"name": "upperarm_l",
|
||||
"parent": "chest",
|
||||
"pivot": [
|
||||
231.89999999999998,
|
||||
390.96000000000004
|
||||
],
|
||||
"z": 5,
|
||||
"image": "solo3_upperarm_l.png"
|
||||
},
|
||||
{
|
||||
"name": "forearm_l",
|
||||
"parent": "upperarm_l",
|
||||
"pivot": [
|
||||
139.14,
|
||||
622.64
|
||||
],
|
||||
"z": 6,
|
||||
"image": "solo3_forearm_l.png"
|
||||
},
|
||||
{
|
||||
"name": "hand_l",
|
||||
"parent": "forearm_l",
|
||||
"pivot": [
|
||||
77.30000000000001,
|
||||
868.8
|
||||
],
|
||||
"z": 7,
|
||||
"image": "solo3_hand_l.png"
|
||||
},
|
||||
{
|
||||
"name": "upperarm_r",
|
||||
"parent": "chest",
|
||||
"pivot": [
|
||||
541.0999999999999,
|
||||
390.96000000000004
|
||||
],
|
||||
"z": 5,
|
||||
"image": "solo3_upperarm_r.png"
|
||||
},
|
||||
{
|
||||
"name": "forearm_r",
|
||||
"parent": "upperarm_r",
|
||||
"pivot": [
|
||||
633.86,
|
||||
622.64
|
||||
],
|
||||
"z": 6,
|
||||
"image": "solo3_forearm_r.png"
|
||||
},
|
||||
{
|
||||
"name": "hand_r",
|
||||
"parent": "forearm_r",
|
||||
"pivot": [
|
||||
695.7,
|
||||
868.8
|
||||
],
|
||||
"z": 7,
|
||||
"image": "solo3_hand_r.png"
|
||||
},
|
||||
{
|
||||
"name": "thigh_l",
|
||||
"parent": "pelvis",
|
||||
"pivot": [
|
||||
309.20000000000005,
|
||||
810.8800000000001
|
||||
],
|
||||
"z": 2,
|
||||
"image": "solo3_thigh_l.png"
|
||||
},
|
||||
{
|
||||
"name": "shin_l",
|
||||
"parent": "thigh_l",
|
||||
"pivot": [
|
||||
301.47,
|
||||
1071.52
|
||||
],
|
||||
"z": 2,
|
||||
"image": "solo3_shin_l.png"
|
||||
},
|
||||
{
|
||||
"name": "foot_l",
|
||||
"parent": "shin_l",
|
||||
"pivot": [
|
||||
301.47,
|
||||
1332.16
|
||||
],
|
||||
"z": 2,
|
||||
"image": "solo3_foot_l.png"
|
||||
},
|
||||
{
|
||||
"name": "thigh_r",
|
||||
"parent": "pelvis",
|
||||
"pivot": [
|
||||
463.79999999999995,
|
||||
810.8800000000001
|
||||
],
|
||||
"z": 2,
|
||||
"image": "solo3_thigh_r.png"
|
||||
},
|
||||
{
|
||||
"name": "shin_r",
|
||||
"parent": "thigh_r",
|
||||
"pivot": [
|
||||
471.53,
|
||||
1071.52
|
||||
],
|
||||
"z": 2,
|
||||
"image": "solo3_shin_r.png"
|
||||
},
|
||||
{
|
||||
"name": "foot_r",
|
||||
"parent": "shin_r",
|
||||
"pivot": [
|
||||
471.53,
|
||||
1332.16
|
||||
],
|
||||
"z": 2,
|
||||
"image": "solo3_foot_r.png"
|
||||
},
|
||||
{
|
||||
"name": "head",
|
||||
"parent": "chest",
|
||||
"pivot": [
|
||||
386.5,
|
||||
231.68
|
||||
],
|
||||
"z": 10,
|
||||
"image": "solo3_head.png"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 944 KiB |
|
After Width: | Height: | Size: 1.5 MiB |
|
After Width: | Height: | Size: 1.2 MiB |
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 853 KiB |
|
After Width: | Height: | Size: 1.6 MiB |
|
After Width: | Height: | Size: 774 KiB |
|
After Width: | Height: | Size: 1.5 MiB |
|
After Width: | Height: | Size: 1.2 MiB |
|
After Width: | Height: | Size: 1.7 MiB |
@@ -0,0 +1,45 @@
|
||||
# 표정과 포즈
|
||||
|
||||
이 문서는 Live2D expression과 motion 제작 기준을 정의한다.
|
||||
|
||||
## Live2D 표정 프리셋
|
||||
|
||||
| Expression ID | 감정 | 주요 파라미터 |
|
||||
|---|---|---|
|
||||
| `exp_neutral` | 기본 | 모든 표정 파라미터 기본값 |
|
||||
| `exp_smile` | 미소 | `ParamMouthForm +`, `ParamEyeLSmile/RSmile +` |
|
||||
| `exp_positive` | 밝음 | smile + cheek |
|
||||
| `exp_love` | 호감/성공 | smile + cheek + 눈 미소 |
|
||||
| `exp_negative` | 불만/거절 | `ParamBrowLAngle/RAngle -`, `ParamMouthForm -` |
|
||||
| `exp_pout` | 삐침 | mouth form -, cheek |
|
||||
| `exp_confused` | 당황 | brow 비대칭, eye open 증가 |
|
||||
| `exp_thinking` | 생각중 | brow 한쪽 상승, gaze side |
|
||||
| `exp_surprised` | 놀람 | eye open 증가, mouth open |
|
||||
| `exp_sleepy` | 졸림 | eye open 감소, brow 낮춤 |
|
||||
|
||||
## 말하기
|
||||
|
||||
Live2D 입 레이어를 파라미터로 움직인다.
|
||||
|
||||
- 기본: `ParamMouthOpenY` 0..1 볼륨 기반.
|
||||
- 감정: `ParamMouthForm` -1..1.
|
||||
- WPF/TTS 초기 연동: 음성 볼륨 또는 대사 타이밍에 맞춰 mouth open 구동.
|
||||
- 확장: "아/이/우/에/오" morph 파라미터 추가.
|
||||
|
||||
## 포즈와 제스처
|
||||
|
||||
| Motion ID | 용도 |
|
||||
|---|---|
|
||||
| `motion_idle_breath` | 기본 호흡 |
|
||||
| `motion_idle_dance` | 대기춤 |
|
||||
| `motion_no` | 거절/오류 |
|
||||
| `motion_heart` | 성공/칭찬 |
|
||||
| `motion_greet` | 인사 |
|
||||
| `motion_present` | 안내/제시 |
|
||||
| `motion_thinking` | 생각중 |
|
||||
|
||||
## 제스처 원칙
|
||||
|
||||
- 손과 팔은 motion으로 제어한다.
|
||||
- 자기 가림이 큰 포즈는 swap part를 활용할 수 있다.
|
||||
- 표정은 `.exp3.json`, 몸 동작은 `.motion3.json`으로 분리한다.
|
||||
|
After Width: | Height: | Size: 652 KiB |
|
After Width: | Height: | Size: 396 KiB |
|
After Width: | Height: | Size: 216 KiB |
|
After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 350 KiB |
|
After Width: | Height: | Size: 1.6 MiB |
|
After Width: | Height: | Size: 1.8 MiB |
|
After Width: | Height: | Size: 403 KiB |
|
After Width: | Height: | Size: 455 KiB |
|
After Width: | Height: | Size: 921 KiB |
|
After Width: | Height: | Size: 1.8 MiB |
|
After Width: | Height: | Size: 1.5 MiB |
|
After Width: | Height: | Size: 743 KiB |
|
After Width: | Height: | Size: 709 KiB |
|
After Width: | Height: | Size: 683 KiB |
|
After Width: | Height: | Size: 820 KiB |
|
After Width: | Height: | Size: 663 KiB |
|
After Width: | Height: | Size: 696 KiB |
|
After Width: | Height: | Size: 708 KiB |
|
After Width: | Height: | Size: 416 KiB |
|
After Width: | Height: | Size: 665 KiB |
|
After Width: | Height: | Size: 368 KiB |
|
After Width: | Height: | Size: 675 KiB |
|
After Width: | Height: | Size: 716 KiB |
|
After Width: | Height: | Size: 651 KiB |
|
After Width: | Height: | Size: 761 KiB |
|
After Width: | Height: | Size: 643 KiB |
|
After Width: | Height: | Size: 706 KiB |
|
After Width: | Height: | Size: 675 KiB |
|
After Width: | Height: | Size: 729 KiB |
|
After Width: | Height: | Size: 786 KiB |
|
After Width: | Height: | Size: 738 KiB |
|
After Width: | Height: | Size: 733 KiB |
|
After Width: | Height: | Size: 851 KiB |
|
After Width: | Height: | Size: 709 KiB |
|
After Width: | Height: | Size: 734 KiB |
|
After Width: | Height: | Size: 751 KiB |
|
After Width: | Height: | Size: 438 KiB |
|
After Width: | Height: | Size: 705 KiB |
|
After Width: | Height: | Size: 387 KiB |
|
After Width: | Height: | Size: 718 KiB |
|
After Width: | Height: | Size: 755 KiB |
|
After Width: | Height: | Size: 698 KiB |
|
After Width: | Height: | Size: 804 KiB |
|
After Width: | Height: | Size: 680 KiB |
|
After Width: | Height: | Size: 774 KiB |
|
After Width: | Height: | Size: 721 KiB |
|
After Width: | Height: | Size: 767 KiB |
|
After Width: | Height: | Size: 693 KiB |
|
After Width: | Height: | Size: 632 KiB |
|
After Width: | Height: | Size: 611 KiB |
|
After Width: | Height: | Size: 745 KiB |
|
After Width: | Height: | Size: 605 KiB |
|
After Width: | Height: | Size: 650 KiB |
|
After Width: | Height: | Size: 642 KiB |
|
After Width: | Height: | Size: 405 KiB |
|
After Width: | Height: | Size: 637 KiB |
|
After Width: | Height: | Size: 331 KiB |
|
After Width: | Height: | Size: 632 KiB |
|
After Width: | Height: | Size: 645 KiB |
|
After Width: | Height: | Size: 614 KiB |
|
After Width: | Height: | Size: 690 KiB |
|
After Width: | Height: | Size: 609 KiB |
|
After Width: | Height: | Size: 612 KiB |
|
After Width: | Height: | Size: 627 KiB |