【Maya:Python】ファークリッププレーンの値をまとめて変更する
shamimatsu
三味松ブログ
ver.2021を使用
チラシ等のデザインでサブスタンスデザイナー上でA4サイズの画像を扱いたいと思う時がたまにあるのですが読み込むと意図しない比率で表示されてしまいます。
これはサブスタンスデザイナーの仕様上そうなってしまうようなので、擬似的にA4比率を再現する方法を考えてみました。
ちなみに1:2、1:4などの長方形なら扱うことが出来ます。
「A4 比率」で検索してトップに出てきたページがこちら。1:1.415
データの縦横比率の話 – プリオ
もっと細かく言うなら 1:1.415 の比率です。
1.トランスフォーム2Dを作成
サブスタンスデザイナー2021だと「変形2D」になっています
2.トランスフォーム2Dのタイリングモードを「タイリングなし」に変更します。
タイリングなしにしないと横に縮めた時に絵がループしてしまいます。
3.マトリックス値を編集を押すと数値入力できるようになるので
X1に先ほど比率で調べた1.415を入力。これで表示がほぼA4比率になっているはずです。
pythonの勉強もかねて自動化してみました。
読み込んだ画像を選択して以下のコマンドを実行すると、ほぼ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')
もんしょの巣穴ブログ Ver2.0
Substance DesignerのPythonプラグインの基本
中国語のフォーラム
https://zhuanlan.zhihu.com/p/78296429