sbsrenderを使ってsbsarファイルを一括レンダリングする
Substance Designerで作成したsbsarファイルから一括で画像を出力したい事があると思います。
例えば、
- 全ての解像度を上げて(下げて)、再レンダリングしたい。
- テクスチャをサムネイルで確認できるようにサムネイル一覧を作成したい。
- 一括でフィルタ処理を入れたので全部再出力したい。
- グラフ内で使用していたsbsarファイルが更新されたので、一括でテクスチャを再出力したい。
などなど。
こういった自動化に対しては、
Substance Automation Toolkit | Substance 3D
という専用のソフトウェアが用意されています。
その中の一部のソフトウェアは、Substance Designerに標準で付いています。
- sbscooker
- sbsupdater
- sbsrender
sbsarファイルをレンダリングする、sbsrenderも入っています。
これを使うと、複数のsbsarファイルをバッチ処理で一括レンダリングすることが出来ます。
sbsrender - Substance Automation ToolKit
これらはコマンドラインから実行するUIが無いツールで、コマンドを打ち込んで実行する為、慣れていないとやや敷居が高いと思います。
基本的な使い方
"C:\Program Files\Allegorithmic\Substance Designer\sbsrender.exe" render --input "C:\Test\test.sbsar"
このようにsbsarファイルのパスを書いてコマンドプロンプトから実行すると、sbsarファイルがあるフォルダ以下にsbsar内の全outputノードの出力テクスチャがpngフォーマットで256x256サイズで出力されます。
ただし、これでは複数のsbsarファイルを一括レンダリングは出来ないので、バッチファイルで簡単なスクリプトを記述する事になります。
フォルダ以下のsbsarファイルのbasecolor出力を一括レンダリングする
@echo off for /r %%a in (*.sbsar) do ( echo Render : %%a "C:\Program Files\Allegorithmic\Substance Designer\sbsrender.exe" render --input %%a --output-path %~dp0 --output-format "jpg" --set-value $outputsize@9,9 --input-graph-output "basecolor" --output-name "{inputName}_{outputNodeName}" )
このように記述したバッチファイルへ、sbsarファイルが入ったフォルダを投げ込むと、サブフォルダを含めてすべてのsbsarファイルのbasecolor出力を512 x 512サイズのjpgファイルでバッチファイルと同じフォルダへ一括出力します。
出力サイズはSubstanceDesignerでの指定と同じく、2の累乗指定なので、9だと512、10だと1024といった具合です。
出力ファイル名は{}で囲ったパターンがいくつか使用できるようになっています。
この場合だと、sbsarファイル名_outputノード名となります。
これらオプションの詳しい説明はsbsrenderのヘルプページをご覧ください。
sbsrender command line options - Substance Automation ToolKit
上記のサンプルバッチファイルは以下からダウンロード頂けます。
sbsar_render_dir.bat - Google ドライブ
ご参考になれば幸いです。