ノイズの使い方
ノイズはMeshHologramが誇る強力な機能です。
しかしプロパティの塊だけでは、そのノイズがどのような効果をもたらすのか、どんな表現が可能なのかというのは直感的に分かりにくく、実装方法についてもいくつか課題がありました。
そこで、いくつかの例を基に様々なノイズを作成して、MeshHologramの表現を見ていきましょう。
シンプルなカラーノイズ
パッケージ内に例となるマテリアルを用意しています。分析から始めてもいいでしょう。Packages/MeshHologram/Materials/Noise/Noise_Color.mat
を覗いてみてください。
任意のオブジェクトに付与して様子を見てもいいです。
TIP
UnityのSphereメッシュが特におすすめです。
しかし、他のモデルに切り替える場合はフラグメントの線のサイズの調整をしましょう。
TIP
これからマテリアルに対していくつかの操作を行うチュートリアルが始まります。
しかし、参考にしているマテリアルはパッケージ内のものです。
サンプルとして置いてあるマテリアルの情報を上書きしたくない場合は、対象のマテリアルを複製してAssets内の別のフォルダに保存するといいでしょう。
複製して保存したマテリアルを使って色々な操作を試してみてください!
時間経過と共に、白と黒の模様が変移しているのが分かると思います。
これはカラーの着色
に対してノイズを使用しています。
ノイズのスケール縮小と変化速度改変
ここでプロパティを弄ってみましょう。
カラー
->Noise 1st プロパティ
->スケール W
の数値を少しずつ上げてみましょう。
白と黒の模様がより疎らになったと思います。
他にお好みでスケールの他の要素を変えてみてください。カラー
->Noise 1st プロパティ
->時間乗算
の数値を少しずつ上げてみましょう。
時間経過で変化していた模様が更に早く変化するようになったと思います。
0にすると一切変化が起きなくなります。
ノイズ値のカーブ
カーブの解説に移りたいですが、その前により分かりやすい設定のマテリアルを参考にしましょう。Packages/MeshHologram/Materials/Noise/Noise_Geometry.mat
をご利用ください。
こちらのマテリアルは色の変移の他に、メッシュが手前や奥へ行き来しているのが分かると思います。カラーの着色
とジオメトリの操作
に対して同じノイズを使用しています。
ジオメトリの動きに強弱があることにお気づきですか?
その正体はカラー
-> Noise 1st プロパティ
-> ノイズ値のカーブ
にあります。ノイズ値のカーブ
というのは、0~1に変化するノイズ値にイージングのようなカーブ形状に変化させるプロパティです。
下のグラフを見ながらノイズ値のカーブ
を調整すると変化が分かりやすいと思います。
ノイズの二値化
二値化は0~1のように補間を持たず0と1のどちらかの状態しか取りません。つまり、急に変化するような振る舞いになります。
このノイズの場合は、ノイズ値のカーブ
を極限まで上げれば近似した振る舞いになるとは思いますが、あまりスマートではありません。
そう言った表現が簡潔にできるように以下の設定方法を推奨します。
カラー
->Noise 1st プロパティ
->カーブタイプ
にチェックを入れます。カラー
->Noise 1st プロパティ
->ノイズ値のカーブ
を0
にします。
これで、一瞬で飛び出たり引っ込んだり、色が白や黒に変わるような演出になったと思います。カーブタイプ
というのはイージングの計算式を反転したものに切り替えるプロパティです。
詳細は該当するプロパティのリファレンスをご参照ください。
一瞬だけ1
になるノイズ
上記の状態では、0
と1
の状態が均一に分かれて変化しています。
基本的には0
の状態で、一瞬だけ1
にしたい…そんな表現をするためには以下のプロパティを変更してみましょう。
カラー
->Noise 1st プロパティ
->スレッショルド(加算)
を1
の線が僅かに残るように、マイナス値へずらしていく。
たったこれだけで偏り具合を反映させることができます。逆にプラス値にすれば、0
が一瞬だけ現れるようになります。
後はノイズ値のカーブ
を少し弄れば、イージングもかかったリッチなアニメーションを表現できるはずです。
これでスレッショルドの使い方は理解できたのではないでしょうか?
オブジェクトを移動すると変化するノイズ
もう一つ、ユニークな機能を紹介しましょう。
ノイズが生成される原理として、各頂点の座標を利用しています。
シェーダーの処理に工夫を凝らすことで、頂点の座標の空間も独自に指定することもできてしまいます。
以下の変更をお試しください。
カラー
->Noise 1st プロパティ
->時間乗算
を0にする。 // 分かりやすくするために、時間によるアニメーションは切っておきましょう。カラー
->Noise 1st プロパティ
->座標空間
をWorld
にする。
変更しましたら、そのマテリアルが割り当てられているメッシュオブジェクトの座標を動かしてみてください。
場所に応じて、ノイズの箇所が変化していることに気付くと思います。
設定通りの話ですが、ノイズが参照する座標空間をモデル空間(メッシュが持つ頂点座標)から、ワールド空間(ワールド上での頂点座標)へ切り替えたのです。
最後に
お試しいただいたユーザー様はお疲れ様でした。
ノイズは無限の可能性を秘めていると思っているのですが、少々取っ付きにくいのではないかと思い、このようなチュートリアルを設けました。
色々活用していただければ幸いです!