シミュレーション・制御・実機
反応拡散——あなたが制御面だ
二つの仮想化学物質が拡散し、反応する。ルールはたった一つだ。なのに、feed と kill の2つの数字だけで、斑点・迷路・サンゴ・指紋へと世界が分岐する。下のキャンバスで走っているのが、その Gray-Scott 反応拡散だ。各点が二つの濃度をもち、毎フレーム、近傍と混ざり合い(拡散)、決まった式で反応する——それを繰り返しているだけである。
プリセットで (feed, kill) を切り替え、キャンバスをクリック/ドラッグして種を描いてみてほしい。生成そのものは易しい。難しくて、面白くて、価値があるのは——狙った構造を選ぶこと、つまり制御の側である。あなたが、その制御面だ。
feed=0.029, kill=0.057(迷路)— キャンバスをドラッグして種を描く
画面の色は、片方の物質 V の濃さだ。 暗い(ほぼ黒)所は V がほぼ無く、もう一方の物質 U で満たされた「素の土台」。そこに V が増えるほど色が暖かくなる——紫 → 赤 → 橙 → 淡い黄、と明るいほど V が濃い。だから模様の縁で起きているのは、V が土台の U を食べて広がっていく境界の動きである。
画面の模様が従う規則は一つだけだ。二つの物質が違う速さで広がり(拡散)、出会った場所で一方がもう一方を増やす反応が起き、同時に外から一方が供給(feed)され、もう一方が除去(kill)される——この供給と除去の釣り合いが、斑点・縞・迷路・指紋のどれになるかを選ぶ。直感的には、毎フレームこの三段を順に回しているだけだ:
※ 概念図(フロー)(作図:AI)
仕組み——どんな規則で動いているか(クリックで展開)
舞台は格子状のマス目で、各マスは二つの濃度 U と V をもつ。規則は次の三つだけである。
- 拡散——どちらの物質も周囲ににじみ広がる。ただし U のほうが V のおよそ二倍速く広がる。この「広がる速さの差」が模様の骨格を決める。
- 反応——U と V が同じ場所に居合わせると、
U + 2V → 3Vという反応が起きる。V が一つでもあると、そこの U を食べて V が自分を増やす。だから V は「自己触媒的」に伸びる。 - 供給と除去——外から U が一定の割合 F(feed) で補充され、V は一定の割合 k(kill) で取り除かれる。プリセットで切り替えているのは、この F と k の二つの数字だけである。
V が増えすぎれば U を食べ尽くして自滅し、増えなさすぎれば供給に押し流される。その綱引きが釣り合う細い帯の中で、斑点・縞・迷路・サンゴ・指紋といった模様が立ち上がる。模様の種類を選んでいるのは、絵を描く誰かではなく、F と k の比である。
数式で書けば、各点の時間変化は次の二本で与えられる( は近傍との混ざり合い=拡散を表すラプラシアン、 は拡散の速さ)。
各項の意味はそのまま上の三つの規則に対応する—— が拡散、 が反応(V による U の消費・V の増殖)、 が U の供給、 が V の除去である。このデモでは と固定し、 と だけを動かしている。
更新ルール自体は決定論的だ。現れる模様は、種とパラメータ——つまりあなたの選択だけで決まる。だからこそ「生成」より「選択」が効く、という話になる。
同じ「ルールは単純、結果は多様、価値は選択の側」という背骨は、AIの生成にもそのまま通じる。模様を出すこと自体は易しい。どの模様を選ぶかを決める制御面こそが、難しくて値打ちのある仕事だ。
この記事はAIが下書きし、人間が編集・公開しています。