SuiTechLog

Unity,Arduino,RaspberryPiなど、モノづくり系を気ままに書き残すブログ。

Maya Python メモ 2 コマンドプロンプト実行・行列演算など


行列演算を行う(OpenMaya


#単位行列を生成
ident_mat = om.MMatrix()

#nodeの行列を取得する
import maya.api.OpenMaya as om
node_mat = om.MMatrix(cmds.getAttr(node+".matrix"))

#nodeを含めたワールド行列をもとめる
node_wmat = om.MMatrix(cmds.getAttr(node+".worldMatrix"))

#nodeの逆行列を求める
node_inv_mat = node_mat.inverse()

#行列演算を行う
cul_mat = ident_mat *node_mat

コマンドを実行する

#subprocess.check_outputを使用する
import subprocess

 


#ここにコマンドを書く(今回はipconfigの立ち上げだけ)
com="ipconfig"

#DOS窓を表示しないオプション設定
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
startupinfo.wShowWindow = subprocess.SW_HIDE #コマンドを実行する。実行した戻り値をリストで回収できる subprocess.check_output(com.split(" "), startupinfo=startupinfo)

takuya-1st.hatenablog.jp

ファイルIOを行う

os.pathを使用する


import os
if os.path.isfile(__filepath):
#ファイルを書き込み用で開く
__fp = open(__filepath, 'r') #データ読み込み
__fp.read() __fp.close()

キーフレームの取得

#オブジェクトnodeの最初のキーフレームの取得
st = cmds.findKeyframe(node,w="first")

#オブジェクトnodeの最後のキーフレームの取得
end = cmds.findKeyframe(node,w="last")

#オブジェクトnodeのstの次のキーフレームを取得
#(ループでまわして、stを見つかったキーフレームに更新していけばすべてのキーがとれる)
next = cmds.findKeyframe(node,time=(st,st),w="next")

オブジェクトノードの情報

#ノードのタイプを取得
cmds.objectType(in_obj)

#ノードの子供を取得
cmds.listRelatives(node)