場のイメージと地形

field

はじめに

先回場にポイントを置く話をしました。場は地形に対応し置いた場所での場の、谷や尾根や渓谷に従ってポイントが動きます。粒子の数を増やすと、流れかが分かるようになります。このようなイメージではSDFもストレンジアトラクターも同様に捉えることができることを話しました。この話を書いていて、地形に粒子を当てることで、谷や尾根や渓谷に従って流れができる映像を思い出しました。2025.06.22のblog「物理シミュレーションの活用 パーティクル」の「物理演算プロパティ(blender)」の節で示した映像です。ここで再録しておきます。

これは地形に応じた粒子の働きを示しています。地形を場と捉えると、場の状態に従って粒子は動いています。今回場のイメージの説明意外にもう一つの目的がありました。それはここで示した山に沿って流れる粒子のシミュレーションをTouchDesignerで行うことです。「物理シミュレーションの活用 パーティクル」を書いた時はblenderを使っていました。TochDesignerではできなかったのです(これは私ができなかったと言う意味です。本当にできないのかどうかは定かではありません)。TouchDesignerには物理シミュレーションをするNvidia Flex Solverが在りますが、複雑な凸凹した形は粒子が通りぬけてしまうのです。しかし新しいオペレータ群であるPOPを使うと容易に計算できるようです。今回の機会にこの機能を試そうと思いました。

場のイメージと地形

それではまず作製して映像を見てください。TouchDesignerによるものです。

粒子が上から振ってきます。その下に山の地形が配置されています。この地形自体はblenderで作製し、objファイルで出力して、TouchDesigerに持ってきたモノです。この地形に粒子が当たると、地形に沿って粒子が流れ、地形の形を明らかにしていきます。映像についての説明を先に行い、それから場と地形について話します。次の図はプログラムの主要部分です。

このプログラムは、point generator POP – transform POP – particle POP – transform POP – null POP – そしてnull POPをpaticle POPにフィードバックする系が基本です。この系で上から粒子が落ちてくる状態を作っています。落ちてくる機能を作るのはparticle POPの後のtransform POPで作っています。toransform POPのtranslateパラメータのy軸に-0.008と負に小さい値を入れています。y軸が粒子が落ちてくる軸です。フィードバック内にこれを入れることで、毎回下側に0.008ずれていきます。これが粒子を下側へ落とす方法です。ここで行っているのは物理シミュレーションではありません。ですのでNvidia Flex Solverのように、重力加速度を必要としません。point generator POPで発生させたポイント数は10万個です。これは相当な数ですが、リアルタイムに動きます。POPはGPU処理であるため、こうした膨大な数を扱うことができます。この系の中に、lay POPを入れています。ray POPは第1インレットの形状を第2インレットに投射する機能です。第1インレットは落ちてくる粒子です。第2インレットにfile in POPの系統が繋がっています。file in POPには大地の山の形状が入っています。つまり、落ちてくる粒子を大地の形状に投射します。物理シミュレーションなら粒子と大地との衝突を計算することになるわけですが、そのようなことはしていません。粒子を大地に投射することで、大地に衝突したかのように見せています。後はいつものように、geo COMPとrender TOPで2次元化しています。
lay POPを使う場合、パラメータRay Attributeに注意する必要があります。初期値はNになっていますが、粒子には法線方向がありません。そこでP(位置x, y, z)にする必要があります。しかし、一旦動きだすとNにすることで映像の表示が整います。理由は分かりません。御存知の方がおられましたら教えてください。

作製した映像を見ると、まるで粒子が山に衝突すると、山の谷や尾根や渓谷に従って粒子(ポイント)が動いているように見えます。つまり、場にポイントを置くと場の状態に従って動いて行っているように見えます。これはblenderの物理シミュレーションの映像と同様な映像になっていることが分かります。これは粒子の動きは「現われ」でその背後には場があることを現わしています。これまで描いてきたSDFやストレンジアトラクターの背後には、そのように見せている場が在るということです。

この映像から山の形状は場を現わしていると言えます。しかし違っているところは、山に当たるまでは粒子は上から下へ落下してくるように見える点です。本来場は2次元, 3次元のいずれでもその空間全体にあり、どこに置いてもその場に従ってポイントは動きます。このプログラムでは山に衝突する状態までは落下するようになっており、この状態の中に山を置いたわけで、本来の場ではありません。あくまで比喩として説明しています。考えてみると、この例では重力場のような上から下に落とす場と、途中から山の形状をした場が現れ、それらが重なっている状態といえます。

まとめ

場とポイントのイメージを再認識するために、粒子を降らした下に山を配置して、谷や尾根や渓谷に従って粒子が移動する様子を作製しました。これまで述べてきたSDFやストレンジアトラクターの「現れ」の背後には、こうした場が存在していると考えれます。またPOPを使うことで、物理シミュレーションではありませんが、それらしく見えるようにプログラムできることが分かりました。リアルタイムに動作するのが魅力です。

コメント