簡単なスクリプト

Pythonスクリプトとは

Python 関数はファイルに書いておくと スクリプト エディタ から読み込むことによって、 何度でも同じ関数が実行できます。
Python 関数などが書き込んであるファイルを Pythonスクリプトと言います。
ファイルに書いておけば、そのファイルを消さない限り何度でも同じ Python スクリプトを実行できるし、 後で必要に応じて書き換えてゆくことによって違う処理を実行することができます。
そして、後で学習するように変数・制御構造などを使用することによって、 複雑な処理を行うプログラムを作ることができるようになります。
また、Python のスクリプトはファイル名を変えれば同じフォルダーに、いくつでも作っておくことができます。

作業用のフォルダー作成

これから授業を進めてゆく時の作業用フォルダーとして Python という名前のフォルダーを作成しておきましょう。

以後の授業で作成する Python スクリプトはすべてこの Python フォルダーの中に作るようにします。

スクリプトを作ってみる

スクリプトの作り方と実行例

まず、簡単な Python スクリプトを作る練習をしてみましょう。

  1. まず、Python フォルダーの中に test.py というファイルをエディター(gvimなど)によって作ります。
  2. ファイル(test.py)の内容は、以下のように書いておきます。
    import maya.cmds
    maya.cmds.sphere()
    maya.cmds.scale(1, 3, 1)
    
  3. ファイルを test.py というファイル名でセーブします。
  4. スクリプト エディタ から test.py を読み込んで実行します。
  5. y 軸方向にスケールがかかった球が表示されます。
    [test.mel によって表示された球]
  6. もう一度、エディタによって test.py を開いてください。
    そして、test.py の内容を以下のように書き換えます。
    import maya.cmds
    maya.cmds.sphere()
    maya.cmds.scale(2, 1, 1)
    maya.cmds.move(3, 0, 0)
    
  7. 書き換えたら、ファイル(test.py)をセーブしてください。
  8. 書き換えられた Python スクリプトは、あらためて スクリプト エディタ に読み込んで実行する必要があります。
    ファイル → スクリプトのロード によって読み込んで実行してください。
  9. 2 個目の球が表示されます。
    [コマンドの表示された スクリプト エディタ]

スクリプトの保存方法

スクリプト エディタ 内に表示されているコマンドをファイルに保存することができます。
保存しておいたファイルは上記の方法によっていつでも実行できます。

  1. スクリプト エディタ のインプットウインドウに以下のようなコマンドを打ち込んでください。
    [コマンドの表示された スクリプト エディタ]
  2. 打ち込んだコマンドをマウスで選択します。
    [コマンドが選択された スクリプト エディタ]
  3. スクリプト エディタ の ファイル → スクリプトの保存... によってファイルに保存します。
    保存するファイル名は最後に .py をつけた名前にします。
    ここでは test2.py にしておいてください。
    [ファイルダイアログ]
  4. では、保存した Python スクリプトを読み込み直して実行してみましょう。
    (2, 3, 4) の位置に球が表示されたでしょうか。
    [test2.mel を実行した結果]

スクリプト エディタ の メニュー

スクリプト エディタ のメニューおよび、アイコンについて一通り説明しておきましょう。

[スクリプト エディタ の ファイル メニュー]
ファイル → スクリプトのロード
スクリプト エディタ に Python スクリプトを読み込み、インプットウインドウに表示します。
表示された Python スクリプトを実行するにはテンキーの Enter キー、 または、Ctrl + Enter キーを押します。
キーボードショートカットは Ctrl+o です。
ファイル → ソーススクリプト
読み込んだ MEL スクリプトを実行します。
ファイル → スクリプトの保存
スクリプト エディタ 上で選択された部分の Python スクリプトをファイルに保存します。
キーボードショートカットは Ctrl+s です。
ファイル → スクリプトをシェルフに保存
スクリプト エディタ 上で選択された部分の Python スクリプトを シェルフ に登録します。
マウスのドラッグ・アンド・ドロップによっても同じことが可能です。
[スクリプト エディタ の 編集 メニュー]
編集 → 元に戻す
編集した部分を取り消して、元に戻します。
ショートカットキーは Ctrl+z です。
編集 → やり直し
取り消した編集をやり直します。
ショートカットキーは Ctrl+y す。
編集 → カット
選択した部分を切り取ります。
ショートカットキーは Ctrl+x です。
編集 → コピー
選択した部分をコピーします。
ショートカットキーは Ctrl+c です。
編集 → ペースト
切り取ったりコピーした部分をカーソルの位置に貼り付けます。
ショートカットキーは Ctrl+v です。
編集 → すべてを選択
インプットウインドウに表示された Python コマンドを全て選択状態にします。
ショートカットキーは Ctrl+a です。
編集 → 次の行に進む
カーソルを指定した行に移動します。
ショートカットキーは Ctrl+l です。
編集 → 検索して置き換え
検索した文字を別の文字に変換します。
ショートカットキーは Ctrl+f です。
編集 → 選択項目のインデント
選択された行をインデントします。
ショートカットキーは Ctrl+] です。
編集 → 選択項目のインデント解除
選択された行のインデント取り消します。
ショートカットキーは Ctrl+[ です。
編集 → ヒストリのクリア
ヒストリーウインドウをクリアします。
編集 → 入力のクリア
インプットウインドウをクリアします。
編集 → すべてのクリア
ヒストリーおよびインプットウインドウをクリアします。
[スクリプト エディタ の ヒストリ メニュー]
ヒストリ → バッチ レンダーのメッセージ
バッチ レンダー時のログをヒストリウインドウに表示します。
ヒストリ → すべてのコマンドのエコー
チェックしておくと実行された MEL コマンドをすべてヒストリーウインドウに表示します。
GUI の操作によって実行された MEL コマンドがすべて表示されるようになります。
ヒストリ → エラーの行番号
チェックしておくと MEL スクリプトにエラーがあった場合、エラーのあった行番号を表示します。
MEL スクリプトのデバッグに便利なので必ずチェックしておきましょう。
これをチェックしておくと、以下の図のようにエラーのある行数が表示されるようになります。
[Show Line Number で表示された行番号]
上の図では、2行目(line 2)にエラーがあるのがわかります。
エラーメッセージの プロシージャ "moove" が見つかりません というのは、 そのようなコマンド(moove)は存在しないという意味です
ヒストリ → スタックトレースの表示
チェックしておくと不明の MEL コマンド・プロシージャーなどがあった場合、エラーのトレース結果を別ウインドウに表示します。
[トレース結果]
ヒストリ → ヒストリの出力
コマンドの結果をヒストリウインドウに表示します。
サブメニューにおいて、 両方とも表示 にチェックを入れると MEL と Python の両方、 MEL のみ表示 にチェックを入れると MEL コマンドの結果のみ、 Python のみ表示 にチェックを入れると Python コマンドの結果のみを表示します。
[スクリプト エディタ の ヒストリの出力 メニュー]
ヒストリ → コマンド結果を表示しない
MEL および Python コマンドを実行した結果(// 結果:)が表示されなくなります。
ヒストリ → 情報メッセージを表示しない
コマンドを実行した結果のメッセージ・エラーメッセージ・警告メッセージ以外の、 さまざまな情報が表示されなくなります。
ヒストリ → 警告メッセージを表示しない
警告メッセージ(// 警告:)が表示されなくなります。
ヒストリ → エラーメッセージを表示しない
エラーメッセージ(// エラー:)が表示されなくなります。
ヒストリ → スタックウインドウを表示しない
スタックウインドウを表示しなくなります。
[スクリプト エディタ の コマンド メニュー]
コマンド → 新規タブ
スクリプト エディタのインプットウインドウに新しいタブを追加します。
このメニューを選ぶと、以下のダイアログが表示されるので MEL か Python を選ぶと、 選んだ言語を入力することのできるタブが追加されます。
[スクリプト エディタ の 新規タブ]
[スクリプト エディタ の 新規タブ]
コマンド → タブ名の変更
タブの名前を変更します。
コマンド → タブの選択
現在のタブを変更します。
サブメニューの で左のタブへ、 で右のタブへ移ります。
[スクリプト エディタ の タブの選択 メニュー]
コマンド → タブの削除
現在のタブを削除します。
タブが 1 つしかない場合は削除できません。
コマンド → 行番号の表示
インプットウインドウの行番号を表示します。
コマンド → クイックヘルプの表示
コマンドの簡単なヘルプを表示できるようになります。
クイックヘルプに調べたいコマンド名を入力して Enter キーを押すとフラグの一覧が表示されます。
[スクリプト エディタ の クイックヘルプ]
[スクリプト エディタ の クイックヘルプ]
コマンド → 実行
インプットウインドウに表示されている Python スクリプトを実行します。
選択されている関数があれば、その関数だけが実行され、 選択されている関数がなければ、スクリプトすべてを実行します。
テンキーにある Enter キー、または Ctrl + Enter によって実行するのと同じです。
[スクリプト エディタ の ヘルプ メニュー]
ヘルプ → Maya のヘルプ
ブラウザに Maya のヘルプを表示します。
ヘルプ → MEL のヘルプ
ブラウザに MEL のヘルプを表示します。
ヘルプ → Python のヘルプ
ブラウザに Python のヘルプを表示します。
ヘルプ → 選択したコマンドのヘルプ
ブラウザに スクリプト エディタのインプットウインドウで選択されているコマンドのヘルプを表示します。
ヘルプ → スクリプト エディタのヘルプ
ブラウザに スクリプト エディタ のヘルプを表示します。
ヘルプ → MEL コマンドリファレンス(英語)
ブラウザに MEL コマンドリファレンスを表示します。
ヘルプ → Python コマンドリファレンス(英語)
ブラウザに Python コマンドリファレンスを表示します。
ヘルプ → ノード&アトリビュートリファレンス(英語)
ブラウザにノード&アトリビュートリファレンスを表示します。
ヘルプ → メニューの検索
Maya のメニューから探したい文字列を含むものを検索します。
[スクリプト エディタ の メニュー項目の検索]
[スクリプト エディタ の メニュー項目の検索]

ツールバー

[*]
スクリプト エディタ に Python スクリプトを読み込み、インプットウインドウに表示します。
ファイル → スクリプトのロード と同じです。
[*]
読み込んだ MEL スクリプトを実行します。
ファイル → ソーススクリプト と同じです。
[*]
スクリプト エディタ 上で選択された部分の Python スクリプトをファイルに保存します。
ファイル → スクリプトの保存 と同じです。
[*]
スクリプト エディタ 上で選択された部分の Python スクリプトを シェルフ に登録します。
ファイル → スクリプトをシェルフに保存 と同じです。
[*]
ヒストリーウインドウをクリアします。
編集 → ヒストリのクリア と同じです。
[*]
インプットウインドウをクリアします。
編集 → 入力のクリア と同じです。
[*]
ヒストリーおよびインプットウインドウをクリアします。
編集 → すべてのクリア と同じです。
[*]
ヒストリウインドウのみを表示します。
[*]
インプットウインドウのみを表示します。
[*]
ヒストリウインドウ、インプットウインドウの両方を表示します。
[*]
チェックしておくと実行された MEL コマンドをすべてヒストリーウインドウに表示します。
ヒストリ → すべてのコマンドのエコー と同じです。
[*]
チェックしておくと MEL スクリプトなどにエラーがあった場合、エラーのあった行番号を表示します。
ヒストリ → エラーの行番号 と同じです。
[*]
インプットウインドウに表示されている Python スクリプトを実行します。
実行された Python スクリプトはインプットウインドウに残ります。
[*]
インプットウインドウで選択されている Python スクリプトを実行します。
コマンド → 実行 と同じです。
[*]
このアイコンの左にあるテキスト入力エリアに入力されている文字列を下方向に探します。
[*]
このアイコンの左にあるテキスト入力エリアに入力されている文字列を上方向に探します。
[*]
このアイコンの左にあるテキスト入力エリアに入力されている行数の行に移動します。

Tips (デバッグ方法)

Python スクリプトにエラーが出た時は以下のような手順で調べてデバッグ(エラーを修正)してください。

  1. 以下のようなスクリプトを実行したとします。
    import maya.cmds
    maya.cmds.sphera()
    maya.cmds.move(3, 0, 0)
    
  2. エラーのある行番号とエラーの理由を調べます。
    ヒストリーウインドウに
    # エラー: 'module' object has no attribute 'sphera'
    # Traceback (most recent call last):
    # File "", line 2, in ?
    # AttributeError: 'module' object has no attribute 'sphera' #

    などというエラー表示が出ているはずです。
    この場合は # File "", line 2, in ? という表示によって 2 行目にエラーがあるのがわかります。
    # エラー: 'module' object has no attribute 'sphera' #
    と表示されているので、"sphera" という部分がおかしいのがわかります。
  3. 2 行目を調べてエラーを見つけたら、その箇所を直します。
    上の例では sphera の関数名を正しい名前(sphere)に変更すれば良いでしょう。
  4. この例ではすぐにエラーの理由がわかりましたが、もし、いくらエラー表示の出ている行を調べてもエラーが見つからない場合は、 その行目より前の行を順番に調べてみてください。 エラーの表示は文法的に矛盾が見つかった行に出るので、その行より前の部分にエラーがある場合があります。

練習

まとめ

参考


Prev | Next
Home | Contents
Mail