긴 머리 종이 헤어카드 가이드
여자 캐릭터의 앞머리·옆머리·긴 머리·땋은 머리를 투명 텍스처를 입힌 종이카드로 만드는 방법. AI 비서가 편집기로 헤어를 만들기 전에 읽는 작업 규칙입니다. 좌표·도구 이름은 편집기 조작 설명서와 같습니다.
같은 내용을 텍스트로: /llms.txt. 도구와 좌표계는 편집기 조작 설명서, AI를 연결하는 방법은 AI로 편집기 조작하기에 있습니다.
1. 목표와 원칙
- 고품질은 "원본 캐릭터 그림과 같은 텍스처"입니다. 머리결을 새로 그리지 말고 원본 그림의 머리 픽셀을 오려 카드에 투영합니다. 절차적으로 그린 결·하이라이트·톱니는 원본과 달라 보여 거절됩니다.
- 카드의 모양은 원본 그림의 투명도가 정합니다. 카드는 넉넉하게 크게 만들고, 머리가 없는 부분은 텍스처를 투명하게 둡니다. 사각형 카드 모서리가 그대로 보이면 안 됩니다.
- 원본에 그 방향 그림(옆·뒤·위)이 없으면 사람에게 먼저 요청합니다. 그림이 있으면 그 방향도 투영하고, 끝내 없을 때만 원본의 색·선 굵기로 그려 채웁니다.
- 헤어만 고쳐 달라는 요청이면 몸·얼굴 표정은 건드리지 않습니다.
2. 머리 파츠 고르기
종이카드 헤어는 게임이 양면으로 그리고 외곽선을 두르지 않는 머리 파츠에서만 제대로 보입니다. 보통 머리 파츠로 카드를 만들면 카드 뒷면이 검은 외곽선 그림자로 보이고, 스킨으로는 이 성질을 바꿀 수 없습니다. 이런 파츠는 여덟 가지뿐입니다.
| 파츠 이름 | 카드 재료로서 |
|---|---|
| 헬멧 SP | 가장 좋음. 서로 겹치지 않는 텍스처 칸이 가장 많고(36칸 · 삼각형 110개), 돔 부분이 그대로 두상 셸이 됩니다. |
| 우럭머리 SP | 다음으로 많음. 가는 조각이 많아 큰 카드는 적습니다. |
| 붉은·파랑·녹색 우럭머리 | 우럭머리 SP보다 삼각형이 적습니다. |
| 밀집모자 SP | 칸은 크지만 서로 겹치는 칸이 많아 쓸 수 있는 카드가 적습니다. |
| 나무모자 | 같은 칸을 여러 삼각형이 나눠 써서 서로 다른 그림을 넣을 곳이 적습니다. |
| 응원 머리띠 | 삼각형이 적어 긴 머리에는 부족합니다. |
- 파츠 바꾸기:
editor_parts의 find로 이름을 찾고editor_change_parts로 머리만 바꿉니다. 바꾸는 머리 파츠의 편집은 사라지고(이전 상태는 버전으로 남음) 몸·얼굴 편집은 남습니다. - 얼굴(face)은 모양이 고정된 공이고 7개 표정 칸의 텍스처만 바꿀 수 있습니다. 헤어 설계는 이 얼굴 공을 기준으로 합니다(정면 = −z, 얼굴 공 반지름 약 0.13~0.15).
3. 역할 나누기 — 얼굴 텍스처와 카드
| 부분 | 어디에 | 어떻게 |
|---|---|---|
| 얼굴 윤곽 안쪽: 이마를 덮는 앞머리, 뺨 위로 내려오는 옆머리 | 얼굴 텍스처(7칸 모두 같게) | 원본 정면 그림을 얼굴 공의 앞을 향한 면에만 정면 투영. 눈·입은 칸마다 그대로 둡니다. |
| 정수리·뒷머리·바깥 옆 볼륨(단발 모양) | 머리 파츠의 돔을 다시 편 "셸" | 돔의 삼각형을 머리 모양 반구로 옮기고, 면이 향한 방향의 원본 그림(정면·옆·뒤)을 투영. |
| 얼굴과 셸 사이 옆머리 띠 | 한쪽에 사각형 카드 2~3장을 위아래로(좌우 거울 짝) | 안쪽 모서리는 얼굴 표면에, 바깥 모서리는 셸 속으로 겹치게. 정면 그림 투영. |
| 양갈래 땋은 머리 | 같은 칸을 4장이 쓰는 사각형 두 개 → 십자로 교차한 카드 두 마디 | 원본의 땋은 머리를 중심선 따라 곧게 편 띠 그림을 붙임. 끈·술은 따로 작은 교차 카드. |
| 아호게 | 짝 없는 칸(가운데 조각)으로 만든 카드 한 장 | 정면에서 조금 돌린 판에 원본 아호게를 투영. 짝 칸을 쓸 때는 한쪽을 숨깁니다. |
- 대부분의 칸은 좌우 거울 짝(두 삼각형이 같은 텍스처)입니다. 오른쪽을 설계하면 왼쪽은 x를 뒤집은 자리에 같은 그림이 거울로 나옵니다. 가운데를 가로지르는 조각이 필요하면 짝 없는 칸을 씁니다.
- 쓰지 않는 삼각형과 다른 칸과 텍스처가 겹치는 삼각형은 머리 속 한 점(예: 얼굴 공 중심)으로 모아 숨깁니다.
- 양갈래 머리의 뿌리는 목덜미 쪽 뒷머리 아래(가운데 가까이)에 숨깁니다. 옆에서 튀어나온 뿌리·연결용 삼각형은 부자연스러워 보입니다.
4. 준비 — 삼각형 떼기와 칸 파악
- 머리 파츠의 모든 삼각형을 하나씩 뗍니다: 삼각형마다 세 점을
editor_select로 고르고editor_separate. 이후 모든 슬롯이 따로 움직입니다(점 id는model.head.unique[slot], 뗄 때마다 다시 읽음). /api/editor?model=<id>의 head.groups[].corners(슬롯·UV 쌍)로 삼각형마다 UV를 읽고, 같은 UV를 쓰는 삼각형끼리 묶습니다(1장·2장 짝·4장 공유).- 256×256 텍스처에 칸을 그려 보고, 다른 칸과 겹치지 않는 칸만 고릅니다(큰 칸부터).
- 사각형 칸(삼각형 두 개)의 경계는 실제 UV 값에서 구합니다. 손으로 적은 경계(159 대 실제 159.49)는 카드 모서리를 수 mm 어긋나게 해 일자 틈을 만듭니다.
- 서로 붙어 있는 칸은 경계 텍셀을 나눠 씁니다. 붙은 가장자리가 3D에서도 같은 모서리가 되도록 칸 방향을 정하거나, 그 모서리를 셸 속에 숨깁니다.
5. 원본 그림 투영
- 머리카락 오려내기: 머리색과 피부색은 G/R 비율로 가릅니다(머리 < 약 0.875 ≤ 피부). 얼굴은 피부에서 채우기로 한 덩어리로 잡고 구멍(눈·입)을 채워 제외, 선(어두운 픽셀)은 머리에서 3px 이내만 남깁니다. 머리 하이라이트처럼 피부색인 머리 픽셀은 얼굴 덩어리에 이어지지 않으면 머리로 칩니다.
- 정면 맞추기: 원본의 두 눈동자 중심과 얼굴 공의 눈 위치로 배율과 중심을 정합니다. 정면에서 모델의 +x는 그림의 왼쪽입니다(그림 x = 중심 − x·배율). 거울 짝은 |x|로 그림의 한쪽 절반을 씁니다.
- 셸 면마다 바깥 방향으로 하나의 그림을 고릅니다: 앞을 향하면(−z 성분 ≥ 0.35) 정면 그림, 그 밖에는 뒤·옆 중 더 향한 쪽. 위를 향한 정수리 면은 곧장 투영하면 줄무늬로 늘어나므로, 가르마·가마에서 방사형으로 펼쳐 정면·후면 그림을 씁니다.
- 옆 그림의 얼굴 깊이가 모델과 다르면(보통 모델 얼굴이 더 깊음) 옆 그림을 가로로 늘려 옆머리가 시작하는 곳을 모델의 셸 앞 모서리에 맞춥니다.
- 머리 끝선은 원본 그림의 층 경계를 따라 자르고 그 아래를 투명하게 합니다(뒷모습의 낮은 양갈래·목은 잘라 냄). 절차적 톱니 끝은 만들지 않습니다.
- 작은 구멍은 닫기 연산(팽창 후 침식, 약 6px)으로 메웁니다. 셸에는 투명 구멍이 없어야 합니다(끝선 제외).
- 로컬 그림을 편집기 페이지로 넘기는 길이 없으면, 머리만 오린 그림을 모델 좌표 격자(예: 1단위당 540px)로 만들어 WebP data URL(수십 KB)로 넘기고 페이지 안에서 칠합니다.
6. 외곽선과 틈 — 가장 많이 틀리는 곳
얼굴 공은 게임이 표면에서 0.013(약 1.3cm) 바깥에 검은 외곽선 껍질을 두릅니다. 양면 머리 파츠에는 외곽선이 없으니, 머리와 얼굴 사이의 검은 점·선은 거의 다 이 얼굴 외곽선입니다.
- 머리 면이 얼굴에서 1.3cm보다 가까우면(또는 얼굴 속으로 들어가면) 검은 점이 비칩니다. 셸과 옆 띠는 얼굴에서 반지름 방향으로 0.017(1.7cm) 이상 띄웁니다. 평평한 카드는 가운데가 둥근 이마 속으로 들어가기 쉬우니 표본 점마다 거리를 재서 밉니다.
- 멀리 띄우면 가장자리 틈으로 얼굴 윤곽선이 보입니다. 셸의 앞 테두리는 이마 아래(눈썹 위)까지 내려 얼굴 표면 가까이 붙이고, 옆 띠의 안쪽 모서리도 얼굴 표면에 붙입니다. 정면 투영은 깊이와 무관하므로 카드를 앞뒤로 옮겨도 정면 모습은 그대로입니다.
- 카드끼리는 겹치게 둡니다: 옆 띠의 윗모서리는 셸 앞 테두리 위·뒤로, 바깥 모서리는 셸 옆면 뒤로 넣습니다. 딱 맞춘 모서리는 각도에 따라 벌어집니다.
- 셸이 투명하면 그 너머 얼굴 외곽선이 보입니다. 원본이 비는 곳은 다른 방향 그림 → 원본 색으로 채우고, 투명은 끝선에만 씁니다.
- 얼굴 텍스처의 머리 밑(턱 옆·목)은 머리가 가려 주지 않는 각도가 있으니 피부색 + 옅은 머리 그림자로 칠합니다. 머리색으로 칠해 두면 머리를 잘라 낸 자리에 분홍 덩어리로 보입니다.
- 대각선으로 볼 때 먼 쪽 얼굴 윤곽의 선은 게임이 모든 스킨에 두르는 얼굴 외곽선이라 헤어로 없앨 수 없습니다. 사람에게는 그렇게 설명합니다.
7. 텍스처 규칙
- 머리 텍스처는 256×256 한 장입니다. 게임은 가장 가까운 텍셀만 읽고(부드러운 보간 없음) 알파 0.1 이하를 버립니다. 반투명은 없고 투명/불투명 둘뿐이니 끝선은 텍셀 계단이 됩니다.
- 텍셀은 삼각형 안쪽 중심을 가진 칸이 차지합니다. 칸 밖 1~2텍셀은 같은 칸의 연장으로 칠해 두어야 가장자리에서 옆 칸 색이 새지 않습니다.
- 캔버스로 PNG를 만들면 완전히 투명한 픽셀의 색은 검정이 됩니다. 게임에서는 보이지 않으니 그대로 둬도 됩니다.
- 사람이 칠한 색(예: 갈색)을 "투명으로 지워 달라"고 하면 그 색 픽셀만 지웁니다. 거칠게 칠했다며 정리를 부탁하면, 그 주변 몇 px 안에서만 떨어진 작은 조각을 지우고 들쭉날쭉한 경계를 다듬고 원본 선색으로 가는 경계선을 넣습니다.
8. 사람과 같은 창에서 일할 때
- 사람이 같은 편집기 창에서 직접 점을 옮기거나 칠했을 수 있습니다. 편집 전에
editor_status의 unsaved와 되돌리기 목록 끝(내가 하지 않은 "드래그로 이동", "칠하기")을 확인합니다. - 그런 편집이 있으면 머리 점 전체를 다시 적용하지 않습니다. 바꿀 점·텍셀만 바꾸거나, 현재 점을
editor_points로 읽어 그 위에 작업합니다. 실수로 덮었으면editor_undo로 내 단계만 되돌리면 사람 편집이 돌아옵니다. - 사람이 가리킨 조각을 찾을 때는 기억에 기대지 말고 칸마다 다른 색을 임시로 칠해 그 각도로 캡처한 뒤 되돌립니다.
- 고칠 때마다 무엇을 바꿨는지 적어 저장(
editor_savenote)합니다. 서버에 저장된 좌표가 편집기와 같은지 확인하고 보고합니다.
9. 확인 목록
- 정면·측면·반대 측면·후면·뒤 대각을
editor_capture로 봅니다. 정면은 원본 그림과 나란히 비교합니다. - 대각선 ±25°·±50°·±70°, 위에서 20~40° 내려다본 앞모습, 정수리(top)를 봅니다. 틈·검은 점·사각 모서리·튀어나온 조각이 이 각도에서 드러납니다.
- 대기·걷기·달리기 자세(
editor_viewpose)에서 땋은 머리·옆 띠가 몸을 뚫는지 봅니다. - 의심스러우면 부위를 나눠 봅니다(parts: head만 / face만). 머리만 볼 때 없고 얼굴과 함께일 때 생기는 검은 선은 얼굴 외곽선입니다.
- 저장 후
/api/editor?model=<id>의 좌표와 편집기 좌표를 비교해 저장이 맞는지 확인합니다.