【覚書】maya python入門 其の十三
今回はmaya.cmdsを使ってXMLの簡単な例を書いてみたいと思います。
SIではJSを使えば、結構簡単に出力、読み込みができましたが
Pythonでやるのが、未経験だったのでメモに。
今回は、シーンのディスプレイレイヤーを取得し
それをXMLとして出力してみます。
早速コード
# -*- coding:utf-8 -*- import maya.cmds as cmds import xml.dom.minidom as xml import codecs imp_XML = xml.getDOMImplementation() doc = imp_XML.createDocument(None, 'SceneLayers', None) top_element = doc.documentElement Disp_Layers = cmds.ls(typ ="displayLayer") for i in Disp_Layers: Member = cmds.editDisplayLayerMembers( i, query=True ) Layer = doc.createElement('Layer') Layer_attr = doc.createAttribute("layer_name") Layer_value = doc.createTextNode(str(Member)) Layer.appendChild(Layer_value) Layer_attr.value = str(i) Layer.setAttributeNode(Layer_attr) top_element.appendChild(Layer) print(doc.toxml('UTF-8')) # ファイルに保存 f = codecs.open('sample.xml', 'w', 'utf-8') doc.writexml(writer=f, encoding='UTF-8', newl='\n', addindent='\t') f.close()
上記のコードを実行するとmayaのデフォルトフォルダ
C:\Program Files\Autodesk\Mayaバージョン\bin
にXMLが保存されます。
※必要に応じてディレクトリーは変えてください。
そうすると、こんな感じで出力されています。
出力はこんな感じ。
細かいコマンドについては、他を参照いただければと思います。
超カンタンです。
では、次は簡単な解析を
# -*- coding:utf-8 -*- from xml.dom import minidom # ----- DOM生成 ----- # DOM 実装を取得 doc = minidom.parse('c:\\Program Files\\Autodesk\\Maya2016\\bin\\sample.xml') elements = doc.getElementsByTagName("Layer") for i, element in enumerate(elements) : print(element.childNodes[0].data )
XMLファイルを取得して、【Layer】以下のタグを取得しているだけ。
ここからMAYAで色んな処理を、噛ますと色々できるかと思います。
私は今回MAYA←→SIでレイヤー構造がうまくいかないので
作成しておりました。
細かい仕様は書かないですが、レイヤー以外にも
マテリアルや、モーションにも使えそうですね。
以上です。