Substance Designer Scripts事始め
気づけば2年振りのブログ更新です。
年末はSDノード本2の作成に追われていましたが、やっと完成してリリース出来ました。
また新しい事にチャレンジする時間が出来ましたので、SDスクリプトを試してみています。以前にも試したのですが、すっかり忘れてしまったので、サンプルから見ていました。
ユーザーインターフェースのサンプルは以下のマニュアルにあります。
https://docs.substance3d.com/sddoc/creating-user-interface-elements-172824940.html
SD Scriptでは、ユーザーインターフェースはPyside2を利用することになっています。
MayaやHoudiniユーザーには有難いですね。
ひとまずは、このサンプルを Windows>Python Editorに貼り付けて実行ボタンを押すとサンプルスクリプトを試すことが出来ます。
以下は、Creating Dialogsというサンプルの実行結果です。フローティングウィンドウが表示されます。
Creating Panelsというサンプルでは、SD本体のウィンドウにドッキング可能なパネルを作成することが出来ます。ただ、パネルにすると、SDが起動する度にパネルが表示されてしまう為、使用頻度が高いものだけに使うほうがよさそうです。
Windows>該当パネル を表示オフにしておけば次回起動時には非表示のままSD起動してくれるようです。
まず簡単なところで、現在のグラフの全ノード名を取得して一覧表示するものを試しました。
グラフの全ノードを取得して名前を表示するのは以下のようになります。
import sd
app = sd.getContext().getSDApplication() uiMgr = app.getQtForPythonUIMgr() # 現在のグラフを取得 graph = uiMgr.getCurrentGraph() # グラフ内のノードを全て取得 nodes = graph.getNodes() for node in nodes: definition = node.getDefinition() nodeId = node.getIdentifier() print("node %s, id = %s" % (definition.getLabel(), nodeId))
実行すると、CONSOLEウィンドウに以下のようにプリントされます。
[MSG][2]node Base Color, id = 1213284337
[MSG][3]node Normal, id = 1213284339
[MSG][4]node Roughness, id = 1213284341
[MSG][5]node Metallic, id = 1213284343
[MSG][6]node Height, id = 1279137030
[MSG][7]node Uniform Color, id = 1359211355
[MSG][8]node Normal, id = 1359211383
[MSG][9]node Uniform Color, id = 1359211391
[MSG][10]node Uniform Color, id = 1359211407
[MSG][11]node Uniform Color, id = 1359211415
[MSG][12]node Uniform Color, id = 1359211719
[MSG][13]node Ambient Occlusion, id = 1359211720
[MSG][14]Run finished.
ノードに関する情報の取得に関しては、以下のサンプルコードで様々な情報を取得できるようです。
https://docs.substance3d.com/sddoc/nodes-and-properties-172825056.html
ライトやカメラを操作したかったのですが、APIを見る限りは残念ながらまだ無さそうですので、また違うことを試してみたいと思います。