マテリアルマテリアルの構築Houdiniでマテリアルを作成、結合、修正する方法の基本。(オブジェクトのレンダリングのルックを制御するサーフェスシェーダとディスプレイスメントシェーダの組み合わせ)を構築します。VOPを繋げてシェーダプログラムを構築する手法を基本としています。1VEXを使用すればテキストコードでシェーダを記述することができますが、VOPを使ってシェーダを構築する方が簡単で楽しいです。Houdiniには、シェーダ構築に利用できる便利なシェーディングVOPがたくさんあります。Shaderには、あなたが求めているルックの99%を再現するのに必要なすべてが含まれています。ハイレベルノードの基本機能をパッケージ化したVOPも存在します。Shaderの基本機能が含まれており、(事前に組み込まれたテクスチャUIなどの)"便利"機能が排除されています。これらを使用して、万能シェーダの機能に独自のUIを追加したり、万能シェーダをレイヤーマテリアルのレイヤーとして使用することができます。労力をかけずにカスタムシェーダを構築できるように、もっと多くの基本BSDFを生成するノードが存在します。VOPネットワークには、あなたのプログラミング言語の能力を全て活かせるほどの多くのローレベルVOPが含まれています。数学的な処理やノイズの生成など、あなたがシェーダネットワークでやりたい事ができます。これらのVOPは、プログラム的にハイレベルシェーダの入力を生成するのに役立つことが多いです。Houdiniにおけるマテリアルの動作に関する詳細は、以下のシェーダ出力を理解するを参照してください。Features独自のマテリアルを構築する前に独自のマテリアルを構築するのは面白くて、Mantraでのシェーディングの動作を理解するのに役立ち、一風変わったエフェクトや幻想的なエフェクトを要する時に必要になることがあります。Shaderによって、あなたが求めるリアルなルックを再現することができます。独自のシェーダを構築する必要があると判断する前に、そのシェーダのたくさんある機能とコントロールを調べてみると良いでしょう。Paletteをチェックしてください。VOPネットワークHoudiniには、マテリアルを作成/扱うためのデフォルトネットワーク/matがあります。選択することで、このネットワークに行くことができます。Networkサブネットを手動で作成することもできます。このサブネットによって、デジタルアセット内にマテリアルをパッケージ化することができます。キャラクタアセットで、そのアセットのネットワーク内にキャラクタのマテリアルを含めることができます。/matレベルでの2つの"適当に組んだ"シェーダツリーMaterialネットワーク内では、シェーディングVOPを配置して、それらを接続することで、ゼロからシェーダネットワークを構築することができます。Materialネットワークでは、複数のシェーダツリーとハイレベルシェーダノードを混在させることができます。Galleryやマテリアル選択で表示させることができます。View内のオブジェクト上にVOPをドラッグすることで、たいていのVOPがそのオブジェクトにマテリアルとして割り当てることができます。これは、/matレベルで物事を試したり、デバッグ時に中間ステージでのシェーダネットワークの出力を確認するのに非常に便利です。Builder以外のVOPを割り当てる時、シーンの背後でHoudiniはそのノードとその上流のノードから一時的なシェーダを構築し、シェーディングで使用するべき出力がどれなのかを賢く推測しようとします。そのノードにLayer出力があれば、Houdiniはその出力を使用します。浮動小数点の出力しか持たないローレベルVOPだった場合、Houdiniは、そのノードをグレースケールのカラーとして扱います。NoteMaterialネットワーク(例えばmat)内からでしかVOPを割り当てることができません。Builderを含む)からVOPを割り当てることはできません。Builderノードに"折り畳まれた"シェーダツリー/matレベルでシェーダツリーを構築するのは、プロトタイプや試行錯誤には良いです。Builderノード内にMaterialネットワークを配置する方が良い考えです。Builderノードに格納することができます。Builderノードから始めて、その中に入って、そのネットワークを構築することができます。Builderノード上に独自のインターフェースを作成することができます。Builderノードをデジタルアセットに変換することができます。/matを綺麗な状態に保つことができます。Packノードを使用します。Parameterノードを追加します。Parameterノードで、その出力を表現するために名前とラベル(例えば、layer)を設定します。"Struct"に設定してから、サブタイプを"ShaderLayer"に設定します。Connected"に設定します。Packノードの出力をParameterノードの入力に接続します。Builderノードにlayer出力が追加されました。基本的にカスタムシェーダは、VOPノードを使用して基本マテリアルなどのマテリアルの特性を計算させることが多いです。Coreなどのハイレベルノード(またはBSDFを生成する他のノード)に接続して、粗さや反射率などのコントロールといった物理特性を自動的に取得してBSDFを生成することができます。一般的には、マテリアルのサーフェスカラーはBSDF(F)出力の形式で生成するべきです。いえ、レンダリングエンジンが変われば、マテリアルネットワークの出力も変更する必要があります:PBR(物理ベースレンダリング)では、BSDF(F)出力が必要です。従来のレイトレースでは、シェーダ内のライティング寄与を計算したその最終サーフェスカラー(Cf)出力が必要です。VOPを接続することで、どちらのレンダリングエンジンでも動作するシェーダを簡単に作成することができます。LightingのCfの両方を出力ノードに接続します:Note各レンダリングエンジンは、それに必要なシェーディング出力だけを"クック"します。Lightingノードはクックされません。Builderネットワークは、セットアップが簡単であり、デジタルアセットのバージョン管理といった余計な作業をすることがなくて柔軟性があります。いえ、そのままでマテリアルネットワークを使用した場合、バリエーションを作成するためにそのネットワークをコピーしていくと、コンパイル時間が増えて、もっと多くのメモリを必要とします。Builderネットワークをデジタルアセットに変換した場合、新しいマテリアルのインスタンスを作成することができ、各インスタンスのパラメータを編集してバリエーションを作成することができます。Materialネットワークのコピーではそのまま複製されるのに対し、デジタルアセットのコピーは複製ではなくインスタンスになります。アーティスト/スタジオ間でマテリアルアセットを共有することができ、Houdiniのアセット管理機能を小することでバージョンをメンテナンスすることができます。