Python

【Substance Designer】A4サイズの画像を扱いたい

shamimatsu

ver.2021を使用
チラシ等のデザインでサブスタンスデザイナー上でA4サイズの画像を扱いたいと思う時がたまにあるのですが読み込むと意図しない比率で表示されてしまいます。
これはサブスタンスデザイナーの仕様上そうなってしまうようなので、擬似的にA4比率を再現する方法を考えてみました。
ちなみに1:2、1:4などの長方形なら扱うことが出来ます。

A4サイズの比率を確認

「A4 比率」で検索してトップに出てきたページがこちら。1:1.415
データの縦横比率の話 – プリオ

もっと細かく言うなら 1:1.415 の比率です。

作り方

1.トランスフォーム2Dを作成
サブスタンスデザイナー2021だと「変形2D」になっています

2.トランスフォーム2Dのタイリングモードを「タイリングなし」に変更します。
タイリングなしにしないと横に縮めた時に絵がループしてしまいます。

3.マトリックス値を編集を押すと数値入力できるようになるので
X1に先ほど比率で調べた1.415を入力。これで表示がほぼA4比率になっているはずです。

pythonで簡単に設定する

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')
【Substance Designer】pythonコードメモサブスタンスデザイナーのpython情報はとても少なく、ちょっとした事でも残しておけば組み合わせでやりたい事にたどり着ける可能性もあるの...

参考サイト

もんしょの巣穴ブログ Ver2.0
Substance DesignerのPythonプラグインの基本

中国語のフォーラム
https://zhuanlan.zhihu.com/p/78296429

ABOUT ME
shamimatsu
shamimatsu
3DCGデザイナー
ながらくゲーム業界で2D、3DCGデザイナーとして働いてきましたが、新しい業界に挑戦中です。 ブログのデザインをリニューアル中のため、見づらい箇所もあるかもしれませんが少しづつ修正していきます。
記事URLをコピーしました