BlockReel 스킨은(는) 무엇을 하나요?
BlockReel 폴더($BLOCKREEL_HOME, blockreel 스킬 부트스트랩 참조) 안에서 작업합니다. 각 스킨은 work/skins/<이름>/ (gitignore 됨) 또는 films/<이름>/skins/에 넣습니다. 절대로 다른 사람의 스킨을 복사하지 마세요. 아이디어는 가져가되 픽셀은 가져오지 마세요.
0. 사용자가 스킨을 보낸 경우
보낸 스킨을 그대로 사용합니다. 영화 폴더에 복사하고, python core/skin.py validate로 검증한 후(레거시 64x32를 새 파일로 변환) story.json에서 참조합니다. 사용자가 요청하지 않는 한 사용자의 스킨을 다시 칠하지 마세요. 스킨이 없을 때만 새 스킨을 디자인합니다.
1. 브리핑 (최대 한 개의 짧은 질문)
다음을 정합니다: 캐릭터(누구, 역할, 분위기), 스타일, 모델.
| 스타일 | 목표 |
|---|---|
| 깔끔한 픽셀 아트 | 재질당 3-4톤 램프, 노이즈 없음, 1px 하이라이트/섀도우, 읽기 쉬운 실루엣 |
| 만화 | 채도 높은 색상, 얼굴/오버레이 가장자리에 1px 더 어두운 외곽선, 크고 단순한 눈, 강한 색상 블로킹 |
| 사실적 | 채도가 낮은 팔레트, 미세 노이즈(noise=0.03-0.05), 주름과 솔기, 다양한 재질(천, 가죽, 금속) |
| 애니메이션 | 큰 눈(2px 홍채 + 하이라이트 픽셀 사용), 파스텔/채도 높은 머리카락(3톤 + 하이라이트 가닥), 간단한 옷 |
classic = 4px 팔(Steve 스타일), slim = 3px 팔. 사용자가 지정하지 않으면 classic을 선택하고 그렇게 말한 후 slim 변형을 제안합니다.
2. 리서치 (웹), research.md에 링크와 함께 기록
다음을 검색하고 읽습니다: 스킨 UV 레이아웃 및 레이어 규칙(Minecraft Wiki: Skin; 저장소 자체 맵은 docs/SKINS.md / references/skin-layout.png), 픽셀 아트 쉐이딩 및 팔레트 기법(색상 이동, 램프, 베개 쉐이딩 방지), 그리고 캐릭터 유형에 대한 스타일 레퍼런스. 링크와 사용할 내용을 기록합니다. 타사 스킨이나 아트를 복사하지 않습니다.
3. 팔레트 계획
페인팅 전에 계획을 작성합니다: 재질당 하나의 기본 색상과 그로부터 파생된 3-4톤 램프(skin.ramp(base, 4, hue_shift=0.04): 그림자는 약간 차갑게, 밝은 부분은 약간 따뜻하게). 일반적인 재질: 피부, 머리카락, 두 가지 옷 색상, 가죽, 금속, 부츠, 악센트. 총 색상 수는 약 24개 미만으로 유지하며, 악센트 색상은 하나면 충분합니다.
4. 레이어로 페인팅 (core/skin.py SkinCanvas)
베이스 레이어(머리, 몸, 팔, 다리)를 먼저 그리고 그 다음 오버레이 레이어(모자 = 두건/머리 볼륨, 재킷 = 망토/코트, 소매, 바지)를 칠합니다. 유용한 헬퍼: shaded_box(part, ramp) (위/앞에서 빛), rect, px, line, edge_light, clear, mirror_limbs() (오른쪽을 칠한 후 왼쪽에 대칭으로 복사). 얼굴 좌표는 상대적입니다. 절대 수동으로 아틀라스 위치를 계산하지 않습니다. BlockReel 영화를 위한 얼굴 규칙: 눈은 앞면의 4행에, 눈썹은 3행에, 입은 6행에 유지합니다. 엔진의 얼굴 상태(blink, wide, glow, 립싱크)가 해당 행을 다시 칠하고 볼(5행)에서 피부색을 샘플링하기 때문입니다. examples/skin-demo/paint_skin.py에서 시작하여 팔레트 계획과 부위별 블록을 변경합니다.
5. 검증
python core/skin.py validate out.png: 크기, model(classic/slim) 및 0개의 투명 베이스 픽셀(베이스 레이어는 Java에서 완전히 불투명해야 함). python core/skin.py unwrap out.png parts/를 사용하면 모든 면을 개별 이미지로 추출할 수 있습니다.
6. 미리보기 및 반복 (필수, 최소 2회)
python tools/turntable.py skin.png --out tt.png [--pose idle|wave|stance] [--model slim] [--eyes wide --mouth smile]
tt.png를 열고 네 방향을 모두 봅니다. 확인할 사항: 실루엣, 게임 스케일에서 얼굴 가독성, 두건/머리 오버레이가 떠 있지 않은지, 이음새와 대칭 사지, 뒤와 옆면이 비어 있지 않은지, 쉐이딩 방향이 일관된지, 뭉친 부분이 없는지. 잘못된 점을 기록하고 수정한 후 다시 렌더링합니다. 각 회차의 이미지를 보관합니다(examples/skin-demo/iterations/ 참조). 한 번 렌더링하고 멈추지 마세요.
7. 내보내기
최종 PNG(필요하다면 다른 모델도: slim=True/False로 다시 칠함; 자동 classic<->slim 변환은 없음). 파일 이름은 <character>.png와 <character>-slim.png로 지정합니다. 둘 다 validate로 확인합니다.
8. 게임에 설치 (사용자에게 알림; 직접 테스트하지 않았음을 명시)
- Java Edition: minecraft.net 프로필 페이지 또는 런처의 Skins 탭에 PNG(64x64 또는 레거시 64x32)를 업로드하고 3px 또는 4px 팔을 선택합니다. 게임을 소유한 계정만 스킨을 변경할 수 있습니다. 오프라인 모드 플레이어는 모드 없이 사용자 지정 스킨을 사용할 수 없습니다. 출처: Minecraft Wiki: Skin. Mojang의 공식 도움말 페이지는 이 문서 작성 시점에 로드되지 않았으므로, 현재 메뉴 이름을 확인하려면 help.minecraft.net을 확인하세요.
- Bedrock Edition: 프로세스가 다릅니다(위키에 따르면 128x128과 같은 더 큰 템플릿을 지원). Java 단계를 Bedrock에 적용하지 말고 사용자를 Mojang의 현재 Bedrock 도움말 페이지로 안내하세요.
- BlockReel 영화 내에서는 설치가 필요 없습니다.
story.json에서 PNG를 참조하기만 하면 됩니다.
규칙
- 스킨이 게임에서 테스트되었다고 주장하지 마세요. "BlockReel 엔진에서 검증 및 미리보기 완료"라고 말하세요.
- 게임 스킨이나 다른 사람의 스킨을 배포하거나 커밋하지 마세요. 저장소의 데모 스킨은 오리지널입니다(CC0).
- 사용자가 3D 스킨 렌더링 스크린샷을 제공한 경우, 그것을 텍스처로 만들 수 없습니다(
docs/SKINS.md). 대신 비슷하게 보이는 스킨을 제작하세요.