痕跡3

徒然

痕跡処理

痕跡は本blogでは何度も扱っているテーマです。表題に痕跡と名前を付けているもの、いないものがあります。痕跡が重要と感じるのは、モノが動くと跡が残りますが、それがリアリティに通じるからです。例えは、自分ではできていませんが、船が移動すると、波が船と海との接する部分から立ち上がります。波しぶきの多さで速度感や、船の重量感、動きの激しさ、といった、船の形だけではわからない要素を感じ取れます。このことは、単独のオブジェクトだけでは動的な動きを表せないことを示しています。周囲の関係性から情報を得ています。真っ暗な背景の中でオブジェクトが高速に移動していても、カメラをオブジェクトの真横から捉えていた場合、移動しているのか止まっているのかわかりません。更に空気を切り裂く感じをだす風の流れを描かなければ、抵抗があることを感じとれません。blogの例では、2025.07.28「痕跡1」において、Touchdesignerのgroup SOPをつかって、地面のpointを、移動してくるオブジェクトに合わせて動かすことで、オブジェクトが移動した痕跡を表しました。またこのblogでは、フィードバックループを使って軌跡(痕跡に当たります)を描く方法、更にtable DATを使って位置を記憶させる方法、を紹介しました。2025.10.05「痕跡2」では打って変わって、心の中に残っている痕跡を絵画から呼び起こそうとしました。現在が過去の体験と繋がって、それらの相互作用によって新たに何かが作れていくことに関心を持っています。2025.10.24の「発振現象2」も痕跡処理を扱っています。オブジェクトが移動するその痕跡を、pbrの機能である色変化が高さに変換されるディスプレイスメントを使って描いています。技術をまとめると痕跡処理として、point制御,、フィードバックによる軌跡を描く方法、tableに位置を書き込む方法、pbrの制御による方法、を紹介してきました。今回は、稲が生えている田園に、動物が動いたように見せる方法を3種類紹介します。動物自体は描いていません。稲が動くことで移動している印象を与えようとしています。題材にした田園は、2025.05.26の「イマージュ」や2025.08.02の「情景と認識論1」で使った例が元になっています。blenderで書いた稲の形状をobjファイルにしてTouchdesignerに渡し、これを大地にインスタンシングしています。稲のサイズをバラつかせるのと、稲の回転を様々にするために、noiseを使って、サイズであるscaleの値と、回転角の値を作っておいて、これらもインスタンシングに使っています。今回は全体の中の一部分を動かすにはどうすればよいのかがテーマです。それでは見てください。

magnet SOPを使って大地を動かす方法

まず映像を見てください。

動きが細かいですが、左上から右下に何かが動いていることが分かります。これは大地の部分を持ち上げています。この持ち上げる方法に、magnet SOPを使っています。magnet SOPのインレット1に大地の形状、インレット2にmetaball SOPを入れて、metaball SOPを動かすと、大地を部分的に動かすことができます。オーソドックスな方法です。大地を動かしている映像を以下に添付致します。

このように平面に対して下から持ち上げた画像を作る方法には、magnet SOP, spring SOP, ray SOPの3種類があります。ポテンシャルそのものを作用させたい場合は、magnet SOP, spring SOPを使います。ray SOPは物理的なポテンシャルでありません。光を投影して形状を映す方法です。真上から俯瞰してみる場合に、中心の凸と周囲の凸をバランスよく見せることができます。spring SOPはバネの性質と外部からforceを与えれるのが特徴です。振動や伸び縮みのある場合に用いたり、インレットの入力以外にも外部forceを使って形状変形を行うことができます。magnet SOPは外部forceは使えませんが、凸を作るだけならとても使いやすいオペレータです。Monogokoroのblogでは、spring SOPとray SOPは頻繁に使っております。そのうち使い分けの側面から例を紹介したいと思います。

group SOPを使って大地を変形させる方法

次にgroup SOPを使って大地を変形させる方法を説明致します。先ほどの例も同様ですが、大地を構成するpointに対して、稲をインスタンシングするわけですが、動物がいると思わせる部分だけを、カサカサと動かしたいのです。そこで、大地の動かしたい部分でけを指定して、その部分を動かすと、そこから生えている稲も動くので、何かがいるように思わせることができます。この大地部分を選択するのがgroup SOPです。そしてその後、transform SOPに接続し、groupを指定して、transform SOPのスケール値や回転値を変えると、その指定した部分だけが動くことになります。この方法による映像を見ていただきましょう。

カサカサと動いている感じがでてきたように思います。
groupの選択部分を決めるところを次に紹介しておきます。

上下に動いている卵型のような形状が、大地と重なり、その部分が黄色く表示されています。この部分が選択された部分です。ですので、卵型を動かしていくと、選択部分が移動し、その部分の上下方向の位置の値と回転の値を変化させると、そこにインスタンシングされた稲も動くことになります。

group SOPを使って選択した稲を動かす方法

最後に紹介する例は、group SOPを使って大地の一部を選択するのは先ほどと同じですが、大地を動かさずに、稲のほうを動かす方法です。稲をインスタンシングする過程を振り返ってみましょう。これまでは一様にインスタンシングしておりました。そのデータは、1つは大地のpointの座標、それからnoiseから作った稲のサイズを決めるスケールの値、同様にnoiseから作った稲の回転角度を決める値です。大地を構成するpointには自動的に番号が振れらます。1番のpointにその座標とスケールの値と角度の値、2番のpointにその座標とスケールの値と角度の値、・・・を与えることになります。そこでgroup SOPで選択したpointの番号を求め、その番号のスケールの値と角度の値を変えてやれば、選択した部分の稲のサイズと回転角が特別に変わるので、周りの稲と違いがでます。大地を動かさずにインスタンシングするデータを変えるのが特徴です。具体的には次の操作になります。前の映像の時と同じように、group SOP部分の位置や角度を動かします。このデータから大地の元のデータの引き算をします。すると横軸pointの番号で、group SOPの番号のところだけに値が表示されます。動いていない所はゼロになります。これをスケーリングしてスケールの値と回転角の値を決めます。こうしてできた横軸pointの番号のデータを、元々インスタンシングするための横軸point番号のデータ(先に述べたnoiseから作製したデータのことです)に加えます。すると指定した番号だけが変化したデータが新たに作製できます。このデータをサイズと回転にインスタンシングします。こうした計算もオペレータの組み合わせでできます。それでは、映像を見ていただきましょう。

小動物が稲を動かしている感じがでているのではないでしょうか。
インスタンシングは番号に対応するデータを作ると、それが一遍に適用される便利な方法です。動かしたい部分のデータだけを変えておくこの方法は自由度が高いです。

コメント