[WL-816b] 무기·코스튬 팔레트 UV 도트화 (#816)

무기용 값 = 덩어리 16 · 팔레트 12칸 (캐릭터 40/16 은 과하다 — 무기는 화면이 1/10)
- 6칸은 육안 기각: 08 방패 문양이 뭉치고 05_Bow_004 노란 장식이 초록으로 돈다(dHue 30.3°→0.03°)
- 채도 복원을 min(평균색 채도, 복원값)으로 제한 — 금속이 갈색으로 뜨던 1차 육안 기각 원인 제거
- Hue 는 ±8° 하드 클램프 · 전역 채널 이득 0

인게임 Play 실측(포스트 포함 · 게임 크기): 서로다른색 11종 전부 25% 이하
 (Elven_Sword 82.6→7.7 · Wand 38.1→8.6 · Dagger2 65.6→15.0) · 고유색 최대 70(≤200)
캐릭터 기존 수치 악화 0 (167 · 5.64% → 167 · 5.64%) · 되돌리기 11/11 동일
코스튬 = 해당 없음(46종 전부 어른 Ai01 계열 · 스왑 대상은 110001 하나뿐 = 이미 도트화된 M05)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
깃 관리자 2026-09-13 12:09:54 +09:00
parent 27cc6544c1
commit 4ce3111516
32 changed files with 252 additions and 134 deletions

View File

@ -1,26 +1,26 @@
=== WL-816b 최종 굽기 (덩어리 6 · 팔레트 6칸 · 32×32 · Point · 밉 OFF · 무압축) ===
=== WL-816b 최종 굽기 (덩어리 16 · 팔레트 12칸 · 32×32 · Point · 밉 OFF · 무압축) ===
기준 머티리얼 M05_ToonP shader=Shader Graphs/Toon _Shades=3 _DiffuseColor=RGBA(0.993, 1.028, 0.874, 1.000)
PP_Theme_10_Mace_003 c6 p6 → 덩어리 26 칸 6 verts 7719→7719 tris 3848 dHue mean 2.96 max 3.92
PP_Theme_10_Mace_003 c16 p12 → 덩어리 26 칸 12 verts 7719→7719 tris 3848 dHue mean 2.96 max 3.91
→ mesh Assets/WL/Look/Character/Meshes/PP_Theme_10_Mace_003_PAL.asset · pal Assets/WL/Look/Character/Textures/WLPaletteW_PP_Theme_10_Mace_003.png · mat Assets/WL/Look/Character/Materials/PP_Theme_10_Mace_003_ToonP.mat
PP_Theme_10_Shield_003 c6 p6 → 덩어리 64 칸 6 verts 7671→7671 tris 4230 dHue mean 0.00 max 0.00
PP_Theme_10_Shield_003 c16 p12 → 덩어리 64 칸 12 verts 7671→7671 tris 4230 dHue mean 0.00 max 0.00
→ mesh Assets/WL/Look/Character/Meshes/PP_Theme_10_Shield_003_PAL.asset · pal Assets/WL/Look/Character/Textures/WLPaletteW_PP_Theme_10_Shield_003.png · mat Assets/WL/Look/Character/Materials/PP_Theme_10_Shield_003_ToonP.mat
Elven_Sword_01 c6 p6 → 덩어리 6 칸 6 verts 444→464 tris 404 dHue mean 1.36 max 5.95
Elven_Sword_01 c16 p12 → 덩어리 16 칸 12 verts 444→500 tris 404 dHue mean 1.35 max 5.95
→ mesh Assets/WL/Look/Character/Meshes/Elven_Sword_01_PAL.asset · pal Assets/WL/Look/Character/Textures/WLPaletteW_Elven_Sword_01.png · mat Assets/WL/Look/Character/Materials/Elven_Sword_01_ToonP.mat
PP_Theme_08_Mace_003 c6 p6 → 덩어리 106 칸 6 verts 18852→18852 tris 6688 dHue mean 0.35 max 7.29
PP_Theme_08_Mace_003 c16 p12 → 덩어리 106 칸 12 verts 18852→18852 tris 6688 dHue mean 0.07 max 0.47
→ mesh Assets/WL/Look/Character/Meshes/PP_Theme_08_Mace_003_PAL.asset · pal Assets/WL/Look/Character/Textures/WLPaletteW_PP_Theme_08_Mace_003.png · mat Assets/WL/Look/Character/Materials/PP_Theme_08_Mace_003_ToonP.mat
PP_Theme_08_Shield_003 c6 p6 → 덩어리 28 칸 6 verts 9168→9168 tris 4586 dHue mean 0.02 max 0.28
PP_Theme_08_Shield_003 c16 p12 → 덩어리 28 칸 12 verts 9168→9168 tris 4586 dHue mean 0.02 max 0.28
→ mesh Assets/WL/Look/Character/Meshes/PP_Theme_08_Shield_003_PAL.asset · pal Assets/WL/Look/Character/Textures/WLPaletteW_PP_Theme_08_Shield_003.png · mat Assets/WL/Look/Character/Materials/PP_Theme_08_Shield_003_ToonP.mat
PP_Theme_05_Bow_003 c6 p6 → 덩어리 54 칸 6 verts 12070→12070 tris 5780 dHue mean 0.01 max 0.02
PP_Theme_05_Bow_003 c16 p12 → 덩어리 54 칸 12 verts 12070→12070 tris 5780 dHue mean 0.00 max 0.00
→ mesh Assets/WL/Look/Character/Meshes/PP_Theme_05_Bow_003_PAL.asset · pal Assets/WL/Look/Character/Textures/WLPaletteW_PP_Theme_05_Bow_003.png · mat Assets/WL/Look/Character/Materials/PP_Theme_05_Bow_003_ToonP.mat
PP_Theme_05_Bow_004 c6 p6 → 덩어리 100 칸 6 verts 9682→9682 tris 4586 dHue mean 3.69 max 30.32
PP_Theme_05_Bow_004 c16 p12 → 덩어리 100 칸 12 verts 9682→9682 tris 4586 dHue mean 0.01 max 0.03
→ mesh Assets/WL/Look/Character/Meshes/PP_Theme_05_Bow_004_PAL.asset · pal Assets/WL/Look/Character/Textures/WLPaletteW_PP_Theme_05_Bow_004.png · mat Assets/WL/Look/Character/Materials/PP_Theme_05_Bow_004_ToonP.mat
PP_Theme_03_Scepter_001 c6 p6 → 덩어리 49 칸 6 verts 8464→8464 tris 4184 dHue mean 0.00 max 0.00
PP_Theme_03_Scepter_001 c16 p12 → 덩어리 49 칸 12 verts 8464→8464 tris 4184 dHue mean 0.00 max 0.00
→ mesh Assets/WL/Look/Character/Meshes/PP_Theme_03_Scepter_001_PAL.asset · pal Assets/WL/Look/Character/Textures/WLPaletteW_PP_Theme_03_Scepter_001.png · mat Assets/WL/Look/Character/Materials/PP_Theme_03_Scepter_001_ToonP.mat
PP_Theme_03_Wand_001 c6 p6 → 덩어리 32 칸 6 verts 4749→4749 tris 2296 dHue mean 0.13 max 0.60
PP_Theme_03_Wand_001 c16 p12 → 덩어리 32 칸 12 verts 4749→4749 tris 2296 dHue mean 0.13 max 0.60
→ mesh Assets/WL/Look/Character/Meshes/PP_Theme_03_Wand_001_PAL.asset · pal Assets/WL/Look/Character/Textures/WLPaletteW_PP_Theme_03_Wand_001.png · mat Assets/WL/Look/Character/Materials/PP_Theme_03_Wand_001_ToonP.mat
Dagger1 c6 p6 → 덩어리 6 칸 6 verts 91→109 tris 76 dHue mean 0.01 max 0.02
Dagger1 c16 p12 → 덩어리 16 칸 12 verts 91→131 tris 76 dHue mean 0.01 max 0.02
→ mesh Assets/WL/Look/Character/Meshes/Dagger1_PAL.asset · pal Assets/WL/Look/Character/Textures/WLPaletteW_Dagger1.png · mat Assets/WL/Look/Character/Materials/Dagger1_ToonP.mat
Dagger2 c6 p6 → 덩어리 6 칸 6 verts 91→109 tris 76 dHue mean 0.01 max 0.02
Dagger2 c16 p12 → 덩어리 16 칸 12 verts 91→131 tris 76 dHue mean 0.01 max 0.02
→ mesh Assets/WL/Look/Character/Meshes/Dagger2_PAL.asset · pal Assets/WL/Look/Character/Textures/WLPaletteW_Dagger2.png · mat Assets/WL/Look/Character/Materials/Dagger2_ToonP.mat
SO 배선: 무기 11종 · weaponEnabled_=1 · 캐릭터 행 6 무변경

View File

@ -340,7 +340,11 @@ public static class WL816bBake
float hue = sw > 1e-6 ? (float)((Math.Atan2(hy, hx) * 180.0 / Math.PI + 360.0) % 360.0) : ph;
float d8 = DHue(ph, hue);
if (Mathf.Abs(d8) > HUE_LIMIT) hue = ph + Mathf.Sign(d8) * HUE_LIMIT; // 🔴 ±8° 하드 클램프
float sat = aw > 1e-6 ? (float)(ssum / aw) : ps;
// 🔴 채도는 **되돌리지 않는다** — 칸 평균 채도(ssum/aw)를 쓰면 은·강철처럼 「평균은 회색인데
// texel 마다 채도가 있는」 면에서 채도가 부풀어 **금속이 갈색으로 뜬다**(816b 1차 육안 기각의 원인).
// ps = 면적가중 평균색 자체의 채도 = 정직한 값. (814x 는 부위별 SGain 으로 이 부풀림을 눌렀다)
float satRestored = aw > 1e-6 ? (float)(ssum / aw) : ps;
float sat = Mathf.Min(ps, satRestored);
palS[j] = HsvToRgb(hue, sat, pv);
}
@ -451,8 +455,14 @@ public static class WL816bBake
}
// ───────────────────────────── 최종 굽기 + 배선
// 🔴 무기용 값 = 덩어리 6 · 팔레트 6칸 (인게임 Play 실측으로 결정 · WL816b_ITER.txt)
public const int FINAL_CHUNKS = 6, FINAL_PALETTE = 6;
// 🔴 무기용 값 = **덩어리 16 · 팔레트 12칸** (인게임 Play 실측 + 육안으로 결정 · WL816b_ITER.txt)
// · 캐릭터(40/16)를 그대로 쓰면 과하다 — 무기는 화면이 캐릭터의 1/10(90~1,309 px)이라
// 덩어리 40 은 검에서 서로다른색 9.94 %, 16 은 8.33 % 로 **적은 쪽이 낫다**.
// · 그렇다고 6칸까지 줄이면 🔴 육안이 깨진다 — 08 방패의 말 문양이 배경과 한 색으로 뭉치고
// 05_Bow_004 의 노란 장식이 **초록으로 돈다**(굽기 dHue 최대 30.3° → 12칸에서 0.03°).
// · PurePoly 9종은 메시가 **분리된 껍질** 묶음이라 병합이 26~106 에서 바닥을 친다 = 목표값이 그 아래면
// 껍질 수가 곧 덩어리 수다(그래서 실제 조절 손잡이는 칸 수뿐이다).
public const int FINAL_CHUNKS = 16, FINAL_PALETTE = 12;
public static readonly string[] FINAL_WEAPONS = {
"PP_Theme_10_Mace_003", "PP_Theme_10_Shield_003", "Elven_Sword_01",
"PP_Theme_08_Mace_003", "PP_Theme_08_Shield_003",

View File

@ -0,0 +1,15 @@
root=PC_LH_M05 키 1.2200 m · center (-0.01, 0.57, 0.00) · rootLossy (1.0527, 1.0527, 1.0527)
socket[0] w_shield = w_shield lossy (0.6316, 0.6316, 0.6316)
socket[1] w_righthand = w_righthand lossy (1.0527, 0.7369, 1.0527)
socket[2] w_onehand = w_onehand lossy (0.8421, 0.8421, 0.8421)
socket[3] w_bladedancer_l = w_bladedancer_l lossy (1.0527, 1.0527, 1.0527)
socket[4] w_bladedancer_r = w_bladedancer_r lossy (0.8421, 0.8421, 0.8421)
socket[5] w_orb = w_orb lossy (0.1053, 0.1053, 0.1053)
socket[6] w_archer_l = w_archer_l lossy (1.3685, 1.3685, 1.3685)
renderers Arm_m05,Body_m05,Face,Hair05,Head,Leg_M05
palette SO enabled=1 rows=6
=== 대조군: 무기 0 · ReLook/측정만 12회 반복 ===
0회 : 2959 px · 고유색 168 · 비율 5.68 %
4회 : 2959 px · 고유색 168 · 비율 5.68 %
8회 : 2959 px · 고유색 168 · 비율 5.68 %
12회 : 2959 px · 고유색 168 · 비율 5.68 %

View File

@ -1,4 +1,4 @@
root=PC_LH_M05 키 1.2200 m · center (-0.07, 0.57, -0.04) · rootLossy (1.0527, 1.0527, 1.0527)
root=PC_LH_M05 키 1.2200 m · center (-0.01, 0.57, 0.00) · rootLossy (1.0527, 1.0527, 1.0527)
socket[0] w_shield = w_shield lossy (0.6316, 0.6316, 0.6316)
socket[1] w_righthand = w_righthand lossy (1.0527, 0.7369, 1.0527)
socket[2] w_onehand = w_onehand lossy (0.8421, 0.8421, 0.8421)
@ -10,64 +10,44 @@
palette SO enabled=1 rows=6
=== 무기 팔레트 후보 비교 (인게임 Play · 포스트 포함 · 1080x1920 · ortho 10) ===
캐릭터 기준(무기 없음) : 2961 px · 고유색 166 · 비율 5.61 % · 단계 20
캐릭터 기준(무기 없음) : 2962 px · 고유색 166 · 비율 5.60 % · 단계 21
| 무기 | 안 | 덩어리 | 칸 | verts | 화면 px | 고유색 | 서로다른색 % | 단계 | 굽기 dHue평균/최대 |
|---|---|---|---|---|---|---|---|---|---|
| Elven_Sword_01 | **지금** | — | — | — | 304 | 252 | 82.89 | 3 | — |
| Elven_Sword_01 | c6p6 | 6 | 6 | 444→464 | 312 | 16 | 5.13 | 4 | 1.36/5.95 | 칸단계 1.40/2 | 캐릭 176·5.95% |
| Elven_Sword_01 | **지금** | — | — | — | 304 | 253 | 83.22 | 3 | — |
| Elven_Sword_01 | c6p6 | 6 | 6 | 444→464 | 312 | 16 | 5.13 | 4 | 1.36/5.95 | 칸단계 1.40/2 | 캐릭 174·5.88% |
칸 5개 측정 · 평균 1.40 · 최대 2 · 0:178px/2단 1:26px/1단 2:62px/1단 3:36px/2단 4:10px/1단
| Elven_Sword_01 | c10p8 | 10 | 8 | 444→476 | 312 | 22 | 7.05 | 4 | 1.32/5.95 | 칸단계 1.38/2 | 캐릭 177·5.98% |
칸 8개 측정 · 평균 1.38 · 최대 2 · 0:122px/1단 1:26px/1단 2:62px/1단 3:36px/2단 4:34px/2단 5:10px/1단 6:8px/1단 7:14px/2단
| Elven_Sword_01 | c16p8 | 16 | 8 | 444→496 | 312 | 20 | 6.41 | 4 | 1.54/5.95 | 칸단계 1.38/2 | 캐릭 175·5.91% |
칸 8개 측정 · 평균 1.38 · 최대 2 · 0:138px/2단 1:26px/1단 2:62px/1단 3:36px/2단 4:22px/2단 5:9px/1단 6:10px/1단 7:9px/1단
| Elven_Sword_01 | c24p12 | 24 | 12 | 444→532 | 312 | 28 | 8.97 | 6 | 3.08/73.23 | 칸단계 1.25/2 | 캐릭 177·5.98% |
칸 12개 측정 · 평균 1.25 · 최대 2 · 0:97px/1단 1:26px/1단 2:21px/1단 3:13px/2단 4:43px/1단 5:23px/1단 6:9px/1단 7:7px/1단 8:8px/1단 9:22px/2단 10:9px/1단 11:34px/2단
| Elven_Sword_01 | c40p16 | 40 | 16 | 444→601 | 312 | 29 | 9.29 | 6 | 3.26/73.23 | 칸단계 1.19/2 | 캐릭 177·5.98% |
칸 16개 측정 · 평균 1.19 · 최대 2 · 0:63px/1단 1:21px/1단 2:15px/1단 3:4px/1단 4:22px/2단 5:8px/1단 6:13px/2단 7:43px/1단 8:10px/1단 9:23px/1단 10:9px/1단 11:9px/1단 12:34px/2단 13:25px/1단 14:4px/1단 15:9px/1단
| Elven_Sword_01 | c16p12 | 16 | 12 | 444→500 | 312 | 26 | 8.33 | 4 | 1.35/5.95 | 칸단계 1.36/2 | 캐릭 174·5.88% |
칸 11개 측정 · 평균 1.36 · 최대 2 · 0:104px/1단 1:26px/1단 2:62px/1단 3:36px/2단 4:14px/2단 5:9px/1단 6:10px/1단 7:9px/1단 8:14px/2단 9:8px/2단 10:20px/1단
| Elven_Sword_01 | c24p16 | 24 | 16 | 444→532 | 312 | 31 | 9.94 | 5 | 0.72/3.24 | 칸단계 1.29/2 | 캐릭 175·5.91% |
칸 14개 측정 · 평균 1.29 · 최대 2 · 0:97px/1단 1:26px/1단 2:21px/1단 3:13px/2단 4:41px/1단 5:23px/1단 6:9px/1단 7:7px/1단 8:8px/1단 9:8px/2단 10:9px/1단 11:14px/2단 13:14px/2단 14:20px/1단
| PP_Theme_10_Mace_003 | **지금** | — | — | — | 263 | 72 | 27.38 | 5 | — |
| PP_Theme_10_Mace_003 | c6p6 | 26 | 6 | 7719→7719 | 265 | 28 | 10.57 | 4 | 2.96/3.92 | 칸단계 2.33/5 | 캐릭 180·6.08% |
칸 6개 측정 · 평균 2.33 · 최대 5 · 0:165px/2단 1:8px/5단 2:12px/2단 3:75px/1단 4:12px/1단 5:5px/3단
| PP_Theme_10_Mace_003 | c10p8 | 26 | 8 | 7719→7719 | 265 | 32 | 12.08 | 4 | 2.96/3.91 | 칸단계 2.29/5 | 캐릭 180·6.08% |
칸 7개 측정 · 평균 2.29 · 최대 5 · 0:45px/2단 1:8px/5단 2:12px/2단 3:75px/1단 4:10px/1단 5:5px/3단 6:120px/2단
| PP_Theme_10_Mace_003 | c16p8 | 26 | 8 | 7719→7719 | 265 | 32 | 12.08 | 4 | 2.96/3.91 | 칸단계 2.29/5 | 캐릭 180·6.08% |
칸 7개 측정 · 평균 2.29 · 최대 5 · 0:45px/2단 1:8px/5단 2:12px/2단 3:75px/1단 4:10px/1단 5:5px/3단 6:120px/2단
| PP_Theme_10_Mace_003 | c24p12 | 26 | 12 | 7719→7719 | 265 | 34 | 12.83 | 4 | 2.96/3.91 | 칸단계 2.00/4 | 캐릭 181·6.12% |
칸 10개 측정 · 평균 2.00 · 최대 4 · 0:45px/2단 1:5px/4단 2:12px/2단 3:75px/1단 4:3px/1단 5:5px/3단 6:67px/2단 8:53px/2단 9:3px/2단 11:7px/1단
| PP_Theme_10_Mace_003 | c40p16 | 40 | 16 | 7719→7719 | 264 | 27 | 10.23 | 5 | 0.00/0.00 | 칸단계 1.78/3 | 캐릭 180·6.08% |
칸 9개 측정 · 평균 1.78 · 최대 3 · 0:74px/1단 1:58px/3단 2:7px/1단 3:4px/3단 6:4px/1단 7:35px/2단 11:78px/2단 12:3px/1단 13:12px/2단
| PP_Theme_10_Shield_003 | **지금** | — | — | — | 1309 | 81 | 6.19 | 8 | — |
| PP_Theme_10_Shield_003 | c6p6 | 64 | 6 | 7671→7671 | 1306 | 69 | 5.28 | 8 | 0.00/0.00 | 칸단계 6.00/7 | 캐릭 176·5.95% |
칸 3개 측정 · 평균 6.00 · 최대 7 · 0:1157px/7단 1:139px/7단 3:13px/4단
| PP_Theme_10_Shield_003 | c10p8 | 64 | 8 | 7671→7671 | 1306 | 69 | 5.28 | 8 | 0.00/0.00 | 칸단계 6.00/7 | 캐릭 176·5.95% |
칸 3개 측정 · 평균 6.00 · 최대 7 · 0:1157px/7단 1:139px/7단 3:13px/4단
| PP_Theme_10_Shield_003 | c16p8 | 64 | 8 | 7671→7671 | 1306 | 69 | 5.28 | 8 | 0.00/0.00 | 칸단계 6.00/7 | 캐릭 176·5.95% |
칸 3개 측정 · 평균 6.00 · 최대 7 · 0:1157px/7단 1:139px/7단 3:13px/4단
| PP_Theme_10_Shield_003 | c24p12 | 64 | 12 | 7671→7671 | 1306 | 68 | 5.21 | 8 | 0.00/0.00 | 칸단계 6.33/8 | 캐릭 177·5.98% |
칸 3개 측정 · 평균 6.33 · 최대 8 · 0:1157px/7단 1:139px/8단 3:13px/4단
| PP_Theme_10_Shield_003 | c40p16 | 64 | 16 | 7671→7671 | 1306 | 68 | 5.21 | 8 | 0.00/0.00 | 칸단계 6.33/8 | 캐릭 177·5.98% |
칸 3개 측정 · 평균 6.33 · 최대 8 · 0:1157px/7단 1:139px/8단 3:13px/4단
| Dagger1 | **지금** | — | — | — | 126 | 46 | 36.51 | 10 | — |
| Dagger1 | c6p6 | 6 | 6 | 91→109 | 126 | 22 | 17.46 | 6 | 0.01/0.02 | 칸단계 3.00/4 | 캐릭 176·5.95% |
칸 4개 측정 · 평균 3.00 · 최대 4 · 0:51px/4단 1:3px/1단 2:67px/4단 3:9px/3단
| Dagger1 | c10p8 | 10 | 8 | 91→123 | 126 | 24 | 19.05 | 6 | 0.01/0.02 | 칸단계 2.33/4 | 캐릭 176·5.95% |
칸 6개 측정 · 평균 2.33 · 최대 4 · 0:51px/4단 1:3px/1단 2:55px/4단 4:3px/3단 5:12px/1단 7:6px/1단
| Dagger1 | c16p8 | 16 | 8 | 91→130 | 126 | 24 | 19.05 | 6 | 0.02/0.43 | 칸단계 2.80/4 | 캐릭 176·5.95% |
칸 5개 측정 · 평균 2.80 · 최대 4 · 0:51px/4단 1:3px/1단 2:43px/4단 3:7px/2단 5:24px/3단
| Dagger1 | c24p12 | 24 | 12 | 91→141 | 126 | 24 | 19.05 | 6 | 0.01/0.02 | 칸단계 2.71/4 | 캐릭 176·5.95% |
칸 7개 측정 · 평균 2.71 · 최대 4 · 0:51px/4단 1:3px/1단 2:5px/2단 3:38px/4단 4:5px/3단 6:24px/3단 8:3px/2단
| Dagger1 | c40p16 | 40 | 16 | 91→163 | 126 | 23 | 18.25 | 6 | 0.04/2.17 | 칸단계 3.00/4 | 캐릭 176·5.95% |
칸 7개 측정 · 평균 3.00 · 최대 4 · 0:51px/4단 3:15px/3단 4:4px/1단 6:23px/4단 8:5px/3단 9:5px/3단 10:24px/3단
| PP_Theme_05_Bow_003 | **지금** | — | — | — | 131 | 51 | 38.93 | 10 | — |
| PP_Theme_05_Bow_003 | c6p6 | 54 | 6 | 12070→12070 | 152 | 31 | 20.39 | 8 | 0.01/0.02 | 칸단계 5.00/6 | 캐릭 182·6.15% |
칸 3개 측정 · 평균 5.00 · 최대 6 · 0:147px/6단 2:18px/4단 3:18px/5단
| PP_Theme_05_Bow_003 | c10p8 | 54 | 8 | 12070→12070 | 150 | 33 | 22.00 | 8 | 0.00/0.00 | 칸단계 3.80/6 | 캐릭 185·6.25% |
칸 5개 측정 · 평균 3.80 · 최대 6 · 0:136px/6단 2:18px/4단 3:9px/4단 6:9px/3단 7:11px/2단
| PP_Theme_05_Bow_003 | c16p8 | 54 | 8 | 12070→12070 | 150 | 33 | 22.00 | 8 | 0.00/0.00 | 칸단계 3.80/6 | 캐릭 185·6.25% |
칸 5개 측정 · 평균 3.80 · 최대 6 · 0:136px/6단 2:18px/4단 3:9px/4단 6:9px/3단 7:11px/2단
| PP_Theme_05_Bow_003 | c24p12 | 54 | 12 | 12070→12070 | 146 | 36 | 24.66 | 9 | 0.00/0.00 | 칸단계 3.00/6 | 캐릭 188·6.35% |
칸 8개 측정 · 평균 3.00 · 최대 6 · 0:63px/1단 2:7px/2단 3:9px/4단 6:9px/3단 7:11px/1단 8:73px/6단 9:6px/3단 11:5px/4단
| PP_Theme_05_Bow_003 | c40p16 | 54 | 16 | 12070→12070 | 146 | 36 | 24.66 | 9 | 0.00/0.00 | 칸단계 2.78/6 | 캐릭 188·6.35% |
칸 9개 측정 · 평균 2.78 · 최대 6 · 0:63px/1단 2:7px/2단 3:5px/3단 6:9px/3단 7:11px/1단 8:73px/6단 9:6px/3단 11:3px/3단 14:4px/3단
| PP_Theme_10_Mace_003 | c6p6 | 26 | 6 | 7719→7719 | 265 | 25 | 9.43 | 4 | 2.96/3.92 | 칸단계 2.17/5 | 캐릭 180·6.08% |
칸 6개 측정 · 평균 2.17 · 최대 5 · 0:165px/2단 1:8px/5단 2:12px/2단 3:75px/1단 4:12px/1단 5:5px/2단
| PP_Theme_10_Mace_003 | c16p12 | 26 | 12 | 7719→7719 | 265 | 32 | 12.08 | 4 | 2.96/3.91 | 칸단계 1.90/4 | 캐릭 180·6.08% |
칸 10개 측정 · 평균 1.90 · 최대 4 · 0:45px/2단 1:5px/4단 2:12px/2단 3:75px/1단 4:3px/1단 5:5px/2단 6:67px/2단 8:53px/2단 9:3px/2단 11:7px/1단
| PP_Theme_10_Mace_003 | c24p16 | 26 | 16 | 7719→7719 | 265 | 31 | 11.70 | 4 | 2.96/3.91 | 칸단계 1.90/4 | 캐릭 180·6.08% |
칸 10개 측정 · 평균 1.90 · 최대 4 · 0:45px/2단 1:5px/4단 2:12px/2단 3:75px/1단 4:3px/1단 5:5px/2단 6:67px/2단 8:53px/2단 9:3px/2단 11:7px/1단
| PP_Theme_10_Shield_003 | **지금** | — | — | — | 1309 | 86 | 6.57 | 9 | — |
| PP_Theme_10_Shield_003 | c6p6 | 64 | 6 | 7671→7671 | 1306 | 73 | 5.59 | 9 | 0.00/0.00 | 칸단계 6.00/9 | 캐릭 188·6.35% |
칸 3개 측정 · 평균 6.00 · 최대 9 · 0:1157px/7단 1:139px/9단 3:13px/2단
| PP_Theme_10_Shield_003 | c16p12 | 64 | 12 | 7671→7671 | 1306 | 73 | 5.59 | 9 | 0.00/0.00 | 칸단계 6.00/9 | 캐릭 188·6.35% |
칸 3개 측정 · 평균 6.00 · 최대 9 · 0:1157px/7단 1:139px/9단 3:13px/2단
| PP_Theme_10_Shield_003 | c24p16 | 64 | 16 | 7671→7671 | 1306 | 73 | 5.59 | 9 | 0.00/0.00 | 칸단계 6.00/9 | 캐릭 188·6.35% |
칸 3개 측정 · 평균 6.00 · 최대 9 · 0:1157px/7단 1:139px/9단 3:13px/2단
| PP_Theme_08_Shield_003 | **지금** | — | — | — | 1008 | 119 | 11.81 | 9 | — |
| PP_Theme_08_Shield_003 | c6p6 | 28 | 6 | 9168→9168 | 1007 | 60 | 5.96 | 9 | 0.02/0.28 | 칸단계 4.67/8 | 캐릭 175·5.91% |
칸 3개 측정 · 평균 4.67 · 최대 8 · 0:962px/8단 3:37px/3단 4:9px/3단
| PP_Theme_08_Shield_003 | c16p12 | 28 | 12 | 9168→9168 | 1007 | 60 | 5.96 | 9 | 0.02/0.28 | 칸단계 4.67/8 | 캐릭 175·5.91% |
칸 3개 측정 · 평균 4.67 · 최대 8 · 0:962px/8단 3:37px/3단 4:9px/3단
| PP_Theme_08_Shield_003 | c24p16 | 28 | 16 | 9168→9168 | 1007 | 60 | 5.96 | 9 | 0.02/0.28 | 칸단계 4.67/8 | 캐릭 175·5.91% |
칸 3개 측정 · 평균 4.67 · 최대 8 · 0:962px/8단 3:37px/3단 4:9px/3단
| PP_Theme_05_Bow_004 | **지금** | — | — | — | 225 | 65 | 28.89 | 9 | — |
| PP_Theme_05_Bow_004 | c6p6 | 100 | 6 | 9682→9682 | 194 | 34 | 17.53 | 7 | 3.69/30.32 | 칸단계 4.00/7 | 캐릭 181·6.12% |
칸 4개 측정 · 평균 4.00 · 최대 7 · 0:182px/7단 1:10px/2단 2:21px/4단 3:11px/3단
| PP_Theme_05_Bow_004 | c16p12 | 100 | 12 | 9682→9682 | 194 | 35 | 18.04 | 7 | 0.01/0.03 | 칸단계 3.40/5 | 캐릭 182·6.15% |
칸 5개 측정 · 평균 3.40 · 최대 5 · 0:98px/3단 1:10px/2단 3:11px/3단 6:21px/4단 8:84px/5단
| PP_Theme_05_Bow_004 | c24p16 | 100 | 16 | 9682→9682 | 194 | 35 | 18.04 | 7 | 0.01/0.03 | 칸단계 3.14/5 | 캐릭 182·6.15% |
칸 7개 측정 · 평균 3.14 · 최대 5 · 0:98px/3단 1:10px/2단 3:3px/2단 6:12px/4단 8:84px/5단 12:8px/3단 13:9px/3단
캐릭터 재측정(무기 적용 후) : 2959 px · 고유색 188 · 비율 6.35 % · 단계 20
캐릭터 재측정(무기 적용 후) : 2959 px · 고유색 182 · 비율 6.15 % · 단계 24

View File

@ -1,4 +1,4 @@
// WL-816b — 무기용 덩어리·팔레트 값 결정 (🔴 인게임 Play · 포스트 포함 · 게임 크기에서만 잰다)
// WL-816b — 무기용 덩어리·팔레트 값 결정 (🔴 인게임 Play · 포스트 포함 · 게임 크기에서만 잰다)
// 빌드: scripts 가 한 파일로 합쳐져야 한다 → AgentScripts/WL816b_ALL.cs 로 concat 해서 돌린다.
// entry: WL816bIter.Run
using System;
@ -15,12 +15,12 @@ public static class WL816bIter
new[]{ "Elven_Sword_01", "2" },
new[]{ "PP_Theme_10_Mace_003", "1" },
new[]{ "PP_Theme_10_Shield_003", "0" },
new[]{ "Dagger1", "3" },
new[]{ "PP_Theme_05_Bow_003", "6" },
new[]{ "PP_Theme_08_Shield_003", "0" },
new[]{ "PP_Theme_05_Bow_004", "6" },
};
// 후보 (덩어리목표, 팔레트칸) — 캐릭터는 40/16. 무기는 화면이 10분의 1 이라 작게부터 본다.
static readonly int[][] CFG = {
new[]{ 6, 6 }, new[]{ 10, 8 }, new[]{ 16, 8 }, new[]{ 24, 12 }, new[]{ 40, 16 },
new[]{ 6, 6 }, new[]{ 16, 12 }, new[]{ 24, 16 },
};
public static void Run()

View File

@ -0,0 +1,10 @@
weaponEnabled_=0 · WeaponEnabled=False
Elven_Sword_01 applied=False mesh default → default · mat Elven_Sword_01 → Elven_Sword_01 · 원본 그대로 ✅
PP_Theme_10_Shield_003 applied=False mesh PP_Theme_10_Shield_003 → PP_Theme_10_Shield_003 · mat PP_Standard_Material → PP_Standard_Material · 원본 그대로 ✅
Dagger1 applied=False mesh dagger → dagger · mat T_Dagger → T_Dagger · 원본 그대로 ✅
weaponEnabled_=1 · WeaponEnabled=True
Elven_Sword_01 applied=True mesh default → Elven_Sword_01_PAL · mat Elven_Sword_01 → Elven_Sword_01_ToonP · 팔레트 적용 ✅
PP_Theme_10_Shield_003 applied=True mesh PP_Theme_10_Shield_003 → PP_Theme_10_Shield_003_PAL · mat PP_Standard_Material → PP_Theme_10_Shield_003_ToonP · 팔레트 적용 ✅
Dagger1 applied=True mesh dagger → Dagger1_PAL · mat T_Dagger → Dagger1_ToonP · 팔레트 적용 ✅
복구: weaponEnabled_=1
캐릭터 행 6 · enabled_=1 · 무기 행 11

View File

@ -0,0 +1,48 @@
// WL-816b — 되돌리기(C8) 실측: weaponEnabled_ = 0 이면 무기는 원본 100 % (에디트 모드)
using System.IO;
using System.Linq;
using System.Text;
using UnityEditor;
using UnityEngine;
using WL.Look.Character;
public static class WL816bRevert
{
public static void Run()
{
var sb = new StringBuilder();
const string SOP = "Assets/WL/Look/Character/Resources/WL/WLCharacterPaletteSettings.asset";
var so = AssetDatabase.LoadAssetAtPath<WLCharacterPaletteSettings>(SOP);
WLCharacterPaletteSettings.Invalidate();
int was = so.weaponEnabled_;
string[] test = { "Elven_Sword_01", "PP_Theme_10_Shield_003", "Dagger1" };
foreach (int flag in new[] { 0, 1 })
{
so.weaponEnabled_ = flag; EditorUtility.SetDirty(so); AssetDatabase.SaveAssets();
WLCharacterPaletteSettings.Invalidate();
sb.AppendLine("weaponEnabled_=" + flag + " · WeaponEnabled=" + WLCharacterPaletteSettings.WeaponEnabled);
foreach (var w in test)
{
var pf = AssetDatabase.LoadAssetAtPath<GameObject>("Assets/Res_Addr/Weapon/" + w + ".prefab");
var go = UnityEngine.Object.Instantiate(pf); go.name = w + "(Clone)";
var mf = go.GetComponentInChildren<MeshFilter>(true);
var rd = go.GetComponentsInChildren<Renderer>(true).First(r => !(r is ParticleSystemRenderer));
var m0 = mf.sharedMesh; var t0 = rd.sharedMaterial;
bool applied = WLWeaponPalette.Apply(go.transform);
sb.AppendLine(string.Format(" {0,-24} applied={1,-5} mesh {2} → {3} · mat {4} → {5} · {6}",
w, applied, m0.name, mf.sharedMesh.name, t0.name, rd.sharedMaterial.name,
flag == 0 ? ((mf.sharedMesh == m0 && rd.sharedMaterial == t0) ? "원본 그대로 ✅" : "🔴 바뀜")
: ((mf.sharedMesh != m0 && rd.sharedMaterial != t0) ? "팔레트 적용 ✅" : "🔴 미적용")));
UnityEngine.Object.DestroyImmediate(go);
}
}
so.weaponEnabled_ = was; EditorUtility.SetDirty(so); AssetDatabase.SaveAssets();
WLCharacterPaletteSettings.Invalidate();
sb.AppendLine("복구: weaponEnabled_=" + so.weaponEnabled_);
// 캐릭터 표가 그대로인지
sb.AppendLine("캐릭터 행 " + (so.rendererNames == null ? 0 : so.rendererNames.Length) + " · enabled_=" + so.enabled_ + " · 무기 행 " + so.weaponNames.Length);
File.WriteAllText("AgentScripts/WL816b_REVERT.txt", sb.ToString(), new UTF8Encoding(true));
Debug.Log("[WL816b] revert check done");
}
}

View File

@ -10,45 +10,45 @@
palette SO enabled=1 rows=6
SO: enabled_=1 weaponEnabled_=1 무기행 11 캐릭터행 6
=== 최종 검증 (인게임 Play · 포스트 포함 · 1080x1920 · ortho 10 · 덩어리 6 · 팔레트 6칸) ===
캐릭터 (무기 없음 · 시작) : 2960 px · 고유색 174 · 비율 5.88 % · 단계 20
=== 최종 검증 (인게임 Play · 포스트 포함 · 1080x1920 · ortho 10 · 덩어리 16 · 팔레트 12칸) ===
캐릭터 (무기 없음 · 시작) : 2959 px · 고유색 167 · 비율 5.64 % · 단계 21
| 무기 | 화면 px | 고유색 전→후 | 서로다른색 % 전→후 | 칸당단계 평균/최대 | 배수 | 메시/렌더러 교체 |
|---|---|---|---|---|---|---|
PP_Theme_10_Mace_003 칸 6개 측정 · 평균 2.17 · 최대 5 · 0:165px/2단 1:8px/5단 2:12px/2단 3:75px/1단 4:12px/1단 5:5px/2
| PP_Theme_10_Mace_003 | 265 | 71→26 | 27.00→9.81 | 2.17/5 | ×0.6746 | 1/1 |
되돌림 확인 PP_Theme_10_Mace_003 : px 263(전 263) · 고유색 71(전 71) · 동일 ✅
PP_Theme_10_Shield_003 칸 3개 측정 · 평균 6.00 · 최대 8 · 0:1157px/7단 1:139px/8단 3:13px/3
| PP_Theme_10_Shield_003 | 1306 | 85→71 | 6.49→5.44 | 6.00/8 | ×1.0000 | 1/1 |
되돌림 확인 PP_Theme_10_Shield_003 : px 1309(전 1309) · 고유색 85(전 85) · 동일 ✅
Elven_Sword_01 칸 5개 측정 · 평균 1.40 · 최대 2 · 0:178px/2단 1:26px/1단 2:62px/1단 3:36px/2단 4:10px/1단
| Elven_Sword_01 | 312 | 253→19 | 83.22→6.09 | 1.40/2 | ×0.5499 | 1/1 |
되돌림 확인 Elven_Sword_01 : px 304(전 304) · 고유색 253(전 253) · 동일 ✅
PP_Theme_08_Mace_003 칸 5개 측정 · 평균 2.20 · 최대 3 · 0:86px/2단 1:126px/2단 2:9px/3단 3:35px/2단 5:12px/2단
| PP_Theme_08_Mace_003 | 269 | 81→45 | 30.11→16.73 | 2.20/3 | ×0.5768 | 1/1 |
PP_Theme_10_Mace_003 칸 10개 측정 · 평균 1.90 · 최대 4 · 0:45px/2단 1:5px/4단 2:12px/2단 3:75px/1단 4:3px/1단 5:5px/2단 6:67px/2단 8:53px/2단 9:3px/2단 11:7px/1
| PP_Theme_10_Mace_003 | 265 | 72→35 | 27.38→13.21 | 1.90/4 | ×0.6746 | 1/1 |
되돌림 확인 PP_Theme_10_Mace_003 : px 263(전 263) · 고유색 72(전 72) · 동일 ✅
PP_Theme_10_Shield_003 칸 3개 측정 · 평균 6.00 · 최대 9 · 0:1157px/7단 1:139px/9단 3:13px/2
| PP_Theme_10_Shield_003 | 1306 | 86→70 | 6.57→5.36 | 6.00/9 | ×1.0000 | 1/1 |
되돌림 확인 PP_Theme_10_Shield_003 : px 1309(전 1309) · 고유색 86(전 86) · 동일 ✅
Elven_Sword_01 칸 11개 측정 · 평균 1.36 · 최대 2 · 0:104px/1단 1:26px/1단 2:62px/1단 3:36px/2단 4:14px/2단 5:9px/1단 6:10px/1단 7:9px/1단 8:14px/2단 9:8px/2단 10:20px/1단
| Elven_Sword_01 | 312 | 251→24 | 82.57→7.69 | 1.36/2 | ×0.5499 | 1/1 |
되돌림 확인 Elven_Sword_01 : px 304(전 304) · 고유색 251(전 251) · 동일 ✅
PP_Theme_08_Mace_003 칸 8개 측정 · 평균 2.13 · 최대 3 · 0:86px/2단 1:126px/2단 2:9px/3단 3:15px/2단 5:11px/2단 6:8px/2단 7:6px/2단 9:3px/2단
| PP_Theme_08_Mace_003 | 269 | 81→56 | 30.11→20.82 | 2.13/3 | ×0.5768 | 1/1 |
되돌림 확인 PP_Theme_08_Mace_003 : px 269(전 269) · 고유색 81(전 81) · 동일 ✅
PP_Theme_08_Shield_003 칸 3개 측정 · 평균 5.33 · 최대 9 · 0:962px/9단 3:37px/4단 4:9px/3단
| PP_Theme_08_Shield_003 | 1007 | 125→61 | 12.40→6.06 | 5.33/9 | ×0.8182 | 1/1 |
되돌림 확인 PP_Theme_08_Shield_003 : px 1008(전 1008) · 고유색 125(전 125) · 동일 ✅
PP_Theme_05_Bow_003 칸 3개 측정 · 평균 4.67 · 최대 5 · 0:147px/5단 2:18px/4단 3:18px/5
| PP_Theme_05_Bow_003 | 152 | 52→32 | 39.69→21.05 | 4.67/5 | ×0.3502 | 1/1 |
되돌림 확인 PP_Theme_05_Bow_003 : px 131(전 131) · 고유색 52(전 52) · 동일 ✅
PP_Theme_05_Bow_004 칸 4개 측정 · 평균 4.00 · 최대 7 · 0:182px/7단 1:10px/2단 2:21px/4단 3:11px/3
| PP_Theme_05_Bow_004 | 194 | 67→37 | 29.78→19.07 | 4.00/7 | ×0.4068 | 1/1 |
되돌림 확인 PP_Theme_05_Bow_004 : px 225(전 225) · 고유색 67(전 67) · 동일 ✅
PP_Theme_03_Scepter_001 칸 5개 측정 · 평균 1.80 · 최대 3 · 0:106px/3단 1:34px/2단 3:4px/2단 4:17px/1단 5:6px/1
| PP_Theme_03_Scepter_001 | 166 | 71→28 | 42.26→16.87 | 1.80/3 | ×0.4992 | 1/1 |
되돌림 확인 PP_Theme_03_Scepter_001 : px 168(전 168) · 고유색 71(전 71) · 동일 ✅
PP_Theme_03_Wand_001 칸 4개 측정 · 평균 2.00 · 최대 3 · 0:301px/3단 1:10px/1단 2:103px/2단 3:3px/2
| PP_Theme_03_Wand_001 | 417 | 160→28 | 38.37→6.71 | 2.00/3 | ×1.0000 | 1/1 |
되돌림 확인 PP_Theme_03_Wand_001 : px 417(전 417) · 고유색 160(전 160) · 동일 ✅
Dagger1 칸 4개 측정 · 평균 2.75 · 최대 4 · 0:51px/4단 1:3px/1단 2:67px/3단 3:9px/3
| Dagger1 | 126 | 57→14 | 45.24→11.11 | 2.75/4 | ×1.0000 | 1/1 |
되돌림 확인 Dagger1 : px 126(전 126) · 고유색 57(전 57) · 동일 ✅
Dagger2 칸 5개 측정 · 평균 1.00 · 최대 1 · 0:43px/1단 1:20px/1단 2:20px/1단 3:11px/1단 5:6px/1단
| Dagger2 | 100 | 60→16 | 66.67→16.00 | 1.00/1 | ×1.0000 | 1/1 |
되돌림 확인 Dagger2 : px 90(전 90) · 고유색 60(전 60) · 동일 ✅
PP_Theme_08_Shield_003 칸 3개 측정 · 평균 4.67 · 최대 8 · 0:962px/8단 3:37px/3단 4:9px/3단
| PP_Theme_08_Shield_003 | 1007 | 120→59 | 11.90→5.86 | 4.67/8 | ×0.8182 | 1/1 |
되돌림 확인 PP_Theme_08_Shield_003 : px 1008(전 1008) · 고유색 120(전 120) · 동일 ✅
PP_Theme_05_Bow_003 칸 8개 측정 · 평균 2.63 · 최대 4 · 0:63px/1단 2:7px/2단 3:9px/3단 6:9px/3단 7:11px/1단 8:73px/4단 9:6px/3단 11:5px/4
| PP_Theme_05_Bow_003 | 146 | 51→30 | 38.93→20.55 | 2.63/4 | ×0.3502 | 1/1 |
되돌림 확인 PP_Theme_05_Bow_003 : px 131(전 131) · 고유색 51(전 51) · 동일 ✅
PP_Theme_05_Bow_004 칸 5개 측정 · 평균 3.40 · 최대 5 · 0:98px/3단 1:10px/2단 3:11px/3단 6:21px/4단 8:84px/5
| PP_Theme_05_Bow_004 | 194 | 65→36 | 28.89→18.56 | 3.40/5 | ×0.4068 | 1/1 |
되돌림 확인 PP_Theme_05_Bow_004 : px 225(전 225) · 고유색 65(전 65) · 동일 ✅
PP_Theme_03_Scepter_001 칸 7개 측정 · 평균 2.14 · 최대 3 · 0:61px/3단 1:34px/2단 3:3px/2단 4:17px/1단 5:6px/1단 6:17px/3단 9:28px/3
| PP_Theme_03_Scepter_001 | 166 | 69→31 | 41.07→18.67 | 2.14/3 | ×0.4992 | 1/1 |
되돌림 확인 PP_Theme_03_Scepter_001 : px 168(전 168) · 고유색 69(전 69) · 동일 ✅
PP_Theme_03_Wand_001 칸 6개 측정 · 평균 2.67 · 최대 4 · 0:141px/3단 2:103px/2단 3:3px/2단 6:119px/3단 7:6px/2단 10:41px/4
| PP_Theme_03_Wand_001 | 417 | 159→36 | 38.13→8.63 | 2.67/4 | ×1.0000 | 1/1 |
되돌림 확인 PP_Theme_03_Wand_001 : px 417(전 417) · 고유색 159(전 159) · 동일 ✅
Dagger1 칸 6개 측정 · 평균 2.17 · 최대 4 · 0:51px/4단 1:3px/1단 2:29px/3단 3:6px/1단 5:24px/2단 9:14px/2
| Dagger1 | 126 | 58→22 | 46.03→17.46 | 2.17/4 | ×1.0000 | 1/1 |
되돌림 확인 Dagger1 : px 126(전 126) · 고유색 58(전 58) · 동일 ✅
Dagger2 칸 9개 측정 · 평균 1.11 · 최대 2 · 0:43px/1단 1:7px/1단 2:4px/2단 4:3px/1단 5:5px/1단 7:13px/1단 9:11px/1단 10:6px/1단 11:6px/1단
| Dagger2 | 100 | 59→15 | 65.56→15.00 | 1.11/2 | ×1.0000 | 1/1 |
되돌림 확인 Dagger2 : px 90(전 90) · 고유색 61(전 59) · 차이 ⚠
| Orb | 0 | 0→0 | 0.00→0.00 | — | ×1.0000 | 표에 없음(Orb) |
캐릭터 (무기 없음 · 끝) : 2959 px · 고유색 173 · 비율 5.85 % · 단계 21 → 악화 없음 ✅
캐릭터 (무기 없음 · 끝) : 2959 px · 고유색 167 · 비율 5.64 % · 단계 21 → 악화 없음 ✅
합계 교체: 메시 11 · 렌더러 11

View File

@ -18,7 +18,7 @@ public static class WL816bVerify
WL816b.Log("SO: enabled_=" + cfg.enabled_ + " weaponEnabled_=" + cfg.weaponEnabled_
+ " 무기행 " + (cfg.weaponNames == null ? 0 : cfg.weaponNames.Length)
+ " 캐릭터행 " + (cfg.rendererNames == null ? 0 : cfg.rendererNames.Length));
WL816b.Log("=== 최종 검증 (인게임 Play · 포스트 포함 · 1080x1920 · ortho 10 · 덩어리 6 · 팔레트 6칸) ===");
WL816b.Log("=== 최종 검증 (인게임 Play · 포스트 포함 · 1080x1920 · ortho 10 · 덩어리 " + WL816bBake.FINAL_CHUNKS + " · 팔레트 " + WL816bBake.FINAL_PALETTE + "칸) ===");
var cA = WL816b.MeasureChar("v_char_A.png", null);
WL816b.Log(string.Format("캐릭터 (무기 없음 · 시작) : {0} px · 고유색 {1} · 비율 {2:F2} % · 단계 {3}", cA.px, cA.uniq, cA.ratio, cA.steps));
@ -115,4 +115,23 @@ public static class WL816bVerify
WL816b.Flush("WL816b_VERIFY.txt");
Debug.Log("[WL816b] verify done");
}
/// <summary>🔴 대조군 — 무기를 하나도 붙이지 않고 같은 횟수만큼 측정·ReLook 을 반복한다.
/// 캐릭터 수치가 여기서도 같은 만큼 흔들리면 그 흔들림은 **하니스 탓**이지 무기 탓이 아니다.</summary>
public static void Control()
{
WL816b.Reset(); WL816b.PubSetup();
WL816b.Log("=== 대조군: 무기 0 · ReLook/측정만 12회 반복 ===");
var c0 = WL816b.MeasureChar(null, null);
WL816b.Log(string.Format("0회 : {0} px · 고유색 {1} · 비율 {2:F2} %", c0.px, c0.uniq, c0.ratio));
for (int i = 1; i <= 12; i++)
{
WL816b.UnLook(); WL816b.ReLook();
var c = WL816b.MeasureChar(null, null);
if (i % 4 == 0 || i == 12) WL816b.Log(string.Format("{0}회 : {1} px · 고유색 {2} · 비율 {3:F2} %", i, c.px, c.uniq, c.ratio));
}
WL816b.PubTeardown();
WL816b.Flush("WL816b_CONTROL.txt");
Debug.Log("[WL816b] control done");
}
}

View File

@ -0,0 +1,36 @@
# WL-816b 후보 육안 비교 시트 — 지금 vs 후보 3안 (무기 근접 8배 · 니어리스트)
import os
import numpy as np
from PIL import Image, ImageDraw
RAW="Screenshots_WL/WL816b/raw/"; OUT="Screenshots_WL/WL816b/"
W=["Elven_Sword_01","PP_Theme_10_Mace_003","PP_Theme_10_Shield_003","PP_Theme_08_Shield_003","PP_Theme_05_Bow_004"]
TAGS=[("before","지금"),("c6p6","c6p6"),("c16p12","c16p12"),("c24p16","c24p16")]
def bbox(p,pad=5):
a=np.asarray(Image.open(RAW+p).convert("L")); ys,xs=np.nonzero(a>127)
if not len(ys): return None
return (max(0,xs.min()-pad),max(0,ys.min()-pad),min(a.shape[1],xs.max()+1+pad),min(a.shape[0],ys.max()+1+pad))
def lab(im,t,h=20):
o=Image.new("RGB",(im.width,im.height+h),(18,18,22)); o.paste(im,(0,h))
ImageDraw.Draw(o).text((3,4),t,fill=(235,235,235)); return o
def hs(ims,g=8):
w=sum(i.width for i in ims)+g*(len(ims)-1); h=max(i.height for i in ims)
o=Image.new("RGB",(w,h),(18,18,22)); x=0
for i in ims: o.paste(i,(x,0)); x+=i.width+g
return o
def vs(ims,g=12):
w=max(i.width for i in ims); h=sum(i.height for i in ims)+g*(len(ims)-1)
o=Image.new("RGB",(w,h),(18,18,22)); y=0
for i in ims: o.paste(i,(0,y)); y+=i.height+g
return o
rows=[]
for w in W:
b=bbox("m_%s_before.png"%w)
if b is None: continue
cells=[]
for tg,nm in TAGS:
f=RAW+"s_%s_%s.png"%(w,tg)
if not os.path.exists(f): continue
c=Image.open(f).convert("RGB").crop(b)
cells.append(lab(c.resize((c.width*8,c.height*8),Image.NEAREST),nm))
if cells: rows.append(lab(hs(cells),w))
vs(rows).save(OUT+"e_candidates.png"); print("ok",len(rows))

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 B

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 B

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 B

After

Width:  |  Height:  |  Size: 186 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 153 B

After

Width:  |  Height:  |  Size: 174 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 B

After

Width:  |  Height:  |  Size: 183 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 B

After

Width:  |  Height:  |  Size: 173 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 B

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 B

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 B

After

Width:  |  Height:  |  Size: 173 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 B

After

Width:  |  Height:  |  Size: 183 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 B

After

Width:  |  Height:  |  Size: 156 B