Substance Automation Toolkitでも使ってみるか

Substanceのインディー版を去年のブラックフライデーか何かで購入しました。
インディーライセンスではSubstance Automation Toolkitも使えるので試してみました!

Substance Automation Toolkitって?

Pythonを使ってノード作ったり、もろもろ自動化できます!(ざっくり)
詳しくは、ボンデジさんのページがわかりやすいです!
Substance Automation Tool kitとは – Born Digital サポート

インストール方法

こちらもボンデジさんのサポートページが一番わかりやすかったです。
セットアップとはじめに – Born Digital サポート

サンプルコード

以下はUniform Colorノードを2つ作り、
Outputノードと接続しSBSファイルとして保存するシンプルなコードを作ってみました。
※ Pysbs-2020.2.2を利用しています。

こういうノード構成を作り、SBSファイルとして保存します。
# coding: utf-8
import os
from pysbs import context
from pysbs import sbsenum
from pysbs import sbsgenerator

def createSBSGraph(aDestFileAbsPath):
    aContext = context.Context()
    startPos = [48, 48, 0]
    xOffset  = [192, 0, 0]
    yOffset  = [0, 192, 0]

    try:
        # ファイルと"SimpleMaterial"グラフをを作成する
        sbsDoc = sbsgenerator.createSBSDocument(
                                aContext,
                                aFileAbsPath = aDestFileAbsPath,
                                aGraphIdentifier = 'SimpleMaterial'
                                )

        # SimpleMaterialグラフを取得する
        aGraph = sbsDoc.getSBSGraph(aGraphIdentifier = 'SimpleMaterial')

        # BaseColor用のUniformカラーノードを作成する
        baseColor = aGraph.createCompFilterNode(
                        aFilter = sbsenum.FilterEnum.UNIFORM,
                        aParameters = {sbsenum.CompNodeParamEnum.OUTPUT_COLOR: [1, 0, 0, 1]},
                        aGUIPos     = startPos
                        )

        # Metallic用のUniformカラーノードを作成する
        metallic = aGraph.createCompFilterNode(
                        aFilter = sbsenum.FilterEnum.UNIFORM,
                        aParameters = {
                            sbsenum.CompNodeParamEnum.COLOR_MODE: sbsenum.ColorModeEnum.GRAYSCALE,
                            sbsenum.CompNodeParamEnum.OUTPUT_COLOR: 0.6
                            },
                        aGUIPos = baseColor.getOffsetPosition(yOffset)
                        )

        # BaseColorのアウトプットノードを作成する
        outBaseColor = aGraph.createOutputNode(
                            aIdentifier = 'BaseColor',
                            aGUIPos = baseColor.getOffsetPosition(xOffset),
                            aUsages = {
                                sbsenum.UsageEnum.BASECOLOR: {
                                    sbsenum.UsageDataEnum.COMPONENTS:sbsenum.ComponentsEnum.RGBA
                                    }
                                }
                            )

        # Metallicのアウトプットノードを作成する
        outMetallic = aGraph.createOutputNode(
                            aIdentifier = 'Metallic',
                            aGUIPos = metallic.getOffsetPosition(xOffset),
                            aUsages = {
                                sbsenum.UsageEnum.METALLIC: {
                                    sbsenum.UsageDataEnum.COMPONENTS:sbsenum.ComponentsEnum.RGBA
                                    }
                                }
                            )

        # Uniform ColorノードとOutputノードを接続する
        aGraph.connectNodes(aLeftNode = baseColor, aRightNode = outBaseColor)
        aGraph.connectNodes(aLeftNode = metallic,  aRightNode = outMetallic)

        # sbsファイルに書き込む
        sbsDoc.writeDoc()

        return True

    except BaseException as error:
        raise error


def main():
    destFileAbsPath = os.path.join(os.path.dirname(__file__), 'sample/resultDemoHelloWorld.sbs')
    createSBSGraph(destFileAbsPath)


if __name__ == "__main__":
    main()

感想

うーん、便利かもしれませんが…使うかは微妙です。

バリエーションを複数出力したい時は便利かもしれません。
例えば、水玉模様の色違いを1000枚自動出力する時とか。
色違いで素材集を作る時とか便利かもしれませんね。

ただ、実戦にならないと使う機会はないと感じました。
どのような状況下で費用対効果が高くなるかは今後の経験次第かもしれません。

関連記事

  1. Substance DesignerのPythonを使ってみたけど…のお話

    2021-01-26

  2. Maya Python API 2.0 応用編『最近接頂点スナップツールを作る』

    2021-05-07

  3. 処理の前後に別の処理を挟む?デコレータとWith文

    2021-01-09

  4. ブロガー必見!クリップボードの画像をサクサク保存しよう。

    2020-12-31

コメント

ABOUT

テクニカルアーティストの為のまとめサイトです。

本サイトでは、『YouTube ✕ Blog』を中心に
情報発信をしていきます。

また、テクニカルアーティストとしての様々な
ライフハック記事も投稿予定です。

限定情報会員

PATREONでは、限定情報やサンプルファイルの配布も行っています。登録頂けると更新頑張れます。支援の方よろしくお願いします。


免責事項

本ウェブサイト内で公開している全ての情報の有用性や安全性については当方は一切の保証を与えるものではありません。
利用したことによって引き起こる直接および間接的な損害に対して当方は一切責任を負うものではありません。
全て自己責任でご使用ください。

3DCGBOOK出版

BOOTHで技術書を販売利しております。







スポンサー

ページ上部へ戻る