第9回: SOPのレンダリング 2
前回は Geometry COMP
や Render TOP
、MAT
を使ってSOPのレンダリングをやりました。 今回はそれに引き続いてもうすこし高度な機能を紹介していこうと思います。
インスタンシング
第6回: SOP基礎 で Copy SOP
を使ったジオメトリのコピーをやりましたが、Geometry COMP
のインスタンシング
機能を使うとジオメトリをコピーしながらの描画を高速に行うことができます。
なぜ高速にコピーができるかというと、Copy SOP
がCPU上でコピーを行うのに対して、インスタンシングは描画時にGPU上でコピーを行うからです。CPUとGPUの処理の違いは 第1回: はじめはじめるにあたって のあたりで解説しました。
映像表現をするにあたって物量をたくさん出すのは絵のインパクトを上げる手っ取り早い方法なのでインスタンシングは是非覚えて欲しい機能です。
SOPからのインスタンシング
/project1/INSTANCING1
を参照
インスタンシングの設定の仕方はどのオペレータータイプの情報を使うかによっていくつかパターンがあるのですが、まずはSOP
からインスタンスを作る方法を説明します。
Geometry COMP
のInstance
ページにあるInstancing
をON
にするInstance CHOP/DAT/SOP
に増やす元となるSOP
を指定するTranslate X/Y/Z
にそれぞれP(0)
などのアトリビュート名を指定する
という手順でSOPの頂点位置にインスタンスを増やすことができます。
CHOPからのインスタシング
/project1/INSTANCING2
を参照
次にCHOPを使ったインスタンシングです。手順は次のようになります。
Geometry COMP
のInstance
ページにあるInstancing
をON
にするInstance CHOP/DAT/SOP
に増やす元となるCHOP
を指定するTranslate X/Y/Z
にそれぞれtx
などのチャンネル名を指定する
SOP
と CHOP
の両方でインスタンシングをする手順を紹介しましたが、個人的には多少手間がかかってもCHOPを使ったインスタンシングをオススメします。理由は:
CHOP
のほうがSOP
に比べて処理が早いCHOP
のほうがノイズを使った変形などのバリエーションが出しやすい- 外部のパラメーターを使ったコントロールがしやすい
などが挙げられます。
CHOPでの変形のコントロールはある程度の慣れが必要なので、何でもいいので手っ取り早く増やしたい!という場合はとりあえずSOPを使うでもいいと思います。
向きや大きさ、色をコントロールする
/project1/INSTANCING3
を参照
インスタンシングをする際に、SOPやCHOPのデータで向きをコントロールしたくなる時があります。そういう時にはInstance 2
ページの Rotate to Vector X/Y/Z
にどの方向を向いて欲しいかのデータを渡します。通常は法線(N)のデータを渡すことが多いです。
方向のデータがある場合には Rotate to Vector X/Y/Z
が +Z方向になるようにコピーされます。なので、あらかじめ元となるジオメトリは原点から+Z方向に何かがおこるとわかりやすいように下準備しておくと面白い結果になりやすいです。
例えば↓の例では、
- 元になるジオメトリ
- +Z方向に移動させて原点につくようにオフセットする
- スケールを調整して細長い形状にする
といった手順で下準備をしています。
さらに、Scale X/Y/Z
に大きさのデータを渡すと各インスタンスの大きさもコントロールすることができ、RGB
にデータを渡すと色も指定できます。
方向を指定した時に Geometry COMP
にWarningがちらちらと表示されますが、多分あまり気にしなくても大丈夫です
やってみよう
インスタンス用のデータ、元のジオメトリのどちらをいじっても結果がかなりダイナミックに変化します。SOP
やCHOP
のオペレーターをいじって、どういう感じになるか実験してみてください!
物理ベースレンダリング
/project1/PBR
を参照
前回の授業では Phong MAT
を使ってジオメトリに質感の設定をしました。今回はPhong MAT
よりもリアルな見た目になる PBR MAT
の使い方を紹介します。
PBRは Physically Based Rendering
(物理ベースレンダリング) の略で、素材の反射を物理的に正しくなるようにモデル化した計算を行うことでよりリアルな質感を得られるようにした手法です。Phong MAT
に比べると多少設定する項目は増えますが、大幅にいい質感が得られるようになります。
Environment Light COMP
PBRのメリットを最大限に生かすためには通常の Light COMP
の他に Environment Light COMP
も同時に配置する必要があります。Environment Light COMP
は、HDRI(High Dynamic Range Image)と呼ばれる環境光の情報の入ったパノラマ画像を使ってライティングをするためのものです。
HDRIは、HDRI Haven などのサイトから色々なシチュエーションの画像が無料で入手できます。HDRI画像を変更することでライティングの印象をガラっと変えることができます
TouchDesignerではHDRI画像をTOPとして読み込み、Environment Light COMP
の Environment Map
にアサインすることで使えるようになるのですが、そのままだと光が暗すぎるので Level TOP
を使って明さを調整します。通常は Gamma 1
の値を2程度にすると適切な明るさになります。HDRIの階調を失わないために Clamp Input to [0-1]
のトグルを外しておくのに注意してください。
Environment Light COMP
の設定が終われば、あとは Phong MAT
と同じように PBR MAT
を Geometry COMP
に指定すればOKです。
PBR MAT
PBR MAT
は、Phong MAT
よりも質感の設定が簡単になっています。主なパラメーターを解説します。
- Base Color
- 素材の色を指定
- Metallic
- 金属かそうでないかを指定。1が金属、0が非金属
- Roughness
- 素材の表面の粗さを指定。1だと荒く、0だとツルツルした質感になる
上記以外のパラメーターは基本的には初期状態でいいはずです。狙った質感に寄せていきたい場合にすこしづついじる感じになると思います。
影の処理
材質の光の質感が上がっても、影の質感も同時に上げていかないといわゆる「リアルな質感」にはなりにくいです。
TouchDesignerで影を出すには、Light COMP
の Shadows
ページの Shadow Type
を変更します。
影のタイプは Hard, 2D Mapped
を選ぶのが簡単です。Soft, 2D Mapped
は影のエッジがソフトになり見た目は綺麗になるのですが、そのために複数回レンダリングをするので処理が重くなってしまう傾向にあります。。
また、影のエッジがギザギザしてしまうのを回避するためには Shadow Resolution
の数値を上げて影が書き込まれる画像の解像度を上げるとよくなります。ですが、こちらも解像度を上げすぎるとパフォーマンスに問題が出る可能性があるので、どんなに大きくても4096程度を越えないように注意してください。
また、ライトの影をおとしてもフラットな絵になってしまう場合は影が落ちるライトを複数個用意したり、Render TOP
の後に SSAO TOP
を追加して細かな陰影を足してあげるのも効果的です。
テクスチャを貼る
/project1/PBR_TEXTURE
を参照
PBR MAT
を使うとレンダリングの質感が上げられるという事を解説してきましたが、PBRの各パラメーターに対応したテクスチャを使うとさらに質感を上げられます。
HDRIと同様に、Texture Haven には石や木目など、色々な質感のテクスチャがあります。ダウンロードしたテクスチャを PBR MAT
の Diffuse(Base Color)
や Roughness
などに設定すると、テクスチャを貼っていない場合と比べてだいぶ質感の違いがあるのがわかると思います。自分のイメージにあったテクスチャがあれば、ダウンロードして色々試してみてください。