当ブログのリンクにはプロモーションを含む場合がありますのでご了承下さい

【Substance 3D Designer】Pythonで均一カラーノードを作成する

Pythonを使ってグラフにノードを作成する方法について調べました。

Substance 3D Designerのスクリプティング情報って少ないからね

まず、基本的なお作法から。

Windowsメニューの Python Editorを開くとPython用のテキストエディタが開きますので、
そこでコードを打ち込んで実行ボタンを押すと、その場で書いたスクリプトを動かすことができます。

この方法は、少しコードを試したい、といった場合に便利な方法です。

Python基本的なところ

以下はごく基本的なところですが、現在開いているグラフを取得します。

import sd

context = sd.getContext() 
app = context.getSDApplication() 
ui_mgr = app.getQtForPythonUIMgr()

# 現在のグラフを取得
graph = ui_mgr.getCurrentGraph()

上部の3行部分については、Substance 3D DesignerでのPython操作では毎回書くようなほど頻度が高いもののようです。UI Managerの取得をしないと、様々な情報にアクセスが出来ないからです。

Substance 3D DesignerのPython APIは以下にファイルが入っているので、直接pyファイルを見ることが出来ます。

Substance 3D Designer Python API格納場所

インストールパス/resources/python/sd

均一カラーノードの作成

本題の均一カラーノードの作成は、以下のようなコードになります。

import sd
from sd.api import sdproperty, sdvaluefloat4
from sd.api.sdbasetypes import float4

context = sd.getContext() 
app = context.getSDApplication() 
ui_mgr = app.getQtForPythonUIMgr()

# 現在のグラフを取得
graph = ui_mgr.getCurrentGraph()

# 現在のグラフにUniformColorノードを作成
node = graph.newNode("sbs::compositing::uniform")

# 作成したノードに色のパラメータを設定
node.setInputPropertyValueFromId(
    "outputcolor",
    sdvaluefloat4.SDValueFloat4.sNew(float4(1, 0, 0, 1))
)

float4など数値の受け渡しが面倒な印象が強いね・・・

Pythonエディタにコードを貼り付けて実行ボタンを押すと、現在開いているグラフ内に均一カラーノードが作成されます。