このサイトはダイキン工業が運営するCG業界ニュースサイトです。
お問い合わせ

セミナーレポート 「Pythonを中心としたチーム開発(実践編)」2

2016年11月10日、ダイキン工業株式会社主催によるセミナー「Pythonを中心としたチーム開発(実践編)」が開催された。講演を行ったのは、『ベーシックなルール作りが、プロジェクト遂行を向上させる』にてお話をうかがった、スマイルテクノロジーユナイテッド株式会社代表取締役社長、高橋涼氏。セミナーでは、効率的に仕事を進めていくうえで不可欠な“ルールづくり”について、高橋氏率いるスマイルテクノロジーユナイテッド株式会社(以下STU)が実践している、Pythonを用いたテクニカルかつ具体的な手法を例に紹介していただいた。本セミナーの内容について、3回に分けてレポートしていく。

今回は、第2回イベントレポートをお送りする。

 

セミナーレポートvol.2:最適なツール作りのためのフロー

高橋氏率いるSTUで実践されている開発ルールの解説に続いては、Pythonでツールを作っていくフローについて、実際に作業を進めながら講演が行われた。

最初に語られたのは、前提としてのMayaの環境設定(Maya.env)で、以下のルールが推奨されている。

  • 近年の大規模ゲーム開発等では海外のゲームスタジオとの協業が多いため、日本語UIではなく英語を使用する
  • Maya.envでパスを通す
  • 作業ブランチと開発ブランチ用で別々のMaya.envを作成する
  • Maya起動時に実行されるMELスクリプトであるuserSetup.melでロガーの初期化を行う

なお、今回用いられたツールの仕様は以下の通り。

  • 機能
    決められた(固定の)オプションでバインドするBind
    移動元・移動先のジョイントを指定してウェイトを移動するTransfer
    メッシュAからメッシュBにウェイトをコピーするCopy
  • GUIあり
  • MELコマンド:stuSkinWeight

続いて行われたバインドの実装については、プロジェクトルールでバインドオプションを決められている、ケアレスミスで統一できていないことを解決したいというユースケースのもと、専用のコマンドを用意し、選択したメッシュとジョイントのバインドが行われた。

また、実装にあたってはmaya.cmdsの使用を禁止し、すべてPyMELで統一。ただし、オペレーターによるアトリビュートのコネクト禁止、Undo不可能なAPIメソッドは使用禁止、GUIはMELではなくPySideで行う等の禁止事項は例外とし、Alias名はpmにすることが推奨されている。

PyMELの実装に続いてテーマとなったのは、MELコマンド=Python関数の調べ方。高橋氏によると、MELコマンドで実装された資産を生かすことがMayaのメリットとなるほかにも、多くのメリットが生まれるとのこと。そこで、いきなりGUIを作りはじめず、実行関数から実装することを習慣づけているというSTUの事例を紹介しながら、調べ方の具体例を実行し、解説が進められた。

次にテーマとなったのは、モジュール管理。ここでいうモジュールとは、ネームスペースやパッケージ、ファイルなどの総称。高橋氏はその管理について、会社名など重複しないパッケージ名の使用、大文字禁止のルールに加え、アプリケーション層とライブラリ層の二段階に分けた管理方法を推奨している。

続いて話題は、ウェイトの移動機能の実装へ。ここで挙げられたルールは、深いネストを避けた読みやすいソースコードの利用、関数名の書き方についての注意事項、無意識の破壊的処理についてはログを確認すること等。ウェイトのコピーの実装については、頂点番号が対応している頂点にコピーすることにはじまり、Pythonらしい機能の使用を想定した実装と、そのためのファイルライクオブジェクトの利用、OrderdDictに関する注意事項を紹介しながら、作業が進められていった。

機能の実装がほぼ完了したところで、話題は再びコマンドラインへと移行。具体例とそのメリットは以下の通り。

  • バッチ処理などはMayaのGUIを起動せず、コマンドラインだけで行う
    メリット メモリ効率が良い
  • mayabatch.exeではなくmayapy.exeを採用
    メリット pythonスクリプトを直接実行可能、終了コードによる成否判定を素直に実装可能

ただし、argparseのparseメソッドで--helpオプションがあった場合、プロセス終了しようとして不正終了してしまうことがあるため、注意が必要とであることも紹介された。

 

※第3回のレポートでは、エラーの追跡、PySideによるGUIの作成、Pythonスクリプトへの組み込みのノウハウ等について紹介していく。

 

「Pythonを中心としたチーム開発(実践編)」1

「Pythonを中心としたチーム開発(実践編)」3