はじめに
これまで「擾乱を伴う反復系」の話を何度もしてきました。「擾乱を伴う反復系」は「差異」を消そうとするフィードバックループの中に「差異」を作ろうとする擾乱が常に入る系のことを指します。これにより「自律」した動きが創り出せました。Monogokoroのサイトのメインのトピックです。そしてそれが生物的に見えることから人工生命と呼んできました。今回もこの流れですが、少しだけ「擾乱」の作り方が違うタイプを紹介します。「変種」と言ったところです。そして、先回のblog「衝突問題の基本」で挙げた、マウス位置の砂を排除するプロうグラムと絡めて述べます。「擾乱を伴う反復系」と「砂の衝突問題」の相互作用が今回の特徴です。当初人工生命が光の檻から逃れるゲームとして作製しました。人が光の檻の中の人工生命を引き出そうとすることにより、人工生命が脱出できます。このように人とのインターラクションという意味合いでプログラムしました。人工生命と光の檻の関係は、光の檻は人工生命のパラメータから作製しており、独立にあるものではありません。この意味で光の檻を含んで人工生命と呼んでも問題ありません。これは2025.09.04のblog「ポテンシャルフィールドを含めた「擾乱を伴う反復系」」と同様、一体となった系になっています。今回注目したのは、光の檻の形状が可変になることでした。将来この可変性を利用して、細い場所を通過するときは長細く、広い場所を通過する時は円形にと、形を変えながら空いた道を通ることができるようにしてみたいと思っています。そうなれば、これもフィジカル・インテリジェンスに活用できるのではないでしょうか。Monogokoroで扱おうとしているフィジカル・インテリジェンスは2025.10.26のblog「フィジカル・インテリジェンス」で述べています。モノが環境とインターラクションし、その映像の動きに対して、AIを使って感情があたかもあるように言語化し、人とコミュニケーションするという話です。今のところ空想です。今回の変種は「ポテンシャルフィールドを含めた「擾乱を伴う反復系」」と似た位置付けになるのではないかと思っています。プログラムはTouchdesignerによるものです。
全体映像
まず、全体映像を見ていただきましょう。
線状の人工生命があり、まわりに光る砂が円形状に配置された檻ができています。人工生命は閉じ込められているように見えます。人工生命が伸びていくと、それにつれて円形状の光の檻は大きさを変えます。ただし、サイズは大きくなる場合も小さくなる場合もありますが、上限・下限を設定しています。このため、大きくなった場合、人工生命が光の檻を突き抜けることになります。これは光の檻を脱出しようとしている表現です。円形と人工生命の接点からは、粒子が噴き出すようにしました。これは人工生命が光の檻に穴をあけたことを表現しています。マウス位置が人工生命と離れている場合は影響しませんが、人工生命に近付くと、マウスが人工生命を引っ張ることができるようになります。これをつかって光の檻から引っ張り出そうとします。後述しますが基本的には人工生命は上下にいるポイント数が同じになるように、また左右にいるポイント数が同じになるように動作します。このため一方をマウスで引き出すと、次第に人工生命の他方が反対方向に移動する場合が多くなります。そして、光の檻の外にいる人工生命が中にいる人工生命より多くなると、光の檻が弾けて無くなります。これで脱出成功というわけです。しかし少し時間が経つと、新たな新たな光の檻が生じ、人工生命を包みます。これで再びマウス操作ができるようになります。
擾乱を伴う反復系(変種)
これまでと同様、spring SOPとmetaball SOPを使って自律した動きを作っている点は同じです。しかし「擾乱」を作るmetaballの制御が少し違っています。まず、spring SOPの外部から与えるforceについて説明します。次の図はその部分のプログラムです。

元図は人工生命の元になる図形です。初期値として必要ですが、動き出すと関係なくなり変形が続いていきます。画像では元図を除くと3つのブランチがあります。上から順番にそれぞれについて述べていきます。
1.空間領域を4つに分け(x-z平面の上下、y-z平面の左右で切り分けます)、一番集まっている領域の100番目の位置にメタボールを配置し、forceを-2~5までramp関数で周期的変化させます。人工生命は常に動いているので、常にメタボールを設定する場所は変わります。収縮と爆発を作る働きです。フィードバック系となっています。
(これまでは、point全体の平均位置にメタボールを配置しforceを変化させていました。)
2.ランダムにx, yが-2,-1, 0, 1, 2に替わり、そこに引き付ける
(これまでと同様です)
3.糸状の人工生命を引き付けるため、マウス位置にmetaballを準備します。近いと有効に働き、遠いと引き付ける効果が弱いことを利用しています。
(これまでの「擾乱を伴う反復系」では、マウス位置と人工生命の平均位置との差から、spring SOPに与えるforceを作っていましたが、今回それはありません。またマウス位置に集まってきた人工生命を周期的に弾く機能を入れていましたが、それも付けていません)
次に、spring SOP内のパラメータに与えるforceについて述べます。図の右上のforceに関する説明です。
1.ホメオスタシス:基本的にほっておくと原点に戻る効果です。フィードバック系です。
(これまでと同様です)
2.Turbulence:光の檻が在る場合はsin波に基づくforceが作用しています。光の檻が消滅した場合は、ゼロにします。
これまで使っていたマウス位置に人工生命全体を移動させるフィードバックはありません。
このように5つのforceによって「擾乱を伴む反復系」を作っています(これまでは7つのforceを使っていました)。見た目で大きく違うのは、人工生命が細長くなること、またマウスを人工生命に近付けた時だけ引き出せる点です。
光の檻
基本的には先回の「衝突問題の基本」で使った復元がある場合の砂のプログラムを使っています。砂と衝突するマウスの大きさが人工生命と連動して変化する点が違っています。人工生命を構成するポイントの最大と最小の位置から人工生命のサイズを求め、人工生命の平均位置を中心として衝突対象の円を描きます。limitを入れて最大、最小の円のサイズに制限をかけています。これが砂を除く円になります。人工生命に対して、独立して光の檻があるわけではありません。光の檻は人工生命の大きさを反映している点が特徴で、人工生命と共に変化します。このため光の檻を含めて人工生命と捉えることもできます。光の檻の中央にある砂を除いているわけですが、これが衝突問題と同じであることに気づくには少し慣れが必要かもしれません。人工生命の平均位置を中心にして、人工生命のサイズから決めた半径の円と衝突した砂を除けることが、移動する光の檻になっています。
次に光の檻を作製する方法を説明いたします。その部分のプログラムを示します。

元の砂の広がりとの差をとると、空いた円の所にだけ砂が残ります。これをblur TOPでぼかし、threshthold TOPで白にし、これを繰り返すことで少しだけ大きい白い円を作ります。これと穴の開いた砂との掛け算により光の檻が周りにある青っぽい円が作れます(白の円状の形で背景が黒にすると、掛け算すると白のところだけが切り取れます。これは良く使う方法です)。
人工生命が光の檻を貫いた際、粒子を飛び散らせる方法
人工生命が光の檻に突き刺さった際に、その交点から光の粒が飛び散る描写について述べます。砂を除く最大値を設定しているので、人工生命が伸びていくと飛び出します。その部分のプログラムを次に示します。

光の檻を作る際にできた白円をedge TOPで外枠だけにします。これをblur TOP- threshold TOPで明確にさせます。この輪っか(外枠)と人工生命の映像との掛け算で人工生命が外枠を切ったところだけを取り出します。次にここから粒子を外側に向けて放射させます。これまでの作業はTOPで行っていました。粒子を発生させるparticleはSOPですので、TOPをSOPに変換しないといけません。これがtrace SOPです。この後これをparticle SOPの第1インレットに入れ、閉じ込めた枠の外側に粒子を放射するために、10倍ほどの球を用意し、それを第4インレットのattractorsに接続します。こうすることで接点からアトラクターである外に向かって粒子が飛び出します。これをgeoとreder TOPで2次元にして色を変えて合成しています。
エージェントによる先行体験システム
ここからは空想です。ディジタル空間において、エージェントが少し未来を体験し、それを見てAIが解釈し、人とのコミュニケーションに使うという案です。2025.10.26のblog「フィジカル・インテリジェンス」のポテンシャルと人工生命との関係も同様な文脈で考えることができます。檻の大きさが「小さい・狭い」は苦しいと解釈し、「広い」は「のびのび」といったように解釈します。触手が伸びて壁に当たり、パーティクルが飛び散るのは危険性を表す行為と解釈できるでしょう。プログラムで作製した動画あるいは画像をAIに見せることで、AIに言葉として発話させます。そうすると、例えばクルマの運転の例では、50m先の細い急カーブを曲がる場合、人工生命が前もってディジタル空間内で50m先の急カーブを体験します。カーブにともなって形状が細長く変形していきます。この時の図が以下です。

これをAIが見て解釈し、「このカーブはきつい、体が伸びて痛いよ」のように発話します。それをドライバは聞いてスピードを落とし、AIと会話します。このように人とのフィードバックに活用できるのではないでしょうか。また人工生命が細長く伸ばされるのと同期して、椅子が変形して体に押し付けるようになれば、身体的に状況を把握することができるかもしれません。
今回の音楽はMAX/MSPで作製しました。人工生命と光の檻との接点から粒子が飛び散る際の音は、音源を用意し人工生命が檻を突き抜ける時に鳴らしています。


コメント