CG・コンテンツ制作
  1. CG・コンテンツ制作トップ
  2. DAIKIN CG Channel
  3. UsersNotes
  4. スクリプト
  5. 統合プログラミング環境、Pleiades (プレアデス) Eclipseを使ってMayaPython開発をする
SUITE USERS NOTES
統合プログラミング環境
Pleiades(プレアデス)Eclipseを使ってMayaPython開発をする
(Used Maya 2015)
IntegratedDevelopmentEnvironments
Using Pleiades;Eclipse to develop MayaPython
プロローグ;Prologue
MayaPythonを開発出来るデバッグ機能のついたスクリプトエディター
つまり統合プログラミング環境を使ってみようというページです。

Eclipseという、元々はJavaを開発する為に作られたエディター
PyDevというプラグインをインストールすることによってPythonに対応させます。
また英語GUIを日本語化にするということも便利でしょう。
これらを用意してセットアップするのに手間と知恵が必要になるところを、
全て用意してくれている便利なパッケージがあります。
それがPleiades(プレアデス)です。
そこにMayaEditorというEclipseプラグインを導入することによって
MayaPythonを開発する環境を作ってみます。
更にMEL エディターにもなるらしいです。

なお、このサイトで掲載している事例の決まり事ですが、
使用に関しては自己責任でよろしくお願い申し上げます。(Maya2015で動作確認しています)
This page is aboutPython IDEs.Please use it asyour own risk.

Eclipse を使ったMayaPython 統合開発環境(IDE) について
Pleiades - Eclipse を使って簡単用意
インタープリター の設定
オートコンプリート の設定
MayaEditor の設定
コマンドポート の設定
Pythonスクリプト の動作確認
Mayaスタンドアローンのアプリケーション の動作確認
Mayaと接続して MayaPythonスクリプト の動作確認

Maya MEL エディター
Eclipse_00_Splash
PS
一部ユーザーが作成して公開している
ツールを使用する部分があります。
Windows7 Professional 64Bit、Intel Core i7-3930K(3.20GHz,6コア/12スレッド)
メモリ16GB、NVIDIA GeForce GTX560 Ti 2GB (メモリ2GB)
Eclipse_MayaPython_00s

ritaro_ml



Eclipse を使ったMayaPython 統合開発環境(IDE) について
Mayaのドキュメントを見ると
Python で初めてスクリプトを記述する場合のヒントとコツ
http://help.autodesk.com/view/MAYAUL/2015/JPN/?guid=GUID-8A96A8DB-FD6F-434F-A878-288DD84E99C7
Maya で Python スクリプトをデバッグする項目があります。
pdbを使用する例が書かれています。こちらの詳細先です。 > http://docs.python.org/library/pdb.html

そして、外部デバッガで使用するという項目には
Wing IDE を Maya で使用するという例は書かれているのですが、Eclipse については記述は無いようです。
また、Eclipseを MayaPython開発に使う、という英語サイト例は少しありましたが、記述内容が少し古いようでした。

そこで今回ここで記述しようと思った内容は、
今のMaya2015で 最近のEclipseバージョンを使ってMayaPython開発環境を構築する、という例なのです。しかも日本語メニューで。
しかも、”できるだけ簡単に構築する”という方針で行ってみようと思います!!

誰でも簡単に作れるのでぜひまねて作ってみてください。



Pleiades - Eclipse を使って簡単用意
Eclipseを日本語化し、おまけにPyDevというPython環境用プラグインまでインストールしてくれている
Pleiades All in Oneというパッケージがあります。これを使わない手はありません。

Eclipse Pleiades All in Onehttp://mergedoc.sourceforge.jp/
Eclipse_MayaPython_01
後述する、MayaEditorプラグインがEclipse 4.3.2 Kepler ケプラーというEclipseのバージョンに 対応 って書かれていましたので、
ここでもEclipse 4.3.2 Kepler ケプラーのバージョンのボタンを押します。
vEclipse_MayaPython_02
更に細かいバージョンが表示されるので、今回はWindows64bitPythonに対応したFull Editionを選択し ダウンロードします。
ここでは、pleiades-e4.3-python-jre_20140321.zip506MBというファイルをダウンロードしたことになります。
これを解凍すると中に既に実行できるEclipse.exeが用意されていますが、インストーラーは無いです。
そこで、このEclipse.exeが実行できるようにとProgram Files以下に置いて実行しようとすると
管理者として実行することを毎回要求してくるようになってしまうので一工夫します。
Eclipse_MayaPython_03
C:\ 直下にpleiadesというディレクトリーを作成し、解凍したeclipseフォルダーだけをその中にコピーします。
Eclipse_MayaPython_04
eclipse.exeショートカットを作成しデスクトップにコピーしておけば、わずらわしい警告文も無く、起動できます。
起動してみると、既にPydevインストールされおり、日本語にもなっています。
Eclipse_MayaPython_05



■ちょっと知っておきたいEclipse使い方。

Tab4文字分の空白(インテント)になるように設定出来ます。2箇所チェックします。

ウィンドウ > 設定(設定ボタン;F10) >一般 > エディタ > テキスト・エディタ内で
表示されるタブ幅4
[レ]タブでスペースを挿入をチェック入れる。
Eclipse_MayaPython_001
ウィンドウ > 設定(設定ボタン;F10) > PyDev > エディター > 内で
タブ長4
[レ]入力時にスペースでタブを置換をチェック入れる。
Eclipse_MayaPython_002
また、テキストエディタ内のフォントの大きさを変えるには
ウィンドウ > 設定(設定ボタン;F10) > PyDev > エディタ > 内 の 下のColors and Fonts部分をクリックして
色とフォントの 設定画面内、基本 > テキスト・フォントを選択して[編集]ボタンを押してフォントをサイズを指定します。
Eclipse_MayaPython_003
一度スクリプトを作成してファイル > 保管をするとC:\pleiades\workspace以下にプロジェクトが保存されるのですが、
そのプロジェクトを新しく読み込みたい場合は以下の手順で行います。(少し解りにくいので記述します。)

ファイル > インポート左欄を右マウスクリック > インポート) から一般 > 既存プロジェクトをワークスペースへを選択して[次へ]ボタンを押します。
Eclipse_MayaPython_004
◎ルート・ディレクトリーの選択[参照]ボタンからC:\pleiades\workspaceを指定して
プロジェクト欄に表示される読み込みたいプロジェクトだけを[レ] チェックを入れ、下の[完了]ボタンを押すと開きます。
Eclipse_MayaPython_005



インタープリターの設定
さて、今回は解凍した中からPythonというディレクトリーをコピーして来なかったので、
どのPythonインタープリターを参照するか設定します。
Pydevのインストールの確認しながら順に見ていきましょう。

Eclipse_MayaPython_06
ウィンドウ > 設定(設定ボタン;F10) から設定画面を表示します。
Eclipse_MayaPython_07
既にメインメニューにもPydev項目がありますが、
設定画面の中にもPydevと書かれている欄があり、クリックするとバージョンが解ります。
その中を展開してPython Interpreterの項目をクリックして設定画面を表示させます。
Eclipse_MayaPython_08
Pythonインタープリターには2015_mayapy.exeを指定します。
Eclipse_MayaPython_09
右側[ 新規 ] ボタンを押して、

インタープリター名2015_mayapy
インタープリター実行ファイルC:\Program Files\Autodesk\Maya2015\bin\mayapy.exe
を指定します。

下段のライブラリータブシステム PYTHONPATHには追加でワークグループ設定のPythonパスも追加してみました。



オートコンプリートの設定
事前定義ファイルを設定をすることで、Mayaコマンド類がオートコンプリートします。
Eclipse_MayaPython_10
先程から開いているウィンドウ > 設定 > Pydev > Python Interpreterの下段
事前定義 タブの 右側[ 新規 ] ボタンを押して 以下2つを登録します。

maya.cmds用C:\Program Files\Autodesk\Maya2015\Python\Lib\site-packages
pymel用C:\Program Files\Autodesk\Maya2015\devkit\other\pymel\extras\completion\pypredef



MayaEditor の設定(CreativeCrashへのユーザー登録が必要)
Eclipseで書いた Pythonスクリプトを Mayaへ送信するプラグインMayaEditorをインストールします。
これは下記にて公開されているものですが、ダウンロードするにはユーザー登録が必要です。

Eclipse Maya Editor- Free Syntax / Scripting Applications Downloads for Maya
http://www.creativecrash.com/maya/downloads/applications/syntax-scripting/c/eclipse-maya-editor
対応Eclipse, Maya 2011, Maya 2012, Maya 2013, Maya 2014, Maya 2015
- Eclipse Kepler, Juno, Indigo, and Helios supported.

mayaEclipse.zip229 KBの中身は、eclipseMayaEditor_2015.0.0.201405052317.jarというバイナリーデータです。
このファイルの最も簡単なインストール方法は
eclipseMayaEditor_2015.0.0.201405052317.jarC:\pleiades\eclipse\plugins内にコピーする、です。

英語ですが、詳細はこちらです。>http://www.creativecrash.com/tutorials/using-eclipse-as-a-maya-ide
Eclipse_MayaPython_11
Eclipseを再起動して、メインメニューに青いボタン類が追加されていれば OK です。
アイコンは、左から順に

アイコン
動作
ショートカット
Eclipse_MayaPython_012s
エディター内のスクリプトをMayaにインポート/リロード
Import/Reload the script in the editor to Maya
Ctrl+ \
Eclipse_MayaPython_12b
エディター内の全ての記述をMayaに送る
Send all editor contents to Maya
Ctrl+Enter
Eclipse_MayaPython-12c
エディター内の選択した部分のみをMayaに送る
Send highlighted selection to Maya
Ctrl+'
Eclipse_MayaPython-12d
各種ドキュメントを開く(ドロップダウン)
Open Various Document in browser
 
Eclipse_MayaPython-12e
Mayaと接続
Connect Eclipse to Maya
Ctrl+]

この ショートカットキーは任意のキーに変更することが出来ます。
ウィンドウ > 設定(設定ボタン;F10)> 一般 > キーの項目で、
フィルターと書かれている欄に*Mayaと書くと Mayaと書かれたコマンド類のみを表示してくれます。
コマンドを他のキーに設定する時は、キーが重複しないかもチェック出来ます。

Eclipse_MayaPython-13


コマンドポートの設定
MayaEclipseを連動させるためには、下記コードをシェルフに登録 して実行するか、userSetup.pyに書いて起動時に実行されるようにします。
userSetup.py を利用して起動実行する場合は、複数のMayaバージョンを起動するようなことは避けた方が良いようです。

import maya.cmds as cmds

if cmds.commandPort(':7720', q=True) !=1:
   cmds.commandPort(n=':7720', eo = False, nr = True)

デフォルトのポート番号は7720ですが、任意の値 に変更することが出来ます。
ウィンドウ > 設定(設定ボタン;F10)> Maya Editor Preferenceの項目から、各種設定が変更できます。
Eclipse_MayaPython-14



Pythonスクリプト の動作確認
まずは簡単なPythonスクリプトで動作確認をしていきましょう。例の helloWorld です。

・Eclipseを起動します。
・新しいプロジェクトを作成します。
ファイル  >  新規  >  Pydev プロジェクト
Eclipse_MayaPython-20
・プロジェクトの設定をします。
Eclipse_MayaPython-21
・プロジェクトの名helloWorld
・プロジェクト・コンテンツ[レ]デフォルトを使用([C:\pleades\workspace\helloWorld])
・プロジェクトのタイプ◎ Python
・文法バージョン2.7
・インタープリターDefault > 2015_mayapy
◎ Create 'src'folder and add it to the PYTHONPATH
src の フォルダーが作成されるように、2個目のタイプを選ぶのが良いでしょう。[完了]ボタンを押します。
Eclipse_MayaPython-22
・Pydevパッケージエクスプローラ・ウィンドにあるプロジェクトのノードを1つ展開します。
左側helloWorld
・srcノードを選択し、右クリック-> New -> Pydev Moduleを選択します。
Eclipse_MayaPython-23
・名前を入力します(拡張子無し)。
NamehelloWorld
Eclipse_MayaPython-24
・[ 完了]ボタンを押すとテンプレートの選択画面になるので、<Empty > を選択すると、何も無い空のファイルを作成します。

・print "Hello world!"と記入します。

・ファイル >  保管と押すと上書きするかと聞かれるのでOKを押します。
ワークスペースのC:\pleiades\workspace\helloWorld\src 内に helloworld.pyが保存されています。
Eclipse_MayaPython-25
・ツールバーのデバックを起動してみます。
左側helloWorld.pyを選択している状態で、ツールバーの緑矢印アイコンから実行  >  2 Python 実行を選択します。
下のコンソールに実行結果が表示されれば OK です。

TIPS下のコンソール部分は、この後紹介する Mayaの結果表示の画面と、右側のモニター画面の絵のアイコンで切り替えることが出来ます。
Eclipse_MayaPython-26



Mayaスタンドアローンのアプリケーション の動作確認
同じ helloWorld ですが、今度はMayaのスタンドアロンなアプリケーションとしてMaya2015 の devkit 内にあるhelloWorld.py を動かしてみたいと思います。
途中までは上記方法と全く同じなので、解り易いと思います。
上記で作成したC:\pleiades\workspace\内のhelloWorld を削除するかリネームするかしてダブらないようにします。

・Eclipseを起動します。
・新しいプロジェクトを作成します。
ファイル  >  新規  >  Pydev プロジェクト

・プロジェクトの設定をします。
・プロジェクトの名helloWorld
・プロジェクト・コンテンツ[レ]デフォルトを使用([C:\pleades\workspace\helloWorld])
・プロジェクトのタイプ◎ Python
・文法バージョン2.7
・インタープリターDefault > 2015_mayapy
◎ Create 'src'folder and add it to the PYTHONPATH
srcの フォルダーが作成されるように、2個目のタイプを選ぶのが良いでしょう。[完了]ボタンを押します。

・Pydevパッケージエクスプローラ・ウィンドにあるプロジェクトのノードを1つ展開します。
左側helloWorld
・srcノードを選択し、右クリック-> New -> Pydev Moduleを選択します。
・名前を入力します(拡張子無し)。
NamehelloWorld
Eclipse_MayaPython-30
・[ 完了]ボタンを押すとテンプレートの選択画面になるので、モジュール:メインを選択して [OK]を押します。
Eclipse_MayaPython-31
C:\Program Files\Autodesk\Maya2015\devkit\applications\scripted\helloWorld.pyを参考に
passの部分をmain()に置き換えます。
Eclipse_MayaPython-32
・すぐにエラー表示が出て来ます。
すかさず、import部分とmainの中身を記述して完成させます。

Eclipse_MayaPython-33
import maya.standalone
import maya.OpenMaya as OpenMaya

import sys

def main( argv = None ):
   try:
       maya.standalone.initialize( name='python' )
   except:
       sys.stderr.write( "Failed in initialize standalone application" )
       raise

   sys.stderr.write( "Hello world! (script output)\n" )
   OpenMaya.MGlobal().executeCommand( "print \"Hello world! (command script output)\\n\"" )

if __name__ == '__main__':
   main()


・ファイル >  保管と押すと上書きするかと聞かれるので、OKを押すとワークスペースの
C:\pleiades\workspace\helloWorld\src に helloworld.py が保存されています。
Eclipse_MayaPython-34
・ツールバーのデバックを起動してみます。
左側 helloWorld.py を選択している状態で、ツールバーの緑矢印アイコンから実行  >  helloWorldhelloWorld.py を選択します。
Eclipse_MayaPython-35
・下のコンソールに実行結果が表示されます。
Mayaを起動した時のあの白いウィンドと同じ表示になっているということは、スタンドアローンでMayaツールが動いたということになります




Mayaと接続して MayaPythonスクリプト の動作確認
さて、いよいよ本題です。
Maya用のPythonスクリプトを書いた後、Mayaと接続 をすると、スクリプトが連携して動作する、ということを確認します。

今回は、「選択した階層以下の全てのJointのローカル回転軸を表示する」というツールを作成します。

・Eclipseを起動します。
・新しいプロジェクトを作成します。
ファイル  >  新規  >  Pydev プロジェクト

・プロジェクトの設定をします。
・プロジェクトの名:ri_display_joint_localAxis
・プロジェクト・コンテンツ:[レ]デフォルトを使用([C:\pleades\workspace\ri_display_joint_localAxis])
・プロジェクトのタイプ:◎ Python
・文法バージョン:2.7
・インタープリター:Default > 2015_mayapy
◎ Create 'src'folder and add it to the PYTHONPATH
srcのフォルダーが作成されるように、2個目のタイプを選ぶのが良いでしょう。[完了]ボタンを押します。

・Pydevパッケージエクスプローラ・ウィンドにあるプロジェクトのノードを1つ展開します。
左側ri_display_joint_localAxis

・srcノードを選択し、右クリック-> New -> Pydev Moduleを選択します。

・名前を入力します(拡張子無し)。
Nameri_display_joint_localAxis

・ri_display_joint_localAxis.pyの中身を下記のように記入します。

# -*- coding: utf-8 -*-

import maya.cmds as cmds

def display_joint_localaxis():
    if not cmds.ls( sl=True ):
        print 'Nothing is selected'
    else:
        first_selected = cmds.ls(sl=True)[0]

        cmds.select(hierarchy=True)
        selected_object = cmds.ls(sl=True)
        for node in selected_object:
            if cmds.objectType( node ) == 'joint':
               if not cmds.toggle(node,q=True,localAxis=True):
                   cmds.toggle( node,localAxis=True )

        cmds.select( clear=True )
        cmds.select( first_selected, replace=True )
Eclipse_MayaPython-40
・最後の26行目は、ここで実行する為の記述で、ri_display_joint_localAxis.pyとして保存する時は削除する行です。

・20、21行目は注意マークが付いていますので、カーソルと近づけるとインテント用の 4文字分の空白の数が正しくないと解ります。
(ここでは、実際には動くのですが、このように指摘してくれれば、直しますよね)

・さて、いよいよMayaです。
今回ここでは、userSetup.pyにコマンドポートの設定を書いてMaya2015を起動しています。

・メインメニューのMayaと接続するボタンEclipse_MayaPython-12eを押します。
Eclipse_MayaPython-41
Mayaのスクリプトエディターに--Connected to Maya--と表示され、
同時に、EclipseのコンソールのMayaResultsにも--Connected to Maya--と表示されます。

・Maya2015に Joint の階層構造を作成して、一番上のJointを選択状態にします。
・エディター内の全ての記述をMayaに送るボタンEclipse_MayaPython-12bを押します。
・Mayaのシーンで何も選択しないでMayaに送るボタンを押すと、EclipseのコンソールのMayaResults
Nothing is selectedと表示されます。
Eclipse_MayaPython-43
・動作確認取れましたら、スクリプトが実行されるように書き足した最後の26行部分display_joint_localaxis() を削除して、
ファイル >  保管で保存します。
 C:\pleiades\workspace\ri_display_joint_localAxis\srcri_display_joint_localAxis.pyが保存されます。

これで、デバッグもしつつ Maya と連携しながら Pythonスクリプトを書いていける環境をつくることが出来ました。



Maya MEL エディター
デバッグまで検証できていないのですが、
EclipseColorerプラグインをインストールすることでMaya MEL エディター(色分けされている)になるようです。
インストールはちゃんと出来ましたので、ご紹介します。
Eclipse_MayaPython-50
・ヘルプ > 新規ソフトウェアのインストールを選択します。
Eclipse_MayaPython-51
・作業対象にhttp://colorer.sf.net/eclipsecolorer/を追加します。
Eclipse_MayaPython-52
・中段[全て選択]を押して[次へ]を押します。
Eclipse_MayaPython-53
・ライセンスに同意して[完了]ボタンを押します。

・Eclipseを再起動させます。
Eclipse_MayaPython-60
・左欄にプロジェクトのソースとしてMELを用意し、右マウスクリック > 次で開く > その他 > Colorer エディター>[OK]ボタンを押します
新規でMelスクリプトを書く場合でも、Colorer エディターを開くエディター として選択します。
Eclipse_MayaPython-61
・すると、Mel構文で色分けされて表示されます。
Eclipse_MayaPython-62
・Mayaを起動し、Mayaと接続するボタンEclipse_MayaPython-12eを押した後、Mayaに送るボタンEclipse_MayaPython-12bを押すと、
window1というGUIが表示するスクリプトが実行され、任意の数値を入力すると、その結果が下のコンソールに記述されます。

ちなみに、こちらもTABは4個の空白になっていますが、2個とかにしてもインテントという概念がMELには無いので、注意マークは出てきません。

この MELエディターは、MELで動いているスクリプトをPythonと比較したり、
Pythonに書き直したりする場合にも便利ではないでしょうか。

という訳で、次回は...What's Next ...
乞う、ご期待!! Stay tuned ..
戻る 次へ

Twitter

ページの先頭へ