作業効率を上げられ、プログラマーとのコミュニケーションがスムーズになり
ケアレスミスも減らすことができる。
プログラミングを覚えて無駄になることはまず考えられません。
決してプログラマーに成るレベルまで習得する必要はないですが、
自分の作業が楽に成る程度のプログラミングを習得するだけでも大きな変化を得られますし、学習の難易度も想像するほど難しくありません。
今回は「MAYAアーティストが0から始めるPythonスクリプト入門」と題して、
プログラミング初心者のMAYAアーティストに向けた、PythonスクリプトでMAYAを操る基本的な記述方法を紹介する内容にしたいと思います。
プログラムのめんどくさいコウシャクは置いといて、こんな感じのコマンドを書いたら、あんな感じに動いた。みたいなノリで読んでもらえたらと思います。
|
index
MAYAのスクリプティング環境-スクリプトエディター-
スクリプトを書くのは下の窓、上の窓には実行された結果が表示されます。
ちなみにMAYAのメニューから Create>Polygon primitives>Cube
// Result: pCube1 polyCube1 //
※当然MAYAなのでMELでスクリプトは書けますが今回はPythonに集中。
下窓に MEL Python のタブがあるでしょうか?
なければ、タブの右にあるプラスマークを押してください。
MELとPythonどちらか選ぶよう促されるのでPythonを選んでください。
そうすると、Pythonタブが追加されます。
Pythonで「Hello world」を表示
どのプログラム言語の学習でも最初に試すのが
「Hello world」の表示
とてもシンプルで簡単だけど、ずっと使う事になる大事なコマンドです。
Pythonスクリプトで文字を出力表示するには
print()
を使います。
以下のスクリプトをスクリプトエディターの下の窓に書いてください。
print("Hello world")
スクリプトコードを選択状態にして[Ctrl]を押しながら[Enter]を押します。
結果:
スクリプトエディターの上の窓に Hello world と表示されたら成功です。
print()の「()」の中に記述した内容がスクリプトエディターの上の窓に出力表示されます。
「()」に記述できるのは文字だけでは無く数値も記述できますが、記述方法に違いがあります。
文字を記述する場合は
pirnt(“文字”)
と「“”」で囲みましたが数値を記述する場合は
print(123)
と囲むことはしません。
print()の出力表示に関する事はまだまだ沢山ありますが、この記事ではこの辺りで。
・Python学習 はじめの一歩「Hello world」を表示する- MAYAアーティストのスクリプト入門
MAYAのスクリプトをPythonで書きます宣言
import maya.cmds as cmds
これは MAYAのコマンド使います宣言です。
maya.cmds
MAYAのコマンド集?(語弊がありそうだけど無視)
をインポートすることで、PythonでMAYAを操作する事ができる様になります。
そんな感じの意味だと覚えておけば大丈夫です。
as cmds
スクリプトを何行も書いていくと
maya.cmds.XXXX
maya.cmds.ZZZZ
maya.cmds.YYYY
.
.
.
といちいち同じ記述をするのは面倒です。
そこで、as cmds と後ろに追加します。
こうする事で
cmds.XXX
cmds.ZZZ
cmds.YYY
と省略?短縮?して記述することが可能になります。
何行も書く事を考えると、この少しが大事です。
あとasの後は cmds 以外でも大丈夫です。
as cmd
as mayacmd
as mayamaya
等でも問題ありません。
でもcmdsをお勧めします。
多くの人がcmdsを使っているので、他の人が書いたスクリプトを参考にする等した場合に、迷うリスクが減ると思います。
ポリキューブを生成するPythonスクリプトの書き方
cmds.polyCube()
と書きます。
以下のPythonスクリプトを書いてください
import maya.cmds as cmds
cmds.polyCube()
うまく生成されたでしょうか?
生成されない場合は、スペルが間違ってないか、2行選択してるか、確かめてもう一度実行してみてください。
ポリキューブを移動するPythonスクリプトの書き方
cmds.polyCube()は消す、もしくは
#cmds.polyCube()
と#を先頭に追加してコメントアウト(只のテキスト化)してください。
※コメントアウトについての記事はコチラ
・https://liquidjumper.com/maya/python-comment-out
今度は移動のコマンドを記述します
cmds.move(-0.5, 0, 1)
()の中の数字は左から順番にX,Y,Zの数字をいれて移動する座標を書きます。
ポリキューブが選択されて緑枠になっているのを確認、
先ほどと同じく、スクリプトを選択して[Ctrl]を押しながら[Enter]
移動しました。
cmds.move(-0.5,0,1, relative=True )
relative=True
つまり実行するたびにその方向に移動し続けます。
ポリキューブが選択されて緑枠になっているのを確認して
スクリプトを選択して、
[Ctrl]を押しながら[Enter] [Ctrl]を押しながら[Enter] [Ctrl]を押しながら[Enter] . . .
[Enter] をするたびに移動し続けます。
ポリキューブを拡大するPythonスクリプトの書き方
cmds.scale(2,1,3)
拡大縮小スケールのコマンドです。
1が元々のスケールなので()の中の数字の意味は(2倍,1倍,3倍)です。
これも同じくスクリプトを選択、 [Ctrl]を押しながら[Enter]で
拡大しました。
ポリキューブの名前を取得Pythonスクリプト
生成したポリキューブをこれからスクリプトで操作します。
cmds.ls(sl=True)
と表示されるはずです。
このポリキューブの名前は pCube1 と分かりました。
(選択されているオブジェクトの名前が違ってたらその名前になります)
ポリキューブの名前を格納するPythonスクリプト
ここからプログラムっぽくなります。
cube_name = cmds.ls(sl=True) print(cube_name[0])
cmds.ls(sl=True)
は先ほどと同じで名前を取得しています。
その名前を
[cube_name]と名札を付けた箱に格納しました。
(箱の名札の名前は基本的に自由です。わかりやす名前にしましょう。)
※この箇所の詳しい説明は以下の記事を読んでみてください。
・Python list 配列を知らないと何も始まらない MAYAアーティストのスクリプト入門
print(cube_name[0])
print()でスクリプトエディターの上窓に()の中の文言を出力します。
そして、cube_name[0]ですが先ほど名前を出力したときの表示
[ ]の中に入っている’pCube1’の事です。
[ ]にはたくさんのモノが順番で入れられますが、今は pCube1 しか入っていません。
この[u’pCube1′]が入っている[ ]をcube_nameと名前を付けた箱と考えます。
cube_name = cmds.ls(sl=True)
cube_nameと名付けた箱[ ]には[u’pCube1′,u’pCube2′,u’pCube3′,u’pCube4′,u’pCube5′,]
と沢山モノを入れることが出来ます。
でも今は[u’pCube1′]一つしか入っていません。
cube_nameの箱から一番目のモノを取り出したい場合
cube_name[1]
と書きたいところですが、プログラムの世界は往々にして気難しいところがありまして。
一番目は0
二番目は1
三番目は2
と考える事が非常に多い、プログラム言語は基本的にはこの考え方です。
なので
cube_name[0]
[0]と書くのが正解
cube_name = cmds.ls(sl=True)
print(cube_name[0])
[Ctrl]を押しながら[Enter]で実行してみましょう。
ポリキューブの名前を変更するPythonスクリプト
cmds.rename("pCube1","newname")
スクリプトを選択して
[Ctrl]を押しながら[Enter]
ポリキューブの名前を取得するスクリプトと組み合わせてみましょう
cube_name = cmds.ls(sl=True)
cmds.rename(cube_name[0],"newname2")
変更したい名前を”newname2“にしました。
[Ctrl]を押しながら[Enter]
|
スクリプトをシェルフに登録
よく使うスクリプトが出来たらシェルフに登録するのをオススメします。
シェルフを追加する方法は簡単です、
スクリプトを選択してスクリプトエディターのメニューから
File > Save Script to Shelf..
ココまで読んでMAYAのPythonに興味を持ったらコチラの記事も是非
・[Python] for 文 繰り返し処理の使い方MAYAアーティストのスクリプト入門
まとめ
後半はもしかしたら難しく感じたかもしれません。
でも理解しがたい程の難しさではなかったのではないでしょうか
- cmds.polyCube()と書いたらポリキューブが生成され
- cmds.move(-0.5, 0, 1)と書いたら移動して
- cmds.scale(2,1,3)と書いたら拡大し
- cmds.rename(“name1″,”name2”)と書いたらオブジェクトの名前が変わる
これらのコマンドを組み合わせるだけで簡単なものなら直ぐに便利なスクリプトは出来てしまいます。
少しでも有益な情報であればうれしいです。
|
■MEL教科書 第2版 – Mayaプログラミング入門 –
2009年に出版されたMEL教科書。MAYAのスクリプトの本と言えば何は無くともこれだった。Pythonを書けるようになってもMAYAスクリプトの作法は別。MELだし古いけどMAYAでスクリプトを書きたいなら今でも購入するべき書籍です。
MEL教科書 第2版 – Mayaプログラミング入門
本書は、「MEL教科書」の第2版で、Autodesk Maya 2008以降に対応するために全面改定したものです。MEL入門者のための解説と練習および簡潔なリファレンスとして取りまとめたMayaユーザにとって座右の書です。
■Maya Python 完全リファレンス (Maya Python for Games and Film)
数少ないMAYA+Pythonの書籍。完全なプログラミング初心者向けというより、ある程度プログミングを書ける人向けかな。少しPythonに慣れてきたら購入を検討してみるのも良いかと。
Maya Python 完全リファレンス (Maya Python for Games and Film)
Maya上で実行できるPythonに焦点を当てた唯一の書籍現状のMELからPythonへ移行したい方や、Pythonを覚えてMayaをより効果的に使いたい方にお勧めです。
■たっきゅんのガチンコツール開発部 Maya Python 101 (CG Pro Insights)
MAYA向けPythonの数少ない日本語書籍です。初心者+中級者向け
たっきゅんのガチンコツール開発部 Maya Python 101 (CG Pro Insights)
プログラミングのムズカシイお話はさておき「ツールを作って実行を繰り返す」ことで、楽しさ、便利さを体験していきます。コードを書くのがはじめてでも大丈夫。エディタの使い方、Mayaでの実行方法から入り、徐々に高度なツールに移行していきます。
■現場で使えるMayaスクリプティング
一般的な操作の構文を簡易化するオープンソースのPython ライブラリ「PyMEL」でスクリプトを書きたい場合はコチラの書籍。
現場で使えるMayaスクリプティング
Mayaを学び、さらにスキルアップするには作業を自動化するスクリプトの学習が欠かせません。本書は、プログラミング未経験者向けに、CGクリエイターの作業を自動化するスクリプトの基礎知識と書き方を37の具体例を示しながらわかりやすく解説した入門書です。
|
|
BTOパソコンの草分け的ブランドFRONTIER(フロンティア) 3DCG/動画編集/ゲーム用途に合わせてCPUやGPUなどパーツを自由に選べてコスパにもこだわる方にオススメ。 |
|
|
|
|
|