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についてもお話してみようと思ってます。
それでは!
コメント