Thai Blender Wiki
Advertisement
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 ครับ

Advertisement