제갈량 부채 → 깃털부채(트레이드 마크) — 세 자세 부채만 교체(캐릭터 생성 0) · 크기 표 「머리 수동」 note 지원(#1108 7차 · PD 2026-11-10)

- PD 「제갈량의 부채는 트레이드 마크라고 할 수 있는 깃털부채로 변경」 · 옛 그림 = 대기 깃털 한 가닥 막대 · 준비 종이 접이부채 · 돌진 검은 얼룩 둥근 부채
- 깃털부채 소품 1개(화풍 C t2i)를 옮겨 붙임: 대기·돌진 = 옛 자루 선 그대로 주먹 앞 · 준비 = 입을 가린 자세 + 주먹이 손잡이 위 · QA r1 B3 → S4 PASS
- Tools/unit_art_size.py: note 「머리 수동 <머리÷눈>·<정수리÷눈>」 = 소품이 얼굴에 붙어 자동 머리 폭이 소품까지 재는 그림용(비율 = 묶음 배율이 바뀌어도 맞음) · 제갈량 3.345·1.883(바꾸기 전 실측) · size 983.3 = 962.8 × 묶음 배율비 1.021(게임 크기 같음)
- 확인(고친 부분만): 아트 재임포트 error 0 · UnitArt_SizeTable 1/1 · 영웅 목록 캡처

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
깃 관리자 2026-11-10 17:11:48 +09:00
parent 499e7184ec
commit d48b33728a
9 changed files with 15 additions and 9 deletions

View File

@ -124,5 +124,5 @@ zhaoyun,1,100.4,655.1,199,393.0,192.0,926,590.9,1,,
zhoucang,0,173.3,538.3,453,598.0,276.0,856,1091.8,,1.092, zhoucang,0,173.3,538.3,453,598.0,276.0,856,1091.8,,1.092,
zhoutai,0,162.2,609.1,429,599.5,273.0,885,993.6,,1.026, zhoutai,0,162.2,609.1,429,599.5,273.0,885,993.6,,1.026,
zhugejin,0,160.2,562.8,372,501.0,270.0,870,954.7,,1.08, zhugejin,0,160.2,562.8,372,501.0,270.0,870,954.7,,1.08,
zhugeliang,0,140.2,529.3,336,469.0,264.0,886,962.8,,1.18, zhugeliang,0,143.2,541.6,342,479.0,269.6,904,983.3,,1.18,머리 수동 3.345·1.883 = 부채 바꾸기 전 실측(머리 469·정수리 264 ÷ 눈 140.2) · 깃털부채가 얼굴 옆에 붙어 자동 머리 폭이 부채까지 잼(PD 2026-11-10 「제갈량 부채 = 깃털부채」)
zhurong,0,118.6,458.1,261,524.0,258.0,773,758.1,,1.02,눈 수동 실측 2026-11-10(눈 간격·눈 높이): 눈 덩어리 중심 x 524.4 · 642.7(짙은 피부 = 피부 판정 밖) zhurong,0,118.6,458.1,261,524.0,258.0,773,758.1,,1.02,눈 수동 실측 2026-11-10(눈 간격·눈 높이): 눈 덩어리 중심 x 524.4 · 642.7(짙은 피부 = 피부 판정 밖)

1 art mounted eye_px eye_up_px face_px head_px crown_px body_px size_px lock adjust note
124 zhoucang 0 173.3 538.3 453 598.0 276.0 856 1091.8 1.092
125 zhoutai 0 162.2 609.1 429 599.5 273.0 885 993.6 1.026
126 zhugejin 0 160.2 562.8 372 501.0 270.0 870 954.7 1.08
127 zhugeliang 0 140.2 143.2 529.3 541.6 336 342 469.0 479.0 264.0 269.6 886 904 962.8 983.3 1.18 머리 수동 3.345·1.883 = 부채 바꾸기 전 실측(머리 469·정수리 264 ÷ 눈 140.2) · 깃털부채가 얼굴 옆에 붙어 자동 머리 폭이 부채까지 잼(PD 2026-11-10 「제갈량 부채 = 깃털부채」)
128 zhurong 0 118.6 458.1 261 524.0 258.0 773 758.1 1.02 눈 수동 실측 2026-11-10(눈 간격·눈 높이): 눈 덩어리 중심 x 524.4 · 642.7(짙은 피부 = 피부 판정 밖)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 420 KiB

After

Width:  |  Height:  |  Size: 448 KiB

View File

@ -50,7 +50,7 @@ TextureImporter:
spriteExtrude: 1 spriteExtrude: 1
spriteMeshType: 0 spriteMeshType: 0
alignment: 9 alignment: 9
spritePivot: {x: 0.5, y: 0.02092} spritePivot: {x: 0.5, y: 0.02047}
spritePixelsToUnits: 100 spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1 spriteGenerateFallbackPhysicsShape: 1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 384 KiB

After

Width:  |  Height:  |  Size: 405 KiB

View File

@ -50,7 +50,7 @@ TextureImporter:
spriteExtrude: 1 spriteExtrude: 1
spriteMeshType: 0 spriteMeshType: 0
alignment: 9 alignment: 9
spritePivot: {x: 0.5, y: 0.02092} spritePivot: {x: 0.5, y: 0.02047}
spritePixelsToUnits: 100 spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1 spriteGenerateFallbackPhysicsShape: 1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 395 KiB

After

Width:  |  Height:  |  Size: 446 KiB

View File

@ -50,7 +50,7 @@ TextureImporter:
spriteExtrude: 1 spriteExtrude: 1
spriteMeshType: 0 spriteMeshType: 0
alignment: 9 alignment: 9
spritePivot: {x: 0.5, y: 0.02092} spritePivot: {x: 0.5, y: 0.02047}
spritePixelsToUnits: 100 spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1 spriteGenerateFallbackPhysicsShape: 1

View File

@ -2,15 +2,15 @@
"fps": 1, "fps": 1,
"ppu": 100, "ppu": 100,
"frame": [ "frame": [
1015, 989,
956 977
], ],
"pivot": [ "pivot": [
0.5, 0.5,
0.02092 0.02047
], ],
"charHeightPx": 895, "charHeightPx": 916,
"bodyHeightPx": 886, "bodyHeightPx": 904,
"clips": [ "clips": [
{ {
"name": "front_idle", "name": "front_idle",

View File

@ -16,6 +16,8 @@
표 = Assets/Resources/Units/art_size.csv(utf-8-sig · SOT) · mounted = 게임 표(영웅·무장·병사)의 병종이 cavalry 면 1(art_types · 표 = Assets/Resources/Units/art_size.csv(utf-8-sig · SOT) · mounted = 게임 표(영웅·무장·병사)의 병종이 cavalry 면 1(art_types ·
표에 없는 아트만 기존 값 · 그것도 없으면 이름에 cavalry 면 1). 표에 없는 아트만 기존 값 · 그것도 없으면 이름에 cavalry 면 1).
눈을 못 찾으면 size_px 를 비워 둔다(게임은 bodyHeightPx 로 대체) · 실행 결과를 --sheet 시트로 눈 위치를 확인할 것. 눈을 못 찾으면 size_px 를 비워 둔다(게임은 bodyHeightPx 로 대체) · 실행 결과를 --sheet 시트로 눈 위치를 확인할 것.
note 가 「머리 수동 <머리÷눈>·<정수리÷눈>」 으로 시작하면 head_px·crown_px = 그 비율 × 자동 eye_px(소품이 머리 옆에 붙어
자동 머리 폭이 소품까지 재는 그림 · 예 제갈량 깃털부채 2026-11-10 · 묶음 배율이 바뀌어도 맞도록 비율로 적음).
사용: python -I -B -X utf8 Tools/unit_art_size.py <프로젝트 루트> [--sheet out.png] 사용: python -I -B -X utf8 Tools/unit_art_size.py <프로젝트 루트> [--sheet out.png]
""" """
@ -23,6 +25,7 @@ import csv
import glob import glob
import json import json
import os import os
import re
import sys import sys
import numpy as np import numpy as np
@ -196,6 +199,9 @@ def main():
eye = float(prev['eye_px']) # 자동으로 못 찾는 그림(안대·눈썹과 붙은 눈·짙은 피부) = 표에 적은 수동 실측 값 유지 eye = float(prev['eye_px']) # 자동으로 못 찾는 그림(안대·눈썹과 붙은 눈·짙은 피부) = 표에 적은 수동 실측 값 유지
lock = prev.get('lock', '') lock = prev.get('lock', '')
hw, cr = head_width(img, eyes) hw, cr = head_width(img, eyes)
mh = re.match(r'머리 수동 ([\d.]+)·([\d.]+)', prev.get('note', ''))
if mh and eye > 0:
hw, cr = round(float(mh.group(1)) * eye, 1), round(float(mh.group(2)) * eye, 1)
# 눈 높이(발 위 px) = 영웅 목록 카드가 눈 줄을 맞추는 기준(PD 2026-11-10 「전위·태사자처럼 너무 위쪽에 보이는 영웅은 내려」) # 눈 높이(발 위 px) = 영웅 목록 카드가 눈 줄을 맞추는 기준(PD 2026-11-10 「전위·태사자처럼 너무 위쪽에 보이는 영웅은 내려」)
foot_y = img.height - meta['pivot'][1] * img.height foot_y = img.height - meta['pivot'][1] * img.height
eye_up = round(foot_y - (eyes[0][2] + eyes[1][2]) / 2, 1) if eyes else 0 eye_up = round(foot_y - (eyes[0][2] + eyes[1][2]) / 2, 1) if eyes else 0