[MAYA][jsx]photoshopスクリプトからMAYAのポリゴン球を生成する


Photoshopのスクリプトで他のファイルを実行させることが出来ます。
そこで別記事で書いた外部からMAYAにコマンド送れるのを利用して

PhotoshopスクリプトからMAYAにポリゴンの球を生成させたいと思います。

index

・.execute()

例えば以下のコードの様にgoogle Chromeのパスを指定してオブジェクトに対応させます。
appliPath = "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe"
applicationfile = new File(appliPath);
applicationfile.execute();
オブジェクト.execute();
とすることで、対象のファイルを実行できます。

・GUIボタンを配置

GUIのボタンのクリックで実行したいので、
先にPhotoshopのオリジナルのGUIウィンドウを作っておきます。
var gUIWindow = new Window('dialog','テストウィンドウ');

gUIWindow.bounds = [200,100,410,280];

gUIWindow.okBtn = gUIWindow.add("button",[5,110,100,170], "実行",{name:'ok'});
gUIWindow.cancelBtn = gUIWindow.add("button",[105,110,200,170], "キャンセル", {name:'cancel'});

gUIWindow.show();
使用しているPhotoshopはバージョンは、[Photoshop2020]です。
このGUIのボタンに先ほどのファイル実行のコードを対応させます。

・Chromeを起動

var gUIWindow = new Window('dialog','テストウィンドウ');

gUIWindow.bounds = [200,100,410,280];

gUIWindow.okBtn = gUIWindow.add("button",[5,110,100,170], "実行",{name:'ok'});
gUIWindow.cancelBtn = gUIWindow.add("button",[105,110,200,170], "キャンセル", {name:'cancel'});

gUIWindow.show();


gUIWindow.okBtn.onClick= function()
{
    appliPath = "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe"
    applicationfile = new File(appliPath);
    applicationfile.execute();

    UIWindow.close();
}

gUIWindow.cancelBtn.onClick= function()
{
    UIWindow.close();
}

このjsxファイルを保存して、実行します。

Photoshopでウィンドウが開いたら早速[実行ボタン]を押します。

chromeが立ち上がったら成功です。

実行できない方はchromeが64bitだとパスが違うので、パスを見直してみてください。

このようにPhotoshopのスクリプトから他のファイルを起動できるのは確認できたので、今度はMAYAにコマンドを送るPythonファイルを作ります。

・Pythonファイル

ps_to_maya.pyと名前を付けてPythonファイルを保存します。
#!/usr/bin/python
# -*- coding: utf-8 -*-


import sys
import socket



mayaSocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

try:
    mayaSocket.connect(('127.0.0.1', 6000))
except socket.error:
    print ' ERROR: Maya commandPort is not open.  '
    sys.exit()


cmd_mel = '''polySphere -r 15 -sx 12 -sy 12;'''
mayaSocket.send( cmd_mel)

mayaSocket.close()

このファイルをPhotoshopから実行できるようにしようと思います。

・Pythonファイルをexeファイルに変換

ただこのままのPythonファイルのままだと、実行できないので、
exeファイルに変換します。
Pythonファイルをexeファイルに変換する方法は多数あるみたいですが

今回は pyinstaller を使います。

pyinstallerパッケージをインストールします。

pip install pyinstaller

でインストールできるはずなのですが

python -m pip install pyinstaller

筆者の場合は上手くいかなかったので、このようにしてインストールしました。

exeファイルに変換します

Mac:
pyinstaller ps_to_maya.py –onefile

Windows:
pyinstaller ps_to_maya.py –onefile –windowed

WindowsOSの場合は[–windowed]のオプションを付けるみたいです。
筆者はWindowsを使っているのでオプションを付けて実行しました。
[–onefile]関連ファイルを一つにまとめるオプション
[–windowed]Windoseのバイナリを作るオプション

ズラズラーーっと長いログが続き終了

C:\Python27\dist に ps_to_maya.exe ファイルが出来ました。

このps_to_maya.exeをダブルクリックで実行してみます。
その前にMAYAのポートを開けるコマンドをMAYAのスクリプトエディタで実行しておいてください。
Python:
import maya.cmds
maya.cmds.commandPort(name=':6000')
MEL:
commandPort -nr -n "localhost:6000";
ps_to_maya.exeをダブルクリックで実行してみます。

きちんとポリゴンの球が生成されました。

・Photoshopのスクリプトの変更

それではPhotoshopのスクリプトを変更します。
gUIWindow.okBtn.onClick= function()
{
    appliPath = "C:/Python27/dist/ps_to_maya.exe" //変更
    applicationfile = new File(appliPath);
    applicationfile.execute();

    UIWindow.close();
}
ファイルのパスを変更しました。
PhotoshopのGUIの[実行ボタン]をクリックします。
先ほどと同じ球体が生成されました。
exeファイルを実行してMAYAにコマンドを送れることが分かったので
工夫次第でもっと連携させたりと便利なスクリプトが作れそうです。

・まとめ

オブジェクト.execute(); を使うことで他のファイルを実行でき
Pythonファイルをexeファイルに変換することで、

PhotoshopのスクリプトからMAYAに球体を生成させる事ができました。

これを応用することで、PhotoshopとMAYAの連携させるスクリプトが
作れるようになるのではないでしょうか。