線・波Wave Lines
横に引いた何本もの線を、正弦波や矩形波、ノイズで上下に揺らし、線ごとに少しずつ時間をずらして波を流します。
どう計算しているか
- 画面の縦方向に「本数」ぶんの線を等間隔に並べます。各線は x を 5px 刻みで進めた折れ線で、点ごとに y を波の値だけずらします。
- 波の位相は arg = 「波の細かさ」·x − 「1ループの周期数」·t + 線番号·「線ごとの時間差」です。正弦波は sin(2π·arg) をそのまま使い、矩形波は tanh(4·sin) で山と谷を平らにし、階段波は sin の値を「階段の段数」で切り捨てて段差だけを滑らかにつなぎます。
- ノイズと山脈では、時間方向に閉じたノイズ(なめらかな乱数の場)を使います。山脈はノイズの絶対値を上向きに反転して尾根を作り、線の下を背景色で塗りつぶすので、手前の線が奥の線を隠します。
- 「中央を強調」をオンにすると、exp(−(x/w)²) というガウス関数(中央で 1、左右へ行くほど 0 に近づく釣鐘形の関数)を振幅に掛け、画面中央だけが大きく揺れます。
y = y₀ + amp·env(x)·sin(2π(freq·x − cycles·t + i·lag))ループがつながる理由
時間の項は「1ループの周期数」(整数)× t なので、t が 0 から 1 に進むと位相がちょうど整数周期ずれ、sin などの値が元に戻ります。ノイズ系の波形は、ループの始めと終わりで同じ値になるように作ったノイズを使っています。
調整できるパラメータ
形
| 波形 | 正弦波・矩形波・階段波・ノイズ・山脈 |
|---|---|
| 本数 | 3 〜 90(初期値 28) |
| 線幅 | 0.5 〜 14(初期値 3) |
| 縦の広がり | 0.2 〜 1.2(初期値 0.82) |
| 中央を強調 | オン/オフ(初期値 オン) |
動き
| 振幅 | 0 〜 300(初期値 55) |
|---|---|
| 波の細かさ | 0.25 〜 8(初期値 1.5) |
| 1ループの周期数 | 1 〜 4(初期値 1) |
| 線ごとの時間差 | 0 〜 1(初期値 0.06) |
| 階段の段数 | 2 〜 10(初期値 4) |
同じ分類のシーン(線・波)
- ループするノイズNoise Field格子状に並べた線分や点、四角が、時間方向に閉じたノイズに従って回転・伸縮し、場全体がうねるように動きます。
- モアレMoiré同心円や縞を2組重ね、片方を少しずらしたり傾けたりすることで、干渉模様(モアレ)が流れるように動きます。
- 二重らせんDouble Helix奥行きに応じて大きさと濃さを変えた点で二重らせんを描き、横に流れながら回転して見えるようにします。
- 波打つ地形Wave Mesh斜め上から見下ろした格子の地形が、波紋・交差波・ノイズで上下にうねり、手前の面が奥の線を隠します。
- リボンTwisted Ribbon幅のある帯がねじれながら流れ、表と裏の色の切り替わりと陰影で立体感を出しています。
- 等高線の地図Contour Map時間とともに形を変えるノイズの地形を等高線で描き、地図のように5本ごとに太い線を入れます。
- ジグザグ・シェブロンChevron Flow山形に折れ曲がった色の縞が流れ続け、ジグザグの深さが呼吸するように変わります。
- オシロスコープOscilloscopeオシロスコープのビームがリサージュ図形や波形をなぞり、後ろに残光の尾を引いて光ります。
- 干渉縞・シェーダーGLInterference円を描いて周回する複数の波源から広がる波を重ね合わせ、渦を巻くように動く干渉縞を描きます。
- マーブル・シェーダーGLMarbling絵の具を水に浮かべて混ぜたようなマーブル模様を、ノイズで座標を何度もゆがめて作り、ゆっくり流します。
- ドメインワープ・シェーダーGLDomain Warpノイズで座標をゆがめ、そのゆがんだ座標でまたノイズを引くことで、煙や流体のような有機的な模様を作ります。