matrix
matrix(矩陣) - 在Maya中是由16組數字組成的4x4矩陣,在api.OpenMaya裡面有許多函數可以使用,若需要計算則須利用那些函數進行運算達到最終目的
1 . MMatrix
單純為一個matrix的表示,可以將不是matrix的東西轉換為matrix,他只考慮那些數字,沒有位移、旋轉、縮放的概念,只須給他16組數字就可以使用MMatrix轉換為matrix
舉例:
num = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
num_Matrix = om.MMatrix(ttt)
Result: maya.api.OpenMaya.MMatrix(((1, 2, 3, 4),
(5, 6, 7, 8),
(9, 10, 11, 12),
(13, 14, 15, 16)))
2 . Multiply Matrix
將兩個matrix做相乘就是Multiply Matrix,相乘的兩個數不可對調,就是算式AxB不可改為BxA
舉例:
Matrix1 = om.MMatrix([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])
Matrix2 = om.MMatrix([0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1])
multMatrix = Matrix1 * Matrix2
3 . Inverse Matrix1(逆矩陣)
將矩陣顛倒就是逆矩陣
舉例:
Matrix1 = om.MMatrix([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])
inverse = Matrix1.inverse()
4 . MTransformationMatrix
上述提到普通的MMatrix是沒有位移、旋轉、縮放的概念的,因此也無法從中得到相對應的信息,若需要提取到位移、旋轉、縮放便需要使用到這個MTransformationMatrix的幫助,使用後打印出來雖然無法得到任何資訊,但實際上已經可以被我們調用了
xf_values = cmds.xform('pSphere1',q=1,m=1)
xf_values_mat = om.MMatrix(xf_values)
xf_mat = om.MTransformationMatrix(xf_values_mat)
#om.MSpace.kWorld是指取得WorldSpace#
translation = xf_mat.translation(om.MSpace.kWorld)
rotation =[ math.degrees(x) for x in xf_mat.rotation().asVector()]
scale = xf_mat.scale(om.MSpace.kWorld)