Surface Layer

Node Type: Surface Shader

ノード説明と目的:

『Surface Layer』ノードは非常に重要なノードです。これは地形のサーフェステクスチャを作成するために頻繁に使用するノードです。Terragenのより複雑なノードの1つで多くの設定がありますが、各設定項目は、影響を受けるサーフェスの特定の方面のためにグループ化されており、非常に単純です。

Terragen Classicを使用していた場合は、『Surface Layer』ノードの多くの部分が"Surface Layers"と非常によく似ています。特に、[Coverage and Breakup]タブと[Altitude and Slope Constraints]タブの項目があります。その他の設定は基本的にTerragen Classicの"Surface Layer"の機能を拡張したものです。

設定

Colourタブ

Apply colour カラーの適用 チェック時、サーフェスレイヤー全体にベースとなるなサーフェスカラーが適用されます。色は右のカラーアイコンによる設定、または"Colour function"を使用して変更する事が出来ます。
Colour function カラー関数 この設定により、サーフェスカラーをコントロールするためのFunctionやシェーダを指定する事が出来ます。
Enable test colour テストカラーの適用 チェック時、右のカラーアイコンで設定した色がサーフェスに適用されます。テストカラーの使用目的は、特定の色を指定してベースカラーを変更する事なくサーフェスレイヤーがどこに適用されているのかを確認するためです。デフォルトのテストカラーはマゼンタです。


Luminosityタブ

「Luminosity」タブには、サーフェスを輝かせる設定があります。輝きは、サーフェスから放射される光のようなものです。放たれた光はシーンの他の部分も照らします。
Luminous 発光 チェック時、サーフェスは輝きます。スライダーでグロー効果量、または光度をコントロールする事が出来ます。値が大きいほど輝きが強くなります。
Luminosity tint 光度の色調 光度の色を設定します。グローカラーをサーフェス全体の色と異なる色にする事が出来ます。
Luminosity function 光度関数 光度効果をコントロールするためのFunctionやシェーダを指定する事が出来ます。
最も簡単な方法は、グレースケール関数(『Colour to greyscale colour』)を使う事です。あなたが輝きを望む部分を『Painted Shader』を使って描画する事も出来ます。『Image Map Shader』を使用して、マスクとして使用する画像を読み込む事も出来ます。白い部分は光り、黒い部分は光りません。"Luminosity tint"で設定した色が全体に輝きます。
より高度な方法は、カラー関数やシェーダを使用する事です。例えば、『Image Map Shader』を使用して、複雑で多色のグロー効果を出す事が出来ます。この場合、画像の全体的なトーンが光度の強さをコントロールします。暗い部分は輝きが少なくなります。画像から実際の色を取得するには、"Luminosity Tint"を白に設定します。これは、光度の色調が関数の色と混ざっているためです。色調をグレー値に設定して、関数からの輝きの強度を減らす事が出来ます。これは、"Luminous"パラメータの値で直接コントロールするのではなく、画像をフェードアウトさせる効果に似ています。

最後に、"Luminosity tint"と"Luminosity function"の組み合わせを使用する事で、2色が混ざり合って最終的なグロー色を変更する事が出来ます。例えば、上記画像に"Luminosity tint"で黄色を設定すると、画像の青い部分は黄色と混ざり緑色で輝きます。

これで分かるように、"Luminosity tint"と"Luminosity function"の組み合わせは非常に強力で、相互作用は複雑になる可能性があります。最も一般的な結果を達成するための使い方を簡単に説明します。
1つ目は、"Luminosity function"を使用して、グロー効果を現す場所をコントロールします。これにはグレースケール関数やシェーダを使用します。明るい(白)部分に最も輝きが現れます。"Luminosity tint"で設定した色が全体に輝きます。
2つ目は、"Luminosity function"によるカラー関数やシェーダ、画像を使用してグロー色をコントロールします。画像の明度(白黒、またはグレー)は、輝きが現れる場所をコントロールします。画像の暗い部分ほど輝きが少なくなります。画像の色がそのまま残るようにするには、"Luminosity tint"を白に設定します。画像の色の濃度を調整するには、"Luminosity tint"をグレー値に変更します。


Displacementタブ

説明:
ディスプレースメントは、あなたのサーフェスレイヤーに3次元形状を与えます。このタブでは、レイヤーの変位をコントロールするための設定が含まれています。

ディスプレースメントは、レンダリングされたシーンを構成するマイクロポリゴンが空間を移動して3D形状を引き起こす処理です。『Surface Layer』は、"Displacement function"の入力端子に接続されたノードからの変位を実行するために必要な情報を取得します。ディスプレイスメントの作成に使用出来る多くのノードがあります。

"Displacement function"はスカラーの入力を推定しています。これは、変位そのものを作成するノードによっては、予想通りの結果が得られない可能性があります。その場合はカラーを作成するノードを関連付ける事が出来ます。カラーは自動的にスカラーに変換されます。その一例として、『Simple Shape Shader』を使用して変位を作成する方法があります。『Simple Shape Shader』の"Apply displacement"を有効にした場合、変位は得られません。"Apply colour"を有効にした場合、変位を確認する事が出来ます。また、v2.4以降では『Displacement Shader to Vector』ノードを"Displacement function"に入力して、『Displacement Shader to Vector』の出力をベクトルに変換する事が出来ます。ベクトルもスカラーに変換されます。

『Surface Layer』の"Displacement"を使用して、風景の例えば山などの大きな容貌を作成する事は魅力的かもしれませんが、そのような活用法は推奨しません。最良の結果を得るには、大きな容貌はサーフェスではなく地形自体の一部として作成する必要があり、それを行うのは『Compute Terrain』ノードの上流に接続する必要があります。
Displacement direction ディスプレースメント方向 このポップアップは、ディスプレースメントが適用される方向を選択する事が出来ます。ポップアップリスト内の "(requires computed normal)"オプションは、ノードネットワーク上で接続された『Compute Terrain』または『Compute Normal』が適切に動作する事を必要とします:
-Along vertical: ディスプレースメントは、変位を適用する元となるオブジェクト(すなわち、惑星またはモデル)の法線に沿って生じます(デフォルトの場合、『Planet』の平面上からの変位なので"垂直"に生じます)。
-Along normal: ディスプレースメントは現在のサーフェス法線に沿って生じます。
-Vertical only (requires computed normal): ディスプレースメントは、元となるオブジェクト(すなわち、惑星またはモデル)の法線に沿ってのみ生じます。ディスプレースメントは、オブジェクト法線(プリミティブオブジェクト、デフォルトでは『Planet』オブジェクトの法線)とサーフェス法線(作成したサーフェスによって生成された法線)の差でスケーリングされます。ディスプレースメントは、法線間の角度が90度に近づくにつれて減少します。
-Lateral only (requires computed normal): ディスプレースメントは、側面の平面内でのみ、すなわち下層のオブジェクトの法線に対して直角にのみ生じます。
-Lateral normalized (requires computed normal): これは上記と同じですが、法線は統一化されています(長さが1になるようにスケーリングされます)。

Displacement multiplier ディスプレースメント乗数 これにより、"Displacement function"入力端子からの変位値が乗算されます。1の値は入力値に変更はありません。値が2の場合は入力値は2倍になり、値が0.5の場合は入力値を半分にします。負の値は変位を反転させます。
Displacement function ディスプレースメント関数 このパラメータは、サーフェスレイヤーのディスプレースメントを生成するために使用するノードを関連付けます。関連付けたノードは、"Displacement function"入力端子に接続されます。
上記サンプル画像の作成には『Image map shader』を関連付け、サンプルパターン画像をディスプレースメントの変位値として使用しています。
Displacement offset ディスプレースメントのオフセット この値は、"Displacement multiplier"パラメータで乗算された後に、ディスプレースメントの入力値に加算されます。これにより、ディスプレースメント方向に沿った設定量だけディスプレースメントをオフセットする効果が生じます。正の値はディスプレースメントを押し出して、それが台座に座っているかのように見えます。負の値は、ディスプレイスメントが表層の中に沈みます。それはディスプレースメントを逆にするのではなく、むしろ表層に穴を作り、穴の底にディスプレースメントを適用する事に近いです。


Smoothingタブ

このタブには、サーフェスレイヤーを滑らかにする効果をコントロールする設定があります。この効果はレイヤーによって覆われたエリアを滑らかにします。ただし、この効果の能力には限界があり、例えば、特にとがった下層のレイヤーまでを滑らかにする事が出来ないでしょう。例えば、基底となる地形があり、その上にサーフェスレイヤー1を作成して基底の地形を滑らかにしますが、その上にサーフェスレイヤー2を重ねてさらなる滑らか効果を与える事は出来ません。
凸凹の地形が降雪で平らになるようなシーンを作成する場合は、別途滑らかな(例えばフラクタルディティールをオフにしたハイトフィールド)地形を用意し、凸凹の地形と『Merge Shader』で融合させる事で実現可能です。
この滑らかにする効果は、例えばテクスチャなどカラーに関するマップ画像には影響を与えず、ディスプレースメントに対して効果を与えます。
Smoothing effect 滑らか効果 チェック時、滑らかにする効果が適用されます。平滑化の強さは、右側のスライダー設定によってコントロール御されます。値が大きいほどスムーズになります。


Coverage and breakupタブ

Coverage 適用範囲 この設定は、サーフェスレイヤーの適用度をコントロールします。サーフェスレイヤー全体の透明度を変更するのと少し似ています。値が小さいほど、レイヤーの表示が減少し、下層のサーフェスレイヤーの表示が増加します。
Fractal breakup フラクタルブレイクアップ チェック時、サーフェスレイヤーは右側のフィールドに割り当てられたフラクタルシェーダ(デフォルトは『Fractal breakup 01』)を使用して分割されます。これにより、サーフェスにランダム感と質感がより多く取り入れられます。フラクタルブレイクアップの量は、すぐ下のテキストフィールドとスライダーでコントロールする事が出来ます。数値が大きいほど分割が大きくなります。詳細はフラクタル分解の説明を参照して下さい。
Invert breakup ブレイクアップの反転 チェック時、フラクタルブレイクアップのパターンは反転し、すなわち明るい部分は暗くなり、暗い部分は明るくなります。
Only breakup colour ブレイクアップの色情報のみ 『Fractal breakup』シェーダーは、多くのディスプレースメント情報を持っているため、あらゆる効果に影響を及ぼします。チェックを入れる事で、地形を変位させる事なく、色と光度にのみ影響を与える事が出来ます(デフォルトはチェックが入っています)。
Mask by shader シェーダでマスク チェック時、関連付けたシェーダを使って、サーフェスシェーダが出現する場所をさらに詳細にコントロールする事が出来ます。デフォルトでは、サーフェスレイヤーは惑星全体を覆っています。しかし、『Image Map Shader』や『Painted Shader』を使用して、画像による形状をサーフェスレイヤーの表示する場所としてコントロールする事が出来ます。さらに、『Simple Shape Shader』を使用してサーフェスレイヤーを六角形のエリアに限定する事など、関連付けるシェーダで多彩な表現が可能です。
シェーダの白い部分ほど、より多くのサーフェスが見え、グレーの濃淡はレイヤーの不透明度や適用度をコントロールします。
Invert mask マスクの反転 チェック時、指定したマスク処理を行う特定の範囲を反転します。
Mask as coverage マスクを適用度として使用 チェック時、サーフェスシェーダ全体をブレンドするのではなく、マスクシェーダを使用して適用度を変更します。適用度としてブレンドすると、フラクタルブレイクアップなどのシェーダの様相とのより高度な相乗効果が可能になります。


Altitude Constraintsタブ

このタブでは、サーフェスレイヤーを表示させる場所を高度または高さでコントロールする事が出来ます。例えば雪のサーフェスレイヤーを作成し、その雪が山頂付近の高度にだけ積もって欲しい場合。レイヤーを、任意の高さより上、一定の高さより下、または2つの高さの間にのみ表示させる事が出来ます。
3Dプレビューを使用して、レイヤーを表示させる高さを選択する簡単な方法があります。シーンの山の3分の1ほどしか雪の層を作りたくなかったとしましょう。以下の手順で設定を行います:
  1. 3Dプレビュー内に山が入るようにカメラをナビゲートします。
  2. 3Dプレビューが妥当なディティールレベルに調整されるのを待ちます。より正確になればなるほど次のステップがより正確になりますが、本当に正確である必要はないので妥当なレベルで留めておきます。
  3. スノーライン(積雪の境界線)を望む高さの山を右クリックして下さい。コンテキストメニューで「Copy Altitude」を選択します。これは、マウスカーソル下のシーン内のポイントの高度をクリップボードにコピーします。
  4. コピーした高度を"Minimum altitude"パラメータのテキストフィールドに貼り付けます。
  5. "Limit minimum altitude"にチェックを入れて、高度の最小制約を有効にします。
  6. これで、雪の層はプレビューでクリックした高度までしか山を覆いません。「Copy Altitude」でクリックしたマウスカーソルのポイントによる高度は、カメラの俯瞰によって誤差が生じます。
Limit maximum altitude 最大高度制約 チェック時、最大高度制約が有効になります。これにより、"Maximum altitude"で指定された高度より上にサーフェスレイヤーを表示しません。
Maximum altitude 最大高度 サーフェスレイヤーが表示される最大の高さをコントロールします。
Max alt fuzzy zone 最大高度のファジーゾーン 最大高度制約に対するファジーゾーンの幅をコントロールします。サーフェスレイヤーとその下のレイヤーをブレンドする最大高度より下のエリアとしてのファジーゾーン。Fuzzy zonesはここで詳細に説明されています。
Limit minimum altitude 最小高度制約 チェック時、最小高度制約が有効になります。これにより、"Minimum altitude"で指定された高度より下にサーフェスレイヤーを表示しません。
Minimum altitude 最小高度 サーフェスレイヤーが表示される最小の高さをコントロールします。
Min alt fuzzy zone 最小高度のファジーゾーン 最小高度制約に対するファジーゾーンの幅をコントロールします。サーフェスレイヤーとその下のレイヤーをブレンドする最小高度より上のエリアとしてのファジーゾーン。ファジーゾーンは描画で表現するところの"グラデーション"の幅と同意義。Fuzzy zonesはここで詳細に説明されています。
Altitude key 高度となる基準 高度となる基準を以下から選択します:
-Final position(最終位置): すべての要素を計算した最終位置を基準とします。
-Position in terrain/texture(地形/テクスチャの位置): 地形/テクスチャの座標にのみ基づいて、『Compute Terrain』によって計算され、実際の地形のやや平滑化された位置を基準とします。これによって実際の地形と計算された地形の違いを、"Intersect underlying"機能などの特殊効果によって使用する事が出来ます。
Use Y 高度にY軸を使用 地形のように"高度"を持たないオブジェクトなどに、この制約を使用する場合、オブジェクトのY軸を使用して高度の代用にします。


Slope Constraintsタブ

このタブでは、サーフェスレイヤーを表示させる場所を傾斜に応じてコントロールする事が出来ます。これらの設定を使用して、レイヤーをシーンのより平坦な部分、シーンのより急勾配な部分、またはその間のどこかにのみ表示させる事が出来ます。

例えば、遠方の草として緑色のレイヤーを追加する場合。草は通常45度未満の傾斜を持つエリアでのみ成長するため、それ以上の急斜面に緑色のレイヤーが表示されるのを防止するために最大傾斜制約を使用します。

3Dプレビューを使用すると、傾斜制約に使用する角度を見つけるのに役立ちます。緩やかに起伏して断崖に変わる地形のエリアがあると想像して下さい。断崖を除いた至る所にサーフェスレイヤーを表示させたい場合、以下の手順で設定を行います:

  1. 起伏に富んだシーンを確認出来るに、3Dプレビュー内を移動します。
  2. 3Dプレビューが妥当なディティールレベルに調整されるのを待ちます。より正確になればなるほど次のステップがより正確になりますが、本当に正確である必要はないので妥当なレベルで留めておきます。
  3. 穏やかに起伏した地形が断崖に変わる位置の近くの断崖面を右クリックして下さい。コンテキストメニューで「Copy Slope Angle」を選択します。これは、マウスカーソル下のシーン内のポイントの傾斜角度をクリップボードにコピーします。
  4. コピーした角度を"Maximum slope angle"パラメータのテキストフィールドに貼り付けます。
  5. "Limit maximum slope"にチェックを入れて、角度の最大制約を有効にします。
  6. これでクリックした断崖よりも緩やかな角度にのみ、サーフェスレイヤーを表示させます。
Limit maximum slope 最大傾斜制約 チェック時、最大傾斜制約が有効になります。これにより、"Maximum slope angle"で指定された傾斜より急勾配な面にサーフェスレイヤーを表示しません。
Maximum slope angle 最大傾斜角度 サーフェスレイヤーが表示される最大の傾斜をコントロールします。
Max slope fuzzy zone 最大傾斜のファジーゾーン 最大傾斜制約に対するファジーゾーンの幅をコントロールします。サーフェスレイヤーとその下のレイヤーをブレンドする最大傾斜より下のエリアとしてのファジーゾーン。Fuzzy zonesはここで詳細に説明されています。
Limit minimum slope 最小傾斜制約 チェック時、最小傾斜制約が有効になります。これにより、"Minimum slope angle"で指定された傾斜よりなだらかな面にサーフェスレイヤーを表示しません。
Minimum slope angle 最小傾斜角度 サーフェスレイヤーが表示される最小の傾斜をコントロールします。
Min slope fuzzy zone 最小傾斜のファジーゾーン 最小傾斜制約に対するファジーゾーンの幅をコントロールします。サーフェスレイヤーとその下のレイヤーをブレンドする最小傾斜より下のエリアとしてのファジーゾーン。Fuzzy zonesはここで詳細に説明されています。
Slope key 傾斜となる基準 高度となる基準を以下から選択します:
-Final normal(最終法線): カラー/シェーディングは一概にネットワーク全体のディスプレースメント計算が行われた後に行われます。そのすべての処理が終わった形状を基に傾斜角度を算出します。ディスプレースメントは色の分布にも影響を与えてしまうため、ディスプレースメントを生成するシェーダを使用している場合は"Terrain normal"を選択する事をお勧めします。
-Terrain normal(地形法線): 『Compute Terrain』/『Compute Normal』でディスプレースメントを共わない計算が行われた後の形状を基に傾斜角度を算出します。
-Planet/object normal(惑星/オブジェクト法線): 『Surface Layer』を関連付けているオブジェクトのサーフェスを基に傾斜角度を算出します。
Use Y 高度にY軸を使用 地形のように"高度"を持たないオブジェクトなどに、この制約を使用する場合、オブジェクトのY軸を使用して高度の代用にします。


Effectsタブ

このタブには、『Surface Layer』のいくつかの様相に関する詳細設定が含まれています。Intersect underlying(下層との相交)は、このレイヤーが直下のレイヤーとどのように相互作用するかをコントロールする事が出来る高度なオプションです。例えば、下層の芝生の上に上層の雪が降り積もるような平地があるとします。平地は高度や傾斜の制限を受けないため、通常すべての面が上層の雪で埋められてしまいますが、これを使用する事で下層の芝生が降雪の中から突き出る様な効果を与える事が可能です。また、これとは逆に、地形の出っ張ったところにのみ雪を積もらせる事も可能です。
Intersect underlying 下層との相交 チェック時、下層との相交の効果を有効にします。2つのレイヤーの相互作用方法を選択します:
-Favour depressions(陥没を引き立て): 下層の陥没部分にのみサーフェスレイヤーの色を被せます。
-Favour rises(隆起を引き立て): 下層の隆起部分にのみサーフェスレイヤーの色を被せます。
-Displacement intersection(ディスプレースメント相交): これは陥没/隆起に捉われず、起伏に合わせてサーフェスレイヤーの色を被せます。また、「Smoothing」タブの"Smoothing effect"を有効にする事で最も効果的に機能します。"Smoothing effect"が無効の場合、自動で有効に切り替わります。

上記画像は、地形(下層)に白い降雪(サーフェスレイヤー)を被せている例です。"Displacement intersection"の見た目は"Favour depressions"と同じようですが、小さな起伏部まで覆われているため細かなディティールが失われ、降雪の場合これは都合の良い効果と言えるでしょう。
Intersection zone 交差領域 陥没、隆起、ディスプレースメント相交の引き立て領域部をコントロールします。数値が高い程、引き立て領域が広がります。
Intersection shift 交点移動 "Intersection zone"が引き立て領域を広げたり狭めたりするのに対し、これは下層との交点位置を昇降させます。言い換えると、"Intersection zone"は数値が高くなるほど降り積もる雪の面積が広がるのに対し、"Intersection shift"は、数値が高くなるほど雪の積雪高が高くなります。そのため、下層の凸凹も次雪に覆われなだらかになります。逆に交点を下げる(負の数値)と雪は下層の下に潜り込みます。
Min intersection shift 交点移動の最小値 このパラメータは、高度制約または傾斜制約を有効にした時にのみ、制約領域の範囲に影響を与えます。

上記画像は、最小高度制約を有効にした時、0が設定した制約高度に対し、-2は制約高度から高くなり、2は制約高度から低くなります。またその影響に伴い引き立て領域も加減します。
Fuzzy zone softness ファジーゾーンの滑らかさ 高度制約と傾斜制約で設定されたファジーゾーンの境界の滑らかさをコントロールします。
Better colour/shade continuity 改善したカラー/シェードとの連携 これらはファジーゾーン計算(Fuzzy Zones)でこれまで使用されていた高速近似法の代わりに高品質のexp()関数が使用されます。高速近似法は、通常、カラー/シェードの分布には十分ですが、ディスプレースメントを制限するために使用すると、ファジーゾーンによる目立った分割を引き起こす可能性がありました。
チェック時との比較は誤差程度の違いですが、不自然な結果に満足出来ない場合にチェックの切り替えを試みても良いかもしれません。
Better displacement continuity 改善したディスプレースメントとの連携