ON-BLOG

CGのこと、あれこれ書いてます。

【覚書】maya python入門 其の四

肝心なことを書き忘れていたので、書いていきたいと思います。

色々書いてもあれなので、まずはコードを書いてみたいと思います。

import maya.cmds as cmds
oCube = cmds.polyCube(w=1,h=1,n="Cube_Make")
cmds.polyCube(oCube[0],e=True,sx=1,sy=2,sz=3)
oSx = cmds.polyCube(oCube[0],q=True,sx=True)
oSy = cmds.polyCube(oCube[0],q=True,sy=True)
oSz = cmds.polyCube(oCube[0],q=True,sz=True)
print oSx
print oSy
print oSz

f:id:tommy_on:20150629103846p:plain

立方体を作成して、サブディビジョンの値をを変えて、それをログに出しているだけです。
これで言わないといけない部分が

cmds.polyCube(oCube[0],e=True,sx=1,sy=2,sz=3)

この文の「e=True」という部分です。

前回は「getAttr」「setAttr」を使用して値を取得していましたが
MAYAは基本フラグを使用して
値を編集、取得できます。


それが上記文に書いている「e=True」これは「edit=True」の略語です。
文字通り「edit」なので、編集ができます。

参照(取得)は「q=True」「query=True」
上記スクリプトでいう

oSx = cmds.polyCube(oCube[0],q=True,sx=True)
oSy = cmds.polyCube(oCube[0],q=True,sy=True)
oSz = cmds.polyCube(oCube[0],q=True,sz=True)

の部分です。
queryの後にサブディビジョンの値を参照(取得)してます。
※サブディビジョンの値一気に取得できる方法ないのかな…


こんな感じでHELPをみて「E」「Q」マークがある物については
フラグの指定で値を編集、参照できたりします。
f:id:tommy_on:20150629103857p:plain

逆にその指定が無いフラグ、且つ取得編集ができるものについては
「getAttr」「setAttr」を使用して値をいじるわけですね。
あと、これもハマる部分なんですが、MAYAPythonって少数点の扱いがキチンとされていたりしますね。
なので、これで計算すると、四捨五入されてしまいます。

oNumber = 100/15
print oNumber

きちんと指定するとこんな感じ。
ただ、小数点を記載しただけです。

oNumber = 100.0/15.0
print oNumber

f:id:tommy_on:20150629103956p:plain
地味にハマる所ですよね。


こんな感じでフラグによる参照、編集のお話でした。
とこのまま終わると説明だけですげぇつまんない感じになりそうなので
一個だけ簡単なスクリプトを。
まずはコード。

import maya.cmds as cmds

cmds.window(title="Anather_Window",widthHeight=(720, 480))
cmds.paneLayout()
cmds.modelPanel()
cmds.showWindow()

SIでいう、オブジェクトビュー的な感じを作成するものです。
f:id:tommy_on:20150629104005p:plain

アニメーションする時によく使うので(SIで)。。

ただ、これHELPに載っていた内容なので、探ればまだまだ色々できそうです。


以上です。