Default Shader

Node Type: Surface Shader

ノード説明と目的:

『Default Shader』は、ベースカラーを提供したり、画像ファイルを読込んで半透明、光度、光沢反射、ディスプレイスメント、不透明度などをコントロールする事の出来る汎用性の高いノードです。 『Default Shader』は、オブジェクトのサーフェスマッピングの基礎を形成します。

このノードの多くのアスペクトは、関連パラメータのグループで構成されています。例えば、拡散色アスペクトは、色(Diffuse colour)、画像ファイル(Colour image)、ファンクション(Color function)に関するパラメータを備えています。これらのパラメータはすべて連携して、関連する特定のアスペクト、この場合は拡散色をコントロールします。

これは予期しない事が出来る含意を持っています。例えば、植物モデルの葉のポリゴン上に葉の画像をマッピングするために、拡散色に画像を使用するとします。画像の本来の色を再現するには、"Diffuse colour"を白に設定する必要があります。他の色に設定されている場合、その色は画像の色に影響します。"Diffuse colour"を赤に設定したとしましょう。これにより、画像の色が赤くなります。この作用の利用法として、画像よりもより青々とした葉にしたい時や、画像が明る過ぎると思った場合は、グレーにして暗くする事が出来ます。

概して言えば、あなたは各アスペクトの異なるパラメータが互いに相互作用する事を覚えておく必要があります。これはシェーダを多目的にしますが、その仕組みを理解するまでは、一度にたくさんの変更を加えるのではなく、一段階ごとに変更を加えてプレビューをレンダリングしてどのような効果があるのかを確認してみて下さい。

下記は、シェーダのさまざまなアスペクトに一般的に適用されるいくつかの秘訣です:
  • ベースカラーを指定します
    • "Diffuse colour"のカラーパレットで色を選択します。
    • "image"と"function"パラメータには何も指定しないで下さい。
  • 画像を使用して画像から直接色を取得する場合
    • "Colour image"で、画像パラメータのあるファイルを選択して下さい。
    • "Diffuse colour"は白に設定します。
    • "function"パラメータには何も指定しないで下さい。
    • シェーダ、Functionから直接色を取得する場合
    • "Colour function"にシェーダまたはFunctionを関連付けます。
    • "Diffuse colour"は白に設定します。
    • "image"パラメータには何も指定しないで下さい。
  • 画像またはFunctionを使用して色の表示場所をコントロールする場合
    • "Diffuse colour"のカラーパレットで色を選択します。
    • グレースケール画像またはFunctionを指定して下さい。指定された色のより多くは、画像またはFunctionで関連付けた色がより明るい所に現れます。白は指定した本来の色、黒は色なし(真っ黒)を意味します。
  • "function"で『Image map shader』から画像ファイルを読込む場合
    • "Colour function"は、ガンマ補正を必要とするので「Colour」タブの"Convert to linear"にチェックを入れます。
    • それ以外の"Specular"、"roughness"、"Displacement(Bump)"の画像は"Data is linear"にチェックを入れます。これは、物理的な属性を表す純粋なマテリアルとして扱う事を意図しています。

設定

Colourタブ

Diffuse colour 拡散色 これは、シェーダのベースカラーを指定します。また、"image"や"function"で関連付けた色に被せる事も出来るので、色調をコントロールする時にも役立ちます。

このサンプル画像は、"Colour image"で読み込んだ画像の葉の色調を変更しました。木の実については画像を用いずに、"Diffuse colour"を朱色に設定しただけのものです。
"Diffuse colour"でコントロールするスライダーの数値は、アルベドとしても扱い、1は天体の外部からの入射光に対する、反射光の比が100%を意味し、地球上をシミュレートをする場合はおよそ0.7が実際に近い数値となります。
アルベド - Wikipedia
Colour image 拡散色画像 拡散色に使用する画像ファイルを選択する事が出来ます。

"Diffuse colour"で緑色を指定した葉と、"Colour image"によって赤枠で囲まれた画像を指定した葉を比較しています。

"image"に直接画像ファイルを設定すると、通常UVマッピングによる一枚の画像でオブジェクトを包むこみますが、UV値を持たないオブジェクトは読込んだ画像を連続して並べる事でマッピングを行います。ビルドインオブジェクトでは、"Cube"、"Disk"、"Sphere"がそれに当たります。UV値を持たないオブジェクトに画像をマッピングするには、下の"Colour function"を使用する必要があります。

TGのビルドインオブジェクトの"Cube"にテクスチャを貼り付けると予期せぬ結果になる場合があるので、シーンにキューブのオブジェクトが必要な場合は他3Dソフトウエアで単純なキューブ状のオブジェクトを作成し、OBJ形式でエクスポートしたものを『Obj reader』で読み込んで使用する事をお勧めします。ただし、ビルトインのオブジェクトがベクトル計算上作成されるためデータサイズが小さいのに対し、直接読込んだオブジェクトファイルを使うと、データサイズ、メモリの使用量は大きくなります。
Colour function 拡散色関数 拡散色を生成するためのFunctionやシェーダを指定する事が出来ます。上記の"Colour image"は直接画像ファイルを読込むのに対し、こちらはノードツリーを構成する事で画像の混合や色調のコントロール、また、"Sphere"などの球体オブジェクトに投影によって適切にマッピングする事の出来る『Image map shader』を使うのが一般的です。
Translucency 半透明 これは、サーフェスを通して光を浸透する効果をもたらします。デフォルトは0で、透過はまったくありません。例えば、葉のテクスチャに半透明を使用して、それを通過する光をシミュレートする事が出来ます。不透明度と同意義ではありません。
値が1の時、光源の正反対側面のサーフェスが、光源に直接面している場合と同じ明るさになります。マテリアルによっては1を超えるものが現実的かもしれませんが、微視的に薄いサーフェス(葉など)上では非常に限られたマテリアル(つまり、とても薄く、あまり反射せずに散乱するだけ)です。より正確的に設定するならば、葉は常に1以上にすべきではありません。また、値を8に設定すると、オブジェクトの影となる面は光源が直射している面の8倍の明るさになります。半透明性については、半透明で詳しく説明しています。
この半透明の使用には現在落とし穴があります。マテリアルが100%半透明の場合(例えばポリカーボネートのようなマテリアル)は、現行のバージョン(TG4.4)では50%よりも明るい色を使用しないで下さい。現実において、サーフェスに残留する光の量は、そこに当たる量を超える事は出来ません(それが発光性/放射性でない限り)。半透明は拡散色の割合として機能し、それをサーフェスの反対側に伝達して合計に加算します。例えば:
100%の白い拡散、0%の半透明の合計: 100% + 0% = 100%
100%の白い拡散、50%の半透明の合計: 100% + 0% = 150%(これは現実的に在りえません)
100%の総出力で物理的に正しく保つ設定方法の例:
1.0拡散、0.0半透明
0.8拡散、0.25半透明 (0.8 + 0.8 x 0.25 = 1.0)
0.75拡散、0.33半透明 (0.75 + 0.75 x 0.33~= 0.998)
0.66拡散、0.5半透明 (0.66 + 0.66 x 0.5 = 0.99)
0.6拡散、0.66半透明 (0.6 + 0.6 x 0.66 = 0.996)
0.55拡散、0.8半透明 (0.55 + 0.55 x 0.8 = 0.99)
0.5拡散、1.0半透明 (0.5 + 0.5 x 1.0 = 1.0)
これらを考慮しないと問題が発生します。複数回の光の跳ね返りは、過度の明るさをもたらし、はるかに大きな過剰光になります。これは奇妙に見えるだけでなく、画像内のノイズも増加させます。
将来のバージョンでは、半透明のコントロールにチェックボックスを追加して、光が当たる拡散を自動的に減らすようにするための"Physically correct(物理的に正しい)"、"Physically correct diffuse/translucent balance(物理的に正しい拡散/半透明のバランス)"のいうチェックボックスパラメータが追加されるかも知れません。

Topic: Another RT/PT comparison
Translucency image 半透明画像 半透明をコントロールするための画像ファイルを選択する事が出来ます。

サーフェスに光が透過する過程をシミュレートし、テクスチャを貼り付けた裏面の透過度と明るさを半透明画像によってコントロールする事が出来ます。
Translucency function 半透明関数 半透明をコントロールするためのFunctionやシェーダを指定する事が出来ます。
Luminosity 光度 光度は輝きの効果を与えます。値が大きい程光度は増し、周辺への光の影響を及ぼします。光度パラメータの使用に関する詳細については、『Surface Layer』の「Luminosity」タブを参照して下さい。
Luminosity image 光度画像 光度をコントロールするための画像ファイルを選択する事が出来ます。

例えば夕闇に紛れて偵察ドローンを飛ばした場合、光度に何も設定がないと黒い物体(画像左)でしかありません。そこで、"Luminosity"を単に数値を入れてもオブジェクト全体が発色してしまいます(画像右)。

"Colour image"で設定したテクスチャ画像の発行部分のみを残し他を黒で埋める事で、指定部分にのみ光度を生み出す事が出来ます(画像左)。画像右は"Colour image"で設定した画像のハイライト部分を編集し、ドローン全体を発光させてみたサンプルです。
Luminosity function 光度関数 光度をコントロールするためのFunctionやシェーダを指定する事が出来ます。


Specularタブ

「Specular」タブには、シェーダの反射に影響する設定が含まれています。これらは本質的にサーフェスの光沢をコントロールする設定です。ハイライトがサーフェスに作成されます。これらのハイライトは、光がサーフェスに当たる角度と表示方向に依存します。

このタブのパラメータを使用して、サーフェスをつや消し、または光沢に見せる事が出来ます。

『Default Shader』には反射のみがあり、鏡面反射はレイトレースしません。同様に、透明度や屈折もありません。現在、レイトレース効果(屈折透明度、鏡面反射)は、Terragenレンダリングエンジンではやや特殊なケースとして扱われています。それらはより要求の厳しいレンダリング計算を必要とし、それ故に特定のシェーダに制限されます。将来的には、Terragenが完全なレイ/パストレースっ手法に向かって移行するにつれて、うまく統合されるでしょう。

デフォルトシェーダを基本シェーディングに使用した後に、レイトレースによる屈折透明度や鏡面反射の特性を追加する場合は、『Default Shader』が『Surface Shader』に入力する前に、『Glass Shader』や『Reflective Shader』を追加して下さい。
Reflectivity 反射率 この設定は、サーフェスの反射または光沢の量をコントロールします。このパラメータは"Reflectivity"の色と"Reflection tint"の色に対するフィルタのように機能します。白は全反射を意味します。黒は反射が無い、つまり完全につや消しのサーフェスを意味します。
反射色では、R、G、Bの各チャンネルのサーフェスの反射率を個別にコントロールする事が出来ます。反射色を均等に適用したい場合は、反射色をグレー色に設定する必要があります。グレー以外の色を使用すると、反射色の各チャンネルは異なる影響を受けます。例えば、"Reflection tint"の色が純粋な緑(R = 0、G = 1、B = 0)で、"Reflections"の色が純粋な赤(R = 1、G = 0、B = 0)であるとします。この場合、サーフェスは反射しないはずです。色調のGチャンネルは、どの色でも唯一のもので、Gチャンネルの反射率によって0に設定されるためです。
特に必要な場合を除き、"Reflectivity"の色にはグレーの色調を使用するのが最善です。そうすれば効果が把握しやすくなります。
Reflectivity image 反射画像 反射をコントロールするための画像ファイルを選択する事が出来ます。"Reflectivity"のサンプル画像ように、グレースケール画像は反射を均等に制御しますが、カラー画像は反射の色調の各チャンネルに個別に影響します。"Reflectivity"が0の時は、影響を与える事は出来ません。

左画像のオリジナルに対し、右画像は反射させたい部分を指定する画像を割り当てています。
Reflectivity function 反射関数 反射をコントロールするためのFunctionやシェーダを指定する事が出来ます。
Reflection tint 反射の色調 このパラメータを使って反射の色調を設定します。 反射の強さは、上記の"Reflectivity"パラメータによってコントロールされます。
Index of refraction 反射の屈折率 ここで言う屈折率は、サーフェスがどのように光を反射するかをコントロールします。値が大きくなるにつれて、サーフェス全体そのものに当たる光をますます反射します。これは、サーフェスがスペキュラハイライトのあるエリアを超えてより多くの反射の色調を帯びる事を意味します。
Roughness ラフネス このパラメータは、反射されたハイライトがどの程度フォーカスされるかをコントロールします。値が小さいとハイライトが小さく、シャープで焦点を合わせています。値が大きくなるにつれて反射は柔らかくなり、より広がります。
ラフネスの名前の由来は、サーフェスに小さな面が分割され、面のそれぞれが光を反射するようにスペキュラハイライトがシミュレートされるという事実から来ています。ラフネスが小さいと、面のより多くにサーフェス法線の方向が向けられ、サーフェスがより完全な鏡のように作用するため、極小の鋭利な反射をします。 ラフネスが増すにつれて、刻まれた面はサーフェス法線に相対的により多くの方向を向きます。これにより、サーフェスが非常に小さいスケールで粗くなり、反射やハイライトがより柔らかくぼやけて見えます。
Roughness image ラフネス画像 これは読込んだ画像によってコントロールされるため、スライダーは単純な乗数になり、オブジェクトにどの程度「光沢がある」ように見せたいかに影響を与えます。この数値を最大の0.8にする事で、ラフネス画像内の白いものは非常に広い鏡面反射を与え、暗いものは非常にきつい鏡面反射を与えることを意味します。

画像ファイルを使用する事で、任意のエリアにのみラフネス効果を与える事が出来ます。また、ラフネス画像を作成する際、グレー濃度を調整する事で反射時のラフネス効果をコントロールする事も出来ます。
Invert specular roughness image スペキュララフネス画像の反転 すでにグロスマップ画像が用意されている場合は、グロスマップを"Roughness image"に設定しますが、用意されていない場合、ラフネスマップをこの"Invert specular roughness image"を有効にする事で、反射マップや鏡面マップとして使用することを目的としていませんが、ラフネスマップの反転として使用する事が出来ます。この場合、全体の"Roughness"のパラメータ値をおよそ0.8に増やす事をお勧めします。
通常、マップ画像の50%グレーはsRGBカラースペースでは50%グレーのように見えますが、リニアカラー空間では50%グレーではありません。

8ビット(または24ビットRGB)画像を『Default Shader』に読み込むと、その画像はsRGB色空間にあると見なされ、1 / 2.2のガンマ補正が適用されて、ほぼリニアカラー空間に変換されます。シェーダで有効にした反転オプションは、この変換後に発生します。Photoshopで8ビット画像を反転すると、まったく異なる結果が得られます。『Default Shader』では自動で行われるガンマ補正は2.2で固定であるため、補正値を変更したい場合は、"function"で『Image map shader』を使用する必要があります。
Specular roughness function 光沢ラフネス関数 光沢ラフネスをコントロールするためのFunctionやシェーダを指定する事が出来ます。


Displacementタブ

ディスプレースメントは、シェーダに立体形状を与えるものです。 「Displacement」タブには、シェーダのディスプレースメントをコントロールするための設定が含まれています。ディスプレースメントの詳細については、『Surface Layer』の「Displacement」タブを参照して下さい。このタブでも同様の仕様になっています。

『Default Shader』は、"Displacement image"パラメータで指定された画像がある場合、または"Displacement function"パラメータに関連付けられた関数がある場合にのみ、ディスプレースメントを適用します。
Displacement image ディスプレースメント画像 ディスプレースメントをコントロールするための画像ファイルを選択する事が出来ます。画像画素の輝度は変位を発生するために使用されます。

ディスプレースメントマップ画像と別に、バンプマップ画像が用意されている場合は"function"を使用して2つのマップ画像を使う事でさらにディティールを追加する事も出来ます。この2つの変位画像の扱いについては、将来のバージョンでデフォルト仕様として対応する予定です。


Opacityタブ

「Opacity」タブには、シェーダの不透明度に影響を与える設定があります。不透明度を半透明(Transparency)の反対であると捉えておくと理解しやすいでしょう。
Opacity 不透明度 このパラメータは、シェーダの全体的な不透明度を設定します。値が1の場合、シェーダは完全に不透明となり、値が0の場合、画像が完全に透明である事を意味します。
現行のバージョンでは(TG 4.3)、グレーの透明度のレンダリングに対応していないため、完全な透明(明るいピクセルはすべて白の1)か、完全な不透明(暗いピクセルはすべて黒の0)に変換されます。
Opacity image 不透明画像 不透明度をコントロールするための画像ファイルを選択する事が出来ます。
Use alpha channel アルファチャンネルを使用 チェック時、カラーチャンネルではなく、指定された画像ファイルのアルファチャンネルを不透明度として使用します。
RGBチャンネルまたはグレースケールチャンネルに不透明度情報を含む専用の透明度/不透明度画像がある場合(判断はユーザに委ねられますが)、このパラメータを使用しないで下さい。例えば独自のアルファチャンネルを持つ拡散色画像があるとして、不透明度情報がアルファチャンネルに保存されている場合は、それが使用されまます。
Invert opacity image 不透明画像の反転 チェック時、不透明度画像の白/黒が反転します。上記画像を例にとると、葉っぱの形状がくり貫かれた形になります。
Opacity function 不透明関数 不透明度をコントロールするためのFunctionやシェーダを指定する事が出来ます。
Alpha from colour 拡散色からアルファ チェック時、シェーダは"Colour image"パラメータで指定された画像や"Colour function"パラメータに接続されたシェーダからの色に基づいて不透明度を生成します。不透明度に使用される色は、アルファキーパラメータで設定されます。
半透明や不透明画像をしている場合は、このパラメータを使用しないで下さい。これは、グリーンスクリーンやブルースクリーンのキーヤーのように機能する特殊な仕掛けです。不透明度マップ画像がない場合の最後の手段として使用して下さい。

左画像は、拡散色と背景が同系の色なのでキーを設定してもなかなか上手く切り取る事が出来ません。
Alpha key アルファーキー このパラメータは、不透明度を生成するために使用する色を設定します。例えば、緑色の領域を透明にしたい場合は、アルファーキーを緑色に設定します。
Key tolerance キーの許容範囲 不透明度を生成するためのアルファキーの近似色をいくつ使用するかをコントロールします。


Imagesタブ

このタブには、シェーダの異なる面で使用される様々な画像に関する設定があります。
Image projection 画像投影 このポップアップで、画像をシーンに投影または適用する方法をコントロールします。シェーダによって使用されるすべての画像は、このパラメータに従って投影されます。以下の投影オプションがあります:
-Plan Y (edges = XZ): 画像を直下にY軸に沿ってシーンの縦方向に投影します。
-Side X (edges = YZ): 画像をX軸に沿ってシーン内を水平に投影します。
-Size Z (edges = XY): 画像をZ軸に沿ってシーン内を水平に投影します。
-Through camera: 画像は、"Projection camera"パラメータで指定したカメラを通して投影します。
-Object UV (if available): 平面画像を不規則な形状のモデルに貼り付けるための方法であり、オブジェクトファイルの中に2D(平面)のUV座標を持っているインポートオブジェクトのために使用します。TGには UVマップを生成する機能がないため、外部ツール(たとえば『World Machine』など)を使用する必要があります。マップ座標が(x,y)に対して頂点座標は(u,v)で表します。UV座標はテクスチャの縦、横の幅を1とした時の比率で表記されます。
-Cylindrical: 円柱投影はオブジェクトを包み込む様な投影に有効ですが、平面、凹凸のあるオブジェクトには不向きです。
-Spherical: 球面投影は球体オブジェクトに対し歪みの無い投影を行いますが、オブジェクトの形状により円柱投影の方が汎用に扱う事が出来ます。
デフォルトは、"Object UV (if available)"が設定されています。
Projection camera 投影カメラ この設定で、"Projection type"が"Through camera"に設定されている時、画像投影に使用するカメラを割り当てる事が出来ます。既存のカメラを選択するか、新しいカメラを作成するには、フィールド右側にある割り当てボタン()を使用します。画像の投影にのみ使用するカメラを作成する事が出来ます。このフィールドにどのカメラも設定されていない場合は、現在シーンをビューしている『Render Camera』が自動的に割り当てられます。
Unpremultiply colour アンプリマルチプライ拡散色 これらのチェックボックスはすべて、対応する画像パラメータに適用されます。例えば、"Unpremultiply colour"のチェックボックスは拡散色画像パラメータに適用されます。チェック時、使用する画像はアンプリマルチプライド処理を行います。いくつかの画像はプリマルチプライドアルファを使用し、それらがアンプリマルチプライドされていないのでなければ誤った結果を与えるかもしれません。画像にアルファチャンネルがない事が判っている場合はチェックの必要はありません。
これらの処理は、アルファチャンネルを使用してテクスチャを裁断した時に生じる柄際のフリンジを、縁をぼかしたり(プリマルチプライド処理)、くっきりさせたり(アンプリマルチプライド処理)する事で抑える効果が得られます。これらについては、「[Render layer]」の"コンポジター(合成)について"を参照して下さい。
Unpremultiply translucency アンプリマルチプライ半透明
Unpremultiply luminosity アンプリマルチプライ光度
Unpremultiply reflectivity アンプリマルチプライ反射
Unpremultiply specular roughness アンプリマルチプライ・スペキュララフネス