Substance Designer – Transformation2Dノードの値 その1

SbustanceDesigner、とても便利です。ゲームCGに特化しており、今後ゲームCG作成に置いては必須のツールとなって行くでしょう。
ただ、色々と細かいところが洗練されておらず、まだまだ進化の余地が数多く残されているのも事実だと思います。
今回は個人的に困った、Transformation2Dノードの値の変更を外に出して、テクスチャのスケールを変更する方法を記事にしてみます。
日本語のドキュメントが少なく、手探りでやったことなので、正式のやり方ではありませんが、とりあえず出来たので、備忘録として書いておきます。

 

まず始めに新規でSubstanceを作成します。
2014_08_07Image_01
SubstanceDesignerを起動し、左上のアイコン、「Add a new Substance」を押します。
ダイアログが表示されるので、
2014_08_07Image_02
今回は、「diffuse」のみを残して、バツボタンを押して、他のマップを削除します。
2014_08_07Image_03
こんな感じです。
2014_08_07Image_04
すると、このような感じで、新規にグラフが作成されます。
今回は、トランスフォームの具合が分かりやすいように、「Patterns」の「Fibers2」を使用してみます。
2014_08_07Image_05
「Library」から選んで、グラフにドラッグ・アンド・ドロップします。
2014_08_07Image_06
次に、ドロップしたノードの右端にある丸い部分をマウスでプレスし、ドラッグしてリンクを伸ばしてみます。
2014_08_07Image_07
図のように、線が出てくると思います。
2014_08_07Image_08
それを、「Diffuse」の左端にある、丸い部分にドロップして、リンクをつなげます。
リンクを繋げたら、グラフ内にドロップした「Fibers2」ノードをクリックして選択し直します。
2014_08_07Image_09
選択しなおした状態で、グラフ内の何も無いところで、右クリック、メニューから「Add node」>「Transformation2D」を選択します。
2014_08_07Image_10
できた「Transformation2D」ノードを右クリックし、「Expose Parameters」を選んでパラメータを外に出します。
2014_08_07Image_11
今回はとりあえず、「Transform matrix」のみにチェックを入れて、ダイアログを「OK」を押して閉じます。
2014_08_07Image_12
グラフ内の何も無いところをダブルクリックします。そうすることで、グラフ全体のプロパティを表示させることができます。
2014_08_07Image_14
次に、グラフにパラメータを追加します。グラフ全体のプロパティの下の方にある、「Input Parameters」の「+」(プラス)アイコンをクリックして、新規にパラメータを追加します。
2014_08_07Image_15
パラメータは新規で追加されると、「Float1」という型が割り当てられます。
この辺りはプログラムを書いている人だとすぐに理解ができるのですが、小数点で長さが1の配列を定義する、ということになります。
Floatというのが少数点であることを表し、Integerでは整数、Booleanは0,1もしくはTrue,Falseです。
後の1というのが長さを表し、1であれば「「0.1」」のような形で、2であれば「「0.1」「0.2」」というように個数を表します。
なので、三次元ベクトルであればFloat3、二次元行列であればFloat4をを使うと事になります。
2014_08_07Image_16 
今回は、スケールの値を整数値で変更したいので、「Integer1」の型を使います。
それ以外は変更しておりません。なので、パラメータの名前は「input」です。
再び「Transformation2D」ノードを選択し、すでに外に出したパラメータ「Transform matrix」の右にある、
グラフのアイコンをクリックして、関数グラフの編集を行います。
2014_08_07Image_17
関数グラフを編集すると、Substanceのグラフとは別に、グラフが表示されます。
2014_08_07Image_18
グラフ内の何もないところで、右クリック、「Add Element」>「Variables」>「Get Integer」を選び、
「Get Integer」ノードを作成します。
2014_08_07Image_19
できたノードを選択し、プロパティに表示される「Variables/Get Integer」からグラフ全体のプロパティで設定した、
「input」を設定します。
2014_08_07Image_20
「Add Element」>「Cast」>「To Float」を選択し、Float1に変換するノードを作成し、ノードを接続します。
2014_08_07Image_21
次に、「Add Element」>「Vector」>「Vector Float2」を選びます。
長さ1の配列を2に変換することができます。「To Float」からリンクを伸ばし、2つの入力につなげてしまいます。
「Library」から「Function」「Scale Matrix」を選び、グラフにドロップします。
2つありますが、右のほうで、マウスポインタを当てると、「Tile Matrix」と表示されるものです。
2014_08_07Image_22
ドロップしたら、ノードをつなげます。グラフ内の「Scale Matrix」を選択し、右クリックして「Set as Output Node」を選択します。
2014_08_07Image_23
すると、ノードの色が変わるのが分かります。
2014_08_07Image_24
Substanceのグラフに戻り、全体のプロパティでデフォルト値を変更して、関数が正しく実行されていることを確認します。

 

ああ、疲れる、、
記事を書くのは大変だ、、
次回は回転です。

アニメーションが親切に解説されております

レンダリング、ライティングの基本が分かります

図版が見やすい美術解剖書です