はじめに
先々回のblog「データの可視化:POPを試す1」で、遅まきながらTouchDesignerのPOPを試しました。今回もPOPの続きです。試してみましたという域を出ておりませんが、新しい機能群は新しいプログラム思想が入っています。field POPとcopy POPを中心に読み取った思想を含めて紹介いたします。
field POP
Monogokoroではポテンシャル場とオブジェクトとのインターラクションに力を入れています。ポテンシャルの場の中に経路を通す話や、ポテンシャルの場に人工生命を相互作用させる話です。blogでいうと、2026.02.13「視線による映像の影響」、2025.10.26「フィジカル・インテリジェンス」、等が例です。これらはmagnet SOPにgrid SOPとmetaball SOPをつなくど、gridのメッシュが直接変形する、このような場の表現でした。field POPも場を扱いますが、これらのように視覚的に見える形状変化であるジオメトリに直接現れません。勿論後で述べる工夫をすることで表示することができます。POPでは全く違った場の概念を扱います。それはオブジェクトからでる電磁場のような場です。場を規定する場合、一般的には空間的な性質である形と、媒質の性質とが必要です。例えばコンデンサやインダクタが作る場を想定していただくと、モノの形と誘電率, 透磁率で決まります。これと同様に、field POPも空間的性質である形と媒質の性質をパラメータとして持っています。空間的性質はModeにある、SphereやTorus等ですし、媒質の性質に相当するのが、Transition RangeとTransiton Alignです。Transition Rangeが小さいと、広がらない紙にインクを落とした時のように、局所的で広がりの少ない場となり、大きいと広がる紙にインクを落したように、全体的に広がりweigthの高さ(インクの場合は濃さ)が全体的に低い場になります。Alignは場の変化のグラデーションを決めるパラメータです。0の場合は内側がゆっくり変化し外側は急になくなります。0.5の場合はバランスよく、1の場合は内側が急に立ち上がり外側がゆっくりフェードする場になります。このように場は、空間(場所)の関数であり(後に恐らく時間も入れれるでしょう)、形状の関数であり、媒質の関数です。そして作用であり、それ自体が形状ではありません。
POPが作製する場は物理シミュレーションではありません。場の強さに相当する値は、プログラマーが次の節で示す関数を作って自由に設定します。そしてこれに基づいて、場を可視化したり、オブジェクトを動かしたりするのに活用します。
関数
field POPはこれに続くmath mix POP等を使ってAttributeを変換していきます。そして変換したAttributeを使って可視化します。これは関数を作ることに対応しています。この関係を知ると、y = ax + 1といったような、高校でならった関数の概念を少し拡張することができます。fieldの一般的な例として発生源の形と媒質を設定したあと、その場所P(x, y, z)に応じてweightを割り当てます。このweightはPに関係する新しいAttributeです。場が作るweightは場所によりますので、weitht_1= g(P)です。math mix POPではこんどはweigth_1を使って別のAttributeを計算していきます、weigth_n =h(weight_n-1)です、weightは位置Pの関数でしたので、weight_n = a(P)でもあります。y= ax +1を計算することは、y=a(P) x+1を計算することです。つまり位置を元に変換していったattributeをweigthに割り当て計算の係数にします。つまり空間に依存する関数変換を行うことになります。今a(P)としましたが、恐らくここに時間を入れるとa(P, t)となって、場所による位置的、時間的な関数を求めることができるでしょう。これは「時空間依存の関数変換」です。いかにもfiedと言った感じです。
fieldの見える化の例1
それでは作製した例を見ていただき、それを使ってfeildの概念を具体的に述べます。
Torusの形状が海から上がってくるという単純な例です。プログラムの主要部分を次に示します。

Box POPが細い直方体で、これをgrid POPのポイントにcopyするのですが、grid POPにはfield POPが適応されています。そしてfiled POPのModeにはTorusを指定しています。これは場を作る装置の形がToursの形をしており、Transiton RangeとTransition Alignを指定してToursを覆う媒体の性質を与えています。これによってfieidが発生します。次に何のデータに関連したfieldなのかを指定する必要があります。これがField Attribute Scopです。ここではPとしています(たいていPを指定することになります)。これでToursの位置P(x, y, z)に関連した場ができていることになります。Toursの位置Pに関連してできたfieldの値をweightというAttribute(属性)でOutputに設定します。これによってfiedが持っているAttributeはgrid POPが持っていたP, N(法線), Tex(vertex)ではなく、weightになっています。weightはスカラー値です。これを変換していって、今回はgridにコピーする直方体のスケール(倍率)のデータを作ります。このデータを使ってのPの位置にPの関数であるスケールを使って大きさを変えた直方体が配置されることで可視化します。その関数の変換を記述するのがmath mix POPです。field POPと次のmath mix POPの設定を示したのが次の図です。最初の2つが今のべたfieldのAttribureであるweightを設定する部分です。3番目がmath mix POPのパラメータで、可視化するためのattributeを作るための関数を設定していく部分です。

3番目の画像を見てください。まずOperation A*Bがあり、AをP.yにしてしています。これは位置Pのyの値のことです(今回y軸が高さ方向です)。Bをweightにしています。位置に基ずく場の値をweightに掛け算しています。そしてこれを新しいAttribure dekoとします。場のyの値に関係する関数になっています。次に再度A*Bに設定し、こんどはdekoに4に掛けています。これもdekoという名前にします。次にA+Bでdekoに0.002を足しています。これは場の全体に少しだけ値を足したことになります。これをまだdekoとします。最後にcopyのパラメータです。ここまでの計算は、まだ何のパラメータを変えるのかは設定されていません。dekoという関数を作製した状態です。次はcopy POPのパラメータを見てみます。

Template Attributesは追加でcopyに渡したいattributeを指定します。追加でという意味は、最初に形状を作った時(grid POPのこと)にできるP, N, TexのAttributeは指定する必要がありません。これは当たり前にTemplateタブで使えます。これ以外に後で作った関数が追加する対象です。ですのでここでは最終的に計算した関数dekoを指定しています。また色情報であるColorは、最初に形を作った時はありません。色情報はgrid POPの後のNormalize POPで指定しています(Attribute POPで指定する場合も多くあります)。ですので、色情報は追加したAttributeなので、使用する場合はTemplate Attribureで指定する必要があります。しかしここで書けば、自動的に色情報は使われ、Templateで設定する必要はないようです。Template TransitionでPを指定し、Pで指定した位置にTemplate Scleでdekoという計算結果の値で拡大・縮小されます。copy POPのTemplate AttributesとTemplateで関数を何に適用するかを決めます。場そのものは見えませんが、インレット1から入力される直方体のスケールを変えるという変換を行うことで、場をイメージさせることができました。ここで述べた過程を見ていただくと、POPが物理シミュレーションでないことが分かるでしょう。
copy POPの特徴
今回の動画を見てみると、浮き輪のような形のTorusの内側と外側の直方体の高さが低く、中央付近の輪近傍の直方体の高さが高くなっています。これはこれまでのcopy SOPではできなかったことです。copy SOPの場合はpointに対して指定したオブジェクト(今回の場合は直方体)を配置することができますが、配置するオブジェクトを場所毎に変化させることはできませんでした。field POPとmax mix POP, copy POPの組み合わせではこれが可能です。この点大きな違いといえます。またPOPはGPU対応ですので高速です。
fieldの見える化の例2
例1とほとんど同じ構成ですが、feild POPのModoをSphareにした場合で、直方体の形状を6角形の先が細くなるtubeを使った場合を示します。fieldのパラメータ、max mix POPのAttribureの計算、copy POPのTemplate Attribureの設定を次に示します。

この場合の結果が次の動画です。
panel CHOPを使って全体をマウスで動くようにしています。球の中央に相当する部分のスケールを大きく、周辺を小さくしてみました。オペレータの構成は基本同じでも、オブジェクトやパラメータの設定により見た目は大きく変わります。
まとめ
field POP, math mix POP, copy POPの組み合わせで、fieldを可視化することを行いました。field自体は、キャパシタやインダクタが作る電磁場のように、空間の性質である形と媒介の性質に対応するTransition Range及びTransition Alignで決まります。これを見える化するためには、場所に対応したattribureであるweightを、math mix POPで新たなattribute(関数に対応)を計算し、copy POPのインレット1の図形をその値を使って変形することで場を可視化しました。これはこれまでのSOPできなかった表現です。
feildを扱おうと思うと、エンジニアとしては物理シミュレーションを行うことを考えます。しかしこれは有限要素法等を扱うことになり膨大な計算資源が必要です。TouchDesignerを使う方々は実際の物理シミュレーションを要求しているわけではなく、場を使った表現に力を入れておられると思います。POPを作製された方々はここを割り切ったのではないかと推察致します。

コメント