"얼굴 없는 몸통 + 좌/우/입 조각" 방식으로 새로 그린 꽉이 이미지를 실제 적용했다가 롤백한 뒤, 기존 이미지(quacki-angry.webp)와 신규 이미지(kkwaki.png)를 같은 프레임에 나란히 놓고 포지션·크기·표정 위치를 직접 대조했다.
무엇을, 왜 비교했는가
사용자가 제공한 레이어 분리 원화(kkwaki_noface.png 몸통 + kkwaki_기본표정.png
표정 + kkwaki_블러셔.png 블러셔)를 앱의 "angry"(기본 서있는) 포즈 전용 베이스로 교체하고,
표정 옷장 아이템도 이 새 원화 기준으로 좌/우/입 조각화해 재구성했었다. 이후 사용자가 전체 롤백을
요청해 코드·데이터를 이전 상태로 되돌렸고, 이 리포트는 왜 새 이미지가 기존과 다르게 보였는지를
직접 두 원화를 같은 조건으로 렌더링해 측정한 결과다.
각 원화를 앱과 동일한 방식(objectFit:contain, 정사각형 프레임)으로 렌더링했을 때 캐릭터 실루엣이 프레임 대비 차지하는 비율과 여백을 측정.
| 항목 | OLD · quacki-angry.webp | NEW · kkwaki.png(노페이스+기본표정) | 차이 |
|---|---|---|---|
| 원본 캔버스 크기 | 184 × 233px | 384 × 493px | 비율(가로/세로)은 0.789 vs 0.779로 거의 동일 |
| 캐릭터가 채우는 폭 | 86.4% | 81.2% | −5.2%p |
| 캐릭터가 채우는 높이 | 89.3% | 83.0% | −6.3%p |
| 좌측 여백 | 6.5% | 10.7% | +4.2%p |
| 우측 여백 | 7.1% | 8.1% | +1.0%p |
| 상단 여백 | 5.1% | 7.9% | +2.8%p |
| 하단 여백 | 5.6% | 9.1% | +3.5%p |
같은 정사각형 프레임 안에서 선형 크기로 약 5~7% 더 작게, 면적 기준으로는 약 12~15% 더 작게 렌더링된다. 또한 좌측 여백(+4.2%p)이 우측(+1.0%p)보다 더 많이 늘어나 캐릭터 무게중심이 기존보다 살짝 오른쪽으로 치우쳐 보이는 부작용도 함께 있다.
앱은 200×200 좌표계(SVG viewBox) 위에 표정 조각을 얹는 방식이라, 두 원화 모두 이 좌표계로 환산해 "눈+입 영역의 중심이 어디에 오는지"를 비교했다.
| 원화 | 눈·입 영역 중심(viewBox 200×200 기준) | 비고 |
|---|---|---|
| OLD · quacki-angry.webp | x ≈ 107.3 y ≈ 72.7 | 이미지에 얼굴이 그대로 그려져 있어 좌표는 그림에서 직접 실측 |
| NEW · kkwaki_기본표정.png | x ≈ 94.8 y ≈ 68.5 | 노페이스 몸통 기준으로 조각을 재배치한 계산값 |
| 차이 | Δx ≈ −12.5 (≈ 프레임 폭의 6.3%) Δy ≈ −4.2 (≈ 프레임 높이의 2.1%) | NEW가 OLD보다 얼굴이 왼쪽·위로 치우침 |
기존 8개 포즈 이미지(wave/angry/happy/cry/dizzy/sleep/shock)는 전부 캐릭터를 캔버스 가장자리 가까이(여백 5~7%)까지 꽉 채워서 내보낸 그림이었다. 반면 사용자가 이번에 새로 준 원화 (kkwaki 시리즈)는 같은 캐릭터를 그렸지만 캔버스 여백을 더 넉넉하게(8~11%) 두고 내보낸 파일이었다 — 그림 자체의 문제가 아니라 내보내기(export) 시점의 여백 설정 차이다. 앱은 각 이미지를 "정사각형 프레임에 꽉 채우기(objectFit:contain)"로만 그리기 때문에, 이 여백 차이가 고스란히 "이 포즈만 오리가 좀 작다"는 크기 차이로 드러난다.
public/index.html, src/worker.js)와 신규 이미지 파일,
표정 옷장 데이터(조각형 렌더링)를 전부 롤백 완료 — 지금은 기존 quacki-angry.webp 기반,
기존 방식(단일 이미지 오버레이)의 표정 7종이 그대로 살아있는 이전 상태로 돌아가 있다.
이 신규 원화를 나중에 다시 쓰고 싶다면, 아래 둘 중 하나만 해결하면 이번에 겪은 위화감은 사라진다 — 조각화 방식(좌/우/입 분리) 자체는 문제가 없었고, 순전히 여백 문제였다: