Python 入門
始めに
Python は 汎用のスクリプト言語です。
Python は Windows, Linux, Mac OS X などの主な OS 上でプログラミングを行って、
実行させることができます。
スクリプト言語なので、C++ や Java のようにコンパイルの必要もありません。
OS 固有の機能を使用していなければ、同じスクリプトがどの OS 上でも動作します。
Python によって作成できるプログラムは、ほとんどすべての分野に及びます。
CG、 Web、 データベース、科学計算、などです。
Python はさまざまなアプリケーションソフトをコントロールするためにも使用できます。
一般的かつ代表的なところでは、
Microsoft Word, Excel, Access, Internet Explorerなどがあります。
CG ソフトでは
Photoshop, Illustrator,
Maya, XSI, Hudini, Shade, Blender, Meta Seqoiya,
Motion Builder, Poser, Gimp, などが
Python によってコントロール・カスタマイズすることができます。
Maya をコントロールする Python
バージョン 8.5 から Maya でも Python が組み込まれて、
MEL に次ぐ第二のスクリプト言語として使用できるようになりました。
Maya に組み込まれた Python は、
MEL によってできることは、ほとんどすべて実行できます。
(ただし、エクスプレッションなど一部では Python を実行できません。)
- 複数の操作を Python 関数一つで実行する
- Maya の GUI (グラフィック・ユーザー・インターフェース)をカスタマイズする
- メニューだけで作ることが難しい大量のオブジェクトのモデリング・アニメーションができる
- 数式・プログラムによる複雑なモデリング・アニメーションができる
- メニューには無い独自の機能を追加することができる
- GUI を使わないモデリング・アニメーション・レンダリングを実行できる
それだけでなく、Python 独自の以下のような特徴があります。
- Maya のプラグインを作成できる
従来は C++ で作成する必要のあったプラグインを
Python によって作成できます。
これによって、より容易にプラグインの作成ができるようになります。
- 単独の Maya アプリケーションを作成できる。
Maya 本体を起動することなく、
Maya の機能を使った独立したアプリケーションを作成できます。
- オブジェクト指向のスクリプト言語である
- 膨大な Python のモジュールを使用できる
Python には、10 数年にわたって世界中で作成されてきた多くのモジュール(ライブラリ)
があります。
これによって、文字列処理、ファイル処理、GUI、Web、ネットワーク
やデータベースなどのほとんどの欲しい機能が、あらかじめ用意されています。
(ただし、あらかじめインストールされていないモジュールは、
別途インストールする必要がある場合もあります。)
Maya Python で勉強すること
ここでは Maya のモデリング・アニメーションなどを Python スクリプトを使用して行ない、
MEL ではできないプラグインの作り方、
Maya から独立した Python スクリプトの作り方、
外部のアプリケーションをコントロールする方法などを学びます。
- 基本的な Python の使い方・文法を、Maya 上で Python を使って、
簡単なモデリング・アニメーションをすることによって学習します。
- Python によってオリジナルの GUI を作る練習をします。
- Python でパーティクルなどのダイナミクスを制御するスクリプトを作り、
ダイナミクスの実験をしてみます。
- Python によるプラグインの作り方を学びます。
- Python による独立したアプリケーションの作り方をレンダリングツールを例として学びます。
- Python による外部アプリケーションのコントロール方法を、
学びます。
Python は非常に多機能なスクリプト言語です。
文法は C++ や Java などに比べれば、シンプルでわかりやすいものですが、
MEL に比べればできることが多い分、覚えることも多くなります。
これから学習することは、Maya で Python を使用する最低限の知識です。
ぜひ参考書や Web を参照して、より深く Python を学習してください。
必ずやっただけの見返りはあるはずです。
Python の概略
Maya 上の Python はモジュールと関数によって構成されています。
関数の数は 1000 以上あり非常に種類が多いのですが、もちろん最初から全部覚える必要はありません。
最初は基本的なものから覚えてゆき、後はマニュアルなどを参照しながら Python スクリプト作ってゆけば良いのです。
Python 関数の種類は以下の通りです。
- シーン関数 (シーンとその環境を操作するために使われる。 最も種類が多い)
- アドミニストレーション関数 (ファイル入出力、OSへのアクセスなど)
- ユーザーインターフェース関数 (GUI をつくる)
- ユーティリティ関数 (配列、カーブ、数学関数、乱数、色変換など)
MEL と Python の同じところと違うところ
後で学習するように、MEL と Python では文法がまったく違います。
しかし、以下のような同じところも存在します。
(同じところ)
- 基本的な型はほぼ同じ
整数・実数・文字列などがあり、
数値の演算子もほぼ同じ
ただし、Python の文字列は、' (シングルクォート)、" (ダブルクォート)、
""" (ダブルクォート 3 つ)で囲まれたものになる、など違いもあります。
- 変数がある
変数名の決め方はほぼ同じです。
ただし、変数宣言はありません。
- 制御構造がある
if, while, for などがあります。
- 関数がある
MEL のプロシージャに似た関数があります。
(違うところ)
- コマンドではなく、関数の実行によって処理を進める
- インデントでスクリプトの構造が決まる
- 変数に型宣言がない
- 変数に $ がつかない
- ; は必要ない
- リスト、辞書やタプルなどの型がある
- すべてのものがオブジェクトである。
- Python はオブジェクト指向の言語であり、クラスがある
- モジュールがある
- Python にはない MEL コマンドがある
print, warning, error
など
- エクスプレッションでは Python は使えない
コマンドラインからの実行
Python 関数を実行するためには様々な方法がありますが、まずは簡単な方法からやってみましょう。
最初に Maya メインウインドウの左下にあるコマンドラインに関数を入力する方法で
Python 関数を実行してみます。
なお、以下において Enter キーはキーボードの右端にあるテンキーのものを使うと、
いちいちフォーカスをコマンドラインにあわせる必要が無いので便利です。
- コマンドラインの左側に Python と表示されているのを確認します。
もし、表示が MEL になっていたらマウスクリックによって、Python と表示させておきます。
- コマンドラインをマウスによってフォーカスし、カーソルが出ている状態にしてください。
- コマンドラインに
import maya
と打ち込んで最後に Enter キーを押してください。
これによって、maya.cmds というモジュールが読み込まれます。
- 続けて、コマンドラインに
maya.cmds.sphere()
と打ち込んで Enter キーを押します。
これによって、maya.cmds モジュールの sphere という関数が実行されます。
- すると、半径1の NURBS の球がシーンに現れます。
次に今作られた球を、Python 関数を使って移動してみましょう。
- コマンドラインに
maya.cmds.move(3, 0, 0)
と打ち込んで Enter キーを押してください。
- すると球が(3, 0, 0)の位置に移動します。
- 次に、コマンドラインから
maya.cmds.move(0, 0, 3)
と打ち込み Enter キーを押しましょう。
- 今度は球が(0, 0, 3)の位置に移動しました。
作られたオブジェクトを回転、拡大・縮小するには maya.cmds.rotate()、
maya.cmds.scale() 関数を使います。
- コマンドラインから maya.cmds.rotate(0, 45, 0) と打ち込み、
Enter キーを押します。
- 球がローカル座標で Y 軸方向に 45 度回転したはずです。
- 次に、コマンドラインから maya.cmds.scale(1, 2, 1) と打ち込んで、
Enter キーを押します。
- 今度は球が Y 軸方向にスケールされます。
今、実行してきた関数は普段
GUI のメニューやチャンネルボックス・アトリビュートエディタなどで実行したり、
数値の設定を行ってきた操作ですが、Python 関数で同様なことが行なえるのがわかったと思います。
Tips
コマンドラインのフォーカスはテンキーの Enter キーを使わないとはずれてしまいますが、
で インターフェース 中の コマンドライン の フォーカスの保持 にチェックを入れておけば普通の Enter キーでもフォーカスがはずれなくなります。
練習
- 上のシーンにもう一つ NURBS の球を作って、その球も
maya.cmds.move() によって適当な位置に移動し、
move.cmds.rotate,maya.cmds.scale() を使って回転・スケールを実行してみましょう。
自分の思ったように移動・回転・スケールができたでしょうか。
- 球以外のプリミティブも作ってみましょう。
球以外のプリミティブには、例えば
maya.cmds.cone()
maya.cmds.nurbsCube()
maya.cmds.cylinder()
maya.cmds.polyTorus()
などがあります。
これらの関数をいくつか実行して、たくさんのオブジェクトを作り、
maya.cmds.move(),
maya.cmds.rotate(),
maya.cmds.scale() を使って好きなように並べてみましょう。
もちろん、プリミティブの種類はこれだけではありません。
興味のある人は関数名を調べて実行してみましょう。
(ヒント)
次に説明するスクリプトエディタを使用すると GUI から実行した関数を知ることができます。
スクリプトエディタによる関数の実行
Python を実行するもう一つの方法としてスクリプトエディタ(Script Editor)があります。
Python スクリプトを作成・実行するときには最も良く使われます。
スクリプトエディタ には以下のような利点があります。
- 複数の関数をまとめて入力することができます。
- エラーがあれば スクリプトエディタ のヒストリーウインドウに表示されます。
- GUI での操作によってどんな Python 関数が実行されているかわかります。
実行され Python 関数はヒストリーウインドウに表示されます。
- エディターで作成した Pythonスクリプトを読み込んで実行することができます。
スクリプトエディタ における関数の実行例
- メインウインドウのメニューバーから
によって スクリプトエディター を表示します。
または、メインウインドウの右下にあるスクリプトエディタアイコン
をクリックすることによっても表示できます。
2 つに分かれているウインドウの上のウインドウをヒストリウインドウ、
下のウインドウをインプットウインドウと呼びます。
- ヒストリウインドウ
- 実行された Python 関数と、その実行結果を表示します。
エラーがあった場合にはエラーの内容などが表示されます。
- インプットウインドウ
- 実行したい Python 関数を入力・編集するためのウインドウです。
左に表示されている 1 という数字は関数の行番号を表します。
- スクリプトエディターのインプットウインドウに関数を入力します。
インプットウインドウのタブを Python に変更します。
その後、インプットウインドウに maya.cmds.sphere() と入力してみてください。
- 入力した関数は以下のいづれかの方法で実行します。
- スクリプトエディター上のメニューバーから で実行。
- Ctrl + Enter キーを押す。
- キーボード右端の Enter キーを押す。
実行すると図のようにヒストリウインドウに表示されるはずです。
ヒストリウインドウの # 結果: の右に、
作られた球のノード名 nurbsSphere1, makeNurbsSphere1 が表示されているのに注意してください。
このように Python 関数を実行すると
# 結果:
と
#
の間に関数が返してくる文字列・数値などが表示されます。
- 半径 1 の NURBS の球がシーンに現れます。
スクリプトエディタのメニューとツールバーについての解説は次回におこないます。
Tips
スクリプトエディタ のインプットウインドウに関数を入力して実行する時に、
実行する関数をマウス左ボタンで選択しておくと、
実行した後もインプットウインドウに関数が残ったままになるので、
同じ関数を連続して実行したい時に便利です。
練習
- スクリプトエディターの下のウインドウに複数の関数を入力して実行させてみましょう
たとえば、インプットウインドウに
maya.cmds.sphere();
maya.cmds.move(5, 0, 0);
と打ち込み実行してみます。
NURBS の球が作成されて(5, 0, 0) の位置へ移動したでしょうか。
続けて、様々なプリミティブを作る関数と、
それらを移動・回転・スケールをかける関数をインプットウインドウに打ち込んで実行してみましょう。
(注意)
同じ Maya の MEL においては、
複数の関数をインプットウインドウに打ち込んで実行する場合には、
関数の右に ; (セミコロン)が必要でしたが、
Python の場合には必要ありません。
- GUI の操作によって スクリプトエディタ のヒストリウインドウにどんな関数が表示されるか確かめてみましょう。
たとえば、メインウインドウのメニューから
によって
球を作ると、どんな関数が表示されますか?
その他のメニューもできるだけ実行してみてください。
シェルフへの関数の登録
スクリプトエディタ のヒストリウインドウ・インプットウインドウに表示されている関数はシェルフに登録しておいて後で実行することができます。
同じ関数を何度も実行する必要がある場合には便利です。
また、シェルフに登録しておいた関数を スクリプトエディタ にコピーすることも可能です。
シェルフへの登録例
スクリプトエディタ に表示されている適当な関数をシェルフに登録してみましょう。
- スクリプトエディタ のヒストリウインドウ、またはインプットウインドウに表示されている関数でシェルフに登録したい関数をマウス左ボタンで選択します。
- 選択された部分の上部分でマウスの中ボタンをクリックし、ドラッグアンドドロップでシェルフまで移動します。
- ダイアログが表示されるので、Python ボタンを押します。
- シェルフに新しいアイコンが作られます。
- そのアイコンをクリックすると登録した関数が実行されます。
逆にシェルフに登録した関数を スクリプトエディタ にコピーしたい場合は、
コピーしたいシェルフのアイコンの上でマウス中ボタンをクリックし、
ドラッグアンドドロップで スクリプトエディタ のインプットウインドウへ移動します。
また、不要になったシェルフのアイコンはシェルフの右にあるゴミ箱アイコン
にマウス中ボタンでドラッグアンドドロップすれば消去することができます。
Tips
マウス左ボタンで スクリプトエディタ 内の関数を選択する場合に、
以下の方法を知っておくと効率良く選択することができます。
- ダブルクリック
単語一個分を選択
- 3 回連続クリック
一行分を選択
- 4 回連続クリック (Linuxのみ)
ウインドウ内全体を選択
まとめ
- Python 関数の実行方法には主に以下のものがあります。
- プリミティブを作る関数には
maya.cmds.sphere()、
maya.cmds.cone()、
maya.cmds.nurbsCube()、
maya.cmds.cylinder()、
maya.cmds.nurbsplane()、
maya.cmds.torus(),
maya.cmds.polyTorus()などがあります。
- 移動(Translate)、回転(Rotate)、拡大・縮小(Scale)は
maya.cmds.move()、
maya.cmds.rotate()、
maya.cmds.scale() 関数で実行します。
参考
Prev | Next
Home | Contents
Mail