データの可視化:POPを試す

データの可視化

はじめに

MonogokoroではTouchDesignerを中心に画像や映像を作っています。2025年10月に新しいオペレータ群であるPOP(Point Operators)がリリースされました。大規模なアップデートです。しかしこれに対応できておりませんでした。生物的な形状をcopyを使って作製するようになって、copy機能を初めとして大幅に改善されたと聞いていたPOPを試さないと、と思いました。今回遅まきながらアップデートして試してみました。まだPOPのほんのわずかな機能を使ったにすぎませんが、紹介したいと思います。

POPについて

POPの説明は使いはじめたばかりの私にはまだできません。すでにウエブサイトやYouTubeに多くありますのでそちらを参考にしてください。私もこれから見ていきたいと思っています。ここでは少し使った印象を述べます。
POPはSOPのように3Dを扱うオペレータ群ですが、GPUで動作する高速オペレータ群です。このため、大量の数を扱うようになるcopyやparticlesを扱う場合に、大幅の改善が見込めます。有機的な形状や流体を扱う場合等に大きなメリットがあるでしょう。
またAttribute(属性)が大幅に機能的になり、プログラムの思想に変化があったように思えます。ここでAttributeと言っているのは、位置, 法線方向, 色, 速度, 寿命, インデックス, 時間等、言ってみればあらゆる情報を指しています。自分で追加することもできます。オブジェクト指向プログラムでは「クラス=プロパティ+メソッド」で、プロパティを設定してメソッドが実行することが基本です。これがより徹底された印象です(TouchDesignerでは属性をAttributeと呼んでいます。オブジェクト指向プログラムではプロパティです)。属性を作り更新する、次にその属性を使って処理する。また属性を作り更新する・・・これを繰り返し、プログラムチェーンを作って行く。そんなやり方です。POPのオペレータは、属性を読み取り、内部で計算し属性を返しますが、驚いたのは入力属性と出力属性を変えることができる点です。これは属性を含めた関数的動作をしていると言えます。タッチデザイナーはオブジェクト指向プログラムですが、最近は関数型プログラムというものあります。この関数をつないでいくという関数型プログラムの性質も入ってきた印象を持ちました。さすがモダンです。YouTubeの「https://www.youtube.com/watch?v=c7YN_HJRMJo」の中にあった例を一つ使って簡単に説明致します。

最終出力の画像は次です。

tourus POPはSOPと同じです。tourusが持っている属性はP(ポイント:各ポイントの(x, y,z)の値), N(Normal:法線の方向), Tex(vertex:Primitive形成のためのポイントのつなぎ順も含めた情報、Primitiveはレンダリング可能な最小の形)です。図形はこれらの情報を持っています。connectivity POPは形の線の付け方を変えています。次のmath POPは各ポイント(x, y, z)の位置に対応する色を割り当て実行します。色は属性です。ですので新しい属性(この場合色)が割り当てられ計算され塗られたのです。attribute POPは新たな属性を加えるためのPOPです。LineWidth(線幅)という属性を加えています。次のnoise POPはノイズを加えるオペレータですが、何の属性にノイズを加えるのかを決めることができます、先ほどのLineWidthにノイズを加えてそれを実行します。実行結果がnoise POPに表れるとよいのですが、LineWidthで線幅を変えるにline MATが必要なようです。line MATのAttributeタブにLineWidthを設定する必要があります。これによって、line MATの線幅を設置するパラメータとLineWidthが連動するようになります。連動させる必要があるので、line MATの設定が必要なようです。noiseもLimeWidthに設定しているので、tourusを形成しているline上にnoiseが乗ります。この結果が上の2番目の画像です。このように属性を変えていきながら、特定の属性にノイズを加える計算をしてプログラムチェーンを作っていけます。SOPで行う場合は、ポイントにノイズの値を付加することができましたが、このように構成するlineに対してノイズを付けることはしてこなかったことです。できるかもしれませんが、複雑になったと思います。属性を選択してそれに対して計算し出力する、そのような構造が見て取れます。

データの見える化

最初に行った例を紹介致します。2026.02.27のblog「音楽作製の基礎3・・・」で、底が動くお椀の中に3つのボールを入れて動かす例を挙げました。お椀の底の中心からそれぞれのボールの位置の距離と、それらの平均を求めた4つの値を作りました。映像と音楽とは関係してるのですが、直観的にその関係が今一つわかりにくいと思っていました。そこで、これらの4つのデータを可視化すると、音楽と映像との関係を捉えやすくなるだろうと思いました。その結果が次です。

右上にお椀の映像があります、ボールの色と中心からの距離を表すデータの色とは対応しています。赤色は平均を表していて、これが曲のベロシティ(音の強さ)になっています。背景は2025.06.29「文学的な関係性・・・」で作製した映像を使いました。POPの機能としてはデータを見える化する部分chop to POPと、データをそれぞれ10本の線で表していますが、それに使ったのがcopy POPです。次にこの部分を見てみます。

「音楽作製の基礎3・・・」のプログラムから色ボールの距離のデータを得ます。これがtrail CHOPです。次にchop to で3Dに変換すると直ぐにtrailのデータが3Dに可視化されました。これは便利です。SOPの場合は、TOPからSOPへはtrace SOPで3D化できましたが、chopからはできません。一旦データをTOPに描き直す部分が必要になりました。POPになったデータを次にlineのポイントにそって10本分copyしています。これはSOPでも同じです。しかしPOPはGPUの計算なので、copyを手軽に行うことができます。次のattribute POPで新しく色の属性を加えています。SOPの場合はpoint SOPを使って色を変えていました。POPの場合は属性を意識してつなぐことになるのが利点です。後はSOPで作製する場合と同じです。波形を見ながら曲を聴くと、その関係がより分かるように思いました。

次の例は2025.11.21のblog「3体間の衝突回避と発振」で紹介した最初の動画のプログラムを利用した案件です。このblogでは3体間の衝突回避からTouchDesignerでも発振現象が作れることを紹介しました。このボールの一つで、しかもx座標の変化だけを取り出し、これを3D化し、それを規則的に配置することで幾何学的図形を作りました。3体間の振舞は、それぞれの位置に加えるノイズの大きさと、フィルタの幅によって変化するわけですが、それが幾何学的な模様に反映される面白さがあります。それでは見てください。

左上にバーが2本あります。上のバーが3体の位置に加えるノイズの大きさを変えています。大きくなるほとノイズも大きくなり、基本ボールが大きく動きます。下のバーはフィルタの時間幅です。filter CHOPは通常のローパスフィルタですが、時間軸上で計算するのでわかりにくい印象があります。今入ってきたデータはそのままで、過去のデータほど重みを付けて下げていくフィルタのことです。バーが長いほど、過去のデータの影響を受けています。中央の白の表示は白ボールの座標の内、x軸だけを時間軸上に取り出したデータです。先ほどの例と同じく、trail chopのデータをchop to POPを使って3D化しています。発振する場合は規則的な振動であるサイン波になります。左の一番下の表示は3体間の動きを表しています。右側の図は、発振の際にサイン波になる白色の曲線を自分自身でコピーして曲面化し、それをz軸に20°づつずらして18本copyして描いています。中心からずれて円になっているのは、白色の波形が(0,0,0)からではなく、オフセットを付けているためです。最初の動画と同じく、chop to POPとcopy POPを利用した例です。

おわりに

はじめて触るものは何でも難しいので、戸惑いながら試している段階です。属性を付け足していく関係と、属性を変換するという思想が新しく感じました。いっそうモダンなプログラムになっています。またデータを直接3D化できること、copyを躊躇なく使える点に驚きました。徐々に活用できるようにしていきたいと思っています。

コメント