【maya python9限目】スクリプトを保存・呼び出して使おう!

mayapy09 python入門
過去セミナー再配信のお知らせ

過去2回のセミナーが期間限定でアンコール配信中です!
「MayaPython習得に苦しんだ過去の自分に教えてあげたい。。」調べてもわからなかったこと、教えて欲しかったことを、とことん詰め込みました。初心者の方はぜひご覧ください!

ツール作成の全体フローを最短距離で体験できます。スクリプト未経験の方におすすめ!
https://tutorials.cgworld.jp/set/2050

Mayaのオペレーションの自動化について徹底解説。様々な操作を自動化できるようになります
https://tutorials.cgworld.jp/set/2041

こんにちは!ビーバー@ゲーム業界歴約20年 です。maya python初心者の方のために、カンタン・わかりやすい解説サイトを作っています。

maya pythonの学習情報って少ないですよね。自分が骨を折った経験をもとに、maya python基礎を最速で習得できる10回のチュートリアルを作ってみたので参考にしていただければ幸いです。

今回は、9回目。pythonスクリプトを保存し、importで呼び出す方法を学びます。「モジュール」や「関数」を扱えるようになると、誰かのツールを利用したり、既存のものに機能を追加していったりすることができますよ!

このチュートリアルでわかること
  • pythonスクリプトを保存する方法
  • 保存したスクリプトをimportで呼び出す方法
  • 「モジュール」「関数」とは何か

>> Pythonの勉強方法を知りたい方はこちらをどうぞ

※当サイトで紹介する商品は、アフィリエイトプログラムを利用しています。

スクリプトを保存する方法

スクリプトの保存は2ステップです。

  1. スクリプトの「関数化」を行う
  2. .pyファイルとして保存

今回保存するものは、
8限目で作成した、「コーンのらせん状配置」のスクリプトを使ってみます。

mayapy09_02
スクリプト実行後の様子
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とします。

モジュールの保存ができました。

.py file

スクリプトをimportで呼び出す方法

次に、保存したスクリプトを別シーンから呼び出す方法を見ていきましょう。
手順は2ステップです。

  1. mayaにモジュールをインポートする
  2. モジュールの中の関数を実行する

スクリプトエディタに以下のように書きます。

import mayapy08
mayapy08.spiralCone()
ハムちゃん
ハムちゃん

1行ずつ解説していくね!

モジュールをインポートする

import mayapy08

モジュールは、pythonコマンドの import で呼び出すことができます。

import ○○○○(モジュール名)

モジュール名の後に、拡張子.pyは必要ありません。
import は、モジュールを読み込むだけで、中身の実行は行わないので注意しましょう。

モジュールの中の関数を実行する

mayapy08.spiralCone()

呼び出したモジュールの中の関数を実行するには、
「モジュール名.関数名()」 と書きます。

モジュール名.関数名()

ピヨちゃん
ピヨちゃん

mayapy08.py の中の spiralCone関数 を呼び出すから、
mayapy08.spiralCone() なんだね!

ハムちゃん
ハムちゃん

そう!簡単でしょ?

スクリプトの保存と実行はこれだけです!

それでは、保存したスクリプトを呼び出して実行してみましょう。
スクリプトを実行するシーンはこちら↓

mayapy09_01

mayapy08.py を呼び出して、spiralCone()関数を実行します。

import mayapy08
mayapy08.spiralCone()
mayapy09_02
スクリプトの実行結果

期待通りの結果がえられました!

まとめ

今回学習した内容のポイントをまとめます。

学習のポイント

スクリプトの保存方法
  処理の関数化を行う
  .py形式で保存する

スクリプトの読み込み方法
  import モジュール名 で読み込む
  モジュール名.関数名() で関数を実行する

ピヨちゃん
ピヨちゃん

4限目で作った、階層内の骨だけ選択するツール
6限目の、アトリビュートのロックツール
なんかをモジュールにしてみようかな!

ハムちゃん
ハムちゃん

いいねえ!よく使う操作を保存しておくと
作業を効率化できそうだね。

次回は、GUIの作成と、ボタンからスクリプトを実行する方法を解説します。
お楽しみに!

eはじめてpython学習するなら!

はじめてプログラミングを勉強するとき、エラーはつきものですよね。
何時間もスクリプトが動かないこともしばしば。。
そんな時、くわしい人に教えてもらいたい、と思うことはありませんか?

侍テラコヤは、はじめてpythonを学習する方にピッタリのサービスです。
サブスク型オンラインスクールで、月¥2980~の良心的なお値段!

現役エンジニアのサポートが充実しており、
オンラインのマンツーマンレッスンとQ&A掲示板で即座に悩みを解決することができます

maya python基礎

本サイトの【まとめ】 maya python 基礎 入門!では、
10回シリーズでmaya pythonの基礎が習得できるコンテンツを発信しています。

  • ちまたのスクリプトを読んで、内容を理解したい
  • mayaのスクリプトリファレンスの読み方を習得したい
  • 自分で簡単なツールを書きたい
  • 基礎的なmayaコマンドをpythonで使えるようになりたい

など、mayaでpython基礎を身に着けたい方は、ぜひご活用ください♪

オススメの本。pythonが楽しく学べます☆

復習はこちら↓

コメント

タイトルとURLをコピーしました