第5回 MAT と Instancing 基礎

Tuesday, May 16, 2023

今回は質感を扱う MAT とインスタンシングを勉強をしていきます!

サンプルファイル

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

MATs

MATs は TouchDesigner で3Dの Geometry に質感を与えるのに使用します。よく使われるものとして PhongMAT、ConstantMAT、WireframeMAT、LineMATをご紹介します。

PhongMAT: /project1/Phong

基本的なマテリアルである PhongMAT を使ってみましょう。Phongは拡散(diffuse)、鏡面反射性(specular)、光沢(Shininess)の3つの特徴を使って表面の質を決める方法で、光沢のあるマテリアルを表現できます。 PhongMATをネットワークに配置して、Geometry の Render タブの Material にドラッグ&ドロップして指定します。

Network

PhongMAT の代表的なパラメーターは以下の通りです。

NameSummary
Diffusediffuse reflection light。ベースとなる色
Specular光沢のある物質のハイライトの色
Shininess表面の光沢度
Emit物体の発光の強さや色

Network

PhongMAT Color Map: /project1/Phong_color

PhongMAT の Color Map に TOP を指定することで TOP のテクスチャをジオメトリに貼ることができます。

Network

PhongMAT Noise & Height Map: /project1/Phong_Height

Normal Map を使って凹凸を表現することができます。グレースケールの TOP を Nomal MapTOP につなぐことによって Normal Map が作られるので、これを Normal Map(Bump) に指定します。さらに Enable Height Map を ON にして Height Map に Color Map と同じグレースケールの TOP を指定することにした上で、Displace Vertices を ON にして Height Map とその下にあるパラメーターを使って displacement を行うことができます。

Network

Normal Map を使用して RenderTOP に warning が出る場合は、Attribute Create SOP を追加して Compute Tangents を ON にすることで解消できる可能性が高いです。

Network

Network

ConstantMAT: /project1/Constant

ライティングの影響を受けないマテリアルです。よって表面の光沢などはありません。

Network

ConstantMAT Color: /project1/Constant_color

Color Map の指定もできます。

Network

WireframeMAT: /project1/Wireframe

SOP で w キーを押したときのような、Wireframe のレンダリングができます。

Network

Instancing

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

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

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

Instancing Position: /project1/Instancing_position

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

Network

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

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

Instancing Normal: /project1/Instancing_normal

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

Network

  • SOP to CHOP で Normal を ON にする。
  • Rotate to Vector X/Y/Z に nx 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 を -1 と 1 に指定。
  • Merge CHOP を追加し、SOP to CHOP と r g b の入った Math CHOP をインプットする。
  • Geometry COMP の Instance2 タブの R/G/B に r/g/b を指定する。

Instancing Scale: /project1/Instancing_scale

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

Network

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

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

本日の課題: インスタンシングと MATを使ってみよう

今日勉強した Geometry Instancing と PhongMAT を使ってみましょう。Instancing の元となる SOP を変えてみたり、マテリアルやライティングを変えたりしてレンダリング結果がどのように変化するか試してみてください。プロジェクトフォルダごと Teams に提出してください。

参考

第6回 Particle SOP基礎

第4回 SOP とレンダリング基礎