背景アーティストのぶろぐ

UE4やら、Substanceやら、Zbrushやらいろんなソフトを触ったことについて色々書く。

【SD】Functionでカラーを設定する

グレネードのテクスチャを作成した時に使用した質感データを

他の場合でも使えるようにしたいなと思いFunction作成に挑戦です。

 

Instanceで使用するときにパラメーターを調整できるようにしておけば、

汎用がきくというものです。

 

作成した塗装された金属の質感はこのような感じ。

f:id:sinocof:20170223145358p:plain

 

f:id:sinocof:20170223150855p:plain

 

ノードもこれぐらいとあまり複雑ではありません。

今回調整できるようにしたいのは、塗装されている色とRoughnessの値も調整できたらいいと考えています。まずはInput Parametersを設定します。

 

Colorの設定

 

  1. Input Parametersの+から追加します。
    Identifierは識別子でFunction作成するときの参照するパラメーターの名前になるので、わかりやすいのをつけておきます。
    今回はPaintColorと設定しました。

    次にType/Editorですが、ここでは色を設定したいのでFloat 3Color(RGB)を設定します。

    f:id:sinocof:20170223150941p:plain



    ここでColor(RGB)を設定しないとただの3つのパラメーターが出ているだけになり、調整はできるけど、非常に使いにくいものになってしまうので忘れないようにしましょう。

  2. 金属の塗装色を設定しているUniform ColorからOutput ColorにEmpty Functionを作成します。

  3. Functionは以下のようにノードを組みます。

     

    先ほど設定した塗装色の値を受け取りたいので、Get Float 3を置きます。

    そして、右側の値のところでVariables/Get Float 3にはPaintColorをセットします。

     

    次にFloatを配置し、Constant/Floatの値は1です。

    これはアルファチャンネルになるので1にしておくのがよいのだろうと思います。

     

    最後にVector Float 4に配置して、つなぎます。

    右クリックからSet as Output Nodeを設定します。

    f:id:sinocof:20170223150951p:plain


    これでひと通りのPaintColorのFunctionは完了です。

  4. 最後にきちんと動くかを確認。

     

    新規のGraphを作成し、そこに作成したグラフをドラッグ&ドロップ

    Instanceとして読み込みます。

    f:id:sinocof:20170223151008p:plain

    パラメーターで自由に色を変えて反映されるかチェックします。

    こんな感じで問題なく色が変更できたのでOKですね。

    f:id:sinocof:20170223151033p:plain


    最後にInput ParametersのLabelやGroupなど使いやすいように設定したら終了です。

 

 

今回の工程で疑問がひとつ。

 

Vector Float 3ノードを配置してOutputにしてしまえば一番早いのでは?

と思うのですが、そのような接続はできないみたいなんですよね。

 

おそらくカラーはVectorで設定しないといけないというのと、

Vector Float系のノードにはInとLastというInputノードが付いているので、

必ず2つセットしないといけないんでしょうね。

 

そのためにVector Floatというのはなく、Vector Float 2,3,4の3種類になっています。

 

ここでVector Float 3を使うとするとGet Float 2とFloatを接続しなければならなく、

RGBではなくRGとBを別々に設定するというややこしいことになるので、

Vector Float 4を使うという風に自己解釈しています。

 

それでも、根本的なところでVector Floatが2つの値を受け取らなければならない理由はわからないので誰かご存知でしたら教えて下さい。