[初心者]MAYAアーティストが0から始めるPythonスクリプト入門

maya_python_frst_topimage
 
アーティスト・デザイナーはプログラミングを学ぶ事をオススメします。

作業効率を上げられ、プログラマーとのコミュニケーションがスムーズになり
ケアレスミスも減らすことができる。

プログラミングを覚えて無駄になることはまず考えられません。

決してプログラマーに成るレベルまで習得する必要はないですが、
自分の作業が楽に成る程度のプログラミングを習得するだけでも大きな変化を得られますし、学習の難易度も想像するほど難しくありません。

今回は「MAYAアーティストが0から始めるPythonスクリプト入門」と題して、
プログラミング初心者のMAYAアーティストに向けた、PythonスクリプトでMAYAを操る基本的な記述方法を紹介する内容にしたいと思います。

プログラムのめんどくさいコウシャクは置いといて、こんな感じのコマンドを書いたら、あんな感じに動いた。みたいなノリで読んでもらえたらと思います。

 

MAYAのスクリプティング環境-スクリプトエディター-

MAYAにはスクリプトを書くための機能が最初から付いています。
MAYAを立ち上げ全画面の右下にある

をクリックすると
 
スクリプトエディターが立ち上がります。
上にテキストが表示されている窓、下に何も書かれていない窓の2分割になっています。

スクリプトを書くのは下の窓、上の窓には実行された結果が表示されます。

ちなみにMAYAのメニューから Create>Polygon primitives>Cube

でポリキューブを生成すると
上の窓にポリキューブを生成するコマンド何が生成されただとかエラーだとか実行結果がMELスクリプトで表示されます。
polyCube -w 1 -h 1 -d 1 -sx 1 -sy 1 -sz 1 -ax 0 1 0 -cuv 4 -ch 1;
// Result: pCube1 polyCube1 //

※当然MAYAなのでMELでスクリプトは書けますが今回はPythonに集中。

下窓に MEL Python のタブがあるでしょうか?

あればPythonタブを選んでください。

なければ、タブの右にあるプラスマークを押してください。

MELとPythonどちらか選ぶよう促されるのでPythonを選んでください。

そうすると、Pythonタブが追加されます。

Pythonタブを選択した窓にこれからスクリプトを書いていきます。
 

Pythonで「Hello world」を表示

どのプログラム言語の学習でも最初に試すのが

「Hello world」の表示

とてもシンプルで簡単だけど、ずっと使う事になる大事なコマンドです。

Pythonスクリプトで文字を出力表示するには

print()

を使います。

以下のスクリプトをスクリプトエディターの下の窓に書いてください。

print("Hello world")

スクリプトコードを選択状態にして[Ctrl]を押しながら[Enter]を押します。

maya_python_frst_print_helloworld


結果:

Hello world

スクリプトエディターの上の窓に Hello world と表示されたら成功です。


print()の「()」の中に記述した内容がスクリプトエディターの上の窓に出力表示されます。

「()」に記述できるのは文字だけでは無く数値も記述できますが、記述方法に違いがあります。

文字を記述する場合は

pirnt(“文字”)

と「“”」で囲みましたが数値を記述する場合は

print(123)

と囲むことはしません。

print()の出力表示に関する事はまだまだ沢山ありますが、この記事ではこの辺りで。

MAYAのスクリプトをPythonで書きます宣言

 
ここから実際にMAYAスクリプトをPythonを書いていきます。
 
まず最初に以下の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行を選択した状態で
[Ctrl]を押しながら[Enter]を押すとスクリプトが実行されます。

Plcube01

うまく生成されたでしょうか?

生成されない場合は、スペルが間違ってないか、2行選択してるか、確かめてもう一度実行してみてください。

maya_python_frst_codesel

[Enter]だけで押すと実行はされますが、せっかく書いたスクリプトが消えてしまうので気を付けてください。


スポンサーリンク

ポリキューブを移動するPythonスクリプトの書き方

cmds.polyCube()は消す、もしくは

#cmds.polyCube()

#を先頭に追加してコメントアウト(只のテキスト化)してください。


※コメントアウトについての記事はコチラ
https://liquidjumper.com/maya/python-comment-out


今度は移動のコマンドを記述します

 cmds.move(-0.5, 0, 1) 

()の中の数字は左から順番にX,Y,Zの数字をいれて移動する座標を書きます。

ポリキューブが選択されて緑枠になっているのを確認、
先ほどと同じく、スクリプトを選択して[Ctrl]を押しながら[Enter]

plcube_move

移動しました。

cmds.move(-0.5,0,1, relative=True )
relative=True
を付け足すと、オブジェクトに対して相対的に移動します。

つまり実行するたびにその方向に移動し続けます。

ポリキューブが選択されて緑枠になっているのを確認して

スクリプトを選択して、

[Ctrl]を押しながら[Enter]
[Ctrl]を押しながら[Enter]
[Ctrl]を押しながら[Enter]
.
.
.

[Enter] をするたびに移動し続けます。

mayapython_move_relative

ポリキューブを拡大するPythonスクリプトの書き方

 cmds.scale(2,1,3) 

拡大縮小スケールのコマンドです。
1が元々のスケールなので()の中の数字の意味は(2倍,1倍,3倍)です。

これも同じくスクリプトを選択、 [Ctrl]を押しながら[Enter]で

plcube_scal

拡大しました。

ポリキューブの名前を取得Pythonスクリプト

生成したポリキューブをこれからスクリプトで操作します。


cmds.ls(sl=True)
 
と書いて、ポリキューブが選択されて緑枠になっているのを確認して

[Ctrl]を押しながら[Enter]

 
するとスクリプトエディターの上の窓に
# Result: [u’pCube1′] #

と表示されるはずです。

このポリキューブの名前は 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]ですが先ほど名前を出力したときの表示

# Result: [u’pCube1′] #

[ ]の中に入っている’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]で実行してみましょう。

 
pCube1
 
スクリプトエディターの上窓に[]が外れてpCube1と表示されたら成功です。

ポリキューブの名前を変更するPythonスクリプト

 
 cmds.rename("pCube1","newname") 
 
名前を変更するコマンドです。()の中は、最初が今の名前、後が変更したい名前
ポリキューブの名前は”pCube1″だとわかっているのでオブジェクトのポリキューブは選択しなくてもよいです。
 

スクリプトを選択して

[Ctrl]を押しながら[Enter]
 
Outlinerのポリキューブの名前が
newname
に変わっていると思います。

ポリキューブの名前を取得するスクリプトと組み合わせてみましょう

 
cube_name = cmds.ls(sl=True)
cmds.rename(cube_name[0],"newname2")
ポリキューブの名前を取得して、取得した名前をrenameの最初の項目に入れて、

変更したい名前を”newname2“にしました。

ポリキューブが選択されて緑枠になっているのを確認して
先ほどと同じく、スクリプトを選択して

[Ctrl]を押しながら[Enter]

変更されたでしょうか?
 

スクリプトをシェルフに登録

 
スクリプトエディターで書いたスクリプトをいちいち選択して[Ctrl]を押しながら[Enter]で実行するのは面倒です。


よく使うスクリプトが出来たらシェルフに登録するのをオススメします。

シェルフを追加する方法は簡単です、
スクリプトを選択してスクリプトエディターのメニューから

File > Save Script to Shelf..

シェルフに登録する超短い名前を付けてOKボタンで追加できます。
new shelf item

ココまで読んでMAYAのPythonに興味を持ったらコチラの記事も是非

[Python] for 文 繰り返し処理の使い方MAYAアーティストのスクリプト入門

まとめ

 
いかがだったでしょうか?

後半はもしかしたら難しく感じたかもしれません。


でも理解しがたい程の難しさではなかったのではないでしょうか

  • cmds.polyCube()と書いたらポリキューブが生成され
  • cmds.move(-0.5, 0, 1)と書いたら移動して
  • cmds.scale(2,1,3)と書いたら拡大し
  • cmds.rename(“name1″,”name2”)と書いたらオブジェクトの名前が変わる

これらのコマンドを組み合わせるだけで簡単なものなら直ぐに便利なスクリプトは出来てしまいます。

複雑なスクリプトを目指さないで、最初は簡単なモノから始めれば、複雑なスクリプトは後に難なく書けるようになるはずです。
 
CG制作の環境を良くするためにも是非Pythonを学習してみてください。
 

少しでも有益な情報であればうれしいです。

 

関連記事

2009年に出版されたMEL教科書。MAYAのスクリプトの本と言えば何は無くともこれだった。Pythonを書けるようになってもMAYAスクリプトの作法は別。MELだし古いけどMAYAでスクリプトを書きたいなら今でも購入するべき書籍です。


MEL教科書 第2版 – Mayaプログラミング入門 –


数少ないMAYA+Pythonの書籍。完全なプログラミング初心者向けというより、ある程度プログミングを書ける人向けかな。少しPythonに慣れてきたら購入を検討してみるのも良いかと。


Maya Python 完全リファレンス (Maya Python for Games and Film)


MAYA向けPythonの数少ない日本語書籍です。初心者+中級者向け


たっきゅんのガチンコツール開発部 Maya Python 101 (CG Pro Insights)

Twitter Facebook Pocket LINE はてブ

おすすめの関連記事:

次に読む記事としてオススメ

MAYAのスクリプトはlistから始まると言っても過言ではありません

スクリプティングに必須な条件分岐をする時はifを使います

Udemyを受講してみました。オンライン学習が気になる方は是非

MAYAのPythonスクリプト関連の記事はコチラ:
コチラの記事も読まれています
あわせてよく読まれている記事

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください