คู่มือการเพิ่มประสิทธิภาพโมเดล 3D แยกตามหมวดหมู่
19 นาที
แนวทางนี้จะแนะนำข้อปฏิบัติในการสร้างและเพิ่มประสิทธิภาพแอสเซท 3 มิติ เพื่อให้แน่ใจว่าระบบมีความเสถียรและแอปไม่กระตุกเมื่อผู้ใช้เล่น zepeto บนอุปกรณ์มือถือ รวมถึงเพิ่มประสิทธิภาพการเรนเดอร์ให้สูงสุด ครีเอเตอร์ทุกคนต้องปฏิบัติตามข้อกำหนดที่ระบุไว้ด้านล่างอย่างเคร่งครัดในการสร้างแอสเซท เพื่อป้องกันไม่ให้ถูกปฏิเสธการพิจารณาและเพื่อให้สภาพแวดล้อมการเล่นเป็นไปอย่างราบรื่น 💡 ข้อกำหนดทั่วไป การเพิ่มประสิทธิภาพโมเดลลิ่ง ㅣ✔️ ห้ามใช้ blendshape ในทุกหมวดหมู่ ไอเทมทั้งหมดที่อัปโหลดไปยัง zepeto จะไม่สามารถรวมข้อมูล blendshape ได้ นี่ไม่ได้เป็นการจำกัดการแสดงออกที่ละเอียดอ่อนของครีเอเตอร์ แต่เป็น ข้อกำหนดที่จำเป็น เพื่อเพิ่มประสิทธิภาพสภาพแวดล้อมบนมือถือ เพื่อให้ผู้ใช้ทุกคนสามารถเพลิดเพลินกับเวิลด์ได้อย่างราบรื่น การเพิ่มขึ้นแบบทวีคูณของปริมาณข้อมูล (ไฟล์โอเวอร์โหลด) การสะสมของข้อมูลพิกัดที่ซ่อนอยู่ 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 ) ในเลย์เอาต์วิวพอร์ต 3 มิตินั้นต่ำกว่าหรือเท่ากับขีดจำกัดสูงสุดในแต่ละหมวดหมู่ การสร้างโมเดลเพื่อรองรับ 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 ต้องลบ พื้นผิวเมชที่จัดวางอยู่ด้านในและ ถูกบังโดยสมบูรณ์ด้วยบอดี้อวาตาร์พื้นฐาน (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(แนะนำ)
