從Blender裡萃取模組資料(2)
前言
續前篇從Blender裡萃取模組資料(1),這次會說明物件Transform的資料如何萃取,在此做個紀錄。內容
萃取Transform的Position與Scale相當容易,直接從object的Property取得即可,但Rotation的部分就不能直接取得了,相看下圖Blender的旋轉模式 |
1. Quaternion(WXYZ)模式下,取roation_quaternion
2. XYZ Euler模式下,取roation_euler
3. XZY Euler模式下,取roation_euler
4. YXZ Euler模式下,取roation_euler
5. YZX Euler模式下,取roation_euler
6. ZXY Euler模式下,取roation_euler
7. ZYX Euler模式下,取roation_euler
8. Axis Angle模式下,取roation_axis_angle
旋轉模式在編輯器的預設值是"XYZ Euler",以我的需求來說,我會希望它是"Quaternion(WXYZ)",所以該怎麼轉換呢?只要將現在的旋轉模式轉到你想要的模式後,再去取對應的Property即可,整個Transform的資料萃取範例如下
import bpy tagObj = bpy.data.objects["Cube"] # print('Object postion:',tagObj.location) if obj.rotation_mode == 'QUATERNION': print('Object ratation(quaternion):',tagObj .rotation_quaternion) else: #save old ratation mode for recover it. oldRotationMode = obj.rotation_mode # obj.rotation_mode = 'QUATERNION' print('Object ratation(quaternion):',tagObj .rotation_quaternion) #Recover ratation mode obj.rotation_mode = oldRotationMode # print('Object scale:',tagObj.scale)
在取得非"Quaternion"時要把舊的模式記住,這只是為了恢復原本的操作模式,如果不介意旋轉模式被更改的話可以直接設成想要模式後取Property即可。
參考資料
Blender Documentation Contents相關文章
從Blender裡萃取模組資料(1)從Blender裡萃取模組資料(3)
沒有留言:
張貼留言