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

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


Photoshopのスクリプトで他のファイルを実行させることが出来ます。

そこで別記事で書いたPythonで外部からMAYAにコマンド送れる事を利用して

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


SAMURAI ENGINEER Plus+

.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 

commandString = sys.argv 
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()

別の記事で紹介したコマンドポートを開けてMELコマンドを送るコードです。


 

このファイルを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='localhost: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にコマンドを送れることが分かったので
工夫次第でもっと連携させたりと便利なスクリプトが作れそうです。

Windows限定のテクニックですが、exeファイルを作らないで、
PhotoshopのメニューからPythonを実行させる内容の記事です。


まとめ

 
オブジェクト.execute(); を使うことで他のファイルを実行できます。

Pythonファイルをexeファイルに変換することで、

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

そして.EXEファイルなのでPython環境が無い人にも配る事が可能です。

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








【TechAcademy(テックアカデミー)ブートキャンプ】

TechAcademy [テックアカデミー] では、初心者でも短期間でPython・機械学習が学べるオンラインブートキャンプPythonコース を開催しています。

過去に独学のプログラミング学習で挫折した経験のある方でも、パーソナルメンターがビデオとチャットでサポート。疑問点を直ぐに解決して次の課題に取り組めます。

オンラインプログラミングスクール受講者No.1、TechAcademy(テックアカデミー)の学習システムの内容や疑問点を聞く事ができるTechAcademy無料動画説明会 も実施されているので、ぜひ参加してみてください。



SAMURAI ENGINEER Plus+

𝕏 ( 旧Twitter ) Facebook Pocket LINE はてブ

おすすめの関連記事



あわせてよく読まれている記事