前回はBlenderのPythonからJavaScriptを実行しましたが
今回はさらにPhotoshopにデータを受け渡すことを考えます。
Blenderのレンダリング画像を保存して、引数で保存した画像のファイルパスを渡しPhotoshopで開くものとします
今回もスクリプト等はデスクトップに置きます
VBHubに受け取った引数をそのままJavaScriptに受け渡す処理を追加します
VB_Hub.vbs
Option Explicit 'コマンドライン引数の取得 Dim oParam Set oParam = WScript.Arguments 'Photoshopを指定 Dim objApp Set objApp = CreateObject("Photoshop.Application") Dim arg_count arg_count = oParam.Count -1 If arg_count = 0 Then '追加の引数がない場合 objApp.DoJavaScriptFile oParam(0) Else Dim id '引数をjavascriptに渡すための配列 Dim ArgArray() ReDim ArgArray(arg_count - 1 ) '第一引数がスクリプトのパスのため取り除く For id = 0 To arg_count - 1 ArgArray(id) = oParam(id + 1) Next ''スクリプトの実行 objApp.DoJavaScriptFile oParam(0),ArgArray End If
VBscriptのWScript.Argumentsで引数を配列の形で受け取ります
配列の最初の項目はJavaScriptのパスになるので それ以降をJavaScriptに渡しています
次にJavaScriptです
Photoshopで画像を開くだけなら 実はJavaScriptを使わなくてもいいので
開いた画像を今開いている書類に複製する処理にします。
var active_doc = app.activeDocument //引数で指定したドキュメントを開いて現在のPSDに複製 if (arguments.length > 0){ var img_file = File(arguments[0]) var img = app.open( img_file ); img.artLayers[0].duplicate(active_doc) img.close() }
引数で設定された値は arguments で受け取ることができ、
配列形式で値を取り出すことができます
配列形式で値を取り出すことができます
ここではarguments[0]でファイルパスを受け取り 画像を開くし処理をしています
最後にBlenderのスクリプト
import bpy import os import subprocess #デスクトップフォルダのパス desktop_path = os.getenv("HOMEDRIVE") + os.getenv("HOMEPATH") + "\\Desktop" #実行するjavascriptのファイル名 js_name = "img_open.jsx" #ファイルパスを実行するOSの形式で取得 js_path = os.path.normcase( os.path.join(desktop_path, js_name) ) VB_Hub = os.path.normcase( os.path.join(desktop_path, "VB_Hub.vbs") ) #画像を保存するパス img_path = os.path.join(desktop_path, "render_img.png") #レンダリング画像を保存 bpy.data.images['Render Result'].save_render( filepath= img_path) #VBScript経由でjavascriptを実行 subprocess.call([ "CScript",VB_Hub, js_path, img_path, "//nologo" ])
レンダリング画像をデスクトップに保存して JavaScriptのパスといっしょに保存したファイルのパスを渡しています。
実行前にPhotoshopには適当な書類を開いて置き Blenderでレンダリングで画像を生成しておいてください
スクリプトの実行で Potoshopにレンダリング画像がレイヤーとして読み込まれたでしょうか?
ここまでは説明のためにシンプルな動作のものを作成しましたが
次は実用的なようにBlenderのアドオンにしたものを紹介したいと思います
ここまでは説明のためにシンプルな動作のものを作成しましたが
次は実用的なようにBlenderのアドオンにしたものを紹介したいと思います
0 件のコメント:
コメントを投稿