これもTouchDesigner勉強会で出た質問です。パーティクルのコリジョン設定、パーティクルをポイントではなく別のジオメトリに置き換えられないかということと、パーティクルをワイヤー状に繋げた表現の方法です。
パーティクルを他のジオメトリに置き換える方法は以前に紹介したインスタンスで行います。ワイヤーの場合は各ポイントを繋げて線ポリゴンを生成します。これらのロジックを紹介します。
サンプルデータのロジック全体です。それぞれの構成はスクリーンショットのようになっています。パーティクルをジオメトリに置き換えるためには、パーティクルジオメトリをCHOPデータ化します。パーティクルをワイヤー状のジオメトリで表現するためには、パーティクルをテーブルデータ化します。偶然ですが、ジオメトリデータを色々なデータに変換して使う例としては面白いサンプルデータになりました。
まずは、パーティクルのコリジョン設定の簡単な例から。スクリーンショットのようにパーティクルがBOXジオメトリに衝突して、バウンドする設定を例として紹介します。
パーティクルのコリジョン設定は、Particle SOPの2番目の入力コネクタにコリジョンジオメトリとなるポリゴンモデルを接続すします。Hit BehaviorパラメータでBounch on Contactを設定するとコリジョンジオメトリと衝突した際にパーティクルがバウンドするようになります。その他にもDie on ContactやStick on Contactなど挙動を設定することが出来ます。
このパーティクルデータを基に他のジオメトリで配置、パーティクルポイント同士を繋げてワイヤー化していきます。
まずは、パーティクルをジオメトリに置き換えるために、SOP to CHOPでパーティクルジオメトリのポイント座標をCHOPデータ化します。
この手法はイメージデータでも使えます。サンプルファイルではランダムノイズのイメージをTOP to CHOPでCHOPデータ化して、後述するインスタンスの設定で、配置する各ジオメトリのカラー情報として割り当てています。ここで注意することは、CHOP化するカラーデータはパーティクル数分用意しておく必要がある点です。例えば、発生するパーティクルが300の場合は、横300ピクセル、縦1ピクセルで300ピクセル分のカラーデータを用意することです。(150×2でも構いませんがわかりやすさという点で300×1ピクセルかなと思いますw)
あとは、以前紹介したインスタンスの設定方法と同じく、Geometry COMP内でパーティクルに配置したいジオメトリを設定して、カラーとパーティクルのCHOPデータをマージしたものをInstance CHOPに指定して、位置情報、カラー情報として使用するチャンネル名をそれぞれ設定すれば、パーティクルでのジオメトリインスタンスが出来ます。
パーティクルをワイヤー状のジオメトリで表現するために、まず、SOP to DATでパーティクルをテーブルデータ化します。
テーブルデータはExcelのようなテキストデータです。パーティクルデータをDテーブルデータ化すると上記のような各要素のデータが出力されます。
ワイヤー状にするために必要な情報は各ポイントの座標のみなので、必要なデータだけをSelect DATで切り出します。サンプルの例では、横軸に各要素が並べられているのに対して、名前で切り出す範囲を指定しています。Select Colパラメータをby Nameに設定します。IndexのP(0) P(1) P(2)と連続で並んでいる要素がX Y Zの座標データなので、Start Col NameパラメータにP(0)を設定、End Col NameパラメータにP(1)を設定します。
次にAdd SOPを使用して、切り出したテーブルデータでポイントを生成してポイント番号順に全てのポイントを繋げてラインポリゴン化します。ポイント番号の指定はパターンマッチが使用できるので、*(アスタリスク)で全てのポイントを指定することになります。
ここまで勉強会で説明したのですが、このままだと直線でつながれたラインデータなので、Poly Patch SOPを使ってなめらかなカーブにしてみました。テーブルデータをAdd SOPでジオメトリ化したデータは通常のSOPネットワークで更に加工が出来るので、色々変形させてみるのも面白いかもしれません。
で、ここまで投稿を書き終わってから気が付きました。。。。
テーブルデータなんかにしなくても、パーティクルを直接Add SOPに接続すればええやんと。。。orz 自分の使用しているMacでは、パフォーマンスはさほど変わりませんでした。とりあえず、ジオメトリからCHOPやDATに変換して編集、さらにジオメトリにも戻せるよという例ということで;;;