4 / 4 消失境界の色と制作課題
二つのMaskの差から境界を取り出し、消え方を調整します。
境界だけを取り出す
前のSmoothstepの出力をbodyと呼びます。FloatプロパティWidthを0.05で作り、同じSoftnessとノイズを使う二つ目のSmoothstepを用意します。その中心しきい値はThreshold + Widthです。二つ目の出力をinnerと呼びます。
body = smoothstep(Threshold - Softness, Threshold + Softness, noise)
inner = smoothstep(Threshold + Width - Softness,
Threshold + Width + Softness, noise)
border = saturate(body - inner)二つの出力をSubtractのA=body、B=innerへ接続し、結果をSaturateへつなぎます。Saturateは値を0〜1へ制限します。borderをLerpのT、Base ColorプロパティをA、Border ColorプロパティをBへつなぎ、Lerpの出力をBase Colorへ渡します。Alphaはbodyのままです。
出現・消失の課題
Thresholdだけを変えて消える順序を観察します。次にWidthだけを変え、縁の広さとの関係を説明してください。ノイズのScale、境界色、Widthを自分で選び、同じCameraでThresholdの三段階を記録します。
自動で変化させる場合は手動確認を終えてから行います。Time×SpeedをSineへ入れ、0.5を掛けて0.5を足すと0〜1です。さらにLerpで−0.1〜1.1へ変換してThresholdの代わりに使えば、Softness=0.02の例では表示から消失まで往復できます。
保存前にThresholdを手動の入力へ戻します。採用したScale・Width・色と、表示・消失を確認したThresholdを記録してください。
発展:別のノイズと座標への応用
Voronoiでセル状の模様を作る
Shader Graph の Voronoi ノード
Voronoi は点同士の距離からセル状の模様を作るノードです。
セルの大きさや形を調整できるほかセルの領域別の出力も可能です。
ひび割れ、結晶、細胞、泡、魔法陣の模様など様々な表現に使えます。
https://docs.unity3d.com/ja/Packages/com.unity.shadergraph@10.0/manual/Voronoi-Node.html
ノイズでUVをゆがめる
ノイズ値を UV に足すとテクスチャーのサンプリング位置をずらせます。
小さく足せば水面や熱気のような揺らぎになります。
大きく足すと形が壊れやすいため Multiply で強さを抑えるのが基本です。
画像そのものを変えるのではなく読み取る位置を変えるのがポイントです。
ノイズでSDFの形を崩す


SDF生成のUVにノイズを足した例と SDFの距離をノイズで評価した例。
いずれも円の形状をノイズで崩せている。
前回扱った SDF は、輪郭からの距離で形状を表現するものでした。
この SDF の距離にノイズを足すと輪郭がゆらいだ図形を作れます。
また、UV から計算で画像を作る SDF 関数にノイズの影響を加味すれば、炎やオーラなどのゆらぎの表現を作ることもできます。
ここで変形した値が、変形後の表面までの正確な距離を保つとは限りません。後期の表面探索へそのまま歩幅として使わず、表示のための値の加工として比べます。
ノイズ計算の参考資料
- ノイズのアルゴリズムには、原論文や作者本人による実装が存在します
ここではコンピュータグラフィックスでよく参照される資料を紹介します。 - Improved Perlin Noise: Ken Perlin によるリファレンス実装と解説
https://cs.nyu.edu/~perlin/noise/ - Simplex Noise: Stefan Gustavson による解説資料
https://itn-web.it.liu.se/~stegu76/simplexnoise/simplexnoise.pdf - Cellular / Worley Noise: Steven Worley による原論文
https://itn-web.it.liu.se/~stegu76/TNM084-2019/worley-originalpaper.pdf
- bodyとinnerの差を境界として使い、Alphaと色を分けて接続した。
- Scale・しきい値・境界幅の変更理由を説明できる。