はじめに
TouchDesigneのオペレータの中には、どうも相性の悪いというか、苦手なオペレータがあります。pattern COHP or pattern POPはそうしたオペレータです。そこで簡単にまとめておこうと思いました。いつもはテーマがあって記載しているのですが、今回は備忘録です。
立体バネの作り方
例として立体バネをpattern CHOPとpattern POPを使って作製します。
patten CHOPによる立体バネの作り方
最初にpattern CHOPを使って作製した立体バネの映像を見てください。2種類です。
プログラムは次です。

tx,tzで平面を作り高さ方向がy軸になっています。例えば円筒のバネを作る場合、txをsineのn周期, tzをcosineのn周期を作って, tyをramp関数にすれば、tx, ty, tzを描けば作製できます。今回の問題はバネを円筒から形を変える点にあります。最初の動画を描くためには、結局次のtx, ty, tzを作ることになります。

pattern CHOPの波形を変形して作製していきます。tx,ty,tzの波形の横軸はlengthと言い、これを揃える必要があります。今回200ポイントです。pattern CHOP : txはsine波形, pattern CHOP : tzはcosine波形を選択し、どちらもNumber of Cyclesつまり、何周のバネにするかを6にしました。これをmerge CHOPで合成します。次に両端がゼロでまん中が高くなるenvelope波形を作製します。これがpattern CHOP:cos -> math CHOP_1の経路です。横軸lengthは共通の200ポイント、そしてNumber of Cyclesを1にすれば、pattern CHOP : cosができます。次のmath CHOP_1は-1を乗算して縦軸を反転すると伴に、-1~1のレンジを0~2に設定しています。merge CHOPとこれをmath CHOP_2で乗算し、tx,tzに対して所望の波形を得ます。次に高さ方向のtyですが、pattern CHOP : tyがそれです。lengthを200にして、ramp関数を使います。映像のように上下に動かすために、To Rangeのyにlofからの信号を入れて動かしています。math CHOP_2とpattern CHOP : tyとをmergeすればいいわけですが、merge CHOPを使うとtx, tz, tyの順番になるので、math CHOPを使います。その後select CHOPでtx, ty, tzを取り出します。これをchop to SOPすると、3Dの絵が描けます。後はいつものように、geo COMPとrenderを使って2Dにします。このように、tx, ty, tzの波形をイメージして、それに向かって変形していくことで作製できました。
2つ目のバネは、math CHOP_2でsine, cosineの波形に乗算する関数を変えただけです。この関数はmath_CHOP_1の下のpattern CHOPです。これはTypeをConstnatにして、Tapperを2, 0のように最初を最初を高くします。Tapper Decay Rateを調整することで、カーブ具合を調整できます。このようにpattern CHOPは様々な波形を作ることができます。ただパラメータも多いので設定の要領を得るには時間がかかります。
patten POPによる立体バネの作り方
次は同じものをpatten POPを使って作製します。作製した映像を示します。映像は前の節と変わりません。
プログラムは次です。

短くプログラムすることができます。pattern POPで円柱状のバネの形をすでに描くことができます。次のmath combine POPで式を書いていき、この2つで所望の形状が作れます。非常に便利そうです。しかし結局patten POPやmath combine POPをpop to CHOPに変換して、tx,ty,tzの波形が想定したようになっているかを確認しながら、式やパラメータを書いていくことになります。次のpattern POPの設定画面を示します。この設定だけで円筒のバネ形状ができます。

Number of Pointsは全てのポイントの数です。Typeをtx, ty, tzに対してSine. Ramp. Cosineに設定しています。Number of Cyclesは何周するかです。tx, tzが6でramp関数は1です。後はMap to Hightのtyは高さ方向の変動を与える所です。lfo CHOPで値を作っています。パラメータに対してリアルタイムに形状が変化するので、見ながら設定できます。次のmath combine POPが式を使って形状を変形していくオペレータです。設定は次の画像になります。

行っていることはramp関数を作って、前の節のenvelopの関数を作り、それをxとyのポイントに乗算することを行っています。0番ですが、ramp = Tex.xを設定しています。TexはTex座標への変換のことです。位置P(x, y, z)に対してTex座標(u, v, w)があります。Tex座標は(x, y, z)をそれぞれ0~1の範囲に収める規格化した座標のことです。ユーザーが提示しなくとも、POPが持っているattribuleです。ですので横軸の200ポイントに対して0~1のramp関数が作れます。math combiner POPのオペレータにramp関数がありません。このため、ramp = Tex.xとしてramp関数を作ります。これをもとにcosin関するを作るので、ramp関数に360乗算して0~360の角度を作ります。cosineを-cosineにします。縦軸が-1~1ですので、これを0~1に変更します。-cosine + 1にしてそれを2で割って作っています。できたenvelopeをx座標、とz座標に乗算してenvelopeの形を持ったsine波とcosine波を作りました。高さ方向はpattern POPを踏襲すればいいので、何もする必要はありません。
2つ目の動画は次のmath combine SOPの設定が違うだけです。その設定を次に示します。

pattern POPとmath combine POPの組み合わせで、様々な関数で作る形状が生成できます。
pattern CHOPとpattern POPを使った動き波形
動き波形の基礎
次の映像を見てください。
最初の動かし方は、pattern CHOPのパラメータPhaseに、時間変化をさせるabsTime.secondsを入れて位相を動かしています。これよってsine波が動きます。
2番目はpattern POPによるものです。Parmeter Sizeを3にして3次元に設定します。Typeをtx. ty, tzに対してRamp, Sine, Zeroと設定、Number of Cyclesは1, 3, 1、そしてphaseのtyに対してabsTime.secondsで動かしています。このように、POPでは一つのオペレータで設定できます。ちなみに、pattern CHOPのLengthには、me.time.end, root.time.endをよく使います。Sample Rateが60の場合、この値は600になります。
最後はpatternとは関係ありません、別の作り方の参考です。lfo CHOPを使ってsine波を出力し、それをtrai CHOPで横軸を作り、chop to SOPで3D化しています。
こうした作製方法は頻繁に使います。
動き波形による立体図形の例
2026.03.29のblog「生物の形の模倣3Copy再び:POPを試す3」でヒドラに似せたキャラクターを作製しました。この作製にpattern CHOPによる動く波形を使っています。その部分について詳しく説明いたします。まずヒドラの映像の再録を示します。
pattern CHOP部分は次です。
pattern CHOPが動くに従って、右下にある立体図形が動いていることがわかります。静止画が次です。

pattern CHOPの後、chop to SOPにより3D化します。これを中心にしてcircle SOPで断面を作り、sweep SOPを使ってチューブを作っています。それをsop to POPでPOPに変更、その後x軸に回転しながらcopyしてヒドラのボティの元ができます。pattern CHOPによってうねるような動きを与えていることが重要な部分です。この波形はsin波から作っているわけですが、変形しているところが特徴です。pattern CHOPのパラメータを示すと次になります。

Typeがsine波でNumber of Cycleが2ですので2周期分です。PhaseにabsTime.seconds / 5を入れて波形を動かしています。次が波形を変形させている部分です。Tapar, Taper Decay Rate, Amplitude, Offsetを調整しています。波形を見ながら調整することで、生物的な動きを作っています。このように、もとはsine波の関数にもかかわらず、調整することで動きのある波形を作ることができることが特徴です。関数を完全に知らないとできないわけではない点が魅力です。
まとめ
pattern CHOPとmath CHOPの組み合わせ、pattern POPとmath combine POPの組み合わせによって、様々な関数を作ることができます。CHOPを使うかPOPを使うかは好みです。結局は横軸長さのtx,ty, tzの波形をイメージすることができるかにかかっています。pattern POPを使うと直ぐに元図形のイメージが表示できるので、その図から変形するのがいいかもしれません。
pattern CHOPやpattern POPを使って波形を動かすことができます。パラメータの設定により、かなり複雑な動きが作れます。CHOPの場合は、chop to SOPを使って3D化する手法をよく使います。そうして作った3Dをcopy SOPを使って何処かの軸で回転させて立体図形を作る場合もあります。
できることが様々あり、強力な機能であるが故に、最初難しく感じます。
物理的形状を扱うのはblenderが得意です。しかしここで示したように、関数を元にした立体形状はTouchDesignerも得意です。


コメント