株式会社モノリスソフトは8月3日(月)、同社公式技術ブログにて記事「PythonでPhotoshopのツールを作りたい」を公開した。著者は同社テクニカルアーティスト菅原氏。UI作成や保守の観点から、Pythonを用いてPhotoshop用の独自ツールを開発するにあたって、特にPython環境を持たないデザイナーにツールを配布するための実践的なファイル構成やプログラムの実装例を紹介している。

開発環境の選定とツールのワンパッケージ化

菅原氏は今回、Photoshopの外部操作ツールとして、ドキュメントやサンプルが豊富で、導入のしやすいオープンソース(MITライセンス)ツールの「Python API for Photoshop」を採用。また、UI構築のフレームワークには「PySide6」を用いている。

複数のデザイナーからなるチーム作業に用いる独自ツールの開発においては、ツールをデザイナーに配布する際の環境依存をなくす工夫が必要となる。通常、Pythonで作成したツールを動かすには使用者のPCにもPythonがインストールされている必要があるが、本事例では、変換パッケージ「PyInstaller」を使用して、スクリプトをWindows用の実行ファイル(exe)としてビルド。これにより、現場のデザイナーは複雑な環境設定を行うことなく、配布された実行ファイルを起動するだけでツールを利用できる。

複数バージョンの共存対策と安定稼働に向けた工夫

菅原氏はまた、現場のPC環境特有の課題として、複数のバージョンのPhotoshopが同一のPCにインストールされている場合の誤作動対策を詳細に解説。PythonがPhotoshopへの接続処理を行う際、どのバージョンを使用するかをプログラム側で明確に指定しないと、意図しないバージョンで処理が実行されてしまう問題が発生する。

この課題を解決するため、本記事ではPhotoshop上からツールを呼び出すための専用スクリプトとして、バージョンごとにJavaScriptをベースとしたPhotoshop用スクリプト(.jsx形式)を作成するアプローチを提示。この起動用スクリプトが現在のPhotoshopのバージョン情報を環境変数に書き込み、実行ファイルの起動に、この実行ファイル(Pythonツール)が環境変数を読み取る。そして、バージョンが一致しているかを確認した上で、安全に接続処理を行う。

また、実行ファイルとして独立起動したPythonのUI画面がPhotoshopのウィンドウの背後に隠れてしまうという問題については、プログラム内でダイアログの表示設定に常に最前面に表示するためのフラグである「WindowStaysOnTopHint」を付与することで解決できる。

■PythonでPhotoshopのツールを作りたい(モノリスソフト TECH BLOG)
https://www.monolithsoft.co.jp/techblog/articles/000663.html

CGWORLD関連情報

●Lucas Piazzini氏、現実の金属における微細な傷が引き起こす複雑な反射の物理的メカニズムとレンダラ上で再現するための複数のアプローチについて比較・解説する動画を公開

ILMのジェネラリスト・Lucas Piazzini氏が動画「Forgotten Metal Knowledge | Vray, Cycles, Arnold..」を公開。映画『アイアンマン』(2008)のCGスーツに見られる金属表現「Reflection Tail-off(反射のテールオフ)」現象に着目し、現実の金属における微細な傷が引き起こす複雑な反射の物理的メカニズムと、それをV-RayやBlender(Cycles)、Arnoldレンダラで再現するための複数のアプローチについて比較・解説している。
https://cgworld.jp/flashnews/01-202608-MetalKnowledge.html

●デジタル・フロンティア、OpenPBR検証記事「OpenPBRのすゝめ ツールに依存しない新しい標準マテリアル」を公式noteで公開

デジタル・フロンティアのTD高橋氏が同社note「DF TALK」にて、検証記事「OpenPBRのすゝめ ツールに依存しない新しい標準マテリアル」を公開。マテリアルのオープンスタンダードフォーマット「MaterialX」の普及を目指すプロジェクトの検証シリーズ第3弾として、MaterialXのサブプロジェクトとして共同開発されているシェーディングモデル「OpenPBR」に焦点を当て、ArnoldやUnreal Engine、Karmaなど複数の主要レンダラを用いた描画結果の比較を提示している。
https://cgworld.jp/flashnews/01-202607-DF-OpenPBR.html