pky's creativelog

UE4を中心にデジタル創作のメモログです

pky's creativelog

sbsrenderを使ってsbsarファイルを一括レンダリングする

Substance Designerで作成したsbsarファイルから一括で画像を出力したい事があると思います。


例えば、

  • テクスチャをサムネイルで確認できるようにサムネイル一覧を作成したい。
  • 一括でフィルタ処理を入れたので全部再出力したい。
  • グラフ内で使用していたsbsarファイルが更新されたので、一括でテクスチャを再出力したい。

などなど。

 

こういった自動化に対しては、

Substance Automation Toolkit | Substance 3D

という専用のソフトウェアが用意されています。

www.substance3d.com



その中の一部のソフトウェアは、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ファイルでバッチファイルと同じフォルダへ一括出力します。
f:id:pkyblog:20201013202452g:plain

出力サイズはSubstanceDesignerでの指定と同じく、2の累乗指定なので、9だと512、10だと1024といった具合です。

出力ファイル名は{}で囲ったパターンがいくつか使用できるようになっています。
この場合だと、sbsarファイル名_outputノード名となります。
 

これらオプションの詳しい説明はsbsrenderのヘルプページをご覧ください。
sbsrender command line options - Substance Automation ToolKit


上記のサンプルバッチファイルは以下からダウンロード頂けます。

sbsar_render_dir.bat - Google ドライブ


ご参考になれば幸いです。