Maya Script Python – PS Script – フォトショップで保存を行うと同時にMayaでテクスチャリロード

またまた更新が滞っておりました。

 

Mayaではコマンドを実行しないとテクスチャはリロードされない。
ファイルの更新を監視してリロードする。というのも考えましたが、面倒くさそうなのと、
環境によっては色々と必要になりそうなので、他にいい方法はないのか、と探しておりました。

 

どうやらフォトショップから他のツールに対して信号を送ることができるらしく、
それを経由すればMayaにコマンドを送ることができるのではないか、ということでやってみました。

 

まずは下準備。

import maya.cmds as cmds
cmds.commandPort(n=':30000',stp='python')

Mayaで上記のコマンドを実行し、ポートを開いておきます。
userSetup.py等に書いておくと良いかと思います。

 

で、フォトショップスクリプト

if (app.documents)
{
	try{
		activeDocument.path;
		activeDocument.save();
		fileObj = new File("※注 フォトショップのスクリプトパス");
		fileObj.execute();
	}catch(e){
		alert("一度名前を付けて保存してください")
	}
}

※環境に応じたフォトショップのスクリプトパス

fileObj = new File("C:/Program Files/Adobe/Adobe Photoshop CS5 (64 Bit)/Presets/Scripts/texreload_send.py");
fileObj = new File("C:/Program Files (x86)/Adobe/Adobe Photoshop CS2/プリセット/スクリプト/texreload_send.py");

 

上記の物を適当な名前を付けて、「.js」の拡張子で保存します。
フォトショップのスクリプトパスにそれを移動します。
フォトショップを起動し、適当な画像を作成し、名前を付けて保存します。
始めに保存をしていないと、スクリプトは動作しません。
同じディレクトリに、以下のコードを、「texreload_send.py」という名前で保存します。

import socket
import sys

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('localhost', 30000))

com = "import maya.cmds as cmds;[cmds.setAttr(x+'.ftn',cmds.getAttr(x+'.ftn'),type='string') for x in cmds.ls(typ='file',type='mentalrayTexture')]"
sock.send(com)
sock.close()

 

Mayaでその画像を貼り付け、フォトショップでスクリプトを実行すれば効果を確認できます。
フォトショップのスクリプトを実行すると画像が保存され、コマンドの送信が始まります。

 

ただ、Python2.6をインストールする必要がある。
やはり環境を選ぶことになる。なので、色々と探していると、「py2exe」というモジュールを発見。
Pythonスクリプトをexeにしてくれるものらしい。
それで作ったexeがこちら
texreload_send
先ほどのフォトショップスクリプト、注の部分を

fileObj = new File("C:/Program Files/Adobe/Adobe Photoshop CS5 (64 Bit)/Presets/Scripts/texreload_send.exe");
fileObj = new File("C:/Program Files (x86)/Adobe/Adobe Photoshop CS2/プリセット/スクリプト/texreload_send.exe");

といったように拡張子をexeに置き換えれば使えます。

 

しかし、確認はしておりませんが、VC2008のランタイムがインストールされていないとそれでも動かないかもしれない。
まぁ、そんな方法もあるんだ。ということで、

コメントする

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トラックバックする

トラックバック用URL:

アニメーションが親切に解説されております

レンダリング、ライティングの基本が分かります

図版が見やすい美術解剖書です