Render layer

Node Type: Render

ノード説明と目的:

Terragen Professional版では、レンダーレイヤーとレンダーエレメントを出力する事が出来ます。

レンダーレイヤーはいろいろな意味で役立ちますが、通常では以下の事が出来ます:
  • シーンを個別のパーツに分割して後で一緒に合成します。これらのパーツには、オブジェクトの異なる配置が含まれている場合や、カメラからの距離に応じてシーンをスライスするクリッピング距離(カメラからの距離の数値を格納する)に基づいている場合があります。
  • 別々のライティングパス(異なる照明のセットを使用可能にしたり、影付き/影無しのそれぞれ)をレンダリングします。
  • メインレンダーからのオブジェクト、照明、シェーディング、ライティングの異なる組み合わせを駆使して、他の特設したパスをレンダリングします。
  • レンダーエレメント(レンダリング要素)を出力します。これらは、レンダーレイヤーを使用する事で可能となります。
これらの事例のいくつかのために、「別のプロジェクトファイルを作成するだけでなく、レンダリング準備の出来たオブジェクトや照明を有効/無効に切り替えるのは何故?」と疑問に思うでしょう。プロジェクトに取り込んでいる時、あなたや作品の依頼者が結果に満足するまで何度もレンダリングし、作業が進む度にシーンが変更します。シーンに複数のレイヤーがある場合、各レイヤーごとに異なるプロジェクトファイルを維持するのは非常に困難であり、人為的エラーを引き起こしやすく面倒です。レンダーレイヤーは、1つののプロジェクトファイルで作業が出来るように、工程を簡素化する事を目的としています。頻繁に異なるレンダーレイヤーに分割する必要がある多くのものをコントロールするツールとして『Render layer』ノードを用意しました。簡単な例として、異なるオブジェクトを別々のレイヤーにレンダリングする事です。これは"オブジェクトグループ"によって行われます。レンダーレイヤーを設定し、各レイヤーにレンダリングするオブジェクトを区別し、すべてのオブジェクトを有効にしたまま1つのプロジェクトファイルで作業を続け、いつでもレンダーレイヤー間で切り替える事が出来ます。

レンダーレイヤーには次の機能があります:
  • オブジェクトグループ。オブジェクトの可視性、投影、他光線効果の可視性を制限します。
  • ライトグループ。どの照明を有効にするかを制限します。
  • クリッピング距離。詳しくは後述します。
  • 大気/雲のバックグラウンド(アルファ値0のサーフェスを含む)上へのレンダリングをオン・オフを制限します。詳しくは後述します。
  • シェーディングとライティングのフラグ。これらにはサーフェス表示のオン、大気表示のオン、陰影のオンと3つのパラメータがあり、詳しくは後述します。
  • GI設定を優先します。詳しくは後述します。
  • レンダーエレメントを有効にします。これらは、画像の後処理または合成に役立てるためにレンダラーによって生成される付加的画像です。レンダーエレメントについては、このドキュメントの後半で説明します。

レンダーレイヤーの作成

レンダーレイヤーは、任意の『Render』ノードの"Render layer"ノードフィールドの隣にある「+」ボタンをクリックし、"Create new Render layer"を選択して作成する事が出来ます。『Render Layer』を作成したら、もう一度「+」ボタンをクリックし、"Go to "Render Layer 01"を選択してパラメータービューを開きます。また、ネットワークビューから直接作成する事も出来ます。『Render Layer』ノードは黄色(オレンジ色)で描かれます。『Render Layer』ノードの出力端子から任意の『Render』ノードの"Render Layer"の入力端子にドラッグで接続する事で関連付けます。


Objectタブ

Object group オブジェクトグループ レンダリング時に特定のオブジェクトだけを制限したり、除外したり、またはシーンとの相互作用を変更したりする事が出来ます。最大5つのオブジェクトグループを選択する事が出来ます。オブジェクトグループを作成するには、ネットワークビューを使用して1つまたは複数のオブジェクト(『Planet』、『Obj reader』、他)を選択してグループ化します。グループのタイトルバーをダブルクリックして、分かりやすい名前を付けて下さい。作ったグループを5つのスロットの1つに割り当てます。
オブジェクトグループが1つも選択されず存在しない場合、すべてのオブジェクトはレンダーレイヤーの影響を受けずに処理されます。
いずれかのオブジェクトグループが選択されて存在する場合、"All other objects"のレンダリング方法をコントロールするオプションが有効になります。選択したグループのいずれにも属していないものは、上記のオプションと同様の組み合わせの規定によってレンダリングされます。
Render レンダー処理 割り当てられた各グループのレンダー処理として、"Invisible"、"Holdout"、"Visible"を設定します。"Holdout"は、アルファ値が0の黒い図形として画像に表示され、複数のレイヤを同時に合成する配置として必要な場合があります。"Holdout"は3D空間でレンダリングされ、"Holdout"モードのオブジェクトの前面にあるオブジェクト、雲、大気が引き続き表示されます。大気と雲は、"Holdout"モードのオブジェクトグループのメンバーである『Planet』に置かれる事によって、容積測定の"提供物"としてレンダリングする事が出来ます。
一部のオブジェクトには、レンダーレイヤーとは別の可視性を変更する独自のパラメータを備えています。レンダーレイヤーを使用してグループの可視性に影響を与える場合、オブジェクトの可視モードは、次の方法でレンダーレイヤーのグループの可視性と組み合わされます:
Visible x Visible = Visible
Visible x Holdout = Holdout
Visible x Hidden = Hidden
Holdout x Visible = Holdout
Holdout x Holdout = Holdout
Holdout x Hidden = Hidden
Hidden x Visible = Hidden
Hidden x Holdout = Hidden
Hidden x Hidden = Hidden
この一覧により、"Hidden"が"Holdout"よりも見えにくく、"Holdout"は"Visible"よりも見えにくいという2つの設定によって、結果は最も見えにくい方が設定される事が示されています。
Cast shadows and other rays オブジェクトの投影と他の光線 各グループには、このパラメータを使って影や光線の可視化を指定する事が出来ます。"Hidden"や"Holdout"モードのグループは、投影が沈着していたり他の反射などで見える場合があります。逆に、"Visible"モードのグループは、オブジェクトの影を無効にし、他の光線を見えなくさせます。
レンダーレイヤーとは別のオブジェクトには、オブジェクトの投影と他の光線を可視化を有効/無効にする独自のパラメーターがあります。これらの設定は、次の方法でレンダーレイヤーのグループ設定と組み合わされます。
Cast shadows and other raysがオン:
Visible to other raysがオン: オブジェクトは他の光線で見えます。
Visible to other raysがオフ: オブジェクトは他の光線で見えません。
Cast shadowsがオン: オブジェクトは投影します。
Cast shadowsがオフ: オブジェクトは投影しません。
Cast shadows and other raysがオフ:
オブジェクトは、個々の設定に関係なく投影も他の光線も無効になります。


Lightタブ

Light group 照明グループ ライトグループを使用すると、レンダリングされた画像に影響を与える照明を制限する事が出来ます。最大5つの照明グループを選択する事が出来ます。照明グループが選択されて存在する場合、そのグループの照明だけがレンダリングされた画像に影響を与える事を可能にします。照明グループは、無効になっている照明をオンにしません。無効に設定されている照明は、レンダーレイヤの設定に関係なくシーンを照らしません。照明グループの作成と設定方法はオブジェクトグループと同様です。
照明グループが1つも選択されず存在しない場合、すべての照明はレンダーレイヤーの影響を受けずに処理されます。
Always include enviro lights 常に『Enviro light』を含む
『Enviro light』は、照明グループの目的のための照明として扱われます。そのためデフォルトでは、照明グループを使用していても、選択したグループのいずれかに『Enviro light』を持たない場合、グローバルイルミネーションはレンダリングされません。これは有用な場合もありますが、グローバルイルミネーションを各ライティングレイヤーに適用したい場合もあります。"Always include enviro lights"をオンにすると、『Enviro light』は、レンダリングされたレイヤーが有効になっている限り、常に影響を及ぼす特殊タイプの照明として扱われます。


Layer Settingsタブ

Near clipping distance 近距離のクリップ Terragenは驚異的な広範囲(惑星サイズ、それ以上)に作用するため、一般的なグラフィックスハードウェアで表現可能な値の総数には限界があるため、低い精度を持つ非常に大規模な距離、高い精度を持つ小規模な距離、あるいはフォアグラウンドでのより高い精度を持つカーブの種類のいずれかを備える事が出来ます。それでも限界があるので、この機能は、システムによって表現される最も近い距離と最も遠い距離を設定します。これらの距離は、"クリップ(切り取り)される"ため、本質的に座標系内の空間を占める必要はありません。クリッピング面を動かすと、表現されている数値範囲の近く、または遠い形のゆがみを調整させます。デフォルトでは、ほとんどのシーンで有効な範囲で設定されています。
Far clipping distance 遠距離のクリップ
Atmo/cloud on background - for background or full scene renders (バックグラウンド、またはフルシーンのレンダリングのための)バックグラウンド上へ大気/雲 バックグラウンドとは、背景球(惑星単位)またはゼロアルファを指します。後で大気を持つバックグラウンドレイヤー上に合成されるフォアグラウンドレイヤー、またはミッドグラウンドレイヤーのために、これをオフにすると便利です。これをオフにすると、フォアグラウンドとミッドグラウンドオブジェクトが黒色のゼロアルファとしてバックグラウンドにレンダリングされ、大気が合成するバックグラウンドピクセルに2度適用されなくなります。この設定は、アルファが1のピクセルには影響しません。そのため、大気はオブジェクト上で通常のようにレンダリングされます。
Allow surface to be visible サーフェス表示を有効 チェック時、『Render』ノードの対応するフラグを有効にしないように防止します。言い換えればこれらのフラグは、『Render』ノードとレンダーレイヤの両方でオンになっている場合にのみ、レンダラーによってオンとみなされます。サーフェスのRGB、およびライティングエレメントは、『Render Layer』でサーフェス表示がオンの場合にのみ生成されます。大気RGBとライティングエレメントは、『Render Layer』で大気表示がオンの場合にのみ生成されます。
Allow atmo/cloud to be visible 大気/雲表示を有効
All shadows 陰影を有効
Override GI settings GI設定を優先 チェック時、GI設定のフルセットを編集する事が出来、『Render Layer』で設定されたGI設定が優先されます。ここで優先されたGI設定は3Dプレビューでは重要視されませんが、通常のレンダリングでは『Render』ノードによって重要視されています。現在のレイヤーに影響していない時に、誤ってメインの『Render』ノードの[GI Settings]ボタンをクリックしてGI設定を編集しようとすると、『Render Layer』によって優先されている事を通知した上で、『Render Layer』で優先中のGI設定のパラメータービューが開きます。



Render Elementsタブ

レンダーエレメント(または"特殊な出力画像")は、画像の後処理または合成を支援するレンダラーのために生成される付加的画像です。単一のレンダリング/レイヤーによって多くの異なる要素(エレメント)を出力する事が出来ます。例えば、画像をレンダリングする時に、拡散と鏡面の照明要素とともに深度マップ(または"Z深度")を使用して、後で別のアプリケーションで画像の照明を変更する事も出来ます。レンダラーは、メイン画像と同時にこれらの要素を生成出来るので、シーンを一度レンダリングするだけで必要な要素をすべて取得する事が出来ます。
エレメント ファイル名 エレメント画像 (サンプル)
Render Element/Extra Output Images RGB tgRgb
Alpha tgAlpha
Surface RGB tgSurfRgb
Surface Alpha tgSurfAlpha
Cloud RGB tgCloudRgb
Cloud Alpha tgCloudAlpha
Atmosphere RGB tgAtmoRgb
Atmosphere Alpha tgAtmoAlpha
Lighting Elements Surface Direct (Diffuse + Specular) tgSurfDirect
Surface Indirect (GI + Reflections) tgSurfIndirect
Surface Direct Diffuse tgSurfDirectDiff
Surface Indirect Diffuse (GI) tgSurfIndirectDiff
Surface Direct Specular tgSurfDirectSpec
Surface Indirect Specular (Reflections) tgSurfIndirectSpec
Surface Emission (Luminosity) tgSurfEmit
Cloud Direct tgCloudDirect
Cloud Indirect (GI + Ambient) tgCloudIndirect
Atmosphere Direct tgAtmoDirect
Atmosphere Indirect (GI + Ambient) tgAtmoIndirect
Data Elements Surface Depth tgSurfDepth
Surface Position tgSurfPos
Surface 2D Motion Vector tgSurf2dMotion (現在未対応)
Surface Normal tgSurfNormal
Surface Diffuse Colour (before lighting) tgSurfDiffCol
Cloud Depth tgCloudDepth
Cloud Position tgCloudPos
Cloud 2D Motion Vector tgCloud2dMotion (現在未対応)
Sample Rate tgSampleRate

Check All すべてをチェックする すべての項目にチェックを入れます。
Uncheck All すべてノチェックを外す チェックの入ったすべての項目からチェックを外します。

レイヤー対エレメント

このようなレンダーエレメントは、他の3Dレンダラーソフトウエアでは、'Render Passes(レンダーパス)'と呼ばれる事があります。'AOV(任意の出力変数)'と言う用語で使われる事もあります。歴史的にこれらの要素は、異なる設定で同じシーンを何度もレンダリングして生成する必要があり、同じレンダリングを何度も'passes(パス)'した事から'レンダーパス'と名付けられました。レンダーパスは、何度もレンダリングを必要とするレイヤーのために正確に適用される用語であり、Terragenは、要素となる画像を生成するためにシーンを何度もパスさせる必要がないのでこの用語は誤解を招くと考慮しました。曖昧さを取り払うためにも、用語「レンダーエレメント」と「レンダーレイヤー」を使用する事をお勧めします。

レンダーエレメントは、レンダーレイヤーと混同しないで下さい。1つのレンダーレイヤーは複数のレンダーエレメントを含める事ができ、同じタイプのレンダーエレメントは、複数のレンダーレイヤーによって生成します。では、なぜ『Render Layer』ノードの設定でエレメントを定義するのか、それ以外の場所の候補として『Render』ノードではだめなのでしょうか? レンダーレイヤーを使用する場合、異なるレイヤーに異なるレンダーエレメントが必要な事があります。エレメントはディスク上で余分な領域を占有し、レンダリング中にさらに多くのメモリを必要とし、レンダリング時間を上乗せするため、特定のレンダリングに有用なエレメントのみを有効にする事が賢明です。故に、レイヤーごとに異なるエレメントの一式を選択する事が効果的となるのです。

コンポジター(合成)について

雲のエレメントと大気のエレメントは別物です。大気のエレメントと雲のエレメントは相互に影響し合っているので、合成プログラムでは、加算(例:The Foundry社のNukeで言う'Plus')を使用する事で、大気と雲の結合を得る事が出来ます。これは、拡散パス(RGB、Diffuse)、アルファパス(Alpha)、直接パス(Direct)、間接パス(Indirect)エレメントを含むすべての大気/雲のエレメントに適用されます。また、"tgCloudDepth"、"tgCloudPos"、"tgCloud2dMotion"には、"tgCloudAlpha"があらかじめ乗算させられるため、それらも大気によって保持されます。

"tgSurf"で始まるすべてのエレメント("data"エレメントを除く)は"tgSurfAlpha"を、"tgCloud"で始まるエレメントはすべて"tgCloudAlpha"を、"tgAtmo"で始まるエレメントは"tgAtmoAlpha"をあらかじめ乗算させられています。"tgRgb"には"tgAlpha"があらかじめ乗算されています。現時点では、アンプリマルチプライド(非乗算済みアルファ)エレメントを直接レンダリングする事は出来ませんが、将来はオプションを追加する可能性があります。
  • アンプリマルチプライド(・アルファ): まだRGBチャンネルにアルファ値が乗算されていない状態をいい、ストレートアルファ(Straight Alpha)とも呼ばれます。輪郭のはっきりした対象の合成に適しています。ストレートをプリマルチプライドに変換する処理。
  • プリマルチプライド(・アルファ): すでにRGBチャンネルにアルファ値が乗算されており、背景との合成に適しています。プリマルチプライドをストレートに変換する処理。
重要: エレメントはどの画像にもアルファチャンネルが乗算されていないので、使用するエレメントに対応するアルファエレメントを合成して使用出来るようにする事をお勧めします。

2つの異なるレンダーレイヤーからの同じレンダーエレメント("Render Layer 01"の「tgSurfDepth」と"Render Layer 02"の同じエレメント)は、通常、NukeやPhotoshopなどのアプリケーションで、各レイヤーのRGB画像を合成するのに使用する同じ方法で同時に合成する事が出来ます。各レイヤーに同じレンダーエレメントがある場合は、合成アプリケーションですべてを組み合わせる2つの方法があります。おそらく、最も簡単な方法は、レンダリングに属するすべてのエレメントを最初に結合して完全なレイヤーを作成し、レイヤーを合成する事です。これにより、コンポジット内でレイヤーを移動させる事が容易になります。もう1つの方法は、最初に各エレメントを他のレイヤーから同じエレメントで合成する必要があるレイヤーとして扱います。次に、結合されたエレメントが最終画像にどのように組み合わされるかを幅広くコントロールします。多くのエレメントがあるにもかかわらず、レイヤーは僅かしかなく、そのレイヤーをかなり簡単に合成できる場合は、この方法をお勧めします。