第8回 音に反応するビジュアルを作る2 Instancing & Particle SOP 基礎

Friday, June 10, 2022

今回は 3D のレンダリング、インスタンシング、そしてインスタンシングを使ったオーディオのビジュアライズ の基礎を勉強をしていきます!

サンプルファイル

chimanaco/takara-univ-media-programming-2022
08が本日のディレクトリです。

レンダリング

レンダリングとは、3DCG ソフト上で形状や、マテリアル、テクスチャ、ライティングなどの計算を行い、最終的に2Dのイメージ出力を行うプロセスのことです。

TouchDesigner では以下のオペレーターを組み合わせてレンダリングしていきます。

NameSummary
Geometry COMP実際にレンダリングされるもの
Camera COMPカメラを通して映し出されるものが出力される
Light COMPライティング
MATマテリアル、質感
Render TOP出力結果

はじめてのレンダリング: /project1/Render_fundamental

Network

まず Geometry COMP を追加。 中を見てみるとデフォルトで Torus SOP が入っています。

次に Render TOP を追加。そうするとカメラが無いと Warning が出ますので、 Camera COMP を追加。 形状がそれらしいものが出てくるのですが真っ黒になっています。ここで Light COMP を追加。無事 Torus が照らされました。 これが TouchDesigner のレンダリングの基本形です。

3D 空間で各コンポーネントを確認できる Geometry Viewer を開いてみましょう。alt + [ でネットワークエディターを分割し、左端の矢印ボタンから Geometry Viewerを選択すると以下のような画面になると思います。

SOP の Active Viewer と同じように操作することができます。

このように Geometry、Camera、Light が配置されているのが分かるかと思います。これらを動かしてみて、Render TOP の出力結果がどのように変わるか試してみてください!

Network

Geometry の中の SOP の紫のボタンは render、青のボタンは display のトグルボタンになっています。表示がおかしい時はここをチェックしてみるといいかもしれません。

SOP と Geometry をつなぐ: /project1/Render_fundamental_2

SOP のアウトプットの上で右クリックして Geometry をつなぐと 内部に InSOPOutSOP を自動で作成し、入力した SOP と同じものを Geometry 内に入れることができるのでおすすめです。

マテリアルについては次回勉強していきます!

Instancing

Geometry COMP には Geometry Instance という機能があります。これはgeometry のオブジェクトをコピーし、個別に変形を加えられるというものです。

GPU を使って処理をするため、以前ご紹介した CPU を使った Copy SOP よりも大量に高速に処理をすることができます。よく使うものには TranslateRotateScaleColorなどのパラメーターがあり、1つ1つの変化はシンプルでも大量のインスタンスを扱うことで面白い効果を得ることもできます。 それではやってみましょう!

いくつかやり方があるのですが、今回は CHOP を使用してインスタンスを作る方法をご紹介します。

Instancing Position: /project1/Instancing_position

Sphere に Noise をかけた形にインスタンスを配置してみましょう。

Network

ポイントとなるのは以下です。

  • 形を作る Sphere SOP を追加する。
  • SOP を SOP to CHOP で CHOP に変換して、3D空間上の各座標を CHOP で表示する。
  • Geometry COMPInstance タブの InstancingON にする。
  • Default Instance OP に変換した CHOP を指定する。
  • Translate X/Y/Ztx ty tz を指定する。

Instancing Normal: /project1/Instancing_normal

次に normal の値を使用して各インスタンスが元の SOP の法線の方向を向くようにしてみましょう。

Network

  • SOP to CHOPNormalON にする。
  • Rotate to Vector X/Y/Znx ny nz を指定する。

One or more of the Rotate to Vectors is co-linear with the up vector, no orientation will be applied for those instances. というエラーが出るかもしれません。これは上向きのベクター、y 方向のベクターと重なる法線があるので回転が反映されません、というワーニングです。Transform SOP で x か z 方向に少し回転を加えると直ったりします。

Network

Instancing Color: /project1/Instancing_color

続いてインスタンスに色をつけてみます。

Network

  • 新しく Noise CHOP を追加し、r g b の3チャンネルとする。インプットに SOP To CHOP のアウトプットをつなぐ。
  • Math CHOP を追加し、From Range-11 に指定。
  • Merge CHOP を追加し、SOP to CHOPr g b の入った Math CHOP をインプットする。
  • Geometry COMPInstance2 タブの R/G/Br/g/b を指定する。

Instancing Scale: /project1/Instancing_scale

最後にインスタンスのサイズを変えてみます。

Network

  • 新しく Noise CHOP を追加し、チャンネル名を scale とする。インプットに SOP To CHOP のアウトプットをつなぐ。
  • Math CHOP を追加し、From Range-11 に指定。To Range0.52 に指定(値は何でもかまいません)。Merge CHOP にインプットする。
  • Geometry COMPInstance タブの Scale X/Y/Zscale を指定する。

SOP に変化を加えたり、CHOP の値をいじることによって面白い動きになると思うので色々試してみてください!

Audio Spectrum を表示する /project1/Audio_spectrum_CHOP_TOP

別の Audio data visualization の方法として、スペクトラムもよく使われます。TouchDesigner では Audio Spectrum CHOP で FFT というアルゴリズムを使って Audio のスペクトラムを生成することができます。

ここでは2D でテクスチャを作ってそれを 3D に起こすという手法を使います。

Network

以下のような手順になります。

  • Audio Spectrum CHOP でスペクトラム生成
  • Resample CHOP でサンプル数を変更
  • CHOPTo TOP でテクスチャに変換
  • Feedback を使ってテクスチャを作る

Audio Spectrum をインスタンシングでビジュアライズする /project1/Audio_spectum_Instancing

できたテクスチャを元に Instancing を使ってビジュアライズした例です。

Network

Audio Spectrum を SOP でビジュアライズする /project1/Audio_spectum_SOP

できたテクスチャを元に SOP に変形を加えてビジュアライズした例です。

Network

本日の課題: インスタンシングを使ってオーディオをビジュアライズしてみよう

今日勉強した Geometry Instancing を使って音をビジュアライズしたものを作ってください。プロジェクトフォルダごと Teams に提出してください。

参考

第9回 音に反応するビジュアルを作る3 パーティクル とマテリアルの基礎

第7回 音に反応するビジュアルを作る1 SOP と Audio data visualization 基礎