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 ระบบจะเริ่มกระบวนการตามลำดับดังนี้:
- ตรวจสอบฝั่งต้นทาง: วิเคราะห์ว่ากระดูกไหนอยู่ฝั่งต้นทาง (Source Side) โดยคำนวณจากตำแหน่ง World-Space ของ Bone Center เทียบกับ Mirror Axis
- Mapping: จับคู่ชื่อกระดูกตามกฎที่คุณตั้งไว้ใน Search/Replace Table
- Physical Mirroring: สะท้อนพิกัดของ Vertex จากฝั่งต้นทางไปยังฝั่งปลายทาง — หาจุดที่ใกล้ที่สุด (Nearest Neighbor) บนฝั่งตรงข้าม
- Normalization Protection: ในขณะที่ทำการย้ายน้ำหนัก ระบบจะทำการ "ล็อก" กลุ่มกระดูกฝั่งตรงข้ามที่ Mirror เสร็จแล้วไว้ชั่วคราว เพื่อป้องกันไม่ให้ Normalize Engine ไปดึงน้ำหนักออกจนเสียสมดุล
- 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 ครบถ้วน