はじめに
2026.07.25のblog「粒子を使った伝搬モデル1」の続きを話します。原理的に変わったわけではりません。放出した粒子が自分の所に到着した数を数えて、定まった数以上になると、次へ放出する、これを繰り返して伝えていきます。円環状に繋いだ点、受信状態と送信状態とを色とサイズで示したこと、粒子の数を変えたこと、が違いです。受信状態や送信状態で色やサイズが変化することは、その状態を受けて、別の何かを動かせることでもあります。粒子の数を変えることは、一定の数を受けると次へ送信するので、伝搬の速さをコントロールすることになります。
粒子を使った伝搬モデル
それでは今回作製した例を見てください。
4つの球のオブジェクトがあり、それぞれが粒子の受信と送信を行います。これが円環に繋ぐことで、その動作を繰り返します。粒子を放出する際にはサイズが少し大きくなります。粒子を受信する際には色がピンクに変化します。放出した粒子は、次のオブジェクトに入るわけですが、ここで数を数えています。一定数になると、それを送信側にオブジェクトに知らせ放出を止めます。開始と止める部分はいずれもfilter CHOPによってゆっくりと変化するようになっています。
次の映像は放出する粒子の数を少なくした場合です。
次のオブジェクトに粒子が到達する数が少なくなるので、先の映像の粒子が多い場合より一定数を数えるのに時間がかかります。このため一周する時間も増します。このように発振周期を数によってコントロールすることができます。
次に示すのは、途中でparticle POPのパラメータLife Expectの時間を短くした場合です。
粒子は次のオブジェクトに到達できずに消えます。このため次のオブジェクトは到達する粒子が一定数を下回るため放出動作に入れず、状態変化は停止します。Life Expectを元に戻すと動きだします。このことは、シーケンス制御を止めることができ、またその状態から再開できることを示しています。基本的に行っていることは、「粒子を使った伝搬モデル1」と同じなので、プログラムの説明は省きます。
ヒステリシスコンパレータ
映像を見ていただくと、粒子をジワッと放出してジワット消していることがわかります。これはparticle POPのLife Expectをコントロールして行っています。このパラメータによって粒子が到達する距離が決まります。ですので徐々にこの値を上げて他のオブジェクトに到達するようにし、そして一定を保ち、次に徐々に値を下げて消しています。on/offではなくこのようなコントロールにすることで、なめらかな粒子の変化が演出できます。しかしon/offのタイミングが明確でないので、他の動作と合わせる時に調整がいる場合があります。今回の場合は放出する場合にサイズが大きくなり、放出を止め際にサイズが小さくなる動作をつけています。この大きい小さいのタイミングを感覚的に合わせる必要が生じます。こんな時によく使う方法がヒステリシスコンパレータです。ヒステリシスコンパレータはハードウエアでは人がボタンを押す際のチャタリング防止や、矩形波の幅を調整するのに使うテクニックです。パソコンで完結する場合はチャタリングはありませんので、矩形波の幅をコントロールするテクニックになります。この部分の説明図とプログラムを次に示します。


元波形は徐々に立ち上がり・下がる波形ですが、これよりも少し長い矩形波を作ります。ヒステリシスコンパレータというのはパルスが立ち上がる判定(Th1)と立ち下がる判定(Th2)が異なる値を設定できるコンパレータのことです。元波形のTh1を超えるとパルスが立ち上がり、Th2で立ち下がります。LPFを入れているのは、立下り時間を元波形より伸ばしたかったからです。LPFが入っていない場合が一般的です。
プログラムでは、expression CHOPで閾値を設定しています。出力パルスはconstant CHOPが出します。constant CHOPの状態を決めるのが、2つのchop execute DATです。chop execute DATは制御には頻繁に使います。ここでは立ち上がりではoffからonに(0 to 1)に信号が変わった時に1になるように、立下りでは0になるように設定しています。少し注意すべきは、LPFの立下りの判定です。expression CHOPでth2より高い時が0、低い時が1になるようにしています。これにより立下りの際のchop execute DATの設定も0 to 1を使いうことになります。
2つのchop execute DATを使って矩形波を作ることはしばしばあります。
感想
今回作製してみて、円環を形成することを発振状態と呼ぶなら、発振周期のコントロールをより可変にできるように検討しても面白いと思いました。放出する粒子の数と粒子の数が幾ら到達すれば”止める/放出する”の判定基準とを合わせてコントロールすると、発振周期はもっとダイナミックに変えれるでしょう。また粒子の量ではなく、粒子の速度を変える方法もあるでしょう。その他、一つのオブジェクトが壊れた際に、別のオブジェクトを経由して連環を保つと言った冗長なシステムを考えることにもつながりそうです。記憶がニューロンの発火パターンであるとも言われています。無数のオブジェクトの繋がり方を状態とする見方にも通じるでしょう。こうしたことを行っていくと。生物が何故、ニューロンのシステムを使っているのか、といったことを、プログラムをするという身体性から感じ取れるのではないかと思います。実際行うかどうかは別ですが、「粒子を使った伝搬モデル1」と今回の検討で、この粒子の伝搬モデルは広がりのあるテーマだと思いました。


コメント