マテリアルを作成したり中身を解析したりしている時に、値の変動を脳内では処理できず紙に手描きでグラフを書くことがよくあるのですが、「値をグラフにするノードは無いものか」と思っていたところ hirapotさん(@hirappot)から「PlotFunctionOnGraph」というマテリアル関数を教えて頂きました!
hirapotさんありがとうございます!
ということで早速使ってみました。各Inputの説明は図に記述しています。
(Inputピンの「f(x)」にはUV座標のUを与えてやる必要があるっぽいです)
するとこのような結果に!これぞ求めていたものです‥素敵!
ちなみに中身を見てみたらこんな感じで把握するのが大変だったので‥
とりあえず最小限の構成に整理してみました。
グラフのVと入力した値のUの距離(Distance)が 0(つまり一致する位置)に色が付くようになっているようです。
ただ注意がひとつあって、Inputでグラフの座標の範囲を指定しますが、その範囲をグラフ化したい値にも反映させないとグラフと値が一致しません。
そのため、グラフのVとTimeを足し合わせた結果を出力するようにしました。
なので下図のように出力した値を使った値を入力する必要があって、ループした見た目の気持ち悪い構成になっていますが‥ひとまずこちらでうまく動作しました。
こういう時、マテリアル関数をふたつに分割すると良いのでしょうけれど、まいっかと。
ちなみに、試しにグラフ化するのに利用したのはLinearSine関数です。
このマテリアル関数は3つのOutputピンから三角波や矩形波を出力します。
1つめのOutputのLinearSineをグラフ化すると三角波になっているのが確認できます。
ついでに2つめのOutputのRounded Linear Sineも試してみます。
するとこんな感じ。
Debugノードで数値化はできますが、緩急はビジュアル化しないと分からないですよね。
3つめのOutputのDirectionも試してみます。
こちらは矩形波だということが確認できました。
という訳で、グラフ化でした。お試しあれ!
何か間違っていたりもっと良い方法があったりしたら教えてください‥!
(customノードで直接描画するようにした方が綺麗なグラフにできますかね‥)