Maya Script Pyton – Mayaからフォトショップに送る その2

Mayaからフォトショップに送る方法その2です。
Pythonのwin32apiを使います。
win32api Pythonで調べるとライブラリを見つけられるかと思います。

 

Pythonのバージョンにあったものが必要で、2014では2.7それ以前では2.6のPythonバージョンの物をインストールすれば
大丈夫だと思います。
ただ、それをインストールしてもインストールしたマシンでしか、使用することができないようなので、
MayaでPythonパスと環境変数の追加をする必要があります。
win32apiを入れると、
C:\Python27\Lib\site-packages\
に色々と追加されます。
追加される項目は、
adodbapi
isapi
pythonwin
pywin32_system32
win32
win32com
win32comext
pythoncom.py
pythoncom.pyc
pythoncom.pyo
PyWin32.chm
pywin32.pth
pywin32.version.txt
pywin32-218-py2.7.egg-info
のようです。
全てが必要なわけではありませんが、ネットワークに置いて、他の人に使って貰う場合は、
共有ディレクトリに「site-packages」というディレクトリを作成し、そこに上記のものを全て入れてしまうのが
楽かと思います。
Pythonパスの追加は、スクリプトエディタで、

import sys
sys.path.append("Z:/site-packages")

などとすれば追加が可能です。
userSetup.pyに書くなりして共有が必要です。
環境変数の追加は、

import os
pywinPath = "Z:/site-packages/pywin32_system32"
print pywinPath in os.environ.get("PATH")
if not pywinPath in os.environ.get("PATH"):
	os.environ["PATH"] =  os.environ.get("PATH") + ";" + pywinPath

とすればMayaを起動している間は環境変数にパスを追加できるようです。
恐らくこれでwin32apiを使う準備が整ったかと思います。
win32apiがあると、Windowsで設定される読み取り専用属性が解除できます。
解除は、

import pymel.util.path as pmp
import win32file,win32con

Path = pmp("C:\\test")
for x in Path.walk():
	win32file.SetFileAttributes(x,win32con.FILE_ATTRIBUTE_NORMAL)

のようにするとC:\\test以下の全てのファイルの解除を行えます。

 

肝心のフォトショップに送信する方法は、

import win32com.client

texFile =  "C:\\test\\test.tga"
jsPath = "E:\\test\\test.js"

ps = win32com.client.Dispatch("Photoshop.Application")
ps.Open(texFile)
ps.DoJavaScriptFile(jsPath,[],1)

とすると送信できます。
Mayaからフォトショップにコマンドを送信するにはVBでないとダメだそうで、仕方なくフォトショップのサンプルにある
VBのスクリプトをいつくか見てみたのですが、最終的にジャバスクリプトを実行して処理しているものが多かったので、
真似してJavaScriptを実行するようにしました。
VBできちんとコマンドを書けばテクスチャのファイルパスを操作することもPythonを使ってできるので、
楽に色々できるかと思いますが、VBを書くのが面倒くさい。
今のところこれで事足りるからいいや。と、現状満足です。

コメントする

post date*

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

トラックバックする

トラックバック用URL:

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

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

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