การเปลี่ยนส่วนของร่างกายและการแก้ไขปัญหาเขตแดนของตาข่าย/หน้ากาก
ร่างกายพื้นฐานของ ZEPETO เริ่มต้นมีรูปร่างที่เป็นกลางถึงชาย สำหรับลำตัวผู้หญิงที่ชัดเจนยิ่งขึ้น ควรใช้ส่วนประกอบตาข่ายที่แทนที่ร่างกายพื้นฐาน สำหรับตัวอย่างหรือจุดเริ่มต้น ดาวน์โหลดไฟล์ Female_Torso.fbx (ดาวน์โหลด) ไฟล์ ไฟล์นี้สามารถโหลดเข้า Blender และจะมีวัตถุตาข่ายสองชิ้น:
- Female_Torso_V
- guide_mannequin

ทั้งวัตถุ Female_Torso_V และวัตถุ guide_mannequin ถูกทำแผนที่ UV ตามข้อกำหนดเดียวกันกับหน้ากาก วัตถุ Female_Torso_V ยังมีวัสดุที่ชื่อว่า “skin” การตั้งชื่อวัสดุนี้จำเป็นเพื่อบอกแอปให้ใช้พื้นผิวผิวจากอวาตาร์

ลำตัวนี้ถูกวางในท่า A-Pose ที่ผ่อนคลาย และจะต้องทำงานเพิ่มเติมเพื่อให้เข้ากับท่า T-pose มาตรฐาน ดู Rigging Guide สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการแปลงจาก A เป็น T-pose ในการรับโครงกระดูกเพื่อทำการ rig และทำงาน ให้นำเข้าไฟล์ creator_base_set เข้าฉาก วางโครงกระดูกของ creator base set ในท่า A-Pose มาตรฐาน สังเกตว่าบริเวณสะโพก แขน และคอของวัตถุ Female_Torso_V ทั้งหมดจะสิ้นสุดในลูปที่ตรงกับหน้ากากเริ่มต้น นี่คือการทำให้แน่ใจว่าไม่มีการแตกหักทางสายตาในร่างกายพื้นฐานเมื่อจับคู่กับไอเท็มอื่น ๆ ลำตัวนี้สามารถใช้ในการสร้างไอเท็มท่อนบนให้เข้ากับรูปทรงผู้หญิง หรือเพื่อให้ส่วนของลำตัวที่พร้อมใช้งานสำหรับผิวที่เปิดเผยสำหรับไอเท็มท่อนบน ลำตัวผู้หญิงไม่มีน้ำหนักรวมอยู่ด้วย สำหรับการวาดน้ำหนัก ใช้การถ่ายโอนน้ำหนักจากวัตถุหน้ากากที่ถูกวาง/มีน้ำหนักอย่างเหมาะสมจาก Creator Base Set นี่ควรให้ลำตัวมีน้ำหนักที่กระจายอย่างเหมาะสม เมื่อรวมส่วนของลำตัวในวัตถุท่อนบน ให้แน่ใจว่าลำตัวและวัตถุท่อนบนถูกรวมเป็นวัตถุเดียวกัน สามารถทำได้ง่ายโดยการเลือกตาข่ายลำตัวและท่อนบนแล้วไปที่ Object > Join

การตั้งค่าน้ำหนักสำหรับแต่ละส่วนประกอบของรายการจะถูกเก็บรักษาต่อเมชเมื่อรวมวัตถุเมชเข้าด้วยกัน ดังนั้นให้แน่ใจว่าได้ผูกทั้งวัตถุส่วนบนและลำตัวก่อนที่จะรวมเข้าด้วยกันเพื่อให้ง่ายขึ้นในชีวิตของคุณ เป็นส่วนหนึ่งของกระบวนการเสร็จสิ้น ให้ลบพื้นที่ของเมชลำตัวที่ถูกปกคลุมโดยส่วนบนและจะไม่ถูกมองเห็น มันจะช่วยป้องกันปัญหาการตัดกันระหว่างวัตถุส่วนบนและลำตัว
คุณสามารถปรับแต่งลำตัวของคุณเองเพื่อใช้ในแอปได้เช่นกัน! หากสร้างหรือปรับแต่งลำตัวของคุณเอง เมชต้องปฏิบัติตามข้อกำหนดบางประการ
- เมชลำตัวต้องสอดคล้องกับวัตถุหน้ากากฐานที่สะโพก คอ และแขน
- เมชลำตัวควรปฏิบัติตามการจัดวาง UV ที่คล้ายกับหน้ากาก
- เมชลำตัวควรมีวัสดุที่กำหนดให้ชื่อว่า “ผิวหนัง”
สำหรับการปิดบัง องค์ประกอบลำตัวที่กำหนดเองจะมาแทนที่ลำตัวของร่างกายอวาตาร์ฐาน สำหรับข้อมูลเพิ่มเติมเกี่ยวกับกระบวนการปิดบังทั่วไป โปรดดูที่ Masking Guide. ทาสีดำในพื้นที่ของลำตัวบนหน้ากากที่ถูกปกคลุมโดยลำตัวที่กำหนดเองจนถึงจุดสิ้นสุดของลำตัวที่กำหนดเอง โดยอุดมคติแล้วจะซ่อนลำตัวฐานและอนุญาตให้แสดงลำตัวที่กำหนดเองโดยไม่มีข้อผิดพลาด

ทำการเตรียมการที่จำเป็นเพื่อส่งออกไปยัง Unity ตามที่แสดงใน การส่งออกไปยัง Unity ส่วนของคู่มือ ส่งออกไอเท็มลำตัว, โครงกระดูก, และหน้ากากไปยัง fbx เพื่อทดสอบใน Unity

นำเข้าไอเท็มและทดสอบในโครงการ ZEPETO Studio Unity สำหรับการเปลี่ยนลำตัว ไอเท็มของคุณจะเป็นเสื้อหรือชุดเดรส/สูท
- ตรวจสอบว่ามีการแตกหักที่ชัดเจนในตาข่ายระหว่างร่างกายอวาตาร์พื้นฐานและลำตัวที่กำหนดเองของคุณหรือไม่ หากพบปัญหาใด ๆ ให้กลับไปที่ Blender เพื่อแก้ไขปัญหา
- ตรวจสอบอวาตาร์ด้วยท่าทางที่เคลื่อนไหวเพื่อให้แน่ใจว่าน้ำหนักถูกกระจายอย่างเหมาะสม โดยเฉพาะตามขอบของลำตัว หากพบปัญหาใด ๆ ที่นี่ ให้กลับไปที่ Blender และแก้ไขปัญหาการทาสีน้ำหนัก
- ตรวจสอบเส้นตะเข็บระหว่างลำตัวที่กำหนดเองและอวาตาร์พื้นฐานเพื่อดูว่ามีปัญหาความต่อเนื่องของนอร์มัลระหว่างลำตัวที่กำหนดเองและอวาตาร์พื้นฐานหรือไม่ หากมีปัญหาที่นี่ จะต้องเปลี่ยนใน Blender
หากไม่มีปัญหาใน Unity ให้ส่งออก prefab ไปยังไฟล์ .zepeto อัปโหลดและตรวจสอบไอเท็มใน ZEPETO Studio หากไม่มีปัญหาเพิ่มเติม คุณสามารถส่งไอเท็มเพื่อการตรวจสอบ
หากตาข่ายถูกจัดแนวอย่างถูกต้อง แต่มีเส้นปรากฏที่ขอบของส่วนร่างกายที่กำหนดเองและร่างกายอวาตาร์พื้นฐาน โดยการแตกหักดูเหมือนจะเป็นการเปลี่ยนแปลงของแสง Normals ของส่วนร่างกายที่กำหนดเองอาจไม่สอดคล้องกับร่างกายอวาตาร์พื้นฐาน

คุณสามารถตรวจสอบการจัดแนวของ vertex normal ได้โดยการเลือกไอเท็มที่มีส่วนร่างกายที่กำหนดเองและวัตถุหน้ากาก ไปที่โหมดแก้ไข และในเมนู Viewport Overlays ที่มุมขวาบน ให้เลือกปุ่ม “แสดง Normals ที่แยกออกมา” เส้นสีชมพูจะปรากฏจากตาข่ายที่แต่ละ vertex เส้นเหล่านี้แสดงถึงทิศทางสัมผัสของ vertex normals

หากเส้นสีชมพูไม่เรียงกันที่ขอบ เราอาจต้องถ่ายโอนข้อมูล normals จากตาข่ายไปยังส่วนร่างกายที่กำหนดเอง ในการถ่ายโอนข้อมูล normals จากตาข่ายหน้ากากไปยังตาข่ายไอเท็ม ให้เริ่มต้นโดยการเลือกไอเท็มและเพิ่มตัวปรับแต่ง “การถ่ายโอนข้อมูล” ไปยังวัตถุตาข่ายไอเท็ม

เราต้องการถ่ายโอน “Custom Normals” ภายใต้ “Face Corner Data” เราต้องการเพิ่มหน้ากากเป็นวัตถุ “Source” เพื่อให้เราสามารถดึงข้อมูล normals จากหน้ากากได้

เพื่อจำกัดการถ่ายโอนไปยังข้อมูล normals ที่ขอบ เราจะต้องสร้างกลุ่ม vertex ใหม่สำหรับตัวปรับแต่งเพื่อกำหนดเป้าหมาย ในโหมดแก้ไขด้วยไอเท็มลำตัวที่กำหนดเอง ให้ไปที่แท็บ Object Data Properties และสร้างกลุ่ม vertex ใหม่ด้วยปุ่ม ‘+’ เพื่อวัตถุประสงค์ในการจัดระเบียบ ให้ตั้งชื่อกลุ่ม vertex นี้ว่า “Border Normals Target”

เมื่อยกเลิกการเลือกองค์ประกอบตาข่ายอื่นทั้งหมดแล้ว ให้เลือกขอบขอบลูปและใช้ปุ่ม “Assign” เพื่อกำหนดส่วนประกอบตาข่ายที่เลือกไปยังกลุ่ม vertex

กลับไปที่แท็บตัวปรับแต่ง ในตัวปรับแต่งการถ่ายโอนข้อมูล ค้นหาและเลือกกลุ่มจุดยอดเป้าหมายของขอบในกล่องกลุ่มจุดยอด ตอนนี้ พื้นที่ขอบของตาข่ายมีการคัดลอกปกติจากปกติของตาข่ายหน้ากาก

ใช้ปกติกับตาข่ายโดยใช้ตัวปรับแต่ง

ตรวจสอบอีกครั้งว่าปกติถูกจัดแนวอย่างถูกต้องกับการซ้อนทับปกติหรือไม่ หากทุกอย่างทำงาน ให้ดำเนินการส่งออกและทดสอบรายการของคุณใน Unity
หากตาข่ายถูกจัดเรียงอย่างถูกต้อง แต่มีการเปลี่ยนแปลงของโทนสีพื้นฐานที่ปรากฏบนขอบระหว่างส่วนของร่างกายที่กำหนดเองและร่างกายของอวาตาร์พื้นฐาน แผนที่ UV ของส่วนของร่างกายที่กำหนดเองและแผนที่ UV ของหน้ากากอาจไม่ตรงกัน

การใช้วัสดุผิวหนังต้องการให้ UV ของส่วนของร่างกายที่กำหนดเองตรงกับ UV ของหน้ากาก เราสามารถถ่ายโอนข้อมูล UV จากหน้ากากไปยังลำตัวที่กำหนดเองโดยใช้เครื่องมือ Transfer Mesh Data ใน Blender เริ่มต้นด้วยการแยกเรขาคณิตของส่วนของร่างกายที่กำหนดเองออกจากตาข่ายของไอเท็ม

ในโหมดวัตถุ เลือกส่วนของร่างกายที่กำหนดเอง จากนั้นกด Shift/เพิ่มการเลือกหน้ากาก เพื่อให้หน้ากากเป็นการเลือกที่ใช้งานอยู่ ไปที่เมนูวัตถุ > ลิงก์/ถ่ายโอนข้อมูล > ถ่ายโอนข้อมูลตาข่าย และเลือก “UV” ในป๊อปอัปที่ปรากฏขึ้น
- ตรวจสอบให้แน่ใจว่า “ประเภทข้อมูล” ถูกตั้งค่าเป็น “UVs”
- เปลี่ยน “การแมปมุมหน้า” เป็น “มุมที่ใกล้ที่สุดและการจับคู่ที่ดีที่สุด”
- เปลี่ยน “การแมปหน้า” เป็น “การจับคู่ที่ดีที่สุด”
- การตั้งค่าอื่นๆ ทั้งหมดสามารถคงค่าเริ่มต้นไว้ได้


ข้อมูล UV map บนชิ้นส่วนร่างกายที่กำหนดเองควรมีรูปแบบที่คล้ายกับหน้ากาก ตรวจสอบ UV map ของชิ้นส่วนร่างกายที่กำหนดเองเพื่อยืนยันว่ารูปแบบของมันคล้ายกับหน้ากาก

หากทุกอย่างตรวจสอบแล้วถูกต้อง ให้รวมชิ้นส่วนร่างกายที่กำหนดเองกลับเข้ากับไอเท็มและดำเนินการส่งออกและทดสอบไอเท็มใน Unity
หากชิ้นส่วนร่างกายที่กำหนดเองไม่เคลื่อนไหวตามที่คาดหวังของร่างกายอวาตาร์พื้นฐาน อาจมีข้อผิดพลาดในการกระจายน้ำหนักของชิ้นส่วนร่างกายที่กำหนดเอง เพื่อแก้ปัญหานี้ ให้ถ่ายโอนน้ำหนักจากแหล่งที่ดี เช่น หน้ากาก ไปยังชิ้นส่วนร่างกายที่กำหนดเอง เริ่มต้นด้วยการแยกเรขาคณิตของชิ้นส่วนร่างกายที่กำหนดเองออกจากตาข่ายไอเท็ม เลือกหน้ากาก จากนั้นกด Shift/เพิ่มการเลือกตาข่ายชิ้นส่วนร่างกายที่กำหนดเอง เข้าไปในโหมด Weight Paint ไปที่ Weights > Transfer Weights ในตัวเลือกที่ขยายออกมา ให้แน่ใจว่า “Source Layers Selected” ถูกตั้งค่าเป็น “By Name” สำหรับ “Destination Layers” สามารถเลือกตัวเลือก “All Layers” ได้หากคุณต้องการถ่ายโอนน้ำหนักทั้งหมด เลือกกลุ่มเวอร์เท็กซ์เฉพาะหากคุณต้องการถ่ายโอนน้ำหนักเฉพาะ เช่น น้ำหนักรอบๆ เส้นขอบตาข่ายของชิ้นส่วนร่างกายที่กำหนดเอง ทดสอบและแก้ไขข้อผิดพลาดในการถ่วงน้ำหนัก จากนั้นรวมชิ้นส่วนร่างกายที่กำหนดเองกลับเข้ากับไอเท็ม ส่งออกและทดสอบไอเท็มใน Unity