【Maya:Python】ポリゴン数を表示・取得する
shamimatsu
三味松ブログ
サブスタンスデザイナーのpython情報はとても少なく、ちょっとした事でも残しておけば組み合わせでやりたい事にたどり着ける可能性もあるのでメモ用記事を作りました。
随時追加していく予定です。
読み込んだA4サイズ画像を選択して以下のコマンドを実行すると、ほぼA4比率に設定されたトランスフォーム2Dに接続されます。
詳しく見る場合はこちら↓
import sd
from sd.api.sdproperty import SDPropertyInheritanceMethod
from sd.api.sdproperty import SDPropertyCategory
from sd.api.sdvalueenum import SDValueEnum
from sd.api.sdbasetypes import float4
from sd.api.sdvaluefloat4 import SDValueFloat4
cxt = sd.getContext()
app = cxt.getSDApplication()
UImgr = app.getQtForPythonUIMgr()
#選択ノードを取得 今回はビットマップ
sels = UImgr.getCurrentGraphSelection()
sel = sels[0]
#現在のグラフを取得
graph = UImgr.getCurrentGraph()
#トランスフォーム2Dを作成して、タイリングなし 比率変更
node = graph.newNode('sbs::compositing::transformation')
node.setInputPropertyInheritanceMethodFromId('$tiling', SDPropertyInheritanceMethod.Absolute)
node.setInputPropertyValueFromId('$tiling', SDValueEnum.sFromValueId('sbs::compositing::tiling', 'no_tiling'))
node.setInputPropertyValueFromId('matrix22', SDValueFloat4.sNew(float4(1.415,0,0,1)))
#ビットマップとトランスフォーム2Dを接続
bitmap_output = sel.getProperties(SDPropertyCategory.Output)[0]
sel.newPropertyConnectionFromId(bitmap_output.getId(), node, 'input1')
初期値は通常すべて0.5です。
HSL以外の一部ノードでも応用が効くと思います。
参考資料:https://forum.substance3d.com/index.php?topic=28926.0
import sd
from sd.api.sdvaluefloat import SDValueFloat
cxt = sd.getContext()
app = cxt.getSDApplication()
UImgr = app.getQtForPythonUIMgr()
#現在のグラフを取得
graph = UImgr.getCurrentGraph()
#HSL 色相 彩度 明度の値を指定して配置
node = graph.newNode('sbs::compositing::hsl')
node.setInputPropertyValueFromId('hue', SDValueFloat.sNew(0.1))
node.setInputPropertyValueFromId('saturation', SDValueFloat.sNew(0.2))
node.setInputPropertyValueFromId('luminosity', SDValueFloat.sNew(0.3))
カラーモード、テキスト、フォント、サイズ、カラーを指定してみました。
import sd
from sd.api.sdvaluefloat import SDValueFloat
from sd.api.sdvaluestring import SDValueString
from sd.api.sdvaluefloat import SDValueFloat
from sd.api.sdvaluebool import SDValueBool
from sd.api.sdvaluecolorrgba import SDValueColorRGBA
from sd.api.sdbasetypes import ColorRGBA
cxt = sd.getContext()
app = cxt.getSDApplication()
UImgr = app.getQtForPythonUIMgr()
#現在のグラフを取得
graph = UImgr.getCurrentGraph()
#テキスト 文字列、フォント、サイズを指定して配置
node = graph.newNode('sbs::compositing::text')
node.setInputPropertyValueFromId('colorswitch', SDValueBool.sNew(1))
node.setInputPropertyValueFromId('text', SDValueString.sNew('python'))
node.setInputPropertyValueFromId('fontdata', SDValueString.sNew('Century Gothic|Regular'))
node.setInputPropertyValueFromId('fontsize', SDValueFloat.sNew(0.3))
node.setInputPropertyValueFromId('frontcolor', SDValueColorRGBA.sNew(ColorRGBA(1,1,0,1)))
スポンサーリンク
1つのノードを選択した時しか処理しません。
参考:https://zhuanlan.zhihu.com/p/78296429
import sd
from sd.api.sdproperty import SDPropertyCategory
cxt = sd.getContext()
app = cxt.getSDApplication()
UImgr = app.getQtForPythonUIMgr()
sels = UImgr.getCurrentGraphSelection()
if not sels:
print('何も選択されていません')
elif len (sels) == 1:
sels = UImgr.getCurrentGraphSelection()
sel = sels[0]
props = sel.getProperties(SDPropertyCategory.Input)
for prop in props :
print(prop.getId())
else:
print('ノードは1つしか遇択できません')
mayapyでは個人的によく使っていたので強制終了には驚きました。
sys.exit()は次のコードがあっても処理をそこで止めるというコマンドです。
sys — システムパラメータと関数 — Python 3.9.1 ドキュメント
100%落ちるため試す場合は気を付けてください
import sd
import sys
print('shamimatsu blog')
sys.exit()