歪む市松Warp Checker
市松模様の上を見えないレンズが円軌道で周回し、模様を膨らませたりへこませたりするオプアートです。
どう計算しているか
- 「レンズの数」だけのレンズを円軌道上に等間隔に置き、t に合わせて回します。偶数番目と奇数番目で回る向きと軌道の半径を変えています。
- 模様上の点 p は、各レンズの中心 l から p − l の方向へ、強さ·exp(−|p − l|²/大きさ²) の割合だけ押し出されます。exp の項はレンズの中心で1、離れるほど0に近づく釣り鐘形の重みです。
- 「歪みの強さ」が正なら外へ押し出して膨らみ、負なら中心へ引き寄せてへこみます。
- マスの辺を細かく区切り、区切った点を一つずつ変形してから結ぶことで、まっすぐな辺もなめらかに曲がって見えます。縞や水玉も同じ方法で輪郭を変形しています。
p' = p + Σ (p − l_k)·a·exp(−|p − l_k|²/r²)ループがつながる理由
レンズは1ループで「1ループの周回数」という整数回だけ円軌道を回り、元の位置に戻ります。歪みはレンズの位置だけで決まるので、最後のフレームは最初と同じ形になります。
調整できるパラメータ
形
| 模様 | 市松・縞・水玉 |
|---|---|
| 分割数 | 4 〜 40(初期値 14) |
動き
| レンズの数 | 1 〜 4(初期値 2) |
|---|---|
| 歪みの強さ | -1.5 〜 1.5(初期値 0.9) |
| レンズの大きさ | 60 〜 600(初期値 260) |
| 軌道の大きさ | 0 〜 450(初期値 200) |
| 1ループの周回数 | 1 〜 3(初期値 1) |
同じ分類のシーン(タイル・格子)
- グリッド × 位相Ripple Grid格子に並んだ図形が、中心からの距離などで決まる時間差をもって伸縮・回転・公転し、波紋のような動きを作ります。
- 図と地の反転Flip Tiles市松模様の正方形が90°回転し、回り終えるたびに図と地が入れ替わって、同じ模様が続いていく反転タイルです。
- 十字・図と地Cross Tiles平面をすき間なく埋める十字形が90°回転し、前半と後半で図と地が入れ替わって模様が途切れずに続きます。
- 三角・六角タイルTri / Hex Tiling三角形や六角形の敷き詰めが位置ごとの時間差で回転し、重なった部分をXOR合成で抜いて模様を作ります。
- トルシェ・タイルTruchet Flow四分円や対角線を描いた正方形タイルが波のように90°ずつ回転し、つながった曲線の迷路が組み替わり続けます。
- スライドパズルSlide Grid格子の行が左右に1マス、続いて列が上下に1マスずれる動きを交互の向きで繰り返す、スライドパズルのような模様です。
- 網点Halftone Waves印刷の網点のように並んだ点の大きさを、円軌道を回る波源から広がる波の重ね合わせで変化させます。
- ドミノ倒しDomino Wave並んだ板が端から順に倒れて隣の板にもたれかかり、しばらく止まったあと逆の順で起き上がるドミノの動きです。
- 折り紙Origami Foldマスごとの正方形が対角線で半分に折れて裏の色を見せ、また開いて元に戻る、折り紙のような動きです。
- ヘリンボーンHerringbone杉綾模様に組んだ長方形のレンガが、長い辺を軸に1枚ずつ裏返って色が入れ替わっていく動きです。
- 菱形・5回対称Rhombus Rosette太い菱形と細い菱形を同心円状のリングに並べ、リングごとに時間差をつけて半回転させる回転対称の模様です。
- ピクセルの崩落Pixel Fallドット絵の図形がブロックごとに下へ崩れ落ち、画面の上から降ってきて元の位置に積み上がる動きです。
- SDF・ドメイン反復GLGoo Grid格子状に繰り返した距離関数の図形が、隣同士で溶け合いながら伸縮・回転・公転するシェーダーの模様です。
- 反応拡散風・シェーダーGLTuring Pattern複数方向の波を重ねてしきい値で切り分け、豹柄やサンゴ、迷路のような斑点や縞をうごめかせるシェーダーの模様です。