はじめに
今回はShaderGraphのTimeノードについての記事になります!
アニメーションなんかには必須なTime
ノード。
これについて書いていきます。
各ポート
それぞれのポートはこんな感じ。
名前 | 入出力 | 出力値 | 意味 |
---|---|---|---|
Time | 出力 | Vector 1 | 時間 |
Sine Time | 出力 | Vector 1 | 時間の正弦 |
Cosine Time | 出力 | Vector 1 | 時間の余弦 |
Delta Time | 出力 | Vector 1 | デルタ時間 |
Smooth Delta | 出力 | Vector 1 | 平滑化されたデルタ時間 |
Time Node | Shader Graph | 7.1.5
Time
最初のTime
はShaderLabでいう_Time.y
と同じ意味になります。
Unity - マニュアル: ShaderLab 定義済みの値
このTime
は固定値と書いてある記事もありましたが、どんどん加算されていくのが正しいと思います。
おそらく1秒あたり1ずつインクリメントされる(厳密には連続的に変化する)という仕組みになっているはずです。
Unityユーザー助け合い所公開グループ | Facebook
ただ初期値がどうなっているのかは(実行時間?)まだ確証がないので、よく分かっていません。
Sine Time,Cosine Time
これは-1 ~ 1
を繰り返すものです。厳密にではなくおおまかに測定した値ですが、約3.14*2秒で一周していました。
Sin x
のxがTime
(1秒に1増加)で,xはラジアン単位という感じでしょうか。
Delta Time,Smooth Delta
これはデルタ時間のことで、前回のフレームからの経過時間のことになります。0.01666…
みたいな値が変動的に入るという感じですね。
Smooth Delta
にある平滑化というのはこんな感じ。
連続的なデータ処理において、他のデータよりも大きく乖離しているデータを平均化、あるいは除去することにより、合理性を保つこと。
実例
今回取り上げたSine Time
を使った簡単な例を紹介。
ただしTransparent
にしないと透明にならないので注意してください。
さいごに
ShaderGraphでなにかしらの値をデバックするみたいなことってできるのでしょうか。
やり方がよく分からないので、細かいところはだいだいの値でしか書けないんですよね。もしなにかしらの方法を知っている方は是非コメント等で教えてくれると嬉しいです!