過去2回のセミナーの再配信が終了しました。
ご視聴いただいたみなさま、大変ありがとうございました!
引き続きMaya Pythonを学習される方にとって役立つ情報を発信していきますので
今後ともどうぞよろしくお願いいたします。

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

Mayaのオペレーションの自動化について徹底解説。様々な操作を自動化できるようになります
https://tutorials.cgworld.jp/set/2041
こんにちは!ビーバー@ゲーム業界歴約20年python勉強中 です。スクリプト初心者の方に向けて、カンタン・丁寧なスクリプト解説サイトを作っています。
今日は、「スクリプトの入れ方、使い方がわからん!」というお悩みをお持ちの皆さんに、pythonスクリプトの入れ方、使い方を解説していきますよ~!
スクリプトの構造や、読みこみ方の基本についても解説していくので、今まで意識せず使ってきたものも「こういう仕組みだったのか!」とスッキリすると思います。それでは行ってみましょ~☆

※当サイトで紹介する商品は、アフィリエイトプログラムを利用しています。
スクリプトの入れ方
スクリプトの入れ方、、それはズバリ、
mayaの規定フォルダに.pyファイルを入れる
であります!

この1行が、わかるようでわからんのよ!(笑)
くわしくお願いしま~す☆

オッケー!じゃあ、まずは入れ方から見ていこう!
maya規定フォルダってどこ?
マイドキュメントのmayaフォルダの中です!
- C:\Users\ユーザ名\Documents\maya\scripts
→すべてのmayaバージョンで有効 - C:\Users\ユーザ名\Documents\maya\2020\ja_JP\scripts
→フォルダ名のmayaバージョンでのみ有効
※「ユーザ名」の部分は自分のアカウント名をいれましょう!

mayaフォルダ直下のscripts以下と、
バージョン別のフォルダ以下、どっちかにいれるといいんだね。

そうだよ!カンタンでしょ?

うん、規定の場所はわかったよ!
じゃあさ、自分で作ったフォルダにスクリプトは入れちゃだめなの?

その場合は、mayaにちゃんと教えてあげる必要があるよ。
やり方を紹介していくね。
※mayaのバージョンとpythonバージョンについては、この記事も読んでみよう!
※さっそく使い方を知りたい人は使い方へジャンプ!
自分で作ったフォルダに入れたい場合は?
MAYA_SCRIPT_PATHという、「環境変数」を設定する必要があります。

カンキョーヘンスー(泣)????

大丈夫!ようするに、mayaが見に行きたいパスを「MAYA_SCRIPT_PATH」っていう
ハコに入れとくってことだよ。
環境変数を設定する、Maya.envの場所
環境変数は、Maya.env というファイルに書いて指定します。
場所はここ↓
- C:\Users\ユーザ名\Documents\maya\バージョン名

Maya.envに、環境変数を追記
この Maya.env を、メモ帳などのテキストエディタで開いて、パスを書き足します。
書き足されたパスは、mayaの規定パスに追加される形でmayaから参照されます。
例えば、マイドキュメント以下にtestフォルダを作って、
そこにスクリプトをいれたいなら、、
Maya.env にこのように書きます。
MAYA_SCRIPT_PATH = C:\Users\ユーザ名\Documents\test\
.envを保存後、mayaを再起動
.envを保存後、mayaを再起動。…するとあら不思議!
mayaに、パスの通っているフォルダを問い合わせると、このとおり↓
ばっちりenvに書き込んだパスも見てくれるようになります。


おお!スゲー!
ねえねえ、パスの通っているフォルダって、どうやって問い合わせたの?

オッケー!じゃ、その方法も紹介しちゃうね☆
いっぱいある!パスの通っているフォルダの確認方法3つ
mayaが「ここに〇〇があるね」っと認識しているフォルダのことを、
「パスが通ってる」なんて言ったりします。パスが通っている場所の調べ方を 3つ紹介します。
python os.environ で調べる方法
スクリプトエディタの pythonタブに、以下のように記述して実行します。
from maya import cmds
import os
for path in os.environ["MAYA_SCRIPT_PATH"].split(";"):
print(path)

os.environ単体で調べると、1行になって返ってきちゃうから、
.split と forを使って、パスごとに改行するようにしているよ!

mel getenv で調べる方法
スクリプトエディタの MELタブに、以下のように記述して実行します。
getenv MAYA_SCRIPT_PATH;
実行結果は↓こちら。1行になっちゃってるので読みにくいですね(汗)

なので、改行表示させます。
pythonからmelを呼び出してfor文で処理します。こちら↓
import maya.mel as mm
pathes = mm.eval("getenv MAYA_SCRIPT_PATH;")
for path in pathes.split(";"):
print(path)

結果はpythonで調べた時と同じなので割愛^^
mel internalVar で調べる方法
MELの internalVarコマンド では、
mayaが必ずスクリプトを探しに行く規定フォルダを調べることができます。
スクリプトエディタの MELタブに、以下のように記述して実行します。
internalVar -userScriptDir;

こんな感じでかえしてくれます。

個々人のPC環境によって、微妙にフォルダのパスが変わったりするけど、
このコマンドを使えば、自分の環境でmayaが見に行くフォルダがわかるよ!
オススメはデフォルトのmaya規定フォルダ
…というわけでまとめると、スクリプトの入れ方は、
デフォルトの規定フォルダに入れておけばOK!です。

カスタムフォルダは、複数メンバーで作業する場合、
みんなのパスをそろえる必要があったりして使うことが多いね。
用途に合わせてつかってみてね!


スクリプトの使い方
入れることができたので、つぎは呼び出して使う方法を解説!
モジュールをインポートし、 モジュール名.関数名() を実行
スクリプトの使い方は、
モジュールをインポートし、モジュール名.関数名()を実行
です!
モジュールをインポートし、モジュール名.関数名()を実行

なんじゃそら~~⤵(汗)なに言ってるか分からん、もっと簡単に教えて?(泣)

もちろんさ!さあ行くぞ~☆
インポート・モジュール・関数ってなんだそれ?解説!
つまり、
- インポートとは、規定のフォルダに入れた.pyファイルを
mayaで使えるように読みこんでおくことです。 - モジュールとは、.py形式で保存されたファイルのことです。
- 関数とは、.pyファイルの中で書かれている定型処理のことです。

次々によくわからんことを(笑)もっとわかりやすく教えて~?

OKOK!んではもっと砕いて!
インポートとは?
インポートとは、規定のフォルダに入れた.pyファイルを
mayaで使えるように読みこんでおくことです。

あれ?規定フォルダに入れてあるから、もう読めてるんじゃないの?

ううん、それがね、
「読みに行けるようになってる」という状態にはなってるけど、
実際の読み込みはまだされていないんだ。

ええー-?!そうなの?なんで?
maya規定の場所に .pyがおいてあれば、mayaはそれを読みに行ける状態ではあるのですが、
起動時に全部読みこむことはしません。
.pyは いくらでも増やせるため、もし膨大な量があったときに
それを起動時にすべて読もうとするとどうなるでしょうか、、
そう、立ち上がりがものすごく遅くなるかもしれません。
だから必要になったときに、都度読みこむほうが効率的なのです!
読み込みを行うには、pythonコマンドの「import」を使います。
文法は、このとおり。
import モジュール名
この一文で、mayaは認識しているパスの中に、モジュール名の.pyファイルがあるかを検索し、
あれば読みこみ、使えるようにしてくれます。

ち、、ちょっとまった!(汗)モジュールってなんだったっけ??

OK!じゃあモジュールの説明にいくね。
モジュールとは?
モジュールとは、.py形式で保存されたファイルのことです。
pythonで書かれたスクリプトは、.pyという拡張子で保存されます。(中身はテキスト)
いろいろな特定の定型処理を書いて保存しておき、使いたいときに読みこんで使用します。
このように特定の目的で保存された処理のことを、モジュールと言います。

なんだ .pyファイルのことか、、モジュールなんていうから
なんかすごいものなのかとビビったよ。。。

ふふっ。実際にやってみればイメージがつくよ。
実際のファイルで説明するね。


例として、 makePrimitives.py というファイルを作ったよ。
右側のメモ帳の画面は、.pyファイルを開いたところだね。

.pyファイルって、たいそうに感じてたけど
ただのテキストなんだね~
.pyファイルの構成
基本的な.pyファイルの構成は、こんな感じ↓です。
- 冒頭に定型処理のお名前宣言がかかれている
- その下に定型処理の中身が書かれている


def っていうのが、定型処理の名前を定義する宣言だよ。
その下の行からが、定型処理の中身になるんだ。

そうなんだ~!
そしたら、この makePrimitives モジュールには、
cmds.polyCube()、つまりポリゴンのボックスを作成するっていう
定型処理が入っているんだね!

そのとおり~~~!
関数とは?

ここまで理解出来たら、関数もバッチリだね!
関数とは、.pyファイルの中で書かれている定型処理のことです。
定型処理に名前をつけて、名前で呼び出せるようにしたものが関数です。
図の例だと、makebox() が関数名です。


そっか!じゃあ、↑図の makePrimitivesモジュールは
makebox関数、を持ってるってとらえればいいのかな?

そのとおり~~~!!


スクリプトの入れ方・使い方実例!
それでは、先ほどのmakePrimitives.pyの例をとって、
実際のスクリプトの入れ方・使い方を見ていきましょう!
かんたんにスクリプトをおさらいします。

スクリプト名は makePrimitives.py
中身の処理は、ポリゴンボックスを作成する、というシンプルなもの
関数名は、makebox() です。
入れ方実例
それではまず、スクリプトを入れます。
mayaの規定フォルダに.pyファイルを入れる
なので、、、maya規定フォルダに、makePrimitives.pyファイルを入れます。
【Maya規定フォルダの場所】
- C:\Users\ユーザ名\Documents\maya\2020\ja_JP\scripts
- C:\Users\ユーザ名\Documents\maya\scripts


バージョン名以下の方に入れたよ。
これでOK!特に再起動はいらないね。
※規定フォルダが個人環境で変わっている場合、かんたんに調べる方法はこちら!
使い方
次に使い方です。
モジュールをインポートし、モジュール名.関数名()を実行
なので、、、まず、モジュールをインポートします。
pythonでのインポート文はこのとおり↓
import モジュール名


実行したけど何も起こらないよ?(焦)

大丈夫!エラーがなければ、ちゃんと読みこめてるよ。
インポートができたら、関数を呼び出して実行します。
モジュール名.関数名()を実行


うわー!!ちゃんとボックスができたよ。
スクリプトをいれて使うことができたんだね。うれしー!

やったね☆!!
こちら↓では、作成したスクリプトを関数化して呼び出すまでの手順を紹介しています。
合わせてどうぞ~
【maya python9限目】スクリプトを保存・呼び出して使おう!
まとめ
スクリプトの入れ方・使い方をまとめます。

mayaの規定フォルダに.pyファイルを入れよう!
【Maya規定フォルダの場所】
- C:\Users\ユーザ名\Documents\maya\2020\ja_JP\scripts
- C:\Users\ユーザ名\Documents\maya\scripts

Maya.envに「環境変数」を指定するよ!
環境変数の中に、フォルダのパスを書くんだ。
自分が作ったフォルダにパスが通ったか確認する方法は3つ!

スクリプトを入れる場所のオススメは、デフォルトのmaya規定フォルダだよ!

つづきまして、スクリプトの使い方は?
モジュールをインポートし、モジュール名.関数名()を実行
- インポートとは?
規定のフォルダに入れた.pyファイルを、mayaで使えるように読みこんでおくことです。 - モジュールとは?
.py形式で保存されたファイルのことです。 - 関数とは?
.pyファイルの中で書かれている定型処理のことです。

OK!これでスクリプトの入れ方&使い方はバッチリだ☆
ジャンジャン使ってくれたまえ~~い!
はじめてプログラミングを勉強するとき、エラーはつきものですよね。
何時間もスクリプトが動かないこともしばしば。。
そんな時、くわしい人に教えてもらいたい、と思うことはありませんか?
侍テラコヤは、はじめてpythonを学習する方にピッタリのサービスです。
サブスク型オンラインスクールで、月¥2980~の良心的なお値段!
現役エンジニアのサポートが充実しており、
オンラインのマンツーマンレッスンとQ&A掲示板で即座に悩みを解決することができます。
本サイトの【まとめ】 maya python 基礎 入門!では、
10回シリーズでmaya pythonの基礎が習得できるコンテンツを発信しています。
- ちまたのスクリプトを読んで、内容を理解したい
- mayaのスクリプトリファレンスの読み方を習得したい
- 自分で簡単なツールを書きたい
- 基礎的なmayaコマンドをpythonで使えるようになりたい
など、mayaでpython基礎を身に着けたい方は、ぜひご活用ください♪


コメント