「Maya Python 完全リファレンス」は、Maya でのPython プログラミングに焦点を絞った初めての書籍です。この分野で実績のある権威、Adam Mechtley、Ryan Trowbridge による本書は、MayaPython を習得するための詳細なガイドブックです。MEL からPython への移行を考えている経験豊富なテクニカルアーティストから、効率的に制作を行いたいと考えるアーティストまで、経験レベルを問わず、大いに役立つことでしょう。
本書の特長:
・ Python とMEL スクリプトが比較されているため、MEL からPython にスムーズに移行できます。
・ 「 アンチャーテッド 黄金刀と消えた船団」など、受賞を誇るタイトルを制作した開発者から、Maya Pythonのパワーを利用する方法を直に学習できます。
・ Webサイトhttp://www.maya-python.com(英語)には、サンプルスクリプト、シーンファイル、追加のスクリプトなどが用意されています。
本書は、「Maya Python for Games and Film: A Complete Reference for Maya Python and the Maya Python API」の日本語版です。
PART 1 PythonとMayaの基本
CHAPTER 1 Mayaのコマンドエンジンとユーザインタフェース
Mayaとのインタラクション
MEL
Python
C++ API
Python API
MayaでPythonを実行する
コマンド ライン
スクリプト エディタ(Script Editor)
Mayaのシェルフ
Mayaのコマンドとディペンデンシーグラフ
Pythonコマンドの概要
フラグ引数とPythonの主なオブジェクト型
数値
文字列
リスト
タプル
ブーリアン
フラグ = オブジェクト型
コマンドモードとコマンド引数
作成モード
編集モード
照会モード
Pythonコマンド リファレンス(Python Command Reference)
概要
戻り値
関連
フラグ
Python例
Pythonのバージョン
Pythonオンラインドキュメント
まとめ
CHAPTER 2 Pythonデータの基礎
変数とデータ
MELの変数
キーワード
Pythonのデータモデル
ミュータブルとイミュータブル
参照カウント
del()
None型
Mayaコマンドで変数を使用する
結果の捕捉
getAttrとsetAttr
複合アトリビュート
connectAttrとdisconnectAttr
数値を使用する
数値型
基本的な演算子
ブーリアンを使用する
ブーリアンとビット演算子
シーケンス型を使用する
演算子
連結
インデクシングとスライシング
文字列型
エスケープシーケンスと複数行にまたがる文字列
raw 文字列
Unicode 文字列
文字列をフォーマットする
リストの詳細
del()
ネストされたリスト
その他のコンテナ型
セット
演算子
ディクショナリ
演算子
ディクショナリの使用例
CHAPTER 3 MayaでPythonプログラムを作成する
Python 関数を作成する
関数定義の仕組み
関数の引数
デフォルト引数
キーワード引数
* 演算子を使用した可変長引数リスト
** 演算子を使用した可変長キーワード引数リスト
戻り値
Mayaのコマンド
ノードをリストし選択する
fileコマンド
アトリビュートを追加する
反復処理と分岐
forステートメント
range()
分岐
if、elif、else
比較演算を使用する
スイッチをエミュレートする
continueとbreak
リストの内包表記
whileステートメント
エラートラッピング
try、except、raise、finally
実用的なツールの設計
CHAPTER 4 モジュール
モジュールとは?
モジュールとスコープ
モジュールのカプセル化とアトリビュート
__main__モジュール
モジュールを作成する
spikeモジュール
デフォルトアトリビュートとhelp()
パッケージ
create.py
math.py
__init__.py
モジュールをインポートする
インポートとreload()
asキーワード
fromキーワード
アトリビュートの命名規則とfromキーワード
Pythonパス
sys.path
パスを一時的に追加する
userSetupスクリプト
userSetup.py
userSetup.mel
sitecustomizeモジュール
sitecustomize.py
PYTHONPATH 環境変数を設定する
Maya.envによるMaya 固有の環境変数
システムワイドの環境変数と高度な設定
PYTHON IDEを使用する
IDEをダウンロードする
Wing IDE
Eclipse
IDEの基本的な構成
ビュー
インタプリタを選択する
コードの自動補完
プロジェクト
Mayaに接続する
デバッグ
CHAPTER 5 Mayaでのオブジェクト指向プログラミング
オブジェクト指向プログラミングと手続き型プログラミング
Pythonにおけるクラス実装の基本
インスタンスの作成
アトリビュート
データアトリビュート
メソッド
__str__()
__repr__()
プロパティ
クラスアトリビュート
静的メソッドとクラスメソッド
Humanクラス
継承
手続き型プログラミングとオブジェクト指向プログラミング(Mayaの場合)
PyMELをインストールする
PyMELの概要
PyNodes
PyMELの機能
長所と短所
PyMELの使用例
PART 2 PythonによるMayaツールの設計
CHAPTER 6 Mayaツール設計の原則
ユーザ中心設計のためのヒント
コミュニケーションと観察
まずは設計を
単純化と教育
Mayaの付属ツール
選択
マーキング メニュー
オプションウィンドウ
CHAPTER 7 Mayaコマンドを使用した基本的なツール
MayaコマンドとMaya GUI
基本のGUIコマンド
ウィンドウ
ベースウィンドウクラスを作成する
メニューとメニュー項目
GUIオブジェクトを使ってコマンドを実行する
関数ポインタを渡す
文字列渡し
functoolsモジュールを使用する
レイアウトとコントロール
基本のレイアウトとボタン
フォームレイアウト
完成したAR_OptionsWindowクラス
GUIクラスを拡張する
ラジオボタングループ
フレームレイアウトと浮動小数点数フィールドグループ
カラーピッカー
より高度なツールを作成する
Pose Managerウィンドウ
フォームと機能を分離する
cPickleモジュールを使用してデータをシリアル化する
ファイルダイアログを使用する
CHAPTER 8 Qtによる高度なグラフィカルユーザインタフェース
QtとMaya
ウィンドウのドッキング
Qtツールのインストール
Qt SDK
Qt Designer
ウィジェット
シグナルとスロット
Qt Designerハンズオン
MayaにQt GUIをロードする
loadUIコマンド
コントロールの値にアクセスする
シグナルとスロットによるウィジェットのマップ
PyQt
PyQtをインストールする
Maya 2011 以降でPyQtを使用する
旧バージョンのMayaでPyQtを使用する
PART 3 Maya Python APIの基礎
CHAPTER 9 C++の予備知識とAPIのドキュメント
オブジェクト指向プログラミングの詳細
継承
仮想関数とポリモーフィズム
Maya APIの構造
Mayaのコアオブジェクトクラス(MObject)の概要
関数セットを使ってMObjectを操作する
PythonとMaya APIの通信の仕組み
PythonとC++のAPIの主な違い
MStringとMStringArray
MStatus
void* ポインタ
プロキシクラスとオブジェクトの所有者
引数を持つコマンド
元に戻す(Undo)
MScriptUtil
CHAPTER 10 コマンドのプログラミング
スクリプトプラグインをロードする
スクリプトコマンドの構造
OpenMayaMPxモジュール
コマンドクラス定義
doIt()
コマンドクリエータ
初期化と初期化解除
カスタム構文を追加する
回転順序をマッピングする
クラス定義
シンタックスクリエータ
フラグ引数
コマンドオブジェクト
構文の初期化
doIt()
オブジェクトの評価
フラグ引数を格納する
doItQuery()
Mayaの元に戻す(Undo)/やり直し(Redo)メカニズム
複数のコマンドモードのサポートと元に戻す(Undo)/やり直し(Redo)
元に戻す(Undo)/やり直し(Redo)
MDGModifier
コマンドモード
シンタックスクリエータ
__init__()メソッド
isUndoable()の初期化
その他のデータアトリビュート
doIt()
オブジェクトの評価
照会モードの選択
編集モードまたは作成モードの選択
redoIt()
新規ノードを作成する
トランスフォームノードを編集する
undoIt()
CHAPTER 11 Mayaのデータフロー
ディペンデンシー グラフ
ディペンデンシー ノード
アトリビュート
プラグ
データブロック
compute()
データハンドル
アトリビュートとデータフロー
コネクション
遅延評価とプッシュプル
DGの評価をトリガする
ディペンデンシー グラフをデバッグする
ヒート マップの表示
dgTimerコマンド
DAG(DIRECTED ACYCLIC GRAPH)
DAGパスとインスタンス生成
アンダーワールド
CHAPTER 12 ディペンデンシー ノードのプログラミング
スクリプトノードの構造
ar_averageDoublesノード
ノードクラス定義
ノードクリエータ
ノードイニシャライザ
compute()
ベストプラクティス
初期化と初期化解除
アトリビュートとプラグ
アトリビュートのプロパティ
Readable、Writable、Connectable
格納可能なアトリビュートとデフォルト値
キャッシュ済みアトリビュート
配列を操作する
論理インデックスと物理インデックス
プラグ配列を実装する
配列プラグを実装する
複合アトリビュート