節点シェーディング

歴史的にModo、サーフェスのすべてのマテリアルシェーディングは、スタックオーダーパラダイムを使用して、シェーダーツリーだけで定義されました。リストの上位にあるレイヤーは、マスクが適用されるか、その描画モードが変更されない限り、下位のレイヤーを覆い隠します。この作業方法は非常に直感的で柔軟ですが、特定のタイプのセットアップの管理が困難になったり、特定の効果を完全に不可能にしたりしました。

ノーダルシェーディングの導入により、さまざまな駆動の影響を使用して、サンプルごとにほぼすべての表面属性を制御でき、以前のバージョンでは不可能であった効果を生み出すことができます。

ノードシェーディングの名前は、ノードのネットワーク、特定の機能の単純な視覚的表現を使用するために付けられています。これらの関数は、アイテムとそのチャネル、数学演算、または特定の方法でデータを評価するためのある種の命令さえも表すことができます。これらのさまざまなノードがリンクされて、情報のフローを定義し、その評価方法を制御するネットワークを作成します。結果のネットワークはグラフと呼ばれます。

この方法で作業すると、シェーディング指示を作成するための一種のビジュアルプログラミング方法が提供されます。各ノードはその寄与を適用し、情報を次のノードに渡します。ネットワークを介した情報の流れは左から右です。左側のリンク接続は情報の入力を提供し、評価された後、右側の接続に戻されて出力が生成されます。ネットワークがセットアップされ、サーフェスに割り当てられると、関連するグラフがレンダリング時に評価され、最終的なシェーディング結果が生成されます。

ヒント:  Schematicリギングとパーティクルに最もよく使用されるビューポートは、シェーディンググラフが定義されるコントロールインターフェイスです。ノードシェーディングはシェーダーツリーの代わりにはならないことを最初に理解することが重要です。これは、レンダリングのために実際のサーフェスにシェーディングを適用するための要件です。各グラフmust少なくとも1つのシェーダーツリー固有のアイテムが含まれています。したがって、ノードシェーディングを定義するときの基本的なワークフローは、アイテムを(適切なターゲットに配置された)シェーダーツリーに追加することです。 材料グループ)そして、そのテクスチャレイヤーがSchematicさらなるネットワーク開発のためのビューポート。

グラフ作成の基本

ノードグラフでの作業は、一度に複数のビューポートを使用できるようにすることで、より効率的になります。シェーダーツリー間を簡単に移動できます。 SchematicビューポートとChannelsデフォルト内のリストRenderワークスペースのレイアウト。下のメニューバーからアクセスできますLayout > Layouts > Render (または単にRenderタブ、タブ付きワークスペース内)。のSchematicパネルは、デフォルトでは表示されず、タブのビューポートグループのすぐ下にあります。 Previewウィンドウを選択してSchematic特定のタブ。

ネットワークグラフには、少なくとも2つのノードが必要です。ノードネットワークには少なくとも1つのシェーダーツリー固有のアイテムが必要であるため、最初のアイテムをそこに追加して新しいシェーディンググラフを開始するのが最も簡単です。シェーダーツリーに慣れていない場合は、以下をお読みください。 シェーダーツリー。これはツリーへのアイテムの追加と設定を説明しますEffects。アイテムが追加されたら(必要に応じて、階層内で適切に配置されます)、アイテムをSchematicビューポート。これは、ドラッグアンドドロップするか、シェーダーツリーで項目レイヤーを選択して、 Add SelectedにあるボタンSchematicビューポート。

その後、ノードを直接に追加できますSchematicそのを使用してビューポートAddボタン。ボタンを左クリックすると、すべての可能なノードを含むメニューが開きますが、ほとんどの場合、 Channel ModifiersShading Inputs 、およびShader Nodesノードシェーディングを使用する場合のメニューオプション。メニューの項目を選択すると、それがSchematicビューポート。結果のノードは、ノードのヘッダーを左クリックして新しい場所にドラッグし、マウスボタンを離すと再配置できます。左から右にデータの流れを確認するのが最も簡単なので、ノードをSchematicビューポートでは、最終的な宛先ノードをビューポートの最も右側に配置して、これらをこの順序で配置するのが最適です。

新しく追加されたノードには、アイテムに応じて、共通チャネルがそのまま含まれるか、チャネルがまったく含まれません。チャネルはノードグラフの実際の演算子であり、どの演算子を使用するかは目的の結果によって異なります。特定のチャネルが必要な場合は、最初にターゲットノードを選択して、ノードに追加できます。 Schematic、次に関連するチャネルを1つ以上選択しますChannelsビューポート。同じドラッグアンドドロップアクションを使用するか、 Add Selected上で概説した方法で、チャネルを追加しますSchematic、それらを関連するアイテムに添付します。

ノードグラフを作成する最後の手順は、チャネルの接続です。これは、アイテム間の実際のデータフローを表します。基本的な接続には、入力と出力の2つのタイプがあります。一部のチャネルにはどちらか一方のみがあり、その他のチャネルには両方があります。チャネルは、出力であるノードの右側から入力である別のノードの左側に接続されます。チャネル接続は、ノードの側面にある小さな円で示されます。クリックしてドラッグすると、ヌードル、つまり接続を視覚的に表すビューポートに描かれた線が作成され、ヌードルを出力から入力に(またはその逆に)ドラッグしてマウスボタンを離すと、実際の接続が定義され、チャネル間の線が固定されます。ノードが移動されても、麺は調整され、接続表現が保持されます。

ノードグラフの基本-パート1:

ノードグラフの基本-パート2:

警告:  これは、基本的なノードグラフを作成し、ノードを追加し、必要に応じてチャネルを追加し、それらのチャネル間を接続する方法です。さまざまなチャネルタイプの接続を管理するさまざまなルールもあり、複雑なグラフを作成するときに理解するのに非常に役立ちます。での作業の詳細ItemsそしてChannels Schematicビューポートでは、 スケマティクビューポート

節点シェーディングの基本

グラフを接続する方法を知ることは簡単な部分ですが、基盤となるアーキテクチャについての知識がない場合はあまり役に立ちません。最も基本的なレベルではNodal Shadingすべては、サンプルごとに値を駆動することです。それをよりよく理解するために、それを2つの部分に分けましょう:

Driving values -値は単なる数値ですが、何が駆動されていますか? シェーダーツリーの各項目にはいくつかの属性があります。これらは、 Properties選択すると、各項目のパネル。したがって、 Materialアイテム、これは次のようなものになりますDiffuse ColorまたはReflection Amountコントロール。これらの各コントロールは、実際にはアイテムのチャネルです。 channelアニメーション化できる、またはノードシェーディングの場合は制御可能な任意の属性です。

回路図のコンテキストでは、あるノードのRGBカラー出力を受け取り、それを別のノードのRGBカラー入力に接続すると、マテリアルのDiffuse Colorチャネルは、その入力値に、それが接続されているチャネルを制御または駆動させます。マテリアル設定自体で定義された色は適用されなくなりました。その値は、着信接続の値によって上書きされます。つまり、基本的に、その入力によって接続されているチャネルはすべて、入力値によって駆動されます。ドリブンチャネルは、 Channels矢印の付いた小さな歯車アイコンのビューポート。

Per sample -サンプルは何で構成されていますか? 画像をレンダリングするとき、今のところ単一のピクセルのみに注目すると、この1つのピクセルは、最終的な値に到達するために多数のサンプルから構成されます。たとえば、1回の光線追跡操作で、カメラから光線がシーンに直線状に発射されます。光線が表面に当たると、3D空間のその位置で、当たった表面がサンプリングされ、どのように見えるかがわかります。表面の色は何であるかのような質問に答えます、それは光沢があり、反射的ですか、それは影にありますか? これらの異なる可能性はすべて個別のサンプルです。ノードシェーディングを使用すると、このサブピクセルレベルでサンプルエンジンにアクセスできます。

通常、これらのサンプルはすべてシェーダーツリーで定義された設定から直接派生しますが、ノードシェーディングを使用すると、これらのサンプルからの情報を直接利用し、途中で結果を変更して、それらの結果をさまざまな属性に適用できるため、非常に興味深いものになります。完全に。サンプルはさまざまなソースからのものであり、これがシェーダー入力遊びに来ます。シェーダー入力は情報収集ノードであり、取得したさまざまなサンプルの結果を出力します。それぞれ、シーンに関する特定の情報を収集し、収集したものを使用して他のものを制御できます。

たとえば、 ノードを照らす光が表面を照らしているかどうかを評価します。 レイキャストノード光線が相互作用する表面に関する情報を収集するサンプリング光線を作成できます。のレイタイプノード計算に使用される実際のレイのタイプに基づいてシェーディング情報を分離し、シェーダー入力は、それがサーフェス、パーティクル、ボリューム、またはテクスチャなど、シェーディングされているものに関する実際の情報を提供します。

ノードシェーディングは、複雑なグラフ、光線、またはサンプルに関するものである必要はありません。単純な操作で十分な場合もあります。シェーダーツリーだけで、使用できるのはEffect各レイヤーに割り当てることができる設定。あらゆる可能な効果の順列が利用可能である場合、結果のリストを管理することは不可能です。節点シェーディングを使用すると、はるかに多くのコントロールを利用できます。たとえば、グリッドを変調するのは簡単ですLine Widthテクスチャ、または表面の入射角、または照明の量を使用します。サンプルごとに値を駆動することは、かなり単純な概念ですが、最大限の可能性を活用すると、非常に強力になります。

手続き型テクスチャの作成:

また、各レンダー出力の色と値の入力チャネルを介して、レンダー出力をノーダルに駆動することもできます。これを行う方法の詳細については、以下を参照してください。 レンダー出力を正常に駆動する