こんにちは!ビーバーです。
Mayaを使っていると、「同じ操作を何度も繰り返していて大変!」と感じることはありませんか?そんなときに便利なのがPythonの「リスト」という仕組みです。
リストを使えば、たくさんのオブジェクトを一括で管理したり、まとめて処理したりすることができます。これにより、作業の効率がグッと上がり、手作業のミスも減らせます。
今回は、Pythonが初めての方でもわかりやすいように、Mayaでリストを使うメリットや具体的な活用例を紹介します。Python向けドキュメントを読んでいまいちピンとこなかった方も、Mayaでのリストの使い方をつかんでいただくことができますよ!

※当サイトで紹介する商品は、アフィリエイトプログラムを利用しています。
リストってなに?
リストとは、データを「順番に並べておく箱」のようなものです。たとえば、Mayaで作成した複数のオブジェクトの名前をひとつのリストにまとめておけば、あとでまとめて移動させたり、削除したりするのが簡単になります。
Pythonでは、リストは []
(角括弧)を使って作ります。
my_list = ["Cube1", "Cube2", "Cube3"]

この状態は、Cube1,Cube2,Cube3って文字列をリストにしただけで、
シーンにホントに3つのオブジェクトがあるかとは別になるよ。

どういうこと、、??()

じゃあ、シーンに3つのキューブを作って、
その名前をリストにするのをやってみよう。

pCube1,2,3をシーンに作ります。この3つのオブジェクトの名前をリストにしてみましょう。
キューブ3つを選択した状態で、以下のスクリプトを実行します。
>>実行のしかたがわからない!という方はこちらを読んでみよう
my_objects = cmds.ls(selection=True)
このスクリプトを実行すると、変数objの中に、3つのオブジェクト名が入ります。
変数の中身を確認するには、print(変数名)と書いて実行します。
print(my_objects)

スクリプトエディタのヒストリに、結果が出力されます。

おおーーーーっ!!シーンにあるキューブの名前が出たね!
>>lsコマンドをもっと知りたい方はこちらもどうぞ!
【maya python4限目】階層内の骨だけを選択するスクリプトを作ろう
【maya python】 lsをかんたん解説!
リストを使ってできること
では、Mayaでリストを使うとどんな便利なことができるのでしょうか?
① たくさんのオブジェクトをまとめて選択する
いちどオブジェクト名をリストに入れておけば、後から何度でも使うことができます。
オブジェクトを選択し、my_objects = cmds.ls(selection=True)を実行した後、選択解除し以下のスクリプトを実行します。
cmds.select(my_objects)
このスクリプトを実行すると、my_objectsリストに入っているオブジェクトを一気に選択できます。

ひとつずつ選択する手間がはぶけて便利だね!
② オブジェクトを一括で移動させる
for obj in my_objects:
cmds.move(5, 0, 0, obj, relative=True)
このコードを実行すると、リストに入っているすべてのオブジェクトがX軸方向に5ずつ移動します。手作業でひとつずつ動かすよりもずっと楽ですよね!
③ まとめてアニメーションのキーを打つ
for obj in my_objects:
cmds.setKeyframe(obj, time=(0,0), attribute='rotateY', value=0)
cmds.setKeyframe(obj, time=(60,60), attribute='rotateY', value=360)
このスクリプトを使うと、リストに入っているオブジェクトすべてに対して、0f目にrotY=0のキーと、60f目にrotY=360のキーを打ちます。

リストって、便利だねええ~~!!

でしょう?!リストの作り方も色んな方法があるんだ。
オブジェクトの種類でリストを作ることもできるんだよ
特定の種類のオブジェクトだけをリスト化する
mesh_objects = cmds.ls(type="mesh")
lsコマンドのtypeというフラグに、オブジェクトのタイプを書くと、そのタイプにマッチしたシーン内のすべてのオブジェクトをリストにまとめてくれます。

タイプ名のところは、“mesh“ ってダブルクオートで囲うんだね

そうだよ!文字列でタイプを指定するんだ。
ノードのタイプ名はアトリビュートエディタからわかるよ!

まとめ
リストを使うと、Mayaでの作業をスムーズに自動化できます。特に、「たくさんのオブジェクトをまとめて扱いたい」ときにとても便利です。
今回紹介したテクニックを活用すれば、モデリングやアニメーションの作業をもっと効率的に進められるはずです。ぜひ、いろいろな場面で試してみてください!
本サイトの【まとめ】 maya python 基礎 入門!では、
10回シリーズでmaya pythonの基礎が習得できるコンテンツを発信しています。
- ちまたのスクリプトを読んで、内容を理解したい
- mayaのスクリプトリファレンスの読み方を習得したい
- 自分で簡単なツールを書きたい
- 基礎的なmayaコマンドをpythonで使えるようになりたい
など、mayaでpython基礎を身に着けたい方は、ぜひご活用ください♪
コメント