<< TOP

統合プログラミング環境
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 about Python IDEs. Please use it as your own risk.

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

> Maya MEL エディター

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






 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 One http://mergedoc.sourceforge.jp/


     後述する、MayaEditorプラグインが Eclipse 4.3.2 Kepler ケプラー という Eclipseのバージョンに 対応 って書かれていましたので、
    ここでも Eclipse 4.3.2 Kepler ケプラー のバージョンのボタンを押します。
     


     更に細かいバージョンが表示されるので、今回は Windows64bit Python に対応した Full Edition を選択し ダウンロードします。
    ここでは、pleiades-e4.3-python-jre_20140321.zip 506MB というファイルをダウンロードしたことになります。
    これを解凍すると 中に既に実行できる Eclipse.exe が用意されていますが、インストーラーは無いです。
    そこで、この Eclipse.exe が実行できるようにと Program Files 以下に置いて実行しようとすると
    管理者として実行 することを毎回要求してくるようになってしまうので 一工夫 します。



    C:\ 直下に pleiades というディレクトリーを作成し、解凍した eclipseフォルダー だけをその中にコピーします。



    eclipse.exeショートカット を作成しデスクトップにコピーしておけば、わずらわしい警告文も無く、起動できます。
    起動してみると、既に Pydev インストールされおり、日本語にもなっています。





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

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

     ウィンドウ > 設定 (設定ボタン;F10) > 一般 > エディタ > テキスト・エディタ 内 で 
      表示されるタブ幅     4
      [レ] タブでスペースを挿入 をチェック入れる。



     ウィンドウ > 設定 (設定ボタン;F10) > PyDev > エディター > 内 で 
      タブ長     4
      [レ] 入力時にスペースでタブを置換 をチェック入れる。



    また、テキストエディタ内のフォントの大きさを変えるには 
     ウィンドウ > 設定 (設定ボタン;F10) > PyDev > エディタ > 内 の 下の Colors and Fonts 部分をクリックして 
     色とフォント の 設定画面内、基本>テキスト・フォント を選択して [編集] ボタンを押して フォントをサイズを指定します。




     一度スクリプトを作成して ファイル>保管 をすると C:\pleiades\workspace 以下にプロジェクトが保存されるのですが、
    そのプロジェクトを新しく読み込みたい場合は 以下の手順で行います。(少し解りにくいので記述します。) 

     ファイル>インポート (左欄を右マウスクリック>インポート) から 一般>既存プロジェクトをワークスペースへ を選択して [次へ] ボタンを押します。



     ◎ ルート・ディレクトリーの選択  [参照] ボタンから C:\pleiades\workspace を指定して
    プロジェクト 欄に表示される読み込みたいプロジェクトだけを [レ] チェックを入れ、下の [完了] ボタンを押すと開きます。





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



     ウィンドウ > 設定 (設定ボタン;F10) から設定画面を表示します。



     既にメインメニューにも Pydev 項目がありますが、
    設定画面の中にも Pydev と書かれている欄があり、クリックするとバージョンが解ります。
    その中を展開して Python Interpreter の項目をクリックして設定画面を表示させます。



    Pythonインタープリター には 2015_mayapy.exe を指定します。



    右側 [ 新規 ] ボタン を押して、
      インタープリター名 を 2015_mayapy
      インタープリター実行ファイル を C:\Program Files\Autodesk\Maya2015\bin\mayapy.exe
    を指定します。

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



 オートコンプリートの設定
      事前定義ファイル を設定をすることで、Mayaコマンド類が オートコンプリート します。



     先程から開いている ウィンドウ > 設定 > 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.zip 229 KB の中身は、eclipseMayaEditor_2015.0.0.201405052317.jar というバイナリーデータです。
    このファイルの最も簡単なインストール方法は
    eclipseMayaEditor_2015.0.0.201405052317.jar を C:\pleiades\eclipse\plugins 内にコピーする、です。

    英語ですが、詳細はこちらです。>  http://www.creativecrash.com/tutorials/using-eclipse-as-a-maya-ide



     Eclipse を 再起動して、メインメニューに 青いボタン類 が追加されていれば OK です。
    アイコンは、左から順に

       アイコン
      動作 
      ショートカット


      エディター内のスクリプトをMayaにインポート/リロード
        Import/Reload the script in the editor to Maya

      Ctrl+ \


      エディター内の全ての記述をMayaに送る
        Send all editor contents to Maya

      Ctrl+Enter


      エディター内の選択した部分のみをMayaに送る
        Send highlighted selection to Maya

      Ctrl+'


      各種ドキュメントを開く(ドロップダウン)
        Open Various Document in browser




      Mayaと接続
        Connect Eclipse to Maya

      Ctrl+]


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




 コマンドポートの設定
     Maya と Eclipse を連動させるためには、下記コードを シェルフに登録 して実行するか、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 の項目から、各種設定が変更できます。






 Pythonスクリプト の動作確認
     まずは簡単なPythonスクリプトで動作確認をしていきましょう。例の 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 を選択します。



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


    [ 完了] ボタンを押すと テンプレートの選択画面になるので、<Empty> を選択すると、何も無い空のファイルを作成します。

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

    ファイル> 保管 と押すと上書きするかと聞かれるので OK を押します。 
        ワークスペースの C:\pleiades\workspace\helloWorld\src 内に helloworld.py が保存されています。




    ・ツールバーのデバックを起動してみます。
     左側 helloWorld.py を選択している状態で、ツールバーの緑矢印アイコンから 実行 > 2 Python 実行 を選択します。
     下のコンソールに実行結果が表示されれば OK です。

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





 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 を選択します。
    ・名前を入力します(拡張子無し)。
     Name helloWorld


    [ 完了] ボタンを押すと テンプレートの選択画面になるので、モジュール:メイン を選択して [OK] を押します。



    C:\Program Files\Autodesk\Maya2015\devkit\applications\scripted\helloWorld.py を参考に
      pass の部分を main() に置き換えます。



    ・すぐにエラー表示が出て来ます。
      すかさず、import 部分と main の中身を記述して完成させます。



    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 が保存されています。



    ・ツールバーのデバックを起動してみます。
     左側 helloWorld.py を選択している状態で、ツールバーの緑矢印アイコンから 実行 > helloWorld helloWorld.py を選択します。



    ・下のコンソールに実行結果が表示されます。
     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 を選択します。

    ・名前を入力します(拡張子無し)。
     Name ri_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 )
    




    ・最後の26行目は、ここで実行する為の記述で、ri_display_joint_localAxis.py として保存する時は削除する行です。

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

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

    ・メインメニューの Mayaと接続するボタン  を押します。



      Mayaのスクリプトエディターに --Connected to Maya-- と表示され、
      同時に、Eclipseのコンソールの MayaResults にも --Connected to Maya-- と表示されます。

    Maya2015 に Joint の階層構造を作成して、一番上のJointを選択状態にします。
    エディター内の全ての記述をMayaに送るボタン  を押します。


    ・Mayaのシーンで何も選択しないで Mayaに送るボタン  を押すと、Eclipseのコンソールの MayaResults
      Nothing is selected と表示されます。



    ・動作確認取れましたら、スクリプトが実行されるように書き足した最後の26行部分display_joint_localaxis() を削除して、
     ファイル> 保管 で保存します。
     C:\pleiades\workspace\ri_display_joint_localAxis\src ri_display_joint_localAxis.py が保存されます。

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





 Maya MEL エディター
     デバッグまで検証できていないのですが、
    EclipseColorerプラグイン をインストールすることで Maya MEL エディター (色分けされている) になるようです。
    インストールはちゃんと出来ましたので、ご紹介します。


    ヘルプ>新規ソフトウェアのインストール を選択します。



    ・作業対象 に http://colorer.sf.net/eclipsecolorer/ を追加します。



    ・中段 [全て選択] を押して [次へ] を押します。



    ・ライセンスに同意して [完了] ボタンを押します。

    Eclipse を再起動させます。



    ・左欄にプロジェクトのソースとしてMELを用意し、右マウスクリック > 次で開く > その他 > Colorer エディター> [OK] ボタンを押します
    新規でMelスクリプトを書く場合でも、Colorer エディターを 開くエディター として選択します。



    ・すると、Mel構文で色分けされて表示されます。
     


    ・Mayaを起動し、Mayaと接続するボタン  を押した後、Mayaに送るボタン  を押すと、
     window1というGUIが表示するスクリプトが実行され、任意の数値を入力すると、その結果が下のコンソールに記述されます。

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

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



     
    という訳で、次回 は ... What's Next ...

      乞う、ご期待!! Stay tuned ..