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の章を参照してください。
チェックすると、DiffuseパラメータをAmbientに使用します。
素材から反射する拡散光の色を設定します。
- Red / diffr
- Green / diffg
- Blue / diffb
素材から反射する環境光の色を設定します。
- Red / ambr
- Green / ambg
- Blue / ambb
素材から反射される鏡面反射光の色を設定します。光沢のある物体のハイライトの色を変えることができる。
- Red / specr
- Green / specg
- Blue / specb
光がない状態でも素材が発光する色を設定します。
- Red / emitr
- Green / emitg
- Blue / emitb
最終色に追加します。ポイントカラーがある場合、finalcolor += Point Color * Constant Colorとなります。これは、1 1 1 の環境照明があるように動作します。テクスチャや透明度の影響は受けません。
- Red / constantr
- Green / constantg
- Blue / constantb
オブジェクトのスペキュラハイライト(光沢感)をコントロールします。設定を高くすると、プラスチックや光沢のある金属のように、より光沢のある仕上がりになります。低い設定では、よりマットな仕上がりになります。
すべてのライティング計算の結果を乗算するTOPテクスチャーを設定します。このマップのアルファは、オブジェクトのアルファを計算する際の一部として使用されます。マップフィールドの右側にある矢印をクリックすると、カラーマップのTexture Sampling パラメータが表示されます。以下の他のMapパラメータも同様に、それぞれのTexture Sampling パラメータを持ちます。
共通 Texture Sampling パラメータの章を参照してください。
TOPからのノーマルマップを使用して、凹凸効果を作り出します。バンプマップは、サーフェスのバンプやシワをシミュレートして、3Dの凹凸効果を与えるものです。この機能を使用するには、ジオメトリにタンジェント アトリビュートが作成されている必要があります(T[4])。これは Attribute Create SOP を使用して作成します。
共通 Texture Sampling パラメータの章を参照してください。
Normal Mapパラメータで作成された「バンプ効果」の倍率を設定します。
ハイトマップを有効にします。
ハイトテクスチャマップを設定します。ハイトマップはノーマル マップと併用してパララックスマッピングを行います。
共通 Texture Sampling パラメータの章を参照してください。
ハイトマップに適用されるスケール値。効果を大きくしたり、誇張したりするのに使用できます。
視差オクルージョンを有効にします。これは、ハイトマップで使用される視差マッピング技術の強化です。視差オクルージョンは、視差マッピングのテクスチャオフセットの品質を向上させ、ハイトマップの高い部分が低い部分を遮っているように見えるため、高さの錯覚が起こりやすくなります。
上記の Enable Height Map が On の場合、Displace Vertices を On に設定すると、Height Map テクスチャと以下のパラメータに基づいてジオメトリの頂点が変位する、真のディスプレイスメントマッピングが有効になります。
置換量の倍率を設定します。
ディスプレイスメントマップの中間点を、ディスプレイスメントエフェクトの開始位置として設定します。
Diffuse カラーパラメータに乗算されるTOPテクスチャを設定します。オブジェクトはテクスチャUVを持っている必要があります。このマップのアルファは無視されます。
共通 Texture Sampling パラメータの章を参照してください。
マテリアルのSpecularカラーパラメータに乗算されるTOPテクスチャを設定します。オブジェクトはテクスチャUVを持っている必要があります。このマップのアルファは無視されます。
共通 Texture Sampling パラメータの章を参照してください。
マテリアルのEmitカラーパラメータと乗算されるTOPテクスチャを設定します。オブジェクトはテクスチャUVを持っている必要があります。このマップのアルファは無視されます。
共通 Texture Sampling パラメータの章を参照してください。
TOPテクスチャーを使用して、マテリアルの環境マップを定義します。環境マッピングは、オブジェクトが周囲の環境を反射するのをシミュレートします。このパラメータで設定されたTOPは、反射されるテクスチャです。環境マップは、通常の照明に追加されるので、オブジェクトを純粋に反射させるには、DiffuseとSpecularパラメータを0にしてください。球体マップの例はこちらをご覧ください。この入力は、Cube Map TOPまたはRender TOPのRender Cube Mapパラメータで作成されたキューブマップも受け付けます。
共通 Texture Sampling パラメータの章を参照してください。
この色に上記のEnvironment Mapパラメータで設定したテクスチャが乗算されます。
- Red / envmapcolorr
- Green / envmapcolorg
- Blue / envmapcolorb
上記のEnvironment Mapパラメータで設定したテクスチャを回転させます。
- X / envmaprotatex
- Y / envmaprotatey
- Z / envmaprotatez
環境マップのタイプとして、SphereマップかEquirectangularマップかを選択します。
- Sphere Map / spheremap
- Equirectangular / equirect
ポリゴンの法線を使って、ポリゴンの表面をどのようにライティングするか設定します。詳しくは、Tow-Sided Lightingの章を参照してください。
- Use Per-Light(s) Parameter / uselight
- Front Lit / frontlit
- Back Lit / backlit
ポリゴンの法線を使って、ポリゴンの裏面をどのようにライティングするか設定します。詳しくは、Tow-Sided Lightingの章を参照してください。
- Use Per-Light(s) Parameter / uselight
- Front Lit / frontlit
- Back Lit / backlit
このボタンをクリックすると、ダイアログが表示され、Phong MATが現在作成しているエフェクトにマッチするシェーダーコードを含むGLSL MATとText DATが作成されます。シェーダはライトの数や種類に依存するため、現在のシステムで使用されているライティング構成に基づいて、いくつかの異なるシェーダの選択肢が表示されます。ダイアログにシェーダーが表示されない場合は、TouchDesignerの現在のセッションでシェーダーがレンダリングされていないことを意味します。Phong MATのビューアをオンにするか、Render TOPでレンダリングをセットアップします。そうすると、いくつかのシェーダーが作成/コンパイルされ、リストが入力されます。例えば、シャドウマッピングを行うシェーダーを見たい場合は、シャドウマッピングを行うレンダリングをセットアップすると、リストに表示されます。
注意:オブジェクトにアルファを適用しただけでは、透明にはなりません。詳しくはTranceparencyの項目を参照してください。
このマップは、オブジェクトのアルファを乗算します。マップのrチャンネルを使用し、他のチャンネルは無視されます。
共通 Texture Sampling パラメータの章を参照してください。
これをオフにすると、各ポリゴンの法線のカメラに対する向きに応じて、アルファ値が変化します。カメラに向かっている法線は、ポリゴンのアルファ値が Alpha Front になります。カメラに対して垂直な方向(横や上下を向いている)の法線は、アルファ値が Alpha Side になります。
マテリアルの不透明度を指定します。このパラメータには、オブジェクトのポイントアルファが掛けられます(他のアルファソースも同様)。
これは、不均一なアルファに使用されます。 カメラの反対側を向いているポリゴンが取得するアルファ値です。
Alpha Front から Alpha Side へのアルファの変化をコントロールします。
すべての計算の最後に、カラー(RGB)に計算されたアルファが乗算されます。このトグルをオフにすることで、この現象を防ぐことができます。
これを有効にすると、ライティングの輝度にアルファ値を乗じて減少/増加させることができます。
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
これらのマップの結果のアルファが使用されます。
マルチテクスチャーを有効にします。Color Mapパラメーターを無効にします。
マルチテクスチャには、最大4つのテクスチャを設定できます。
共通 Texture Sampling パラメータの章を参照してください。
マルチテクスチャには、最大4つのテクスチャを設定できます。
共通 Texture Sampling パラメータの章を参照してください。
マルチテクスチャには、最大4つのテクスチャを設定できます。
共通 Texture Sampling パラメータの章を参照してください。
マルチテクスチャには、最大4つのテクスチャを設定できます。
共通 Texture Sampling パラメータの章を参照してください。
テクスチャイメージを合成するGLSLコード(詳細はこのセクションの冒頭を参照してください)。このパラメータは空白にすることもできます(つまり、マップは単に掛け合わされるだけです)。
他のリムライトもパラメータは同じで、内部のパラメータ名が1ではなく違う数字になっているだけです。
このリムライトを有効にします。
このマップでは、計算されたリムライトの色が複数になります。
共通 Texture Sampling パラメータの章を参照してください。
リムライトの色を設定します。
- Red / rim1colorr
- Green / rim1colorg
- Blue / rim1colorb
360度の円上のどこかに位置する、リムライトの中心となる場所を設定します。
リムライトがセンターからどれだけ離れているか設定します。
リムライトの明るさを調整します。
水平方向のランプを設定して(v = 0.5でテクスチャをサンプリングします)、リムライトの強さをコントロールすることができます。
このパラメータは、影の中にいることでライティングの色がどの程度変化するかを制御します。1の場合、オブジェクトは影の色のパラメータを受け継ぎ、0の場合は影があっても影がないかのように振る舞います。
影の部分に使用する色を設定します。
- Red / shadowcolorr
- Green / shadowcolorg
- Blue / shadowcolorb
Phong MATは、ライト、リムライト、エミッションなどを考慮した上で、オブジェクトの現在の色の明るさを計算します。そして、この明るさ(0~1の間)を使用して、ダークネス・エミット・カラーをフェードインします。エリアが暗いほど、ダークネス・エミット・カラーが多く適用されます。
暗くなっている部分に使用する色を設定します。
- Red / darknessemitcolorr
- Green / darknessemitcolorg
- Blue / darknessemitcolorb
このマップは、Darkness Emit Colorを乗算します。このマップのアルファは 使用されません。
共通 Texture Sampling パラメータの章を参照してください。
ニ次的なスペキュラハイライトカラーを追加します。
- Red / spec2r
- Green / spec2g
- Blue / spec2b
オブジェクトの二次的なスペキュラハイライト(光沢)をコントロールします。設定を高くすると、プラスチックや光沢のある金属のように、より光沢のある仕上がりになります。低い設定では、よりマットな仕上がりになります。
これにより、ピクセルのカメラス ペース デプスが、出力TOPのアルファチャンネルに書き込まれます。この値は、ポストプロセス効果に役立ちますが、もちろん、これをオンにした場合、すべてのアルファ計算の結果は得られません(ただし、Post-Mult Color by Alphaが有効になっている場合、出力色を乗算するために使用されます)。
通常はSOPから送られてくるカラーアトリビュート(Cd[4])を照明計算に使用しますが、このパラメータのチェックを外すことでカラーアトリビュートの使用をオフにすることができます。
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
法線やディフューズカラーなどを、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 ページ
参照:共通 Common ページ