ネットワークビュー

概論

Terragenが基づいているノードベースのユーザーインターフェイス(UI)については今日、特にグラフィックスソフトウェアで広く使用されています。これは、非常に強力で柔軟性があり、ほとんどの場合において複雑な機能や操作を直感的に作業する事が出来るからです。

ネットワークベースでの取り組み方は、シーン情報のレイアウトに関する非常に有益な概観を提示してくれるのに役立ちます。ネットワークを介してデータがどのように"流れている"かを認識している限り、常に特定のシーンがどのように構成されているかを大まかに知る事が出来ます。この要素だけで、ネットワークUIの使用に関する非常に良い筋道が得られます。この概観からシーンの特性をコントロールする事も出来るので、情報提示と直接的なシーンコントロールの驚くほど強力な組み合わせを得る事が出来ます。ユーザーインターフェイスは基本的にシーンの特性によって確定され、情報とコントロールは1つの統一された方法で表示されます。これにより、途方もない複雑なシーンの作成を大幅にスピードアップする可能性を備えています。

最も簡単な形式のノードネットワークは、ほんのわずかの主要な要素で構成されています:
  • ワークスペース: ここは、すべてのメインとなる作業を行うエリアです。ノード(「デバイス」または「オブジェクト」とも呼ばれます)はここに配置され、他のノードと接続して、それら接続されたノードの出力結果としてシーンを作成します。
  • 1つ以上のノード: ノードとは、特定の機能を実行する1単位のオブジェクト(デバイス)です。これはワークスペースに配置され、シーン作成における役割を果たすために他のノードに接続されます。ノードの用途に応じて、1つ以上の入力と出力端子があります。ほとんどのノードには、作成するデータや通過するデータへの作用をコントロールするために調整する設定を備えています。ノードの接続は、ノードの「ネットワーク」を形成します。
  • 1つ以上のノード接続: ノード接続(「ワイヤ」または「コネクタ」とも呼ばれます)は、データを1つのノードから次のノードにネットワーク経由で流す事が出来ます。「接続」とは、あるノードから次のノードへの何らかの形式のデータの文字通りの伝送を意味します。各ノードは、何らかの方法でデータを操作するための動作または機能を実行してから、それを次のノードに渡します。これらの作動の積み重なりが最終的にシーンを作り出します。

ノードリストとノードネットワーク

TG内のノードは、ノードリストとノードネットワークの両方に表示されます。デフォルトでは、どちらもすべてのレイアウトに表示されます。ノードリストはメイン画面の左上にあり、ノードネットワークは右下にあります。通常、変更は両方のビューに反映されますが、ノード間の関係はそれぞれに異なって反映されます。
ノードリスト表示 ノードネットワーク表示
ノードネットワークでは、すべてのノードが機能の種類に応じて異なる色のボックスとして表示されます。
入力と出力端子は、それぞれノードの上部と下部からの三角形の突起として表示されます。入力はノード上部のポートから入り、下部のポートを通って流れます。接続は単純な淡色の線で表されます。

ノードネットワークビューは、ほとんどすべてのノードが同じ階層で同時に表示されるという点においては、大体「平坦」です。ノードリストとは異なり、これには、他ユーザーによって「所有」または作成されたノード、グループ内のノード、ネットワーク上の別マシン内の別のノードの上にあるノードが含まれます。これに対する例外は、オブジェクトノードとポピュレーションノードです。オブジェクトノードは、親ノード内に「含有する」他のノードをカプセル化する事がよくあります。 オブジェクトノードを右クリックで"Internal Network"を選択する、またはノードアイコン右の"+"をクリックして内部ネットワークに移動(1階層下)すると、その中にあるノードをすべて表示できます。これにより、その特定のオブジェクトノード内のノードのみを表示するビューが表示されます。ワークスペースの何もない部分を右クリックして、"Up One Level"を選択すると、前のネットワークビュー(1階層上)に戻ります。 あるいは、"Internal Network"の中にいる時はいつでも、左側のブックマークリストの一番上に表示される[Up Level]ボタンを使用する事が出来ます。
ノードリストは、特定のレイアウトでノードの簡略化を表示するように設計されています。表示は単純な"実行順序リスト"で、レイアウト内のノードの「実行順序」を大まかに示しています。一般に、別のノードの上にあるノードは、下に続くノードのソースとして機能します。下図は、ノードリストの実行順に沿って、地形が順次変化していきます。ノード順を変える事で、効果の前後が異なった変化をもたらします。

ほとんどの場合、表示されるノードも特定のタイプのノードに制限されています。例えば、オブジェクトレイアウトでは、オブジェクトに割り当てられているテクスチャはオブジェクトノードではないため表示されません。ネットワーク接続はノードリストに直接は表示されませんが、通常はリスト階層で表されます。異なる階層情報を伝える2つのプライマリノードリストビューがあります。各ビューは特定のレイアウトに固有のものです。

【Objects】、【Atmosphere】、【Lighting】、【Camera】、【Renderer」のノードリストは、ネットワークの分岐を表示しませんが、"internal(内部)"ノードを表示するビューを使用します。このビューはリスト内のノードをインデント(字下げ)せずに、代わりにネットワーク内のノードの"深さ"を表すために"/(スラッシュ)"を使用します。最上位レベルでは、すべてのノードの前に単一の"/"が付きます(例: "/ Atmosphere 01")。各サブレベルは、Windowsの通常のディレクトリビューやサブディレクトリビューとよく似た、末尾に追加の"/"を付けて表します。例えば、"/ Pop Obj reader 01 / Obj reader 01"は、『Pop Obj reader 01』ノード内に、『Obj reader 01』ノードが存在する事を表します(現在TG4.3では、【Objects】も階層ビューになっています)。

【Terrain】、【Shader】、【Node Network】レイアウトは、すべてインデントされた折りたたみ可能な階層ビューを使用します。これは、分岐やネットワークの複雑さが増しそうなレイアウト内のノード間の関係をより直接的に示しています。基本ビューは、破線で接続されたノードを示しています。デフォルトでは、ネットワークの最上位レベルだけが表示されます。ネットワーク分岐がその入力の1つに接続されているノード、または内部のノード(オブジェクトノードなど)には、ノード名の左側に"+"記号が付き、これをクリックするとネットワークの下位レベルのビューを展開する事が出来ます。ネットワーク分岐内または別のノード内部のいずれかで、ネットワークのさまざまなレベルの"深さ"を表すためにインデントされます。すべてのノードは、ネットワークの階層をたどる破線で結ばれています。これもWindowsエクスプローラのインターフェースと非常によく似ています。

ネットワークフロー

通常は、ネットワーク内のデータは上から下へ"流れ"ます。これはノードで処理されたデータが出力ポートを通り、次のノードの入力ポートから取り込まれまれ、そして再び出力ポートを通ります。データは、そのデータを解読する最終ノードの各入力に対して単一の基本経路に辿る傾向があります。これのほとんどの場合が『Planet』ノードです。『Planet』ノードには、2つの主要な入力ポート、"Surface shader"と"Atmosphere shader"があります。惑星を構成するエレメントを直接描き出す他のすべてのノードは、これら2つの入力ポートに接続されます。

『Planet』ノードに接続しないノードと、通常は他のノードとまったく接続しないノードがあります。これらのノードは、カメラや照明など、最終シーンの特定の外見やエレメントを生成します。『Camera』ノードは通常どんな入力データも受け取りません。それらの唯一の出力は『Render』ノードに接続して最終的なレンダリング画像を生成します。『Light』ノードも同様に他のノードに接続する必要はありませんが、ネットワーク内のほぼすべてのノードの最終的な外観に間接的に影響します。これは、例えばサーフェスのテクスチャや形状を作成するためにノードを連結させる時に使用する直接的なデータ相互作用と、FOV(視野角)、露出、他仮想カメラを通して見られるようにシーン内の他のノードを解釈する等々の設定に作用する『Camera』ノードなどの間接的なレンダリング時の相互作用の違いを明確に示しています。

ほとんどのノードは単純にデータを生成または操作して次のノードにデータを渡しますが、ネットワーク内の特定のノードには特別なステータスを持っています。これらのノードは、カメラや照明など、最終的にレンダリングされるシーンの重要なエレメントに直接作用します。『Camera』、『Background』、『Lighting』ノードのように、入力がまったくない場合もあります。ほとんどのノードは、データを生成するものであっても、ある種類の入力、例えばマスクシェーダを持っています。これらの特定のノードの場合は、自身ですべてのデータを生成するため入力ポートがありません。

ほとんどのデータは、ネットワーク内のノードの"Main input"と"Output"を通過しますが、ノードによっては付加的入力ポートが多数あります。付加的入力や代替入力に接続するノードは、基本的にネットワークの「分岐」を構成します。これは、サーフェスレイヤー(『Surface layer』)と子レイヤー(『Fractal breakup』)が最も一般的です。分岐は、それ自体がデータの基本経路("Main input"等)に接続されているノードの非主要入力(付加的入力、例えば『Surface layer』の"Breakup shader")に接続されている1つまたは複数のノードで構成されています。

ノードネットワークの操縦

ノードネットワークの基本的な操舵は、カメラの操舵方法に似ています。Altキーを押しながらマウスの左ボタンまたは右ボタンをクリックし、ワークスペースをドラッグしながら上下左右に動かします。これは、ビュー全体に物理的なワークスペースをドラッグするようなものです。下にドラッグするとネットワークが下に移動し、上にドラッグすると上に移動します。Altキーを押しながらマウスの中央ボタン(または左右両方、またはマウスホイール)を使用すると、ズームをコントロールする事が出来ます。下がズームイン、上がズームアウトです。

ノードリスト内のノード名をクリックすると、ノードネットワークビューは自動的に選択したノードがビューの中心に移動して表示されます。別のレイアウトに切り替えた後も、選択したノードは各レイアウトで選択されたままになりますが、選択されたノードの青いハイライトは常に表示されるわけではありません。例えばデフォルトのTGを起動した後、【Terrain】レイアウトのノードリストで『Fractal warp shader 01』をクリックすると、ノード名は青色のハイライトとなり、ノードネットワークビューの中心にノードが表示されます。そこで、一旦【Camera】レイアウトに移るとノードネットワークビューの中心には『Render Camera』ノードが表示され、再び【Terrain】レイアウトに移ると、先ほど選択した『Fractal warp shader 01』ノードがノードネットワークビューの中心に表示されます。

ノードは特別なグループノードを使ってグループ化する事も出来ます。『Group』ノードには、非常に少ないプロパティしか備えていません。詳しくはGroupを参照して下さい。『Group』ノードは単純に単一のノード、または複数のノードをグループ化するために使用します。ノードがグループにまとめられても、ネットワーク上で機能的な変更はありません。それは単に組織化と操舵の補助のためのものです。

『Group』ノードを作成するには、ネットワークビューの何もない場所を右クリックし、ポップアップメニューで"Create Other"を選択してから[Group]を選択します。新しい『Group』ノードは、デフォルトの名前、サイズ、色で作成されます。
『Group』ノードのタイトルバーをダブルクリックすると、色や名前などの設定パネルを表示する事が出来ます。通常のウィンドウと同じように、グループ枠の端や角をドラッグしてグループ枠のサイズを変更する事が出来ます。ノードをグループに追加するには、ノードアイコンを任意のグループの枠内にドラッグしてからグループのタイトルバーを右クリックし、"Group: Capture Nodes"を選択します。
"Group:Release Nodes"は反対に、グループ枠に有るノードをグループから解放します。グループは通常のノードと同じように有効または無効にできます。これらの一連の作業は、グループ単位でノードのレイアウトを変更(移動)する時に便利です。また、グループを使用して選択的に有効または無効にする事で、異なるネットワークの分岐の影響を独立してテストする方法として適しているかもしれません。

ネットワークビューの左側には、グローバルブックマークのリストがあります。これらのブックマークはそれぞれノードグループに関連付けられています。デフォルトでは、主要なシーンのエレメントごとにグループが作成されます。これは、レイアウトタイプ(Objects、Terrain、Shadersなど)にも対応しています。これらのブックマークをクリックすると、ネットワーク表示の中心位置が対応するグループに移動します。新しく作成したグループも、あなた自身のカスタムブックマークを追加する事が出来ます。これらのブックマークは、ノードネットワークの作業に慣れてきて、洗練されたシーン開発のためにノードネットワークによる作業を重視する時に特に役立ちます。


ノードアイコンの色分け

赤はShaderノードで、一般にカラーやディスプレースメントを出力し、組み合わせたり減算などが出来ます。
紺は関数ノードで、名前/カテゴリに固有のデータを出力します。例えば『Constant Scalar』はスカラーデータを出力します。
青は大気ノードで、他のノードと同じ種類のデータを出力せず、『Planet』ノードの"Atmosphere shader"の入力端子に差し込んだ時にのみ機能します。
緑はハイトフィールドノードで、Heightfieldノードに入力した場合にのみ動作します。