Houdini 17.5 ノード シェーダノード

Material shader node

サーフェスシェーダ、ディスプレイスメントシェーダ、プロパティシェーダなどの複数のサブシェーダを含むことができるより高レベルなシェーダ。

On this page

概要

Materialノードは他のシェーダタイプ用のコンテナで、低レベルのシェーダ(サーフェスシェーダやディスプレイスメントシェーダ)と個別の設定を組み合わせて、 単一ユニットとして割り当てることができる新しい"ルック"へと"パッケージ化"することができます。

Material Paletteペイン内にあるマテリアルのギャラリーは、全てMaterialシェーダのカスタマイズした事例です。

Houdiniに同梱しているギャラリーマテリアルのドキュメントを参照してください。

マテリアルの作成と編集

HoudiniのEdit Parameter Interfaceウィンドウにより、パラメータを含んだシェーダからマテリアルへそのパラメータを プロモートすることで、ユーザーには基本的なパラメータを操作可能にし、他のパラメータを隠した独自のインターフェースを持つマテリアルを作成することができます。

To...Do this

ゼロから新しいマテリアルを作成する

ネットワークエディタ内で、/shopレベルに移動し、Materialノードを作成したら、ノードをダブルクリックして内部に入ります。 マテリアル内部にシェーダノードを作成・編集し、それらを特別な"suboutput"ノードに接続します。

ギャラリーの既存マテリアルをカスタマイズする

Material Paletteペインをクリックしてください。ギャラリー(左側)からシーン内のシェーダのリスト(右側)へ、マテリアルを1つドラッグします。 すると、マテリアルの設定、内部のシェーダ、またはインターフェースの編集ができるようになります。

詳細は、Material Paletteのドキュメントを参照してください。

内部のシェーダからパラメータをMaterialノード上にプロモートする

マテリアルのパラメータエディタ内で Gearアイコンをクリックし、 Edit Parameter Interface を選択します。 Create Parameters 下にある From Nodes タブをクリックし、パラメータをマテリアル内部のシェーダから Existing Parameters リストへドラッグし、レベル上げをしてください。

詳細は、 Edit Parameter Interfaceウィンドウのドキュメントを参照してください。

オブジェクト毎またはプリミティブ毎にマテリアルの設定を上書きする

レンダリングプロパティを参照してください。

Examples

Down Hill Lava Flow Example for Material shader node

このファイルでは、傾斜が低い箇所にCrust(地殻)が集まって硬化する溶岩の流れを作成しています。このアニメーションは、シェーダで作成していて、ジオメトリそのものはアニメーションしていません。

Note

Lava(溶岩)マテリアルのパラメータのほとんどを、サーフェスノードで作成したPointアトリビュートで上書きしています。

FirePit Example for Material shader node

Note

このファイルでは、ジオメトリはアニメーションしていません。 テクスチャをアニメーションさせることで、すべてのアニメーションを表現しています。

炎は、UVテクスチャを簡単に適用できるようにグリッドで作成し、Magnet SOPを使ってメタボール周辺を歪ませています。 炎には、黄色または青のFlameテクスチャのどれかを割り当てています。 Flamesのopacity mask wrapをDecalに設定することで、テクスチャがFlameジオメトリの上部で単一ピクセルリングを繰り返して表示するのを回避しています。 また、flameOpacMap.jpgというマスクファイルを使って、上部にFlameの形状を調整しています。 noise offsetを$TでY軸を強くアニメーションさせることで、Flameが上昇しているように見せています。これは、Noise jitterもY軸に対して大きくなります。

炭は、変形させたグリッドにCopy Stampを適用した球で表現しています。 Attribute CreateSOPを使えば、SOPレベルでLava(溶岩)のテクスチャのパラメータを上書きしてCopy Stampすれば、$BBYなどのローカル変数を使ってテクスチャをアニメーションさせることができます。 そうすれば、テクスチャのCrust(地殻)とその値だけを使って、炭の上部の形状を修正することができます。 これは、炭の下部で使用するテクスチャのLava(溶岩)のアスペクト比を保持します。熱を発する炭の下部の残り火を表現するために、Lava(溶岩)の強度(Kdアトリビュート)をスタンプしてアニメーションしています。

StyleDisplacement Example for Material shader node

このサンプルファイルでは、2つの四角形で構成されたオブジェクトに対して、片方の四角形にはバンプマップを、もう片方の四角形にはTrue Displacementが適用されています。 そのオブジェクトが複製されており、2番目のコピーでは、スタイルシートを使用して、それらの2つの四角形に対してマテリアルの割り当てを逆にしています。

The following examples include this node.

RiverBed Example for Fluid Object dynamics node

単純な河床に流体ソースと流体シンクをセットアップすることで、液体が川のように急流します。

rbdsmokesource Example for Smoke Object dynamics node

ぼんやりとした四面体がボックス内を跳ね回って、その煙の連続的な放出で臨場感を出しています。

StickyDonut Example for Sticky object node

このサンプルでは、グリッドサーフェス上を滑るStickyオブジェクトにドーナッツが引っ付いています。

MotionVector Example for Mantra render node

このサンプルでは、後でVelocityのコンポジットをするために、モーションベクトルレイヤーを生成する方法を説明しています。 サンプルを読み込んで、5フレーム分をレンダリングしてください。画像ビューアでは、C(カラー)からmotion_vectorに切り替えると、その結果を見ることができます。

Volume Rendering - ファイル参照の煙 Example for Mantra render node

ボリュームレンダリングは、高品質な煙、雲、飛沫、炎などのボリュームエフェクトを統合したレンダリングを可能にするレンダリング手法です。

ボリュームレンダリングは、多くのタイプのボリュームエフェクトのレンダリングに適しています。Mantraボリュームによるレンダリングが特に適したシーンは以下のとおりです:

  • 詳細な"hero"(メインとなる)の雲、煙、炎

  • インスタンス化した雲、煙、炎のフィールド(視界)

ボリュームレンダリングがまったく適さないシーンは以下のとおりです:

  • 単一の均一なフォグを持つシーン

この特化したサンプルでは、bgeoファイル(1フレームのみ)を煙の流体シミュレーションからエクスポートして、それをFile SOPを使って参照しています。VEX Volume Cloudを使ったマテリアルを、Volume Objectのトップレベルで、このボリュームデータに割り当てています。シェーディングモードでこのシーンを見るには、環境変数の HOUDINI_OGL_ENABLE_SHADERS を1に設定します。

品質/パフォーマンスの制御

ボリュームレンダリングは、Ray Marchingを使って、ボリューム内に入り込みます。Ray Marchingは、画像内の各ピクセルに対して均一に光線に沿って入り込むことで、ボリューム内にシェーディングポイントを生成します。ボリュームのRay Marchingの品質と速度を変更する方法が2つあります:

  1. Mantra ROPの Properties タブの Sampling サブタブの Pixel Samples パラメータ。 Pixel Samples を増やせば、ピクセル内にRay Marchingを増やすことができるので、品質が良くなります。さらに、ボリュームに対してアンチエイリアスとモーションブラーの品質が良くなります。

  2. Mantra ROPの Properties タブの Sampling サブタブの Volume Step Rate パラメータ。 Volume Step Rate を上げれば、ボリューム内部のサンプルが増えるので、品質が良くなりますが、パフォーマンスが悪くなります。別々のシャドウ品質をシャドウに使うことができます。

変更すべきパラメータは、ピクセルのアンチエイリアスで必要な品質に依存します。 Pixel Samples を増やすよりも、 Volume Step Rate を小さくする方が良いです。なぜなら、 Volume Step Rate が小さいほど正確なレンダリングができるからです。

以下のレンダリングでは、 Pixel Samples を2×2、 Volume Step Rate を1にしています。シャドウの細部に注目してください。

以下のレンダリングでは、 Pixel Samples を4×4、 Volume Step Rate を0.25にしています。シャドウの細部が消えて、ボリュームが少し透明になっています。品質レベルは、ほぼ同じです。

RampReference

このサンプルでは、アニメーションするランプと参照ランプの使い方を説明しています。

Down Hill Lava Flow Example for Material shader node

このファイルでは、傾斜が低い箇所にCrust(地殻)が集まって硬化する溶岩の流れを作成しています。このアニメーションは、シェーダで作成していて、ジオメトリそのものはアニメーションしていません。

Note

Lava(溶岩)マテリアルのパラメータのほとんどを、サーフェスノードで作成したPointアトリビュートで上書きしています。

FirePit Example for Material shader node

Note

このファイルでは、ジオメトリはアニメーションしていません。 テクスチャをアニメーションさせることで、すべてのアニメーションを表現しています。

炎は、UVテクスチャを簡単に適用できるようにグリッドで作成し、Magnet SOPを使ってメタボール周辺を歪ませています。 炎には、黄色または青のFlameテクスチャのどれかを割り当てています。 Flamesのopacity mask wrapをDecalに設定することで、テクスチャがFlameジオメトリの上部で単一ピクセルリングを繰り返して表示するのを回避しています。 また、flameOpacMap.jpgというマスクファイルを使って、上部にFlameの形状を調整しています。 noise offsetを$TでY軸を強くアニメーションさせることで、Flameが上昇しているように見せています。これは、Noise jitterもY軸に対して大きくなります。

炭は、変形させたグリッドにCopy Stampを適用した球で表現しています。 Attribute CreateSOPを使えば、SOPレベルでLava(溶岩)のテクスチャのパラメータを上書きしてCopy Stampすれば、$BBYなどのローカル変数を使ってテクスチャをアニメーションさせることができます。 そうすれば、テクスチャのCrust(地殻)とその値だけを使って、炭の上部の形状を修正することができます。 これは、炭の下部で使用するテクスチャのLava(溶岩)のアスペクト比を保持します。熱を発する炭の下部の残り火を表現するために、Lava(溶岩)の強度(Kdアトリビュート)をスタンプしてアニメーションしています。

VolumeNoiseIso Example for Mantra: VEX Volume Procedural shader node

このサンプルでは、Mantraのボリュームレンダリング機能を使って、CVEXシェーダで定義したアイソサーフェスをレンダリングする方法を説明しています。 noiseフィールドをCVEXシェーダで生成し、それをVEX Volume Proceduralに接続しています。 密度が0のサーフェスを見つけて、法線を表示するSimple Surfaceシェーダを使ってシェーディングすることで、ボリュームをシェーディングします。

FluffyTorus Example for Bake Volume geometry node

このサンプルでは、Bake Volume SOPをセットアップしてFogボリュームのシャドウによるライトフィールドを計算する方法を説明しています。 これによってMantraのConstantボリュームシェーダで適切にレンダリングするためのフィールドが出力されます。

FurBallWorkflow Example for Fur geometry node

このサンプルでは、Fur SOPとMantra Fur Procedural SHOPをアニメーションするスキンジオメトリに適用する方法を説明しています。 CVEXシェーダを使って、ジオメトリに割り当てられたアトリビュートに応じて髪の毛の見た目を定義しています。

FurPipelineExample Example for Fur geometry node

このサンプルでは、カスタムシェーダを使ってFur SOPで生成したファーの外観を定義する方法を説明しています。

FurTextureMap Example for Fur geometry node

このサンプルでは、テクスチャマップを使ってファーに色を付ける方法を説明しています。

RaytraceVopShader Example for Ray Trace VOP node

このサンプルでは、VOP VEXネットワークを使って、単純なレイトレースシェーダについて説明しています。 シェーダプロパティを修正するには、マテリアル内にPropertiesシェーダを作成して、Outputシェーダノードに接続します。 そして、レンダリングパラメータをPropertiesノードに追加します。 例えば、反射の数を制御するには、reflect limitパラメータを追加します。

シェーダノード