代謝に注目した生物の動き
2025.08.26のblog「ポストモダンと「擾乱を伴う反復系」1」で、生命っぽい動きを作製する場合、生命をどう捉えるかでアプローチが違うことを述べました。この時は、オートポイエーシスという、自らを創り出すシステムにヒントを得て、「擾乱を伴う反復系」を作製しました。他にも遺伝子のように情報を半分ずつ交換することで変化していくことに注目してもよいし、代謝のように、食べてエネルギーを得ることに注目しても、別の生命っぽい動きを作ることができます。このように、生命とは、に対して明確に定義できない段階で、生命を感じさせるモノを作ろうとする場合、生命を解釈するある側面に注目し、作製していく方法が「思弁的」という考えでした。生命の本質をオートポエーシスと仮定するとどうなる、代謝にあると仮定するととどうなる、といったことです。この考えは、確実な真実があって、それを基に演繹して次の事実を見つけていくという考えと大きく違っています。これについて、2025.05.12のblog「ベイズ推定、思弁的・・・」で述べています。
今回は、食べて動くという代謝にヒントを得て作製した映像を紹介します。餌のばらまきが行われる場に生物がいます。移動して餌を食べ成長する映像です。それではまず見ていただきましょう。Touchdesignerで作製しました。
生物本体と、餌をばらまく場とは分けて考えています。インターラクション部分は、生物が餌が多くある部分に移動する動きと、もう一つは、生物が餌を食べることで成長する時間の制御です。
背景のプログラム:餌場
まずは生物が移動する背景となる餌場について考えます。生物の背景を見ていただくと、Monogokoroでよく使っているフラクタル模様です。このフラクタル模様を作った映像を、trace SOPによって3D化し、それにparticle SOPを使うと、餌のようなパターンが生成できます。映像の変化によって、ばらまかれ方が変わります。規則とランダムとの間にあるようなばらまき方となり魅力的です。餌だけを作るのであれば、フラクタル映像を使う必要はありません。今回はフラクタル模様を背景に使うため、これから生成しました。映像をtrace SOPに入れてparticle SOPにつなぐと、その映像を反映した餌が現れます。この後、geo COMP, render TOPにより2次元化します。
生物のプログラム
生物の形状作製について述べます。次の図がそのメイン部分のプログラムです。

「geoの映像」と書いている部分をみていただくと、形の変形した球の集まりです。これが生物の元の形です。位置もサイズも色もランダムになっています。これは、sphere SOPをノイズで動かしたものに、位置、色、スケールのインスタンシングによって作製しています。位置、色、スケールもnoise TOPを使ってばらばらな値を与えています。noiseを使うと、-1~1, あるいは0~1のランダムな値を、設定した分解能の数だけ作ることができます。これまでにも説明してきた、値を色として設定する方法です。細かい話ですが、noise TOPのoffsetとPixcel Formatの設定には注意が必要です。位置設定のように、r, g, bに-1~1の範囲にしたい場合は、Pixel Formatを32-bit floatもしくは16-bit floatにし、offsetを0にして基準を0にします。一方、色やスケールはマイナスの値が必要ありません。この場合はPixel FormatをUse inputか8-bit fixedを使います。これらはマイナスの値を持っていません。そしてoffsetを0.5に設定します。geoをrender TOPで取り出しblur TOPでぼやかしています。その後の処理が次です。

baseと書いた部分は先ほどのプログラム部分です。noise TOPですが、両方の入力に入れています。下のインレットにいれると、入力の形がnoise TOPに入ってきます。noise TOPで作った色がそれにかぶさります。この時RGBをinput+noiseにします。この設定で色が変わります。これでようやく、生物の形ができました。nosie TOPは様々に使える優れたオペレータですが、できることが多いので、扱いが難しいです。この後、バックグランドを黒にして図形だけを浮かび上がらせる処理をします。これは頻繁に使います。図形の形状(この場合はnoise TOP)に対して、閾値を使って図形の部分を白、バックグランドを黒にします。今回は閾値を2回使って段階的に処理しています。これらをcomposite TOPで乗算することで、図形だけを取り出せます。
少々細かく書きすぎましたが、noise TOPを使ったインスタンシングや、形状を抜き出す方法はよく使うので、参考になればと思います。
生物と場とのインターラクション
餌がばらまかれますが、それには濃淡があります。そこで生物はエサの多いところへ行って食べます。ここで重要になるのが、どのように移動させるかです。上の説明では、生物自体は原点を中心にグネグネと動くようにしています。一般には、餌の平均位置を求め、生物の基準をそこに移動すればOKです。しかしここで、直線的に移動させたのでは、生物の揺らいだ感じがでません。餌を探して捕まえる感じが大切です。そこで、中心を移動させる部分を別のプログラムとして作製し、ここに揺らぎながら動く要素をいれます。そしてここで決めた位置を、2次元化された生物の位置に当てはめて動かすことにしました。次の図がその部分のプログラムです。

spring SOPとfeedback CHOPを使う構成です。spring SOPは外部から3種類のforceを加えて移動させることができます。立方体であるbox SOPを動かします、spring SOPではforceが働くため、設定した立方体の形状は崩れます、このため何でもいいわけですが、簡単な形状である立方体を使いました。spring SOPで崩れた立方体を構成するポイントの平均位置が結局、生物の位置になります。ですので、立方体の崩れた図形をどう動かすかという問題にすり替わっています。spring SOPのforceの一つは、餌の平均位置に移動させる力です。これが最も優先されます。揺らぎを作るのが、他のfroceとfeedbackコントロールです。spring SOPにはTurbulenceという乱流のパラメータがあります。これに値を入れて乱流を加えます。もう一つのforceは、立方体の崩れた図形の中心位置が原点からずれていくわけですが、これを原点に戻す力を作用させます。これを図中の「feedback原点からのずれ」の部分で作っています。餌が消えた場合に原点位置にゆっくりと移動する力です。常時働いているので。餌の平均位置に移動させる力より弱くしています。もう一つfeedbackがあります。立方体の崩れた形状の中心位置をfilterでディレイさせて求めます。これはゆっくりと移動させるためです。最終の出力(生物の原点移動)は、図中の白の四角い正方形で囲った部分になります。これを、spring SOPの球の位置にfeedbackしています。この球にはmetaball, forceの設定を加えることで、立方体の崩れた図形と球とは相互作用します。これによって、崩れた立方体の形がさらに変形されます。このため中心位置も変化します。このfeedbackによっても揺らぎができます。これらによって、餌に多い場所に揺らぎながら移動します。
食べた量の積算
生物が餌を食べたということを、生物が餌に重なることとみなしました。餌を食べるに従って、生物のサイズを大きくし、満腹すると、サイズは固定され、餌が消えます。餌が消えると、サイズが次第に小さくなっていきます。これが繰り返し行われます。ここで、満腹するまでの時間がいつも同じだと、決まった周期の動きになります。まったく同じ周期が続くというのが生物的ではありません。そこで、生物が餌と重なった量を求め、それが設定値に達したら満腹としました。こうすると、動きながら餌をとっていく量は変化するので、満腹に達する時間がその都度違うようになります。これで一定の周期を防ぐことができます。生物と餌の重なり量は、生物と餌の形状をcomposite TOPで積をとり、それをanalize TOPで平均値にします。これをtop to CHOPで値に変換します。これは重なり量を数値化するのによく使う方法です。次々とこの値が入力されてくるのを積算していくわけですが、これを積算するのがspeed CHOPです。このCHOPを私は長いこと知らなかったので、CHOPの組み合わせで作っておりましたが、これば便利です。
生物と環境との接点
以上のような方法で、最初に示した映像を作製しました。先回の「フィジカル・インテリジェンス」では、ポテンシャルの場と人工生命とは一体となった存在でした。今回は環境と生物とを分け、生物が環境に影響を与えるという考えで作製しています。前々回の「発振現象の応用2」でも、Touchdesignerにfbxで移した後は、生物と大地とを分け、生物が動くと大地に影響がでる、という考えて作製しました。環境をどうみなすかは重要な問題です。いずれにせよ、生物っぽく見せるには、オブジェクトがそれらしいのも大切ですが、環境との接点が重要です。


コメント