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

Substance DesignerのPythonを少し触ってみました。
いろいろやっているうちに気づくことがあったのでまとめておきます。

結論としては、うーん、使うかなー?っていう印象でした。
※ Substance Designer 2020.2.2を利用しています。

Substance DesignerでPythonを使うには?

簡単な方法は用意されているPython Editorを利用することです。
メニューのWindows > Python Editor を実行すると以下のようなエディタが開きます。

あとは、ガリガリPythonを書くだけです。
始めるなら公式のスクリプトのドキュメントを見ながらやるのが良いでしょう。

Scripting – Substance Designer

サンプルコード

選択したUniform ColorノードのOutput Colorを赤色にするスクリプトです。

from sd.api.sdproperty import SDPropertyCategory
from sd.api.sdvaluecolorrgba import SDValueColorRGBA
from sd.api.sdbasetypes import ColorRGBA

# 現在開いているグラフを取得する
g = uiMgr.getCurrentGraph()

# グラフ内の選択しているノードを取得する
selection = uiMgr.getCurrentGraphSelection()
for node in selection:
    # ノードに存在するインプット関連のパラメーターを取得する。
    props = node.getProperties(SDPropertyCategory.Input)
    for prop in props:
        # パラメーター名が"Output Color"の場合は赤色をセットする
        if prop.getLabel() == "Output Color":
            value = node.setPropertyValue(
                prop,
                SDValueColorRGBA.sNew(ColorRGBA(1,0,0,1))
            )

ちょっとイケてないと思ったところ

APIリファレンスが充実していない

一応あるにはあるんですが、中身のコマンド関連は自分でhelpコマンドを使って調べたり、
それでもわからなければ元のpythonファイルの中身を調べていかないといけません。

Scripting API reference – Substance Designer

全て型指定する必要がある!勝手に解釈してくれ~

18行目に以下のような指定がありますが・・・
使いにくすぎる!型を指定して、引数でも型指定しないと通らない!

SDValueColorRGBA.sNew(ColorRGBA(1,0,0,1))

うーん、float4なら、[1,0,0,1]とリストやタプルを入れれば解釈してほしいです。
型をいちいち指定しなければいけないとなると
モジュールのimport部分が相当荒れる気がします…。

intやfloatも全て用意された型を使うので、さすがにそれはないと思いました。

Pythonを使うならココ!

Substance Designerの仕様でイケてないところは、

複数選択してプロパティーを変更しても、
後に選択したものしか設定した値が反映されない!

フォーラムでも意見が出ていますね。
Multiple nodes modification – Feedback – Substance

フォーラムの中で値を公開してリンクするといった方法もありましたけど違うんですよね。
そんな設定せずともユーザーは同時選択してサクサク複数のパラメーターを設定したいのです。

Substance Designerのように1つ1つのノードが複雑になると難しいんだろうなぁ…
というのはUI設計目線でもわかります。

ただ、これ改善されればSubstance Designerはかなり使い勝手よくなりますよね。

参考リンク

以下を見ればなんとなくわかるはずです!参考にしましょう~。

Substance DesignerのPythonプラグインの基本 – もんしょの巣穴ブログ Ver2.0
Substance Designer Scripts事始め – pky’s creativelog
【Substance Designer】pythonコードメモ|三味松ブログ

まとめ

HoudiniやMaya、UE4のAPIリファレンスを見るのに慣れていると物足りなさを感じてしまう…。

というよりも、まだまだ発展途上だし、
Substance DesignerにPythonの有用性が低いってのも大きいかもしれませんね。

また、別の機会にSubstance Automation Toolkitについてもお話してみようと思ってます。
それでは!

関連記事

  1. objectSetを使ってチェックツールを発展させよう!

    2021-12-06

  2. rivetリグの作り方4選!

    2022-09-15

  3. やろうぜ!FX-Map!

    2020-12-02

  4. UI、HUDで使えそう?Substance Designerの便利ノードを紹介するよ

    2021-02-14

コメントをお待ちしています。

コメント

ABOUT

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

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

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

限定情報会員

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


免責事項

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

3DCGBOOK出版

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







スポンサー

ページ上部へ戻る