Appearance
第06回 ノイズ
前回: 第05回 TextMeshPro と SDF / 次回: 第07回 ベクトル演算とライティング
ノイズで 自然なムラを作る
規則的ではないのに 連続性のある表現
きれいすぎるものは 意外と不自然
前回の振り返り
形の境界を扱う表現「SDF」を学びました
- 第05回では TextMeshPro から SDF の考え方に触れました
- SDF は形の境界からの距離を持つデータです 前回授業では
Smoothstepやしきい値を使うことで 形の切り抜き、輪郭、ぼかしを制御できました - 今回はノイズを使って 形や色に不規則な変化を加える方法を扱います
今回の授業で扱うこと
不規則な値をビジュアルに変える
- ランダムとノイズの違い
- パーリンノイズ、セルラーノイズの基本的な用途
- Shader Graph のノイズ系ノード
- ノイズをマスク、色、透明度、UV に使う考え方
- しきい値と
Smoothstepによるディゾルブ表現 - 自然物、エフェクト、UI 演出に使える 不規則な変化の作り方
今回の授業内容
パーリンノイズ、セルラーノイズ
- ノイズの役割
- ランダムとノイズの違い
- Shader Graph のノイズ系ノード
- ノイズのスケール、速度、しきい値
- ディゾルブ表現
- 授業内課題
ランダムとノイズ
乱数と、デザインされた乱数


上は隣同士の関係が弱いランダム値の、 下は値がなめらかにつながるノイズの例
- ランダム値は、単純に不規則な値です 隣の値との関係が弱く、脈絡がありません
- 一方でノイズは ランダムさに空間的・時間的な つながりを持たせたもの です
- ノイズは不規則ながらも連続性があるため、 雲、煙、炎、水面、地形のような 自然物の表現に向いています
ノイズと画像素材との違い
計算で作れるため調整しやすい
- ノイズは、専用の画像素材を用意しなくても Shader Graph のノードや他の計算手法で生成できます
- 画像素材は用意した時点の模様に固定されますが ノイズはスケール、速度、しきい値などのパラメーターを後から変更して 好みの表現に調整できます
- 色ムラ、煙の揺らぎ、ディゾルブのマスクなどを自然に表現し調整するのに 計算だけで完結できるノイズは非常に有用です
- 人力でのイラストレーションでは作るのが難しい表現を 数値調整だけで扱えるようになるのは非常に大きな利点です
ノイズの使いどころ
「自然な変化」で表現の幅を広げる

地形生成ソフト Gaeaによる 地形生成の例 ノイズとシミュレーションで自然な起伏を作成できる Screenshot created with QuadSpinner Gaea. Gaea is a trademark of QuadSpinner.
- 自然界には、完全な規則性のあるものは ほとんど存在しません
- ですがノイズを使えば、規則的な形や色に 自然なムラや揺らぎを加えることができます
- 例えば地形の起伏、雲の形、炎の揺らぎなどは ノイズを使うと自然に表現できます
- ノイズは幅広い用途で自然な変化を 表現するために利用可能です
画像表現に有用なノイズ
よく使われるノイズの種類と特徴

左上から右に向かってホワイトノイズ、パーリンノイズ、フラクタルノイズ、ボロノイノイズの例
- ホワイトノイズ: ざらつき、粒状感、グリッチ
- パーリンノイズ: 雲、煙、水面、地形のような自然なムラ
- フラクタルノイズ / fBm: 複数のノイズを重ねた細かなディテール
- ボロノイ / セルラーノイズ: 細胞、石、ひび割れ、泡のような領域表現
Shader Graph のノイズ系ノード
画像無しでもノイズを作れる
- Shader Graph には、いくつかのノイズ系ノードが用意されています
Simple Noise、Gradient Noise、Voronoiなどのノードは UV 座標を入力してノイズ値を出力します- これらのノードを使うと、画像素材を用意せずに ノイズを生成して表現に利用できます
- 計算の精度や設計から表現に制約がある場合もありますが、 調整のしやすさやリアルタイムでの変化を加える用途には非常に便利です
Simple Noise ノード
手軽なムラを作る

Simple Noiseノード
Simple Noiseは、雲や煙のような表現に 適度な粒状感を加えるのに便利なノードです- 入力する UV と
Scaleによって ノイズの細かさが変わります - 単色の面に情報量を加えるのに有用ですが 自然物の揺らぎを表現するには表現力不足です
- https://docs.unity3d.com/ja/Packages/com.unity.shadergraph@10.0/manual/Simple-Noise-Node.html
Gradient Noise ノード
なめらかな変化を作る

Gradient Noiseノード
Gradient Noiseは、値の変化がなめらかで 自然物の揺らぎに使いやすいノイズですScaleを小さくすると大きなムラに、 大きくすると細かなムラになります- 雲、煙、水面、炎のような表現で 使いやすいノードです
- https://docs.unity3d.com/ja/Packages/com.unity.shadergraph@10.0/manual/Gradient-Noise-Node.html
Voronoi ノード
セル状の模様を作る

Voronoiは点同士の距離から セル状の模様を作るノードです- セルの大きさや形を調整できるほか セルの領域別の出力も可能です
- ひび割れ、結晶、細胞、泡、魔法陣の模様など 様々な表現に使えます
- https://docs.unity3d.com/ja/Packages/com.unity.shadergraph@10.0/manual/Voronoi-Node.html
ノイズ計算の参考資料
代表的な論文と実装例
- ノイズのアルゴリズムには、原論文や作者本人による実装が存在します ここではコンピュータグラフィックスでよく参照される資料を紹介します
- 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
スケール
模様の大きさを変える
- ノイズは UV 座標を入力して値を作ります
- UV を拡大して入力すると模様は細かく繰り返されます UV を小さくして入力すれば大きなゆるいムラになります
- Shader Graph では
Tiling And Offsetや UV へのMultiplyで調整できます - 様々なスケール設定を試してみましょう
速度
時間でノイズを動かす
Timeを UV に足すとノイズの位置を時間で変化させられます- 位置だけでなくノイズの生成パラメーターにも時間を入れると より複雑な動きを作成可能です
- ノイズを動かすことで 炎、煙、水面、オーラのような動きを表現できます
- 時間経過でのノイズの操作は、有機的な動きを作るのに非常に有効な手法です 是非いろいろ試してみてください
UV のゆがみに使う
座標をノイズで操作する
- ノイズ値を UV に足すと テクスチャーのサンプリング位置をずらせます
- 小さく足せば水面や熱気のような揺らぎになります
- 大きく足すと形が壊れやすいため
Multiplyで強さを抑えるのが基本です - 画像そのものを変えるのではなく 読み取る位置を変えるのがポイントです
SDF との接続
ノイズを混ぜて形を崩す


SDF生成のUVにノイズを足した例と SDFの距離をノイズで評価した例 いずれも円の形状をノイズで崩せている
- 前回扱った SDF は、輪郭からの距離で 形状を表現するものでした
- この SDF の距離にノイズを足すと 輪郭がゆらいだ図形を作れます
- また、UV から計算で画像を作る SDF 関数に ノイズの影響を加味すれば、炎やオーラなどの ゆらぎの表現を作ることもできます
- SDF で形を決め、ノイズで形状を崩すコンボは 非常に強力です
実装例:水面のゆらぎ
ノイズを高さに使う

簡素な水面のシェーダー例 ノイズを複数重ねることでより複雑な表現も可能
- ノイズを Height Map として使い、 法線に変換して水面の揺らぎを作ります
Timeを使ってノイズを動かせば 水面が流れるような表現になります
実装例:ディゾルブ表現
ノイズで溶けるように消す

パーリン+フラクタルノイズを グラデーションにマップした 徐々に燃え尽きるような表現の例
- ノイズの値を
Thresholdでしきい値処理すると 値が低い場所から徐々に消えていく表現を 作ることができます - ノイズを加工した後に Sample Gradient で カラーグラデーションにマップすれば、 ゲームで有効なディゾルブ表現になります
実装例:Voronoi での有機表現
ノード出力を色と法線に使う

Voronoi ノードの出力加工例
- Voronoi ノードのセル分割に色を割り当て、 グラデーションを加工後法線に変換すれば 細胞や石のような表現ができます
- Shader Graph の Voronoi ノードは セル中心からの距離が遠景に出力されるため 等高線表現やエッジ分割には向きませんが 有機的な表現に便利です
実習
ノイズノードを使って 様々な表現を作る
数値のムラを 弄り回してみよう
実習1
ノイズを表示する
URP Unlit Shader Graphを作成するUVをSimple NoiseまたはGradient Noiseに接続する- ノイズの出力を
Base Colorに接続する Scaleを変更して模様の大きさを確認するTimeとTiling And Offsetを使い ノイズをゆっくり動かす
実習2
ノイズを透明度に使う
- Graph Settings で Surface Type を
Transparentにする - ノイズの出力を
Smoothstepに接続する ThresholdとSoftnessのプロパティを作成するSmoothstepの出力をAlphaに接続するThresholdを動かして 表示範囲が変わることを確認する
実習3
ディゾルブの縁を作る
- 本体用の
Smoothstepを作る - 境界用に少し違うしきい値の
Smoothstepを作る - 2つの値を引き算して縁だけのマスクを作る
- 縁には明るい色を割り当てる
Thresholdを時間で変化させて 溶けるように消える表現を作る
実習4
Voronoi を使った模様を作る
Voronoiノードを追加するCell Densityを調整する- 出力値を
Smoothstepで加工する - 線の色と背景色を
Lerpで混ぜる - 魔法陣、結晶、ひび割れなどの表現に寄せてみる
授業内課題
ノイズを使った 出現または消失マテリアルを 作成してください
どう消すのかに センスが問われる
課題の条件
以下を満たしてください
Simple Noise、Gradient Noise、Voronoiのいずれかを使っている- ノイズの
Scaleをプロパティから調整できる Thresholdで表示範囲を変更できるSmoothstepで境界の柔らかさを調整できる- 境界に色、発光、または濃淡の変化がある
- スクリーンショットまたは動画で変化が確認できる
この回の到達目標
- ランダム値とノイズの違いを、 「つながりのある不規則さ」という観点で説明できる
Simple Noise、Gradient Noise、Voronoiの 見た目の違いと向いている用途を選べる- ノイズ値を色、透明度、UV、マスクの制御に使える
- ノイズを使って、自然なムラやディゾルブ表現を Shader Graph で組み立てられる
今回のまとめ
ノイズで不規則さを制御する
- ノイズは隣り合う値がつながった不規則なデータです
- Shader Graph では
Simple Noise、Gradient Noise、Voronoiなどの ノイズ計算ノードが利用可能です - ノイズを閾値で加工するとマスクやディゾルブ表現に使えます UV に加味することで画像をゆがませることもできます
- ノイズは自然物やエフェクト表現に欠かせない重要なツールです ぜひ活用してみてください