media
moiré drift / moiré interference pattern
ピッチのわずかに違うドットグリッドを2枚重ね、片方だけをゆっくり送ると、格子そのものより十数倍大きな干渉縞が浮かんで画面を流れていく。動いている実体は背景1枚ぶんの平行移動だけなのに、目に映るのは印刷のアミ点ズレのような大きなうねりになる。
02 — Prompt template
03 — Params
pitch(1枚目のドット間隔 px) — 範囲 4〜20 / 初期 11
8〜13pxが、ドットが個別に見えつつ縞も読める範囲。5px以下は高DPIで点がつぶれ、16pxを超えると干渉ではなく水玉模様として主張し始める。beat(2枚目とのピッチ差 px) — 範囲 0.2〜3 / 初期 0.9
縞の間隔を決める本体。pitch×(pitch+beat)÷beat がおよその縞間隔で、0.9pxなら約145px。差を広げるほど縞は細かくなり、2pxを超えるとうねりではなくチラつきに寄る。angle(2枚目の回転角 deg) — 範囲 0〜5 / 初期 1.2
1〜2degが上品。0にするとピッチ差だけの縦横の縞になり、3degを超えると縞が細かく斜めに走って背景としてうるさい。cycle(1タイル送る時間 s) — 範囲 6〜60 / 初期 24
20〜30sのゆっくりが、気づくと変わっている速さ。10s以下は視線を奪い、読み物の背景には速すぎる。
04 — Vocab
モアレ(moiré) — 周期のわずかに違うパターンを重ねたときに現れる、元の周期より遥かに大きな干渉縞。印刷ではアミ点の角度ズレとして嫌われる現象を、装飾として意図的に使う。
ビート(うなり) — 2つの周期の差から生まれる大きな周期。ピッチ p と p+d の格子なら縞の間隔は約 p×(p+d)÷d で、見せたい縞の大きさから逆算してピッチ差を決められる。
background-size — 敷いた背景1タイルの大きさ。ドットグリッドのピッチはここで決まり、2枚のこの値の差がモアレそのものになる。
1タイル送り(seamless loop) — 繰り返し背景をちょうど1タイル分だけ動かすと終端の絵が開始と一致する。無限ループの継ぎ目を消す一般則で、マーキーでも同じ考え方を使う。
mask-image — 要素の見え方をグラデーションで抜く指定。装飾の帯を hard edge で切らず空気に溶かせる。
05 — NG → OK examples
NG
言い方: 「「背景にモアレっぽい模様を入れて」」
なぜNG: モアレは「周期のわずかに違う2枚が重なって初めて出る」現象なのに、それが伝わらないと縞を1枚描いたSVGや、ドット背景をぐるぐる回すだけの実装が返ってくる。ピッチもズレ量も指定がないと、差が大きすぎて目に痛いチラつきになるか、差が小さすぎて何も浮かばないかのどちらかに転ぶ。
OK
言い方: 「「moiré driftを実装。radial-gradientのドットグリッド2枚をpitch 11pxと11.9pxで重ね、2枚目だけ1.2deg傾けて、その回転軸に沿って1タイル分=11.9pxを24s linearでドリフト。opacity 0.28、上下はmask-imageでフェード、reduced-motionは静止」」
なぜOK: 2枚重ねる理由・ピッチ差・回転角・送る量まで数値で渡している。とくに「1タイル分だけ送る」の一言が、ループの継ぎ目が見える実装(中途半端な距離を往復させる等)を確実に防ぐ。
