Forums: หน้ารวมโฟรัม > Blender Development > DEV:ปัญหาการแปลงQuaternion เป็น Euler
- หากผู้ใช้ต้องการตอบ,'เม้นต์,ปั่น,หรือ CHAT กระทู้ อย่าลังเลที่จะ กดที่นี่เพื่อแสดงความเห็น
แล้วข้อความของผู้ใช้จะปรากฏต่อท้ายหน้านี้โดยอัตโนมัติ
ผมแปลงจากEulerเป็นQuatครับโดยใช้วิธีนี้ครับ
eul=Mathutils.Euler() Mathutils.RotateEuler(eul,40,'x') Mathutils.RotateEuler(eul,15,'y') Mathutils.RotateEuler(eul,0,'z') quat3=eul.toQuat()
แต่พอผมเอาquat3ไปใช้เซ็ตการrotateของobjอ่ะครับมันไม่ตรงกันอ่ะครับ คือมันการเป็นหมุน40.931,11.436,9.772แต่งานของผมต้องการความแม่นยำอ่ะครับ พอจะมีวิธีอื่นในการrotate obj ไหมครับ
- ~หมายเหตุ ผมลอง quat3.toEuler() แล้วมันก้อได้เป็น40.931,11.436,9.772อ่ะครับ ผมเลยสงสัยว่า 40,15,0 ตอนแรกที่ผมเซ็ตไว้ทำไมมันไม่ตรงอ่ะครับ
↓ ความเห็นจากไอพีแอดเดรส 58.8.141.34 เมื่อเวลา 09:32, 8 มกราคม 2553 (UTC)
ตอนทำ Euler ให้ทำแบบนี้ครับ
eul = Euler(40,15,0); quat = eul.toQuat() eul2 = quat.toEuler() print eul print eul2 [40.000000, 15.000000, 0.000000](euler) [40.000000, 15.000001, 0.000000](euler)
คืออย่าไปหมุนมันทีละแกนครับ ถ้าจะหมุนทีละแกนแบบนั้นต้องสลับ axis order เช่นหมุน z ก่อนค่อยหมุน y และ x ตามลำดับ เพราะเข้าใจว่าถ้าหมุนแบบนั้นมันจะจับผ่าน quaternion ตลอด เพื่อไม่ให้เกิด gimbal lock ครับ