Phong MAT

概要

Phong MATは、Phong Shadingモデルを使用してマテリアルを作成します。テクスチャ、反射、バンプ、コーン・ライト、リム・ライト、アルファ・マップなどをサポートしています。そのGLSLシェーディングを2つのDATに出力し、Output Shaderパラメータを使って、GLSL MATでさらに適応させることができます。
Phong Shadingは、3種類の反射光をモデル化します。

– Ambient
Ambient(環境光)とは、特定の方向からの光ではなく、表面全体で一定の光であると考えられます。物理的な世界では、環境中の表面で光が反射することで環境光が発生します。

– Diffuse
Diffuse(ディフューズ)は、マットな表面で反射する光をモデル化したものです。この光はすべての方向に均等に反射されるため、観察者の位置が知覚される照度に影響を与えません。

– Specular –
Specular(スペキュラ)は、光沢のある表面で反射する光をモデル化したものです。この光は主に反射光線の方向に反射され、物体のshiny-nessによって減衰されます。表面からの反射光は主に反射光線の方向にあるので、観察者の位置によって、表面のスペキュラハイライトが決まります。

注:私たちが物の色を見ているのは、素材が反射する光の色によるものです。

Phongシェーディングは、物理的に正確ではないものの、非常に美しいスペキュラハイライトを生成します。各頂点でライティングを計算し、ポリゴン全体でその値を補間するグローシェーディングモデルとは対照的に、Phongは各ピクセルでライティングを計算します。
それぞれのパーツがどのようにして組み合わされるのかは、Phong Lighting Equationの章を参照してください。

パラメータ – RGB ページ
Ambient uses Diffuse / ambdiff

チェックすると、DiffuseパラメータをAmbientに使用します。

Diffuse / diff

素材から反射する拡散光の色を設定します。

  • Red / diffr
  • Green / diffg
  • Blue / diffb
Ambient / amb

素材から反射する環境光の色を設定します。

  • Red / ambr
  • Green / ambg
  • Blue / ambb
Specular / spec

素材から反射される鏡面反射光の色を設定します。光沢のある物体のハイライトの色を変えることができる。

  • Red / specr
  • Green / specg
  • Blue / specb
Emit / emit

光がない状態でも素材が発光する色を設定します。

  • Red / emitr
  • Green / emitg
  • Blue / emitb
Constant / constant

最終色に追加します。ポイントカラーがある場合、finalcolor += Point Color * Constant Colorとなります。これは、1 1 1 の環境照明があるように動作します。テクスチャや透明度の影響は受けません。

  • Red / constantr
  • Green / constantg
  • Blue / constantb
Shininess / shininess

オブジェクトのスペキュラハイライト(光沢感)をコントロールします。設定を高くすると、プラスチックや光沢のある金属のように、より光沢のある仕上がりになります。低い設定では、よりマットな仕上がりになります。

Color Map / colormap

すべてのライティング計算の結果を乗算するTOPテクスチャーを設定します。このマップのアルファは、オブジェクトのアルファを計算する際の一部として使用されます。マップフィールドの右側にある矢印をクリックすると、カラーマップのTexture Sampling パラメータが表示されます。以下の他のMapパラメータも同様に、それぞれのTexture Sampling パラメータを持ちます。
共通 Texture Sampling パラメータの章を参照してください。

Normal Map (Bump) / normalmap

TOPからのノーマルマップを使用して、凹凸効果を作り出します。バンプマップは、サーフェスのバンプやシワをシミュレートして、3Dの凹凸効果を与えるものです。この機能を使用するには、ジオメトリにタンジェント アトリビュートが作成されている必要があります(T[4])。これは Attribute Create SOP を使用して作成します。
共通 Texture Sampling パラメータの章を参照してください。

Bump Scale / bumpscale

Normal Mapパラメータで作成された「バンプ効果」の倍率を設定します。

Enable Height Map / heightmapenable

ハイトマップを有効にします。

Height Map / heightmap

ハイトテクスチャマップを設定します。ハイトマップはノーマル マップと併用してパララックスマッピングを行います。
共通 Texture Sampling パラメータの章を参照してください。

Parallax Scale / parallaxscale

ハイトマップに適用されるスケール値。効果を大きくしたり、誇張したりするのに使用できます。

Parallax Occlusion / parallaxocclusion

視差オクルージョンを有効にします。これは、ハイトマップで使用される視差マッピング技術の強化です。視差オクルージョンは、視差マッピングのテクスチャオフセットの品質を向上させ、ハイトマップの高い部分が低い部分を遮っているように見えるため、高さの錯覚が起こりやすくなります。

Displace Vertices / displaceverts

上記の Enable Height Map が On の場合、Displace Vertices を On に設定すると、Height Map テクスチャと以下のパラメータに基づいてジオメトリの頂点が変位する、真のディスプレイスメントマッピングが有効になります。

Displace Scale / displacescale

置換量の倍率を設定します。

Displace Midpoint / displacemid

ディスプレイスメントマップの中間点を、ディスプレイスメントエフェクトの開始位置として設定します。

Diffuse Map / diffusemap

Diffuse カラーパラメータに乗算されるTOPテクスチャを設定します。オブジェクトはテクスチャUVを持っている必要があります。このマップのアルファは無視されます。
共通 Texture Sampling パラメータの章を参照してください。

Specular Map / specmap

マテリアルのSpecularカラーパラメータに乗算されるTOPテクスチャを設定します。オブジェクトはテクスチャUVを持っている必要があります。このマップのアルファは無視されます。
共通 Texture Sampling パラメータの章を参照してください。

Emit Map / emitmap

マテリアルのEmitカラーパラメータと乗算されるTOPテクスチャを設定します。オブジェクトはテクスチャUVを持っている必要があります。このマップのアルファは無視されます。
共通 Texture Sampling パラメータの章を参照してください。

Environment Map / envmap

TOPテクスチャーを使用して、マテリアルの環境マップを定義します。環境マッピングは、オブジェクトが周囲の環境を反射するのをシミュレートします。このパラメータで設定されたTOPは、反射されるテクスチャです。環境マップは、通常の照明に追加されるので、オブジェクトを純粋に反射させるには、DiffuseとSpecularパラメータを0にしてください。球体マップの例はこちらをご覧ください。この入力は、Cube Map TOPまたはRender TOPのRender Cube Mapパラメータで作成されたキューブマップも受け付けます。
共通 Texture Sampling パラメータの章を参照してください。

Environment Map Color / envmapcolor

この色に上記のEnvironment Mapパラメータで設定したテクスチャが乗算されます。

  • Red / envmapcolorr
  • Green / envmapcolorg
  • Blue / envmapcolorb
Environment Map Rotate / envmaprotate

上記のEnvironment Mapパラメータで設定したテクスチャを回転させます。

  • X / envmaprotatex
  • Y / envmaprotatey
  • Z / envmaprotatez
Environment Map 2D Type / envmaptype2d

環境マップのタイプとして、SphereマップかEquirectangularマップかを選択します。

  • Sphere Map / spheremap
  • Equirectangular / equirect
Polygon Front Faces / frontfacelit

ポリゴンの法線を使って、ポリゴンの表面をどのようにライティングするか設定します。詳しくは、Tow-Sided Lightingの章を参照してください。

  • Use Per-Light(s) Parameter / uselight
  • Front Lit / frontlit
  • Back Lit / backlit
Polygon Back Faces / backfacelit

ポリゴンの法線を使って、ポリゴンの裏面をどのようにライティングするか設定します。詳しくは、Tow-Sided Lightingの章を参照してください。

  • Use Per-Light(s) Parameter / uselight
  • Front Lit / frontlit
  • Back Lit / backlit
Output Shader… / outputshader

このボタンをクリックすると、ダイアログが表示され、Phong MATが現在作成しているエフェクトにマッチするシェーダーコードを含むGLSL MATとText DATが作成されます。シェーダはライトの数や種類に依存するため、現在のシステムで使用されているライティング構成に基づいて、いくつかの異なるシェーダの選択肢が表示されます。ダイアログにシェーダーが表示されない場合は、TouchDesignerの現在のセッションでシェーダーがレンダリングされていないことを意味します。Phong MATのビューアをオンにするか、Render TOPでレンダリングをセットアップします。そうすると、いくつかのシェーダーが作成/コンパイルされ、リストが入力されます。例えば、シャドウマッピングを行うシェーダーを見たい場合は、シャドウマッピングを行うレンダリングをセットアップすると、リストに表示されます。

パラメータ – Alpha ページ

注意:オブジェクトにアルファを適用しただけでは、透明にはなりません。詳しくはTranceparencyの項目を参照してください。

Alpha Map / alphamap

このマップは、オブジェクトのアルファを乗算します。マップのrチャンネルを使用し、他のチャンネルは無視されます。
共通 Texture Sampling パラメータの章を参照してください。

Uniform Alpha / alphamode

これをオフにすると、各ポリゴンの法線のカメラに対する向きに応じて、アルファ値が変化します。カメラに向かっている法線は、ポリゴンのアルファ値が Alpha Front になります。カメラに対して垂直な方向(横や上下を向いている)の法線は、アルファ値が Alpha Side になります。

Alpha Front / alphafront

マテリアルの不透明度を指定します。このパラメータには、オブジェクトのポイントアルファが掛けられます(他のアルファソースも同様)。

Alpha Side / alphaside

これは、不均一なアルファに使用されます。 カメラの反対側を向いているポリゴンが取得するアルファ値です。

Alpha Rolloff / rolloff

Alpha Front から Alpha Side へのアルファの変化をコントロールします。

Post-Mult Color by Alpha / postmultalpha

すべての計算の最後に、カラー(RGB)に計算されたアルファが乗算されます。このトグルをオフにすることで、この現象を防ぐことができます。

Mult Alpha by Light Luminance / alphamultlight

これを有効にすると、ライティングの輝度にアルファ値を乗じて減少/増加させることができます。

パラメータ – Multi-Texturing ページ

PhongマテリアルのMulti-texturingページでは、最大4つのテクスチャマップを持ち、各マップに8つのテクスチャ座標を選択することができます。デフォルトでは、テクスチャマップは互いに乗算されますが、カスタムGLSLコードを使用するためのフィールドがあります。その仕組みは以下の通りです。
4つのテクスチャマップは、パラメータの中でそれぞれt0、t1、t2、t3と呼ばれています。つまり、4つのテクスチャマップがすべて使用されている場合のデフォルトの式は、「t0 * t1 * t2 * t3」となります。t0 * t1 * t2 * t3 定数やその他の演算子も使用できるので、例えばt0 + (t1 * 0.5) は有効です。存在しないマップを参照している場合、シェーダは正しくコンパイルされません(例:t3が設定されていない場合やTOPが存在しない場合にt3を使用する)。
また、.r .g .b と .a を使って、テクスチャの特定のコンポーネントを参照することもできます。たとえば、t1 の上に t0 を実行したい場合、表現は次のようになります。

t0 + (t1 * (1.0 – t0.a))

式からの出力はvec4でなければならないので、例えば次のようになります。

t0.rgb + t1.rgb // Error
vec4(t0.rgb + t1.rgb, 1.0) // Works

これらのマップの結果のアルファが使用されます。

Multi-Texturing (Disables Color Map) / multitexturing

マルチテクスチャーを有効にします。Color Mapパラメーターを無効にします。

Texture 1 / texture1

マルチテクスチャには、最大4つのテクスチャを設定できます。
共通 Texture Sampling パラメータの章を参照してください。

Texture 2 / texture2

マルチテクスチャには、最大4つのテクスチャを設定できます。
共通 Texture Sampling パラメータの章を参照してください。

Texture 3 / texture3

マルチテクスチャには、最大4つのテクスチャを設定できます。
共通 Texture Sampling パラメータの章を参照してください。

Texture 4 / texture4

マルチテクスチャには、最大4つのテクスチャを設定できます。
共通 Texture Sampling パラメータの章を参照してください。

GLSL Expression / multitexexpr

テクスチャイメージを合成するGLSLコード(詳細はこのセクションの冒頭を参照してください)。このパラメータは空白にすることもできます(つまり、マップは単に掛け合わされるだけです)。

パラメータ – Rim ページ

他のリムライトもパラメータは同じで、内部のパラメータ名が1ではなく違う数字になっているだけです。

Enable Rim Light 1 / rim1enable

このリムライトを有効にします。

Rim Color Map / rim1map

このマップでは、計算されたリムライトの色が複数になります。
共通 Texture Sampling パラメータの章を参照してください。

Rim Color / rim1color

リムライトの色を設定します。

  • Red / rim1colorr
  • Green / rim1colorg
  • Blue / rim1colorb
Rim Center / rim1center

360度の円上のどこかに位置する、リムライトの中心となる場所を設定します。

Rim Width / rim1width

リムライトがセンターからどれだけ離れているか設定します。

Rim Strength / rim1strength

リムライトの明るさを調整します。

Rim Strength Ramp / rim1strengthramp

水平方向のランプを設定して(v = 0.5でテクスチャをサンプリングします)、リムライトの強さをコントロールすることができます。

パラメータ – Advanced ページ
Shadow Strength / shadowstrength

このパラメータは、影の中にいることでライティングの色がどの程度変化するかを制御します。1の場合、オブジェクトは影の色のパラメータを受け継ぎ、0の場合は影があっても影がないかのように振る舞います。

Shadow Color / shadowcolor

影の部分に使用する色を設定します。

  • Red / shadowcolorr
  • Green / shadowcolorg
  • Blue / shadowcolorb
Darkness Emit / darknessemit

Phong MATは、ライト、リムライト、エミッションなどを考慮した上で、オブジェクトの現在の色の明るさを計算します。そして、この明るさ(0~1の間)を使用して、ダークネス・エミット・カラーをフェードインします。エリアが暗いほど、ダークネス・エミット・カラーが多く適用されます。

Darkness Emit Color / darknessemitcolor

暗くなっている部分に使用する色を設定します。

  • Red / darknessemitcolorr
  • Green / darknessemitcolorg
  • Blue / darknessemitcolorb
Darkness Emit Map / darknessemitmap

このマップは、Darkness Emit Colorを乗算します。このマップのアルファは 使用されません。
共通 Texture Sampling パラメータの章を参照してください。

Secondary Specular / spec2

ニ次的なスペキュラハイライトカラーを追加します。

  • Red / spec2r
  • Green / spec2g
  • Blue / spec2b
Secondary Shininess / shininess2

オブジェクトの二次的なスペキュラハイライト(光沢)をコントロールします。設定を高くすると、プラスチックや光沢のある金属のように、より光沢のある仕上がりになります。低い設定では、よりマットな仕上がりになります。

Write Camera Space Depth to Alpha / writecameradepthtoalpha

これにより、ピクセルのカメラス ペース デプスが、出力TOPのアルファチャンネルに書き込まれます。この値は、ポストプロセス効果に役立ちますが、もちろん、これをオンにした場合、すべてのアルファ計算の結果は得られません(ただし、Post-Mult Color by Alphaが有効になっている場合、出力色を乗算するために使用されます)。

Apply Point Color / applypointcolor

通常はSOPから送られてくるカラーアトリビュート(Cd[4])を照明計算に使用しますが、このパラメータのチェックを外すことでカラーアトリビュートの使用をオフにすることができます。

Instance Texture / instancetexture

Geometry COMPでインスタンスごとのテクスチャを設定する場合、このパラメータはインスタンスのテクスチャがどのマップとして適用されるかを設定します。

  • Color Map / colormap
  • Normal Map / normalmap
  • Diffuse Map / diffusemap
  • Specular Map / specmap
  • Emit Map / emitmap
  • Alpha Map / alphamap
  • Darkness Emit Map / darknessemitmap
  • Rim 1 Color Map / rim1map
Color Buffer 1 RGB / colorbuffer1rgb

法線やディフューズカラーなどを、1パスで異なるRender TOPのカラーバッファに送ることができます。

  • Zero / zero
  • One / one
  • World Space Position / worldspaceposition
  • World Space Normal / worldspacenormal
  • Camera Space Position / cameraspaceposition
  • Camera Space Normal / cameraspacenormal
  • Point Color / pointcolor
  • Texture Coord 0 / texturecoord0
  • Diffuse Map / diffusemap
  • Normal Map / normalmap
  • Spec Map / specmap
  • Emit Map / emitmap
  • Emit Color / emitcolor
  • Diffuse Color / diffcolor
  • Diffuse Lighting / difflighting
  • Final Diffuse Color / finaldiffcolor
  • Specular Color / speccolor
  • Specular 2 Color / spec2color
  • Specular Lighting / speclighting
  • Specular 2 Lighting / spec2lighting
  • Final Specular Color / finalspeccolor
  • Shadow Strength / shadowstrength
  • Normalized Shadow Strength / normalizedshadowstrength
パラメータ – Deform ページ

参照:共通 Deform ページ

パラメータ – Common ページ

参照:共通 Common ページ