粒子で描く:POPを試す5

particles

はじめに

TouchDesignerのPOPはYouTubeを見ていると基本的な使い方があります。ただ各オペレータが何をしているのかを理解するになかなか時間がかかります。しかしそれだけ驚きも大きく、素晴らしい考えを導入しています。POPは粒子を扱っています。今回は粒子を使って映像を描く例を扱います。座標変換と色情報の変換に注目して話します。POPはTouchDesignerで使っていたSOPと随分概念が違います。このため思い違いが多々あり、ちっとも理解できない状況に陥ります。見てくださった方が同じようにならないことを願って注意点を記載しています。

座標変換と色情報の変換

まず映像を見ていただきましょう。

2026.03.29のblog「生物の形の模倣3・・・」で作製した映像を粒子の平面に移し立体的に盛り上げています。点々に見える一つ一つが粒子です。この映像をどの様に作製するかを解説致します。プログラムは次になります。シンプルな構成です。

point generator POPでポイント(粒子)を発生させます。SOPではポイントというと、図形を構成する点ですが、POPの場合これは図形を構成する点ではなく粒子です。これは最初混乱するところと思います。SOPで図形を構成する点という場合、例えば3点で三角形を作った場合、それは、P(位置), vertex, primitive, N(法線)が問題になります。図形を扱う場合のPは位置(x, y, z)のことです。primitiveは図形の最小の構成のことで、この場合は三角形がprimitiveです。点(ポイント)では法線が決まりませんが、面になると法線Nも確定できます。vertexはどのポイントを使って、primitiveを構成するかを指定する接続情報のことです。位置情報ではありません。例えばA(x1,y1,z1), B(x2, y2,z2), C(x3, y3, z3)・・・・とした時、それぞれインデックスが振られます、0, 1, 2,3,・・・・です。A,B,Cで三角形を作れますが、vertex 1はpoint 5, vertex 2はpoint 10, vertex3はpoint 15というように、vertexを指定することで3角形ができます。vertex自体は位置情報を持っていませんが、接続情報持つとはこのようなことです。POPのポイントはこうした図形とは全く違う概念です。POPのポイントは粒子ですから、その属性は位置P, 速度, 加速度, 寿命, life, ID等で、時間と伴に更新されます。位置Pは同じですが後は違います。

point generatorの後、transform POPでサイズを変更しています。その次がtexture map POPです。パラメータを示します。

これはMapを作る機能ですので、P(x, y, z)をTex座標(u, v, w)に変換します。Tex座標といっているのは(x, y, z)をそれぞれ0~1の範囲に収める規格化した座標のことです。これはユーザーが定義しないでもPOPが持っているattributeです。Position AttributeにPを、Output Atribute ScopeにTexを設定することで作られます。具体的には次の座標変換です。

例えば(-1, -1, -1)と(1, 1, 1)を対角の頂点とする立方体があったとすると、Tex座標(u, v, w)では、(-1,-1,-1)が(0,0,0)に、(1, 1, 1)が(1, 1, 1)の立方体に変換されます。ここで注意があります。立体を表す情報としてpoint, vertex, primitive,Nがあると述べましたが。POPではこのvertexとは何の関係もありません。私は当初、vertexのことをTexと言っているものと思っていました。またu,vも立体にテクスチャーを貼る際にuv展開をしますが、このu, vと今回のu, v, wは何の関係もありません。私はuv展開のイメージを持っていましたので、当初何をしているのか理解できませんでした。

次のlookup texture POPのパラメータは次のように設定しています。

これは生物の画像をTex座標の(u,v,w)に取り込みます。TOPはだだの2D画像(ピクセルの2D配列)ですので、Tex座標を持っていません。例えば(0, 1)のピクセルは赤、(1, 1)のピクセルは黒、といった情報を持っています。ここでまたまぎらわしいことに、配列の横方向をuといい、配列の縦方向をvといいます。これもu, vという文字を使うので、混乱するところです。lookup Index attribure UにTex(0)としているのは、TOPの横軸uをPOPの規格化した座標Tex(0)に、即ちUにサンプリングするという意味です。これでTex座標に2Dの画像が取り込まれます。TOPは2次元ですので今回Tex(2)のwは関係ありません。u, vという文字はuv展開、TOPのピクセル、Tex座標、Lookup Textureへのサンプリングと、それぞれ意味が違っているので混同しないように注意が必要です。

次にChannel MaskをRとし、Output Attribute ScopeをHeightとしています。これは色情報の内Rの情報を取り出して、それをHeightと言う属性に書き込む、ということです。

次のtransform POPのパラメータを示します。

重みとしてHeightを使うことを指定しています。重みWeightは設定しなくてもP(位置)に作用します。これはPOPが最初から持っているattributeです。しかしこれだけではP(x,y,z)のどれに作用すればいいのかわかりません。それを決めるのがパラメータのTranslateです。ここではy方向に0.3としています。つまりこれは、

だけ変化させることです。色情報を使って凸凹を作る技術がディスプレイスメントでした。これまで何度か紹介してきました。意味としてはこれに相当しています。

それではもう一例を示します。2025.09.06のblog「線形操作で生じる予測不可能性」で作製した映像をmovifile in TOPに使った場合です。

まとめ

粒子で映像を描く方法を紹介しました。構成としてはよくある構成をそのまま使い、オペレータの意味を解説しました。POPは粒子を扱います。Tex座標を作製し、その座標に映像を取り込み、アトリビュートを変換してウエイト情報に持っていくことで厚みを作りました。POPはSOPと概念が違うので、混乱しないようにすることが肝要です。

今回のblogで100件になりました。blogを開始した時、特に理由はありませんが100件書こうと思いました。何とか目標を達成しました。見てくださる人がいらっしゃることに感謝しております。ネタ切れで苦しい状態ではありますが、今後も続けていきますので、引き続き宜しくお願い致します。

コメント