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,53 @@
# AI PSD 제작 워크플로
## 1. 입력 자료 지정
입력 자료는 다음 순서로 사용한다.
1. `03_Assets/Reference/sori_sheet.png`
2. `03_Assets/Parts/Images/sori_part_master_apose.png`
3. `03_Assets/Library/Heads/`
4. `03_Assets/Library/BakedPoses/Track/`
## 2. AI 생성 방식
AI 이미지 도구가 layered PSD를 만들 수 있으면 다음 파일을 만든다.
- `sori_live2d_material_separation.psd`
- `sori_live2d_import.psd`
PNG 레이어 방식으로 작업할 경우 다음 순서를 따른다.
1. `layer_manifest.json`의 각 `file` 이름대로 투명 PNG 레이어를 생성한다.
2. 모든 PNG는 같은 캔버스 크기와 같은 원점 좌표를 유지한다.
3. Photoshop 또는 Clip Studio에서 PNG를 레이어로 쌓는다.
4. `Guide` 레이어는 숨김 처리한다.
5. import PSD는 각 파츠를 단일 레이어로 정리해 저장한다.
## 3. 생성 프롬프트 핵심 문구
```text
Create Live2D Cubism-ready separated character art layers for the same adult woman Lee Sori.
Keep identical face identity, mint teal short hair, white headphones, black choker with teal pendant,
white cropped hoodie, mint/black track jacket, black track pants, black/mint sneakers.
Each layer must be transparent PNG, same artboard, same registration, no background, no white halo.
Paint hidden areas underneath overlaps so the model can rotate and deform in Live2D.
Use the exact layer id and file name from the manifest.
```
## 4. PSD import 전 검수
- RGB, 8bit/channel, sRGB.
- 레이어 이름 중복 없음.
- 불필요한 먼지 픽셀 없음.
- layer mask, clipping mask 잔여 없음.
- import PSD의 각 파츠는 단일 레이어.
- 눈, 입, 눈썹 레이어가 독립적으로 보인다.
- 머리카락 레이어가 앞, 옆, 뒤로 분리된다.
## 5. Cubism import 후 검수
- ArtMesh가 각 파츠에 생성된다.
- texture atlas가 과도하게 낭비되지 않는다.
- `ParamEyeLOpen/ROpen`, `ParamMouthOpenY`, `ParamAngleX/Y/Z`, `ParamBodyAngleX/Y/Z`, `ParamBreath`가 정상 동작한다.
- 눈깜빡임, 입열림, 고개 좌우, 호흡이 자연스럽다.
@@ -0,0 +1,31 @@
# Live2D 자산 체크리스트
## 입력 자료
| 항목 | 위치 | 용도 |
|---|---|---|
| 정체성 시트 | `03_Assets/Reference/sori_sheet.png` | 얼굴, 헤어, 의상, 색상 기준 |
| A-pose 이미지 | `03_Assets/Parts/Images/sori_part_master_apose.png` | 비율과 관절 위치 기준 |
| 표정 이미지 | `03_Assets/Library/Heads/*.png` | expression 목표 설정 |
| 포즈 이미지 | `03_Assets/Library/BakedPoses/*.png` | motion 키포즈 설정 |
| 머리 영역 이미지 | `03_Assets/Library/Hairmasks/*.png` | hair layer 분리 |
| 액세서리 이미지 | `03_Assets/Library/Accessories/*.png` | 소품 레이어 분리 |
## 필수 산출물
1. `03_Assets/Live2D/LayerPNGs/*.png`
2. `03_Assets/Live2D/sori_live2d_material_separation.psd`
3. `03_Assets/Live2D/sori_live2d_import.psd`
4. `04_Rig/live2d_parameters.json` 기준 Cubism model
5. `05_Animation/live2d_motion_plan.json` 기준 motions
6. `06_Reactions/reactions.json` 기준 runtime map
## 검수 항목
- required 레이어 전체 생성.
- PSD import 조건 충족: RGB, 8bit/channel, sRGB.
- 투명 배경 유지.
- 레이어명 중복 없음.
- 눈, 눈썹, 입, 머리카락, 손, 의상 겹침 부위 분리.
- 숨은 밑그림 채색.
- Cubism import 성공.
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 535 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 523 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

@@ -0,0 +1,90 @@
# Live2D Layer PNG Bundle
- Generated: 2026-07-04T09:02:02
- Canvas: 1600x2800, transparent RGBA
- Layers: 78
- Required non-empty: 67/67
- PSD note: layered PSD was not written here; assemble these PNGs in manifest order in Photoshop/Clip Studio/Cubism workflow.
## Files
| Group | ID | File | Required | Non-empty |
|---|---|---|---:|---:|
| Guide | `guide_sori_sheet` | `00_Guide/guide_sori_sheet.png` | true | true |
| Guide | `guide_apose_current` | `00_Guide/guide_apose_current.png` | true | true |
| BackHair | `back_hair_base` | `10_BackHair/back_hair_base.png` | true | true |
| BackHair | `back_hair_shadow` | `10_BackHair/back_hair_shadow.png` | true | true |
| BackHair | `back_hair_tip_L` | `10_BackHair/back_hair_tip_L.png` | true | true |
| BackHair | `back_hair_tip_R` | `10_BackHair/back_hair_tip_R.png` | true | true |
| BackHair | `back_hair_strand_L01` | `10_BackHair/back_hair_strand_L01.png` | true | true |
| BackHair | `back_hair_strand_R01` | `10_BackHair/back_hair_strand_R01.png` | true | true |
| Body | `neck_back_fill` | `20_Body/neck_back_fill.png` | true | true |
| Body | `neck_front` | `20_Body/neck_front.png` | true | true |
| Body | `torso_skin` | `20_Body/torso_skin.png` | true | true |
| Body | `arm_upper_L` | `20_Body/arm_upper_L.png` | true | true |
| Body | `arm_fore_L` | `20_Body/arm_fore_L.png` | true | true |
| Body | `hand_L_base` | `20_Body/hand_L_base.png` | true | true |
| Body | `arm_upper_R` | `20_Body/arm_upper_R.png` | true | true |
| Body | `arm_fore_R` | `20_Body/arm_fore_R.png` | true | true |
| Body | `hand_R_base` | `20_Body/hand_R_base.png` | true | true |
| Body | `leg_upper_L` | `20_Body/leg_upper_L.png` | false | true |
| Body | `leg_lower_L` | `20_Body/leg_lower_L.png` | false | true |
| Body | `leg_upper_R` | `20_Body/leg_upper_R.png` | false | true |
| Body | `leg_lower_R` | `20_Body/leg_lower_R.png` | false | true |
| Clothes | `hood_back` | `30_Clothes/hood_back.png` | true | true |
| Clothes | `hood_front_L` | `30_Clothes/hood_front_L.png` | true | true |
| Clothes | `hood_front_R` | `30_Clothes/hood_front_R.png` | true | true |
| Clothes | `jacket_body` | `30_Clothes/jacket_body.png` | true | true |
| Clothes | `jacket_sleeve_L` | `30_Clothes/jacket_sleeve_L.png` | true | true |
| Clothes | `jacket_sleeve_R` | `30_Clothes/jacket_sleeve_R.png` | true | true |
| Clothes | `hoodie_front` | `30_Clothes/hoodie_front.png` | true | true |
| Clothes | `hoodie_string_L` | `30_Clothes/hoodie_string_L.png` | true | true |
| Clothes | `hoodie_string_R` | `30_Clothes/hoodie_string_R.png` | true | true |
| Clothes | `pants_base` | `30_Clothes/pants_base.png` | false | true |
| Clothes | `shoe_L` | `30_Clothes/shoe_L.png` | false | true |
| Clothes | `shoe_R` | `30_Clothes/shoe_R.png` | false | true |
| Head | `face_base` | `40_Head/face_base.png` | true | true |
| Head | `face_shadow` | `40_Head/face_shadow.png` | true | true |
| Head | `ear_L` | `40_Head/ear_L.png` | true | true |
| Head | `ear_R` | `40_Head/ear_R.png` | true | true |
| Head | `nose` | `40_Head/nose.png` | true | true |
| Head | `cheek_L` | `40_Head/cheek_L.png` | true | true |
| Head | `cheek_R` | `40_Head/cheek_R.png` | true | true |
| Eyes | `eye_L_white` | `50_Eyes/eye_L_white.png` | true | true |
| Eyes | `eye_L_iris` | `50_Eyes/eye_L_iris.png` | true | true |
| Eyes | `eye_L_pupil` | `50_Eyes/eye_L_pupil.png` | true | true |
| Eyes | `eye_L_highlight` | `50_Eyes/eye_L_highlight.png` | true | true |
| Eyes | `eye_L_upper_lash` | `50_Eyes/eye_L_upper_lash.png` | true | true |
| Eyes | `eye_L_lower_lash` | `50_Eyes/eye_L_lower_lash.png` | true | true |
| Eyes | `eye_L_lid` | `50_Eyes/eye_L_lid.png` | true | true |
| Eyes | `eye_R_white` | `50_Eyes/eye_R_white.png` | true | true |
| Eyes | `eye_R_iris` | `50_Eyes/eye_R_iris.png` | true | true |
| Eyes | `eye_R_pupil` | `50_Eyes/eye_R_pupil.png` | true | true |
| Eyes | `eye_R_highlight` | `50_Eyes/eye_R_highlight.png` | true | true |
| Eyes | `eye_R_upper_lash` | `50_Eyes/eye_R_upper_lash.png` | true | true |
| Eyes | `eye_R_lower_lash` | `50_Eyes/eye_R_lower_lash.png` | true | true |
| Eyes | `eye_R_lid` | `50_Eyes/eye_R_lid.png` | true | true |
| Brows | `brow_L` | `55_Brows/brow_L.png` | true | true |
| Brows | `brow_R` | `55_Brows/brow_R.png` | true | true |
| Mouth | `mouth_inside` | `60_Mouth/mouth_inside.png` | true | true |
| Mouth | `teeth_upper` | `60_Mouth/teeth_upper.png` | true | true |
| Mouth | `teeth_lower` | `60_Mouth/teeth_lower.png` | true | true |
| Mouth | `tongue` | `60_Mouth/tongue.png` | true | true |
| Mouth | `mouth_line_upper` | `60_Mouth/mouth_line_upper.png` | true | true |
| Mouth | `mouth_line_lower` | `60_Mouth/mouth_line_lower.png` | true | true |
| Mouth | `lip_highlight` | `60_Mouth/lip_highlight.png` | true | true |
| FrontHair | `front_hair_center` | `70_FrontHair/front_hair_center.png` | true | true |
| FrontHair | `front_hair_L` | `70_FrontHair/front_hair_L.png` | true | true |
| FrontHair | `front_hair_R` | `70_FrontHair/front_hair_R.png` | true | true |
| FrontHair | `side_hair_L` | `70_FrontHair/side_hair_L.png` | true | true |
| FrontHair | `side_hair_R` | `70_FrontHair/side_hair_R.png` | true | true |
| FrontHair | `hair_highlight_front` | `70_FrontHair/hair_highlight_front.png` | true | true |
| Accessories | `headphone_band` | `80_Accessories/headphone_band.png` | true | true |
| Accessories | `headphone_L` | `80_Accessories/headphone_L.png` | true | true |
| Accessories | `headphone_R` | `80_Accessories/headphone_R.png` | true | true |
| Accessories | `choker_band` | `80_Accessories/choker_band.png` | true | true |
| Accessories | `pendant` | `80_Accessories/pendant.png` | true | true |
| SwapParts | `swap_hand_heart_L` | `90_SwapParts/swap_hand_heart_L.png` | false | true |
| SwapParts | `swap_hand_heart_R` | `90_SwapParts/swap_hand_heart_R.png` | false | true |
| SwapParts | `swap_arm_cross_L` | `90_SwapParts/swap_arm_cross_L.png` | false | true |
| SwapParts | `swap_arm_cross_R` | `90_SwapParts/swap_arm_cross_R.png` | false | true |
@@ -0,0 +1,51 @@
# Live2D 레이어 Manifest
이 문서는 AI 또는 작업자가 만들어야 할 Live2D 원화 레이어 목록이다. 기계 처리용 목록은 `layer_manifest.json`을 따른다.
## 기본 규격
- 권장 캔버스: 1600x2800.
- 배경: 완전 투명.
- 색공간: sRGB.
- PSD import: RGB, 8bit/channel.
- 좌표: 모든 PNG 레이어는 같은 캔버스와 원점.
- 좌우: `L/R`은 캐릭터 기준이다. `L`은 화면 오른쪽, `R`은 화면 왼쪽이다.
## 레이어 그룹
| 그룹 | 목적 |
|---|---|
| `Guide` | 기준 이미지. Cubism import 때 숨김 |
| `BackHair` | 뒤쪽 머리와 목 뒤 머리카락 |
| `Body` | 피부, 목, 팔, 손, 다리 |
| `Clothes` | 후디, 재킷, 팬츠, 신발 |
| `Head` | 얼굴 베이스, 귀, 코, 볼 |
| `Eyes` | 눈 흰자, 홍채, 동공, 하이라이트, 속눈썹, 눈꺼풀 |
| `Brows` | 좌우 눈썹 |
| `Mouth` | 입 안, 치아, 혀, 입선, 입술 |
| `FrontHair` | 앞머리, 옆머리, 잔머리 |
| `Accessories` | 헤드폰, 초커, 펜던트 |
| `SwapParts` | 하트 손, 팔짱 손 등 후속 교체 파츠 |
## MVP 필수 레이어
MVP는 전신 정밀 댄스보다 **WPF 앱 마스코트의 상반신 반응 품질**을 우선한다.
1. 얼굴 회전: face, ear, nose, cheek, front/side/back hair.
2. 눈깜빡임: upper/lower lash, eyelid, eyeball, highlight.
3. 말하기: mouth inside, teeth, tongue, mouth line, lips.
4. 호흡/상체: neck, torso, hoodie, jacket.
5. 손 제스처: upperarm, forearm, hand.
6. 물리: front hair, side hair, back hair, pendant.
## 산출 방식
AI가 PSD를 만들 수 없으면 `LayerPNGs/` 아래에 manifest의 `file` 이름으로 투명 PNG를 만든다. 이후 Photoshop/Clip Studio에서 레이어로 쌓아 `sori_live2d_import.psd`를 만든다.
## 검수 키포인트
- 눈꺼풀을 닫아도 눈동자/하이라이트가 이상하게 남지 않는다.
- 입을 열었을 때 입 안, 치아, 혀가 자연스럽게 보인다.
- 고개를 좌우로 돌릴 때 귀와 옆머리의 앞뒤 관계가 맞다.
- 머리카락 물리 적용 시 빈 구멍이 보이지 않는다.
- 팔을 움직일 때 어깨/소매 밑그림이 드러나도 자연스럽다.
@@ -0,0 +1,36 @@
# PSD Assembly Guide
현재 세션에서는 layered PSD를 직접 저장할 수 있는 라이브러리나 ImageMagick/Krita가 없어 PSD 파일을 바로 생성하지 않았다. 대신 Cubism 조립에 필요한 투명 PNG 레이어 번들을 완료했고, Photoshop 조립용 JSX를 함께 생성했다.
## 생성된 이미지 산출물
- `LayerPNGs/`: `layer_manifest.json``file` 경로와 동일한 78개 PNG.
- `sori_live2d_layer_preview.png`: import 레이어 기본 합성 프리뷰.
- `sori_live2d_layer_preview_checker.png`: 체크 배경 검수용 프리뷰.
- `sori_live2d_swap_parts_preview_checker.png`: swap part 포함 프리뷰.
- `layer_generation_report.json`: 파일 존재, bbox, required 여부 검수 결과.
- `LayerPNGs_README.md`: 사람이 읽는 PNG 목록.
## PSD 조립 방법
Photoshop에서 다음 파일을 실행한다.
`photoshop_assemble_live2d_psd.jsx`
실행하면 프로젝트 루트 폴더를 선택하라는 창이 뜬다. `LeeSori_Live2D` 폴더를 선택하면 다음 PSD를 저장한다.
- `sori_live2d_material_separation.psd`
- `sori_live2d_import.psd`
## 조립 규칙
- 캔버스: 1600x2800 px.
- 모드: RGB, 8bit/channel, sRGB.
- PNG는 모두 같은 원점과 같은 캔버스를 유지한다.
- import PSD에는 `import: true` 레이어만 포함한다.
- Guide 레이어는 작업 PSD에만 들어가며 숨김 처리한다.
- SwapParts 레이어는 포함하지만 기본 visibility는 꺼 둔다.
## 현재 한계
이 번들은 Live2D 제작을 이어가기 위한 1차 분리 원화다. 기존 A-pose 파츠를 기반으로 마스크/영역/보강 드로잉을 적용했으므로, Cubism import 전 Photoshop 또는 Clip Studio에서 눈/입/머리카락 경계와 숨은 밑그림을 한 번 더 수작업 보정하는 것을 권장한다.
Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

File diff suppressed because it is too large Load Diff
@@ -0,0 +1,107 @@
{
"name": "LeeSori Live2D Layer Manifest",
"version": 1,
"canvas": {
"width": 1600,
"height": 2800,
"background": "transparent",
"colorProfile": "sRGB",
"psdMode": "RGB 8bit/channel"
},
"coordinateRule": "All layer PNGs use the same canvas and origin. L/R are from the character's point of view.",
"output": {
"materialPsd": "03_Assets/Live2D/sori_live2d_material_separation.psd",
"importPsd": "03_Assets/Live2D/sori_live2d_import.psd",
"layerPngBase": "03_Assets/Live2D/LayerPNGs/"
},
"layers": [
{ "id": "guide_sori_sheet", "group": "Guide", "file": "00_Guide/guide_sori_sheet.png", "import": false, "required": true },
{ "id": "guide_apose_current", "group": "Guide", "file": "00_Guide/guide_apose_current.png", "import": false, "required": true },
{ "id": "back_hair_base", "group": "BackHair", "file": "10_BackHair/back_hair_base.png", "import": true, "required": true, "physics": "ParamHairBack" },
{ "id": "back_hair_shadow", "group": "BackHair", "file": "10_BackHair/back_hair_shadow.png", "import": true, "required": true, "physics": "ParamHairBack" },
{ "id": "back_hair_tip_L", "group": "BackHair", "file": "10_BackHair/back_hair_tip_L.png", "import": true, "required": true, "physics": "ParamHairSide" },
{ "id": "back_hair_tip_R", "group": "BackHair", "file": "10_BackHair/back_hair_tip_R.png", "import": true, "required": true, "physics": "ParamHairSide" },
{ "id": "back_hair_strand_L01", "group": "BackHair", "file": "10_BackHair/back_hair_strand_L01.png", "import": true, "required": true, "physics": "ParamHairSide" },
{ "id": "back_hair_strand_R01", "group": "BackHair", "file": "10_BackHair/back_hair_strand_R01.png", "import": true, "required": true, "physics": "ParamHairSide" },
{ "id": "neck_back_fill", "group": "Body", "file": "20_Body/neck_back_fill.png", "import": true, "required": true },
{ "id": "neck_front", "group": "Body", "file": "20_Body/neck_front.png", "import": true, "required": true, "deformer": "D_Neck" },
{ "id": "torso_skin", "group": "Body", "file": "20_Body/torso_skin.png", "import": true, "required": true, "deformer": "D_Body" },
{ "id": "arm_upper_L", "group": "Body", "file": "20_Body/arm_upper_L.png", "import": true, "required": true, "deformer": "D_Arm_L" },
{ "id": "arm_fore_L", "group": "Body", "file": "20_Body/arm_fore_L.png", "import": true, "required": true, "deformer": "D_Arm_L" },
{ "id": "hand_L_base", "group": "Body", "file": "20_Body/hand_L_base.png", "import": true, "required": true, "deformer": "D_Hand_L" },
{ "id": "arm_upper_R", "group": "Body", "file": "20_Body/arm_upper_R.png", "import": true, "required": true, "deformer": "D_Arm_R" },
{ "id": "arm_fore_R", "group": "Body", "file": "20_Body/arm_fore_R.png", "import": true, "required": true, "deformer": "D_Arm_R" },
{ "id": "hand_R_base", "group": "Body", "file": "20_Body/hand_R_base.png", "import": true, "required": true, "deformer": "D_Hand_R" },
{ "id": "leg_upper_L", "group": "Body", "file": "20_Body/leg_upper_L.png", "import": true, "required": false, "deformer": "D_Leg_L" },
{ "id": "leg_lower_L", "group": "Body", "file": "20_Body/leg_lower_L.png", "import": true, "required": false, "deformer": "D_Leg_L" },
{ "id": "leg_upper_R", "group": "Body", "file": "20_Body/leg_upper_R.png", "import": true, "required": false, "deformer": "D_Leg_R" },
{ "id": "leg_lower_R", "group": "Body", "file": "20_Body/leg_lower_R.png", "import": true, "required": false, "deformer": "D_Leg_R" },
{ "id": "hood_back", "group": "Clothes", "file": "30_Clothes/hood_back.png", "import": true, "required": true },
{ "id": "hood_front_L", "group": "Clothes", "file": "30_Clothes/hood_front_L.png", "import": true, "required": true },
{ "id": "hood_front_R", "group": "Clothes", "file": "30_Clothes/hood_front_R.png", "import": true, "required": true },
{ "id": "jacket_body", "group": "Clothes", "file": "30_Clothes/jacket_body.png", "import": true, "required": true, "deformer": "D_Body" },
{ "id": "jacket_sleeve_L", "group": "Clothes", "file": "30_Clothes/jacket_sleeve_L.png", "import": true, "required": true, "deformer": "D_Arm_L" },
{ "id": "jacket_sleeve_R", "group": "Clothes", "file": "30_Clothes/jacket_sleeve_R.png", "import": true, "required": true, "deformer": "D_Arm_R" },
{ "id": "hoodie_front", "group": "Clothes", "file": "30_Clothes/hoodie_front.png", "import": true, "required": true, "deformer": "D_Body" },
{ "id": "hoodie_string_L", "group": "Clothes", "file": "30_Clothes/hoodie_string_L.png", "import": true, "required": true, "physics": "ParamBreath" },
{ "id": "hoodie_string_R", "group": "Clothes", "file": "30_Clothes/hoodie_string_R.png", "import": true, "required": true, "physics": "ParamBreath" },
{ "id": "pants_base", "group": "Clothes", "file": "30_Clothes/pants_base.png", "import": true, "required": false, "deformer": "D_Body" },
{ "id": "shoe_L", "group": "Clothes", "file": "30_Clothes/shoe_L.png", "import": true, "required": false },
{ "id": "shoe_R", "group": "Clothes", "file": "30_Clothes/shoe_R.png", "import": true, "required": false },
{ "id": "face_base", "group": "Head", "file": "40_Head/face_base.png", "import": true, "required": true, "deformer": "D_Face" },
{ "id": "face_shadow", "group": "Head", "file": "40_Head/face_shadow.png", "import": true, "required": true, "deformer": "D_Face" },
{ "id": "ear_L", "group": "Head", "file": "40_Head/ear_L.png", "import": true, "required": true, "deformer": "D_Head" },
{ "id": "ear_R", "group": "Head", "file": "40_Head/ear_R.png", "import": true, "required": true, "deformer": "D_Head" },
{ "id": "nose", "group": "Head", "file": "40_Head/nose.png", "import": true, "required": true, "deformer": "D_Face" },
{ "id": "cheek_L", "group": "Head", "file": "40_Head/cheek_L.png", "import": true, "required": true, "parameter": "ParamCheek" },
{ "id": "cheek_R", "group": "Head", "file": "40_Head/cheek_R.png", "import": true, "required": true, "parameter": "ParamCheek" },
{ "id": "eye_L_white", "group": "Eyes", "file": "50_Eyes/eye_L_white.png", "import": true, "required": true, "parameter": "ParamEyeLOpen" },
{ "id": "eye_L_iris", "group": "Eyes", "file": "50_Eyes/eye_L_iris.png", "import": true, "required": true, "parameter": "ParamEyeBallX/Y" },
{ "id": "eye_L_pupil", "group": "Eyes", "file": "50_Eyes/eye_L_pupil.png", "import": true, "required": true, "parameter": "ParamEyeBallX/Y" },
{ "id": "eye_L_highlight", "group": "Eyes", "file": "50_Eyes/eye_L_highlight.png", "import": true, "required": true, "parameter": "ParamEyeBallX/Y" },
{ "id": "eye_L_upper_lash", "group": "Eyes", "file": "50_Eyes/eye_L_upper_lash.png", "import": true, "required": true, "parameter": "ParamEyeLOpen" },
{ "id": "eye_L_lower_lash", "group": "Eyes", "file": "50_Eyes/eye_L_lower_lash.png", "import": true, "required": true, "parameter": "ParamEyeLOpen" },
{ "id": "eye_L_lid", "group": "Eyes", "file": "50_Eyes/eye_L_lid.png", "import": true, "required": true, "parameter": "ParamEyeLOpen" },
{ "id": "eye_R_white", "group": "Eyes", "file": "50_Eyes/eye_R_white.png", "import": true, "required": true, "parameter": "ParamEyeROpen" },
{ "id": "eye_R_iris", "group": "Eyes", "file": "50_Eyes/eye_R_iris.png", "import": true, "required": true, "parameter": "ParamEyeBallX/Y" },
{ "id": "eye_R_pupil", "group": "Eyes", "file": "50_Eyes/eye_R_pupil.png", "import": true, "required": true, "parameter": "ParamEyeBallX/Y" },
{ "id": "eye_R_highlight", "group": "Eyes", "file": "50_Eyes/eye_R_highlight.png", "import": true, "required": true, "parameter": "ParamEyeBallX/Y" },
{ "id": "eye_R_upper_lash", "group": "Eyes", "file": "50_Eyes/eye_R_upper_lash.png", "import": true, "required": true, "parameter": "ParamEyeROpen" },
{ "id": "eye_R_lower_lash", "group": "Eyes", "file": "50_Eyes/eye_R_lower_lash.png", "import": true, "required": true, "parameter": "ParamEyeROpen" },
{ "id": "eye_R_lid", "group": "Eyes", "file": "50_Eyes/eye_R_lid.png", "import": true, "required": true, "parameter": "ParamEyeROpen" },
{ "id": "brow_L", "group": "Brows", "file": "55_Brows/brow_L.png", "import": true, "required": true, "parameter": "ParamBrowL*" },
{ "id": "brow_R", "group": "Brows", "file": "55_Brows/brow_R.png", "import": true, "required": true, "parameter": "ParamBrowR*" },
{ "id": "mouth_inside", "group": "Mouth", "file": "60_Mouth/mouth_inside.png", "import": true, "required": true, "parameter": "ParamMouthOpenY" },
{ "id": "teeth_upper", "group": "Mouth", "file": "60_Mouth/teeth_upper.png", "import": true, "required": true, "parameter": "ParamMouthOpenY" },
{ "id": "teeth_lower", "group": "Mouth", "file": "60_Mouth/teeth_lower.png", "import": true, "required": true, "parameter": "ParamMouthOpenY" },
{ "id": "tongue", "group": "Mouth", "file": "60_Mouth/tongue.png", "import": true, "required": true, "parameter": "ParamMouthOpenY" },
{ "id": "mouth_line_upper", "group": "Mouth", "file": "60_Mouth/mouth_line_upper.png", "import": true, "required": true, "parameter": "ParamMouthForm" },
{ "id": "mouth_line_lower", "group": "Mouth", "file": "60_Mouth/mouth_line_lower.png", "import": true, "required": true, "parameter": "ParamMouthForm" },
{ "id": "lip_highlight", "group": "Mouth", "file": "60_Mouth/lip_highlight.png", "import": true, "required": true, "parameter": "ParamMouthForm" },
{ "id": "front_hair_center", "group": "FrontHair", "file": "70_FrontHair/front_hair_center.png", "import": true, "required": true, "physics": "ParamHairFront" },
{ "id": "front_hair_L", "group": "FrontHair", "file": "70_FrontHair/front_hair_L.png", "import": true, "required": true, "physics": "ParamHairFront" },
{ "id": "front_hair_R", "group": "FrontHair", "file": "70_FrontHair/front_hair_R.png", "import": true, "required": true, "physics": "ParamHairFront" },
{ "id": "side_hair_L", "group": "FrontHair", "file": "70_FrontHair/side_hair_L.png", "import": true, "required": true, "physics": "ParamHairSide" },
{ "id": "side_hair_R", "group": "FrontHair", "file": "70_FrontHair/side_hair_R.png", "import": true, "required": true, "physics": "ParamHairSide" },
{ "id": "hair_highlight_front", "group": "FrontHair", "file": "70_FrontHair/hair_highlight_front.png", "import": true, "required": true, "physics": "ParamHairFront" },
{ "id": "headphone_band", "group": "Accessories", "file": "80_Accessories/headphone_band.png", "import": true, "required": true, "deformer": "D_Head" },
{ "id": "headphone_L", "group": "Accessories", "file": "80_Accessories/headphone_L.png", "import": true, "required": true, "deformer": "D_Head" },
{ "id": "headphone_R", "group": "Accessories", "file": "80_Accessories/headphone_R.png", "import": true, "required": true, "deformer": "D_Head" },
{ "id": "choker_band", "group": "Accessories", "file": "80_Accessories/choker_band.png", "import": true, "required": true, "deformer": "D_Neck" },
{ "id": "pendant", "group": "Accessories", "file": "80_Accessories/pendant.png", "import": true, "required": true, "physics": "ParamBreath" },
{ "id": "swap_hand_heart_L", "group": "SwapParts", "file": "90_SwapParts/swap_hand_heart_L.png", "import": true, "required": false, "parameter": "ParamHandL" },
{ "id": "swap_hand_heart_R", "group": "SwapParts", "file": "90_SwapParts/swap_hand_heart_R.png", "import": true, "required": false, "parameter": "ParamHandR" },
{ "id": "swap_arm_cross_L", "group": "SwapParts", "file": "90_SwapParts/swap_arm_cross_L.png", "import": true, "required": false, "parameter": "ParamArmLA/LB" },
{ "id": "swap_arm_cross_R", "group": "SwapParts", "file": "90_SwapParts/swap_arm_cross_R.png", "import": true, "required": false, "parameter": "ParamArmRA/RB" }
]
}
File diff suppressed because one or more lines are too long
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB