ผอมหรือคลาสสิกตัดสินกันที่ 24 พิกเซล และคุณจะเห็นว่าพิกเซลไหนบ้าง
สกินจะถือว่าเป็นแบบผอม ถ้ามีพิกเซลทึบแสงน้อยกว่า 6 ใน 24 พิกเซลที่ตำแหน่ง (46,20)–(47,31) นอกจากนี้ยังมีแผนที่ UV แบบเต็ม, ทำไมสกิน 64×32 แบบเก่าถึงถูกสะท้อน และทำไมสกิน 128×128 ของ Bedrock ถึงไม่สามารถโหลดใน Java ได้
ไม่มีอะไรในไฟล์ PNG ของสกินที่ระบุว่าเป็น "ผอม" ไม่มีธง, ไม่มีข้อมูลเมตา และไม่มีข้อตกลงในการตั้งชื่อไฟล์ — โมเดลจะถูกอนุมานจากรูปภาพเอง โดยการดูสี่เหลี่ยมขนาด 2 × 12 ที่เฉพาะเจาะจง และนับจำนวนพิกเซลที่ปรากฏจริง
การทดสอบ
sample x 46–47, y 20–31 — 2 wide, 12 tall = 24 pixels
count pixels with alpha > 0
slim if fewer than 6 are opaque
แขนแบบคลาสสิกกว้าง 4 พิกเซล; แขนแบบผอมกว้าง 3 พิกเซล ดังนั้นสกินแบบผอมจะปล่อยให้ คอลัมน์แขนที่สี่ว่างเปล่า และคอลัมน์นั้นคือตำแหน่งที่ตัวอย่างตั้งอยู่ พิกเซลยี่สิบสี่พิกเซลเป็นตัวตัดสินว่าตัวละครของคุณจะสวมโมเดลแบบไหน
เกณฑ์คือ 6 ใน 24 ไม่ใช่ 1 — หนึ่งในสี่ของคอลัมน์ต้องถูกเติมเต็มก่อนที่จะนับว่าเป็นแบบคลาสสิก ความคลาดเคลื่อนนี้มีความสำคัญ: สกินแบบผอมที่มีพิกเซลหลงเหลือเล็กน้อยในคอลัมน์ที่ว่างเปล่ายังคงอ่านว่าเป็นแบบผอม ซึ่งเป็นสิ่งที่คุณต้องการ เพราะพิกเซลหลงเหลือเหล่านั้นเกือบทั้งหมดเป็นความผิดพลาดในการแก้ไข มากกว่าความตั้งใจ
นอกจากนี้ยังหมายความว่าโหมดความล้มเหลวจะเงียบ หากคุณวาดสกินแบบคลาสสิกแต่ใช้คอลัมน์ที่สี่เพียงเล็กน้อย — เส้นขอบบางๆ, พิกเซลแรเงาสองสามพิกเซล — คุณอาจได้คะแนนต่ำกว่า 6 และถูกตรวจจับว่าเป็นแบบผอมโดยอัตโนมัติ ทำให้แขนกว้างหายไปหนึ่งพิกเซลโดยไม่มีคำอธิบายใดๆ หากสกินออกมาเป็นโมเดลที่ไม่ถูกต้อง คอลัมน์นั้นคือตำแหน่งที่ควรตรวจสอบ
แผนที่ UV แบบเต็ม
ทุกส่วนของสกินเป็นสี่เหลี่ยมคงที่ และแต่ละส่วนมีเลเยอร์ซ้อนทับอยู่บนแผ่นงานที่อื่น:
| ส่วน | ฐาน | เลเยอร์ซ้อนทับ | ออฟเซ็ต | ขนาด |
|---|---|---|---|---|
| หัว | (8, 8) | หมวก (40, 8) | 32 ขวา | 8 × 8 |
| ลำตัว | (20, 20) | เสื้อแจ็คเก็ต (20, 36) | 16 ลง | 8 × 12 |
| แขนขวา | (44, 20) | แขนเสื้อ (44, 36) | 16 ลง | 4 × 12 |
| ขาขวา | (4, 20) | กางเกง (4, 36) | 16 ลง | 4 × 12 |
| แขนซ้าย | (36, 52) | แขนเสื้อ (52, 52) | 16 ขวา | 4 × 12 |
| ขาซ้าย | (20, 52) | กางเกง (4, 52) | 16 ซ้าย | 4 × 12 |
ห้าในหกของเลเยอร์ซ้อนทับอยู่ห่างจากฐาน 16 พิกเซลพอดี — แต่ไม่ใช่ในทิศทางเดียวกัน สามส่วนแรกจะเลื่อนลง 16 พิกเซล แขนซ้ายและขาซ้าย ซึ่งถูกเพิ่มเข้ามาภายหลังและถูกบีบลงในครึ่งล่าง ซึ่งไม่มีพื้นที่ด้านล่าง จึงเลื่อนไปด้านข้าง 16 พิกเซลแทน — และในทิศทางที่ ตรงข้าม กัน
หมวกเป็นเพียงส่วนเดียวที่ไม่ได้อยู่ห่างออกไป 16 พิกเซลเลย: มันอยู่ 32 พิกเซลไปทางขวา ในแถวเดียวกับหัว
ดังนั้น "เลเยอร์ซ้อนทับอยู่ใต้ฐาน" เป็นกฎที่ใช้ได้กับครึ่งหนึ่งของแผ่นงานเท่านั้น การคัดลอกสี่เหลี่ยมฐาน และเลื่อนลงเพื่อหาเลเยอร์ซ้อนทับจะใช้ได้กับลำตัว, แขนขวา และขาขวา และจะไปตกที่ส่วนที่ไม่ถูกต้องสำหรับอีกสามส่วน
บนสกินแบบผอม สี่เหลี่ยมแขนกว้าง 4 พิกเซลทุกอันจะถูกอ่านเป็น กว้าง 3 พิกเซล แทน สี่เหลี่ยมไม่ได้เคลื่อนที่; มีเพียงความกว้างที่อ่านออกมาจากพวกมันเท่านั้นที่เปลี่ยนไป
สกิน 64 × 32 แบบเก่าไม่มีด้านซ้ายเลย
สกินก่อนเวอร์ชัน 1.8 มีขนาด 64 × 32 — ครึ่งล่างของแผ่นงานไม่มีอยู่จริง ซึ่งเป็นที่อยู่ของแขนซ้ายและขาซ้าย ไม่มีอะไรให้วาดจากส่วนนั้น
วิธีแก้คือการสะท้อน: ขาขวา (0, 16) ถูกคัดลอกไปที่ (16, 48) และแขนขวา (40, 16) ไปที่ (32, 48) ทั้งสองถูกพลิกในแนวนอน นั่นคือเหตุผลที่สกินเก่าสมมาตรอย่างสมบูรณ์แบบและสกินสมัยใหม่ไม่จำเป็นต้องเป็นเช่นนั้น — ความไม่สมมาตรเป็นสิ่งเดียวที่รูปแบบ 64 × 32 ไม่สามารถแสดงได้ และสกินเก่าใดๆ ที่คุณแปลงจะถูกบังคับให้สมมาตร ไม่ว่ามันจะต้องการหรือไม่ก็ตาม
สกิน 128 × 128 ของ Bedrock เป็นรูปแบบที่แตกต่างกัน ไม่ใช่ขนาดที่ใหญ่กว่า
Java รองรับ 64 × 64 หรือ 64 × 32 แบบเก่า Bedrock รองรับ 128 × 128 และไม่มีอย่างอื่น โปรแกรมดูของทั้งสองเวอร์ชันไม่สามารถแสดงไฟล์ของอีกฝ่ายได้ — นี่ไม่ใช่ความแตกต่างของความละเอียดที่สามารถปรับขนาดได้ แต่เป็นเค้าโครง UV ที่แตกต่างกันในขนาดที่แตกต่างกัน
นั่นเป็นกำแพงที่แข็งแกร่งมากกว่าความไม่สะดวก สกิน Java ไม่ได้ "อัปสเกล" ไปยัง Bedrock และสกิน Bedrock ที่โหลดในโปรแกรมดู Java จะไม่แสดงผลที่ขนาดครึ่งหนึ่ง — มันจะถูกปฏิเสธ โปรแกรมแก้ไขในหน้านี้ถือว่าทั้งสองเป็นเวอร์ชันที่แยกจากกันด้วยเหตุผลเดียวกันนี้