คู่มือการเพิ่มประสิทธิภาพโมเดล 3D แยกตามหมวดหมู่
แนวทางปฏิบัตินี้จัดทำขึ้นเพื่อช่วยให้ไอเทมของครีเอเตอร์สามารถนำไปใช้ใน ZEPETO ได้อย่างราบรื่นโดยไม่มีข้อผิดพลาดด้านคุณภาพ และเพื่อเพิ่มประสิทธิภาพการเรนเดอร์ให้สูงสุด โดยจะแบ่งออกเป็น 'ข้อบังคับ' และ 'ข้อแนะนำ' ดังนั้นโปรดตรวจสอบรายละเอียดด้านล่างก่อนสร้างไอเทม
📌 ข้อบังคับที่ต้องปฏิบัติตาม
- หากมีการกำหนดข้อบังคับใหม่หรือมีการเปลี่ยนแปลงมาตรฐาน เราจะแจ้งให้ครีเอเตอร์ทราบล่วงหน้าเพื่อให้ทุกท่านรับทราบอย่างครบถ้วน นอกจากนี้ หากจำเป็นต้องบังคับใช้กฎระเบียบใหม่ เราจะแจ้งเวลาที่แน่นอนในการบังคับใช้ให้ทราบล่วงหน้า (เช่น: คำแนะนำการใช้งาน Built-in Shader ตามการเปลี่ยนแปลงของสภาพแวดล้อม URP เป็นต้น)
💡 ข้อแนะนำ
- ข้อแนะนำคือมาตรฐานการปรับให้เหมาะสมที่เราเสนอเพื่อให้ไอเทมทำงานได้ตามปกติโดยไม่มีข้อผิดพลาดภายในแอป ZEPETO อย่างไรก็ตาม หากพิจารณาแล้วว่าไอเทมยากต่อการสวมใส่หรือทำงานตามปกติในสภาพแวดล้อมของแอปจริงเนื่องจากเกินขอบเขตที่แนะนำ อาจมีมาตรการลงโทษ เช่น การปฏิเสธในภายหลังหรือการระงับการขาย ดังนั้นเราจึงขอความกรุณาให้คุณพิจารณาแนวทางที่แนะนำให้มากที่สุดในการสร้างสรรค์ผลงาน
นอกจากนี้ แนวทางปฏิบัติตี้เป็นมาตรฐานการปรับให้เหมาะสมที่แนะนำเพื่อสภาพแวดล้อมการให้บริการที่ราบรื่นยิ่งขึ้น และไม่ใช่กฎระเบียบข้อบังคับที่ต้องปฏิบัติตามอย่างเคร่งครัด
💡 ข้อกำหนดทั่วไป: การเพิ่มประสิทธิภาพโมเดลลิ่ง
ㅣ✔️ ขอแนะนำให้หลีกเลี่ยงการใช้ Blendshape ในทุกหมวดหมู่
ขอแนะนำว่าไม่ควรให้มีข้อมูล Blendshape ในทุกไอเทมที่อัปโหลดลงใน ZEPETO สิ่งนี้ไม่ได้มีเจตนาเพื่อจำกัดการแสดงออกที่ประณีตของครีเอเตอร์ แต่เป็นข้อแนะนำในการปรับสภาพแวดล้อมบนมือถือให้เหมาะสม เพื่อให้ผู้ใช้ทุกคนสามารถเพลิดเพลินกับเวิลด์ได้อย่างราบรื่น
- การเพิ่มขึ้นแบบทวีคูณของปริมาณข้อมูล (ไฟล์โอเวอร์โหลด)
- การสะสมของข้อมูลพิกัดที่ซ่อนอยู่: Blendshape ต้องจำข้อมูลพิกัดการเคลื่อนที่ของจุด (Vertex) จำนวนมากเพิ่มเติมไว้ภายในเพื่อบันทึกการเคลื่อนไหวและการเปลี่ยนแปลงรูปร่างของเมช (Mesh)
- ปรากฏการณ์การสะสมเลเยอร์: ข้อมูลนี้มี โครงสร้างเหมือนเลเยอร์แอนิเมชันที่ซ้อนทับกัน ภายในไฟล์ FBX ด้วยเหตุนี้ ปริมาณข้อมูลของแอสเซททั้งหมดจึงหนักเกินไป
- โอเวอร์โหลดในการประมวลผลแบบเรียลไทม์ (ทำให้เครื่องร้อนและกระตุก)
- ขีดจำกัดของการประมวลผลแบบเรียลไทม์บนมือถือ: การที่อุปกรณ์มือถือต้องประมวลผลข้อมูล Blendshape เหล่านี้แบบเรียลไทม์ในพื้นที่เวิลด์ 3 มิติที่มีอวาตาร์หลายตัวมารวมกันในเวลาเดียวกันนั้นถือเป็นภาระที่หนักมาก
- ประสิทธิภาพฮาร์ดแวร์ลดลง: ส่งผลให้ฮาร์ดแวร์ทำงานหนักเกินไปอย่างรุนแรง ซึ่งนำไปสู่การเกิดความร้อนอย่างหนักและเฟรมเรตตก (กระตุก) บนอุปกรณ์ของผู้ใช้
- หน่วยความจำเกินและบังคับปิดแอป (Crash)
- อาการหน่วยความจำ (RAM) ไม่เพียงพอ: หากโหลดไอเทมที่มี Blendshape เข้ามาในเวิลด์พร้อมกัน จะทำให้ใช้ความจุ RAM ที่มีจำกัดของอุปกรณ์มือถือจนเต็มในพริบตา
- ข้อผิดพลาด OOM ที่ร้ายแรง: สิ่งนี้ทำให้เกิดปรากฏการณ์ OOM (Out Of Memory) ที่เกินความจุ ส่งผลให้เกิดข้อบกพร่องที่เลวร้ายที่สุด โดยระบบสมาร์ทโฟน (iOS/Android) จะบังคับปิดแอป ZEPETO (Crash/เด้งออก) เพื่อปกป้องอุปกรณ์
- Polycount
- เกณฑ์หน่วย Triangle: เกณฑ์จำกัดข้อมูลและการคำนวณโทโพโลยีของทุกหมวดหมู่คือ Triangles ไม่ใช่ Quads
- ตรวจสอบก่อนส่งออก (Export): ก่อนดำเนินการส่งออก FBX ในโปรแกรมต่างๆ เช่น Blender, Maya, 3ds Max ฯลฯ สำหรับจำนวน Tri (Triangle) ในเลย์เอาต์ภายในวิวพอร์ต 3D โปรดตรวจสอบว่าต่ำกว่าหรือเท่ากับค่าสูงสุดที่แนะนำในแต่ละหมวดหมู่หรือไม่

- การสร้างโมเดลเพื่อรองรับ Backface Culling
- การปรับตัวให้เข้ากับสภาพแวดล้อม Backface Culling: โดยพื้นฐานแล้ว เครื่องยนต์ ZEPETO จะใช้วิธี การเรนเดอร์ด้านเดียว (Backface Culling) เพื่อเพิ่มประสิทธิภาพการคำนวณการเรนเดอร์
- คำแนะนำในการตกแต่งโครงสร้าง: สำหรับบริเวณที่อาจมองเห็นด้านในได้เมื่อเล่นแอนิเมชัน เช่น ด้านในแขนเสื้อ ด้านในกระโปรง และปกเสื้อ (Collar) ขอแนะนำให้ปิดพื้นผิวให้สนิท หรือทำงานด้วยการโมเดลปิดท้ายออบเจ็กต์ที่สร้างความหนาทางกายภาพ เพื่อป้องกันปรากฏการณ์ที่มองเห็นทะลุโปร่งใสเนื่องจากทิศทางของ Face Normal พลิกกลับ

- การจัดการข้อมูลเมชที่บกพร่อง (Clean Up)
หากมี 'ชิ้นส่วนที่บกพร่อง' หลงเหลืออยู่ในข้อมูลโมเดล นั่นจะเป็นสาเหตุหลักที่ทำให้เกิดข้อผิดพลาดในการประมวลผลกราฟิกและทำให้เอนจิ้นขัดข้อง (Crash) โปรดจัดการข้อมูลที่ไม่จำเป็นเหล่านี้โดยใช้ 'Clean Up' ก่อนส่งผลงาน
- Vertex ที่ลอยอยู่ในอากาศโดยไม่เกิดเป็น Face (Isolated Vertices) หรือ Edge ที่มีความยาวเป็น 0 จะทำให้เกิดค่าใช้จ่ายในการประมวลผลที่ไม่จำเป็น ดังนั้นโปรดลบทิ้งล่วงหน้า
- การหลีกเลี่ยงโครงสร้าง Non-Manifold: เป็นโครงสร้างที่สามารถคำนวณได้ทางคณิตศาสตร์แต่ไม่สามารถมีอยู่จริงในโลกความเป็นจริงได้ โปรดตรวจสอบ 4 ประเภทหลัก ด้านล่าง และ Clean Up ระหว่างการทำโมเดล * ประเภทความบกพร่อง 4 ประการของ Non-Manifold
- โครงสร้างรูปตัว Y หรือตัว T ที่อยู่ติดกัน โดยมี Face ตั้งแต่ 3 อันขึ้นไปขบกันทางเรขาคณิตบน Edge (เส้น) เดียว
- โครงสร้างรูปนาฬิกาทรายที่มี Face อิสระตั้งแต่สองอันขึ้นไปเชื่อมต่อกันโดยตัดผ่าน Vertex เพียงอันเดียวเท่านั้นโดยไม่ใช้ Face ร่วมกัน
- โครงสร้างที่มี Face ล่องหนซึ่งมองไม่เห็นจากภายนอกพาดผ่านพื้นที่ของเมชที่ปิดสนิท (มักเกิดจากข้อผิดพลาดในการรวม/แยกส่วนเมช)
- สถานะที่เฉพาะทิศทาง Normal Vector ของ Face บางอันกลับหัวในโฟลว์ของเมชที่ต่อเนื่องกัน ส่งผลให้ไม่เข้ากับ Face ที่อยู่ติดกัน

- การลบพื้นผิวที่มองไม่เห็น
- Base Body Mesh Culling: เนื่องจากถูกจัดวางไว้ด้านในจากการติดพื้นผิวด้านนอกของเสื้อผ้าหรือไอเทมเครื่องประดับ ขอแนะนำให้ลบพื้นผิว Mesh ที่ถูกร่างกายอวาตาร์พื้นฐาน (Base Body) บังจนมิดออกไปอย่างเด็ดขาด
- การรักษาทรัพยากร: การลบเมชด้านในที่ไม่จำเป็นออกจะช่วยลดภาระของ GPU และปรับปรุงประสิทธิภาพการเรนเดอร์ สิ่งนี้ช่วยให้เล่นเกมได้อย่างราบรื่นและเป็นประโยชน์อย่างยิ่งในการลดการใช้หน่วยความจำ

- การเพิ่มประสิทธิภาพความหนาแน่นของโทโพโลยีบริเวณข้อต่อ
- สำหรับบริเวณข้อต่อที่มีการเคลื่อนไหวมาก เช่น หัวเข่า ข้อศอก และหัวไหล่ โปรดจัดให้มี Loop Edge อย่างน้อย 3 เส้นขึ้นไป เพื่อให้เมชสามารถโค้งงอได้อย่างเป็นธรรมชาติหลังจากสกินนิง (Skinning) ในทางกลับกัน สำหรับส่วนที่คงที่และแทบจะไม่มีการเปลี่ยนแปลงรูปร่าง ควรจัดเรียงให้เรียบง่ายที่สุด โดยไม่แบ่งพื้นผิวให้ละเอียดโดยไม่จำเป็น เพื่อปรับปรุงประสิทธิภาพการเคลื่อนไหวของอวาตาร์

ㅣ✔️ ประเภทเสื้อผ้า (DR, TOP, OTR, BTM)
- ข้อกำหนดของโมเดล Max Triangle Count
- DR (Single Outfit): Max 10,000 Tris
- TOP (Top) / OTR (Outerwear): Max 6,000 Tris
- BTM (Pants, Skirts): Max 5,000 Tris
- คำแนะนำการสร้างโมเดล
- การซิงโครไนซ์ Vertex บริเวณรอยต่อ (Seam Line): บริเวณรอยต่อที่เอวซึ่งเสื้อท่อนบน (TOP) และกางเกง/กระโปรง (BTM) มาบรรจบกันเป็นจุดที่มีการเสียรูปทรงมากที่สุดเมื่ออวาตาร์ขยับ ดังนั้นโปรด ทำให้จำนวน Vertex และการไหลของเส้น (Topology) บริเวณรอยต่อของเสื้อท่อนบนและท่อนล่างตรงกันอย่างสมบูรณ์ หากโครงสร้าง Vertex หรือทิศทาง Normal บริเวณรอยต่อไม่ตรงกัน จะเกิดข้อบกพร่องเมื่ออวาตาร์ขยับ เช่น เกิดช่องว่างระหว่างเสื้อผ้าหรือมีรอยแยกทำให้มองเห็นด้านใน หัวใจสำคัญคือต้องจัดวางอย่างพิถีพิถันเพื่อให้เมชบริเวณรอยต่อเชื่อมต่อกันอย่างเป็นธรรมชาติราวกับเป็นเสื้อผ้าชิ้นเดียว
- โครงสร้าง 3-Loop Edge บริเวณข้อต่อ: บริเวณข้อต่อที่มีการเคลื่อนไหวมาก เช่น เข่า ข้อศอก และกระดูกเชิงกราน มักจะทำให้เมชบิดเบี้ยวหรือเสียรูปทรงเมื่อโค้งงอ เพื่อป้องกันเหตุการณ์เช่นนี้และช่วยให้เคลื่อนไหวได้อย่างราบรื่น โปรดวาง Edge จำนวน 3-4 เส้นขึ้นไปให้เท่าๆ กันและชิดกันบริเวณที่ข้อต่อพับ

- การปิดขอบเสื้อผ้า (การสร้างความหนา): บริเวณขอบเสื้อผ้า เช่น แขนเสื้อ หรือชายเสื้อ อย่าใช้เพียงเส้นเดียวในการปิดจบ แต่ให้บุด้านในของพื้นผิวเพื่อ ทำให้มีความหนาเหมือนเสื้อผ้าจริง อย่างไรก็ตาม พื้นผิวที่ซ่อนอยู่ลึกเข้าไปในเสื้อผ้าซึ่งมองไม่เห็นจากภายนอกอย่างแน่นอน ไม่จำเป็นต้องเก็บไว้ โปรดตัดหรือลบพื้นผิวที่ซ่อนอยู่เหล่านี้ออกอย่างระมัดระวัง เพื่อป้องกันการสิ้นเปลืองรูปหลายเหลี่ยม(Polygon) ที่ไม่จำเป็นซึ่งทำให้ประสิทธิภาพของเกมลดลง

ㅣ✔️ ประเภททรงผม (F_HAIR, M_HAIR)
- ข้อกำหนดของโมเดล Max Triangle Count
- F_HAIR (Female Hair): Max 10,000 Tris
- M_HAIR (Men's Hair): Max 10,000 tris
- คำแนะนำการสร้างโมเดล
- การสร้างโมเดลโครงสร้างคู่ (Solid Base Mesh + Alpha plane Mesh): เพื่อให้ได้ทั้งความสมบูรณ์ทางภาพและการเพิ่มประสิทธิภาพของอุปกรณ์มือถือ 70% ของรูปหลายเหลี่ยม (Polygon) ทั้งหมดจะถูกขึ้นแบบเป็นเมชทึบแสงในโครงสร้างปิดที่ห่อหุ้มโครงสร้างส่วนหัวเพื่อให้มีวอลลุ่ม รูปหลายเหลี่ยมอีก 30% ที่เหลือ โปรดจัดวางไว้ด้านนอกในรูปแบบ Alpha plane เพื่อแสดงถึงปลายผม ไรผม ผมด้านข้าง ฯลฯ
- การรักษาระยะห่างเพื่อป้องกัน Z-Fighting: เอนจิ้นกราฟิก 3 มิติมีปัญหาเรื้อรังเมื่อมีแผ่นใสซ้อนกันหลายแผ่น ซึ่งจะทำให้สับสนในลำดับการคำนวณว่าแผ่นใดอยู่ด้านหน้าและแผ่นใดอยู่ด้านหลังตามมุมกล้อง หากระยะห่างระหว่าง Alpha plane ชิดกันเกินไป หรือเส้นเมชพาดผ่านและทับซ้อนกัน จะเกิด ปัญหาการจัดลำดับ (Sorting Issue) ทำให้พื้นผิวโปร่งใสกระพริบตามมุมกล้อง โปรดสร้างโมเดลโดยรักษาระยะห่างทางกายภาพอย่างน้อยระหว่างเมช Alpha plane

ㅣ✔️ ประเภทพร็อพที่ติดกับร่างกายและพร็อพที่สามารถเปลี่ยนรูปร่างได้ (SOX, GLOVE, NAIL, TAIL, WING, SHOULDER)
- Max Triangle Count
- SHOULDER: Max 5,000 Tris
- GLOVE / BAG: Max 4,500 tris
- WING (Wings): Max 4,000 Tris
- SOX (Socks): Max 3,500 Tris
- TAIL: Max 2,000 tris
- NAIL (Nail Art): Max 1,500 Tris
- คำแนะนำการสร้างโมเดล
- การซิงโครไนซ์ Topology นิ้ว: เมื่อสร้างโมเดลถุงมือ (GLOVE) และเล็บ (NAIL) ตำแหน่งที่ข้อนิ้วงอจะต้องตรงกับพิกัดออฟเซ็ตข้อต่อนิ้ว (Finger Joint) ของดัมมี่ไกด์พื้นฐานของ ZEPETO โดยต้องไม่มีข้อผิดพลาดแม้แต่น้อย โปรดรักษาให้มี Edge อย่างน้อย 3 เส้น ต่อ 1 ข้อต่อ
- การเพิ่มประสิทธิภาพพื้นผิวสัมผัส: ด้านในของเล็บและด้านในของถุงมือ ฯลฯ ที่สัมผัสกับผิวหนังนิ้วอย่างสมบูรณ์และถูกฝังไว้ 100% ทางกายภาพ โปรดลบออกให้หมดเพื่อการเพิ่มประสิทธิภาพ

ㅣ✔️ ระเภทพร็อพแบบสวมใส่ (SH, HEADWEAR, EYEMASK, GLASSES, BRACELET, NECKLACE, EARRING, RING)
- Max Triangle Count
- SH (รองเท้า) / HEADWEAR (หมวก/เครื่องประดับศีรษะ): สูงสุด 4,000 Tris
- EYEMASK (หน้ากากปิดตา): สูงสุด 3,000 Tris
- GLASSES ~ RING (แว่นตา, สร้อยข้อมือ, สร้อยคอ, ต่างหู, แหวน): สูงสุด 2,000 Tris
- คำแนะนำการสร้างโมเดล
- การเพิ่มประสิทธิภาพโมเดลทรงกระบอก: เมื่อสร้างพร็อพแข็ง (Rigid) ที่มีความโค้ง เช่น แหวน(RING), สร้อยข้อมือ (BRACELET), กรอบแว่น (GLASSES) โปรดสร้างโครงสร้างโพลีกอนต่ำ (Low-polygon) โดย จำกัดจำนวนด้าน (Sides) ของรูปทรงกระบอกพื้นฐานเริ่มต้นให้อยู่ระหว่าง 6 ถึง 8 ด้าน โครงร่างพื้นผิวโค้งที่ขาดหายไปควรได้รับการเติมเต็มผ่าน Soft Edge และ Normal Map

ㅣ✔️ ประเภทรูปร่างพิเศษ (MASK, BODY)
หมวดหมู่เทคนิคระดับความยากสูงสุดนี้จะเขียนทับรูปลักษณ์ดั้งเดิมของอวาตาร์พื้นฐานทั้งหมด (เมชศีรษะและเต็มตัว) หรือทำให้เกิดการเปลี่ยนแปลงรูปร่าง
- Max Triangle Count
- BODY (รูปร่างพิเศษ ส่วนลำตัว): สูงสุด 10,000 Tris
- MASK (รูปร่างพิเศษ ส่วนใบหน้า): สูงสุด 5,000 Tris
- คำแนะนำการสร้างโมเดล
- การจับคู่รอยต่อบริเวณคอ (Neck Seam Line): พื้นที่รอยต่อคอที่หน้ากาก (MASK) และลำตัว (BODY) บรรจบกัน จะต้องตรงกันอย่างสมบูรณ์แบบในส่วนของหมายเลขดัชนี Vertex, ค่าพิกัด 3D สัมบูรณ์, และทิศทาง Vertex Normal ของโมเดลบอดี้พื้นฐาน ZEPETO หากรอยเชื่อม (Welding Line) นี้คลาดเคลื่อนแม้แต่ 0.001 มม. คอจะแยกออกจากกันและมีรอยแยกให้เห็นซึ่งถือเป็นข้อบกพร่อง
หมายเหตุ) ข้อมูลตามหมวดหมู่เพื่อการเพิ่มประสิทธิภาพไอเทม
ข้อมูลทั้งหมดอิงตาม ค่าสูงสุด (Maximum Limit)
*ยกเว้นหมวดหมู่ DR (ชุดเต็มตัว) ทุกหมวดหมู่จะจำกัดที่เทกซ์เจอร์ 1 แผ่น
| | Max Triangle Count (Tris) แนะนำ / MAX | Max Texture Resolution (Map size) แนะนำ / MAX | Max Material (อนุญาตให้ใช้เชเดอร์เพิ่มเติมตามคุณสมบัติ) |
|---|---|---|---|---|
DR | One-piece outfit | 10,000 | 512x512 (2 images) | 4(แนะนำ) |
TOP | Top | 6,000 | 512x512 | 3(แนะนำ) |
OTR | Outerwear | 6,000 | 512x512 | 3(แนะนำ) |
BTM | Pants, Skirts | 5,000 | 512x512 | 3(แนะนำ) |
SOX | Socks | 3,500 / 4500 | 256x256 / 512x512 | 3(แนะนำ) |
SH | Shoes | 4,000 | 256x256 / 512x512 | 3(แนะนำ) |
F_HAIR | Women's Hair | 10,000 | 256x256 / 512x512 | 3(แนะนำ) |
M_HAIR | Men's Hair | 10,000 | 256x256 / 512x512 | 3(แนะนำ) |
HEADWEAR | Headwear | 4,000 | 256x256 / 512x512 | 3(แนะนำ) |
SHOULDER | Shoulder | 5,000 | 512x512 | 3(แนะนำ) |
GLASSES | Glasses | 2,000 | 256x256 / 512x512 | 3(แนะนำ) |
BRACELET | Bracelet | 2,000 | 256x256 / 512x512 | 3(แนะนำ) |
NECKLACE | Necklace | 2,000 | 256x256 / 512x512 | 3(แนะนำ) |
EARRING | Earrings | 2,000 | 256x256 / 512x512 | 3(แนะนำ) |
BAG | Bag | 4,500 | 256x256 / 512x512 | 3(แนะนำ) |
GLOVE | Glove | 4,500 | 256x256 / 512x512 | 3(แนะนำ) |
RING | Ring | 2,000 | 256x256 / 512x512 | 3(แนะนำ) |
NAIL | Nail Art | 1,500 / 2000 | 256x256 / 512x512 | 3(แนะนำ) |
EYEMASK | Mask | 3,000 | 512x512 | 3(แนะนำ) |
WING | Wing | 4,000 | 512x512 | 3(แนะนำ) |
MASK | Special Face Shapes | 5,000 | 512x512 | 3(แนะนำ) |
BODY | Special Body Types | 10,000 | 512x512 | 3(แนะนำ) |
TAIL | Tail | 2,000 / 3000 | 256x256 / 512x512 | 3(แนะนำ) |