SubstanceDesigner VectorWarpについて

Category : CGTips · by 6月 17th, 2020

今日はSubstance Designer のVector Warpについて調べてみました。

https://docs.substance3d.com/sddoc/vector-warp-159450546.html

Vector Warpは、Directionla Warpと同様に入力画像を歪めます。Directionla Warpと異なる点はベクトルマップを用いて複数の方向に歪めることです。
ベクトルマップは法線マップに似ていますが、RとGのチャネルだけを用いて、変形する方向を示したものです。
まずは簡単に挙動を確認してみましょう。

歪める元の画像は「夏」という文字です。この画像を2つのグレーを合成して作ったRGB画像に使用します。
Rにインプットされている1つ目の値は画像を横方向に変形させます。フロート値での0.5を基準として、0に近づくほど右に動き、1に近づくほど左に動きます。
Gにインプットされている2つ目の値は画像を縦方向に変形させます。フロート値での0.5を基準として、0に近づくほど下に動き、1に近づくほど上に動きます。

グラデーションを使ってみます。
上が明るく、下が暗いグラデーションが1つ目の値にインプットされているので、上に行くほど左に動き、下に行くほど右に動きます。
2つ目の値は0.5なので縦方向には変形しません。

先程までRGBA Mergeでカラー画像を作成していましたが、もともとカラーの画像でも同じ事ができます。グラデーションの入った球からNormalを作成し、インプットしてみます。
すると縦と横方向に変形します。(Normalの値は強めにして下さい)

Normalの値を逆にすると、中心を膨らませることができます。

では画像のようにインプットされた画像をねじりたい場合にはどうすればいいでしょうか?

答えを見る前に、そもそもNormalに変換した球の画像はどういうデータなのかを確認してみます。目的を達成するためには、いま自分が扱っているものの正体を正しく知る必要があります。

RGBA Splitで分解するとRチャンネルは左が暗くて右が明るい球、Gチャンネルは上が暗くて下が明るい球なことを確認できます。Bチャンネルには薄っすらと中心が明るい球が見えます。
一番最初の例に戻りますが、Vector WarpはRにインプットされている値で画像を横方向に変形させ、Gにインプットされている値で画像を縦方向に変形させるものでした。

言い換えると、Rの画像は横にどれくらい動かすかというデータなのですが、Normalに変換した球を見るとRの要素が横方向に変化があるデータです。

Normalにした球でVector Warpをかけると中心によるように変形するのはこういうデータだからなのです。

そこで、(非常にハック的なのですが)Transform2DでNormalを回転させることによって、Rチャンネルは上が暗くて下が明るい球に、Gチャンネルは左が明るくて右が暗い球に変わります。このような画像であれば、Rチャンネルで左右への移動、Gチャンネルで上下への移動が円周方向の動きになりそうです。

つまりたったこれだけでねじる動きに変換できます。

応用すればこのようなものも作れるのでぜひやってみてください。

今回はこちらのTweetのテクニックを発端に、Vector Warpの使いこなしについて解説してみました。

SHARE :