こんにちは!ビーバー@ゲーム業界歴約20年 です。maya python初心者の方のために、カンタン・わかりやすい解説サイトを作っています。
maya pythonの学習情報って少ないですよね。自分が骨を折った経験をもとに、maya python基礎を最速で習得できる10回のチュートリアルを作ってみたので参考にしていただければ幸いです。
今回は、9回目。pythonスクリプトを保存し、importで呼び出す方法を学びます。「モジュール」や「関数」を扱えるようになると、誰かのツールを利用したり、既存のものに機能を追加していったりすることができますよ!
※当サイトで紹介する商品は、アフィリエイトプログラムを利用しています。
スクリプトを保存する方法
スクリプトの保存は2ステップです。
- スクリプトの「関数化」を行う
- .pyファイルとして保存
今回保存するものは、
8限目で作成した、「コーンのらせん状配置」のスクリプトを使ってみます。
cone = "pCone1"
for i in range(15):
cmds.setAttr("locator1.ry",i*45)
cone2 = cmds.duplicate(cone)
cmds.parent(cone2,w=True)
cone2 = cone2[0]
cmds.setAttr(cone2+".ty",i*1)
meshes = cmds.ls(type="mesh")
conetranses = cmds.listRelatives(meshes,allParents=True)
for trans in conetranses:
aimcon = cmds.aimConstraint("locator2",trans,offset=(0,0,-90))
cmds.delete(aimcon)
スクリプトの「関数化」を行う
最初に、スクリプトを関数化しましょう。
関数化とは、複数行にわたって作成した処理を、1つの処理のまとまりとして定義することです。
例えば8限目の「コーンをらせん状に配置するスクリプト」は、
12行で処理を行っていましたが、
それを「関数化」すると、ひとつのコマンドとして呼び出すことができます。
関数は、下記の文章で定義することができます。
def ○○関数名○○():
␣␣␣␣関数化したい処理
関数名は自由に決めていいんだね。
そうだよ、「コーンをらせん状に配置するスクリプト」の関数名を
spiralConeとして、関数を定義してみるね。
def spiralCone():
cone = "pCone1"
for i in range(15):
cmds.setAttr("locator1.ry",i*45)
cone2 = cmds.duplicate(cone)
cmds.parent(cone2,w=True)
cone2 = cone2[0]
cmds.setAttr(cone2+".ty",i*1)
meshes = cmds.ls(type="mesh")
conetranses = cmds.listRelatives(meshes,allParents=True)
for trans in conetranses:
aimcon = cmds.aimConstraint("locator2",trans,offset=(0,0,-90))
cmds.delete(aimcon)
関数を定義すると、spiralCone()の1行だけでこの処理ができるんだよ!
.pyファイルを保存する
定義した spiralCone() 関数を、.py(python形式)で保存しましょう。
保存された.pyファイルのことを、モジュールと言います。
前処理として、スクリプトの冒頭に「from maya import cmds」を追記します。
from maya import cmds
def spiralCone():
cone = "pCone1"
for i in range(15):
cmds.setAttr("locator1.ry",i*45)
cone2 = cmds.duplicate(cone)
cmds.parent(cone2,w=True)
cone2 = cone2[0]
cmds.setAttr(cone2+".ty",i*1)
meshes = cmds.ls(type="mesh")
conetranses = cmds.listRelatives(meshes,allParents=True)
for trans in conetranses:
aimcon = cmds.aimConstraint("locator2",trans,offset=(0,0,-90))
cmds.delete(aimcon)
スクリプトエディタの
ファイル>スクリプトの保存… から
マイドキュメント>maya>scripts 以下に
.py形式で保存。名前はmayapy08.pyとします。
モジュールの保存ができました。
スクリプトをimportで呼び出す方法
次に、保存したスクリプトを別シーンから呼び出す方法を見ていきましょう。
手順は2ステップです。
- mayaにモジュールをインポートする
- モジュールの中の関数を実行する
スクリプトエディタに以下のように書きます。
import mayapy08
mayapy08.spiralCone()
1行ずつ解説していくね!
モジュールをインポートする
import mayapy08
モジュールは、pythonコマンドの import で呼び出すことができます。
import ○○○○(モジュール名)
モジュールの中の関数を実行する
mayapy08.spiralCone()
呼び出したモジュールの中の関数を実行するには、
「モジュール名.関数名()」 と書きます。
モジュール名.関数名()
mayapy08.py の中の spiralCone関数 を呼び出すから、
mayapy08.spiralCone() なんだね!
そう!簡単でしょ?
スクリプトの保存と実行はこれだけです!
それでは、保存したスクリプトを呼び出して実行してみましょう。
スクリプトを実行するシーンはこちら↓
mayapy08.py を呼び出して、spiralCone()関数を実行します。
import mayapy08
mayapy08.spiralCone()
期待通りの結果がえられました!
まとめ
今回学習した内容のポイントをまとめます。
いいねえ!よく使う操作を保存しておくと
作業を効率化できそうだね。
次回は、GUIの作成と、ボタンからスクリプトを実行する方法を解説します。
お楽しみに!
オススメの本。pythonが楽しく学べます☆
復習はこちら↓
コメント