Houdini 17.0 ノード シェーダノード

Material shader builder shader node

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

On this page

概要

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

Material Paletteペイン内のマテリアルギャラリーは、すべてMaterialシェーダをカスタマイズしたサンプルになっています。 Houdiniに既に入っているギャラリーに関しては、ドキュメントを参照してください。

いくつかのノードでは、ノードが属するコンテキストを指定する必要があります。

  • Global VOPには、指定したコンテキストタイプのグローバル変数が用意されます。

  • Output VOPには、指定したコンテキストタイプで割り当てる出力変数が用意されます。マテリアルは、Output VOPのコンテキストタイプを調べることで、ネットワークが実装しているシェーダタイプがどれなのかを知ります。

  • Parameter VOPは、実際に変数をエクスポートするなら、変数をエクスポートするコンテキストを指定します。

マテリアルの作成と編集

HoudiniのEdit Parameter Interfaceウィンドウを使えば、内部のシェーダからパラメータをマテリアル上にプロモートすることができるので、 カスタムインターフェースでマテリアルを作成することができます。そのインターフェースでは、ユーザーが基本となるパラメータをいくつか操作することができ、そして他のパラメータを非表示にすることができます。

To...Do this

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

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

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

Material Paletteペインをクリックします。ギャラリー(左側)からマテリアルのどれか1つをシーン(右側)内のシェーダのリストにドラッグします。 すると、マテリアルの設定、マテリアル内のシェーダ、そのインターフェースを編集することができます。

詳細は、Material Paletteのヘルプを参照してください。

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

マテリアルのパラメータエディタで、ギアアイコンをクリックして、 Edit Parameter Interface を選択します。 Create Parameters 下の From Nodes タブをクリックしてから、マテリアル内のシェーダからパラメータを Existing Parameters リストにドラッグすると、それらのパラメータがプロモートされます。

詳細は、Edit Parameter Interfaceウィンドウのヘルプを参照してください。

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

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

Tip

Timeは、シェーダの実行で使用するモーションブラーシャッター時間です。これは、シェーダのモーションブラーに対して0から1の値を指定します($Tと同じではありません)。 Timeは、マイクロポリゴンのレンダリングで0に初期化されます。その理由は、開始フレームですべてのシェーディングが発生するからです。 モーションブラー計算でTimeを使用するには、各ピクセルサンプル毎に1回シェーダを実行するレイトレーシングエンジンでレンダリングをする必要があります。

Examples

The following examples include this node.

Street Crowd Example Example for Crowd Solver dynamics node

2つのエージェントグループによるストリートのセットアップを説明した群衆サンプル。

このセットアップは、2つのエージェントグループを作成します。 黄色のエージェントがゾンビで、ストリートのパスに沿います。青色のエージェントがぶらついている歩行者で、ゾンビが近づくと走ります。

エージェントの状態を変更するトリガーは、crowd_sim DOPNETでセットアップします。 ゾンビのグループは、信号との距離と信号の色を使用し、信号が赤になると停止状態に変わります。 生存者のグループは、ゾンビが近づくと走行状態に変わります。

Note

アニメーションクリップは、シーンを再生する前にベイクするのに必要です。これは、サンプルをCrowdsシェルフから作成した場合に自動的に行なわれます。 そうでない場合は、シーンファイルを希望の場所に保存し、'/obj/bake_cycles' ROP NetworkのRenderをクリックして、ファイルを書き出します。 それらのファイルのデフォルトのパスは、${HIP}/agentsです。

FlipColumn Example for FLIP Solver dynamics node

このサンプルでは、流体の色がStaticオブジェクトとの衝突で混色させる方法を説明しています。

DiffuseSmoke Example for Gas Diffuse dynamics node

このサンプルでは、Gas Diffuse DOPで煙シミュレーションの密度を拡散させる方法を説明しています。

grass

このサンプルでは、RBDオブジェクトで押しつぶされる草をシミュレーションしています。 Furオブジェクトで草の葉を表現し、Wireオブジェクトで動きをシミュレーションしています。 単一のFurオブジェクトで草を表現し、その近辺の草の葉がそれに合わせて動きます。 硬さが異なるオブジェクトを追加すれば、不均一な動きを表現することができます。 "Complex Mode"を有効にすると、2つのオブジェクトを使って草が表現されます。 それぞれのカーブに設定した硬さは、Wireオブジェクトの"Angular Spring Constant"と"Linear Spring Constant"パラメータで調整することができます。

FluidGlass Example for Particle Fluid Solver dynamics node

このサンプルでは、グラスに注がれた滑らかな流体の流れを作成する方法を説明しています。

CurveForce Example for POP Curve Force dynamics node

このサンプルでは、POP Curve Forceノードを使って、パーティクルシミュレーションとFLIP流体シミュレーションの流れを制御する方法を説明しています。

Volume Rendering - メタボールのボリュームレンダリング Example for Mantra render node

メタボールジオメトリは、Mantraでそのままボリュームとしてレンダリングすることが可能です。メタボールのレンダリングを有効にするには、ジオメトリオブジェクトの Render タブの Geometry サブタブの Metaballs as Volume パラメータをチェックします。メタボール上のPointアトリビュートは、Pointアトリビュートがメタボールサーフェスに対して補間されるのと同様に、シェーディングポジションで補間されます。

以下に、ランダムなポイントカラーアトリビュートを使ったサンプルを載せています:

シャドウ品質とパフォーマンスの制御

シャドウマップの生成には、 Pixel SamplesShadow Step Size パラメータ(Mantra ROP内)を使って、サーフェスに対して使用するのとまったく同じ方法で、品質とパフォーマンスを制御します。ほとんどのボリュームは、柔らかいDiffuseシャドウを落とすので、ボリュームレンダリングの時は、低解像度のディープシャドウマップを使ってレンダリング時間を短くすることがほとんどです。シャドウマップの 解像度 は、Houdiniのライトの Shadow タブで変更することができます。

StyleDisplacement Example for Material shader node

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

LayerVariations Example for Agent Layer geometry node

このサンプルは、いろいろなジオメトリのバリエーションを持ついくつかのレイヤーを作成して、 それらのレイヤーをエージェントにランダムに割り当てる方法を説明しています。

BlendAttr Example for Attribute Composite geometry node

このサンプルでは、Attribute Composite SOPを使ってアトリビュートをブレンドする方法を説明しています。

RandomMaterial Example for Attribute String Edit geometry node

このサンプルでは、Attrib String Edit SOPを使って、文字列Primitiveアトリビュートの修正と、 プリミティブ単位でグリッドのカラーをランダム化する方法を説明しています。 サンプルでは、material_overridePrimitiveアトリビュートの文字列値にdiff_intを修正しています。

AlphaOmega Example for Points from Volume geometry node

このサンプルでは、Points From Volume SOPでFLIPシミュレーション用のターゲットゴールを作成して、指定したジオメトリを満たすようにします。

UnpackWithStyle Example for Unpack geometry node

このサンプルでは、アンパックと同時にスタイルシート情報を評価することができるUnpack SOPの機能について説明しています。 Nested Packed Primitiveでは、スタイル情報を維持しつつも部分的にアンパックできることを説明しています。 このサンプルでは、Python SOPを使って、プリミティブ単位でスタイルシートから情報を抽出する方法も説明しています。

シェーダノード