ข้ามไปที่เนื้อหา

Mirror Tab

แถบ Mirror Tab ใน Super Skin Pro ถูกออกแบบมาเพื่อแก้ปัญหาการ Mirror น้ำหนักใน Blender ที่มักจะยุ่งยากและไม่แม่นยำ โดยเน้นการทำงานแบบ "จับคู่" (Name Matching) และ "รักษาสมดุลน้ำหนัก" (Normalization) เพื่อให้งานออกมาเนียนที่สุด


คุณสมบัติหลัก (Key Features)

1. Mirror Option (การตั้งค่าทิศทาง)

ตัวเลือก คำอธิบาย ค่าเริ่มต้น
Mirror Axis แกนที่ใช้ในการสะท้อน (X, Y, หรือ Z) X
Direction ทิศทางการ Mirror (Positive to Negative หรือ Negative to Positive) POS_NEG

2. Influence Mapping (ระบบจับคู่ชื่อกระดูก)

นี่คือจุดเด่นที่สุดของระบบ Mirror — คุณไม่จำเป็นต้องกังวลว่า Blender จะหาชื่อกระดูกฝั่งตรงข้ามไม่เจอ:

  • Search/Replace Table: คุณสามารถกำหนดกฎการจับคู่ชื่อได้เอง
    • ตัวอย่าง: ใส่ L_* ในช่อง Search และ R_* ในช่อง Replace
    • ระบบจะทำการจับคู่กระดูกฝั่งซ้าย (Left) เข้ากับฝั่งขวา (Right) โดยอัตโนมัติตามรูปแบบที่คุณตั้งไว้
  • Wildcard Support: รองรับ * (จับคู่อะไรก็ได้) — *_L*_R, Left*Right*
  • Add/Remove: กดปุ่ม + เพื่อเพิ่มกฎการจับคู่ และ - เพื่อลบกฎที่ไม่ต้องการออก

3. Mirror Weights (การดำเนินการ)

เมื่อกดปุ่ม Mirror Weights ระบบจะเริ่มกระบวนการตามลำดับดังนี้:

  1. ตรวจสอบฝั่งต้นทาง: วิเคราะห์ว่ากระดูกไหนอยู่ฝั่งต้นทาง (Source Side) โดยคำนวณจากตำแหน่ง World-Space ของ Bone Center เทียบกับ Mirror Axis
  2. Mapping: จับคู่ชื่อกระดูกตามกฎที่คุณตั้งไว้ใน Search/Replace Table
  3. Physical Mirroring: สะท้อนพิกัดของ Vertex จากฝั่งต้นทางไปยังฝั่งปลายทาง — หาจุดที่ใกล้ที่สุด (Nearest Neighbor) บนฝั่งตรงข้าม
  4. Normalization Protection: ในขณะที่ทำการย้ายน้ำหนัก ระบบจะทำการ "ล็อก" กลุ่มกระดูกฝั่งตรงข้ามที่ Mirror เสร็จแล้วไว้ชั่วคราว เพื่อป้องกันไม่ให้ Normalize Engine ไปดึงน้ำหนักออกจนเสียสมดุล
  5. Automatic Composite: หลังวางน้ำหนักแล้ว ระบบจะเรียกใช้ flatten_visible_layers_to_mesh() เพื่อ Composite น้ำหนักทั้งหมดลง Mesh และเรียกใช้ Visualizer Refresh

การทำงานร่วมกับระบบ Layer

Mirror Tab ทำงานบน ผลลัพธ์ Composite ของเลเยอร์ทั้งหมด:

  • Mirror จะทำงานกับน้ำหนักที่ปรากฏบน Mesh จริง (Composite จากทุกเลเยอร์ที่ Visible)
  • ไม่ใช่การ Mirror เฉพาะ Active Layer
  • หลังจาก Mirror เสร็จ — น้ำหนักจะถูกเขียนลง Mesh โดยตรง แล้วคุณสามารถ Save กลับลง Active Layer Storage ได้

⚠️ ข้อควรระวัง: ควร Save Active Layer ก่อน Mirror เพื่อให้แน่ใจว่าการแก้ไขล่าสุดถูกบันทึกใน Storage


ตัวอย่างการตั้งค่า Search/Replace

ชื่อกระดูกต้นทาง Search Replace ชื่อกระดูกปลายทาง
Arm.L L_* R_* Arm.R
Leg.L.001 L_* R_* Leg.R.001
LeftHand Left* Right* RightHand
index_01_l *_l *_r index_01_r

ตารางสรุปการทำงานของ Mirror Tab

หัวข้อ รายละเอียด
Direction ทิศทางการ Mirror (POS_NEG / NEG_POS)
Mirror Axis แกนที่ใช้สะท้อนสมมาตร (X / Y / Z)
Influence Mapping รายการกฎการจับคู่ชื่อกระดูก (Search / Replace)
Execute ปุ่ม "Mirror Weights" เพื่อเริ่มกระบวนการ

Tips

  • ก่อนกด Mirror แนะนำให้ตรวจสอบว่ากระดูก (Bones) ของคุณมีชื่อที่สอดคล้องกัน (เช่น Arm.L และ Arm.R)
  • หากมีกระดูกที่ไม่เข้าคู่ ระบบจะ Mirror ไปที่ชื่อเดิม (Self-Mirror) — ตรวจสอบ Console เพื่อดูรายละเอียด
  • ใช้กฎหลายข้อเพื่อจับคู่ชื่อที่มีรูปแบบหลากหลาย — ระบบจะเรียงลำดับตามที่คุณกำหนดใน Table
  • Mirror จะไม่ทำงานถ้าไม่มี Vertex Group ใน Mesh — ตรวจสอบว่า Mesh มี Armature Modifier และ Vertex Groups ครบถ้วน