On this page |
概要 ¶
OpenGLシェーダは、Houdiniがビューポート内にマテリアルを表示しようとした時にビデオカードで処理されるハードウェアアクセラレータのシェーダです。 OpenGLシェーダはビューポート(とビューポートフリップブック)にのみ影響を与え、画像のレンダリングには使われません。
ビューポート内でマテリアルをもっと上手く表現できるようにするには、マテリアルのパラメータにそれ相当のGLプロパティをタグ付けします。 または、GLSLで独自のOpenGLシェーダを記述して、それをマテリアル内に入れます。
マテリアルパラメータにビューポートプロパティをタグ付けする方法 ¶
概要 ¶
ビューポートシェーダは、マテリアルのVOPネットワークを評価 しません 。 代わりに、特定のOpenGLプロパティの表現としてタグ付けしたマテリアルのパラメータの値だけを使用します。
ビューポートシェーダは、パラメータやテクスチャを表現したシェーディングプロパティに幅広く対応しています。 マテリアルにGLのタグとパラメータを使用することで、独自のGLSLシェーダを記述することなくビューポートシェーダに使用させるパラメータを伝えることができます。
マテリアルに Base Color パラメータがあると仮定すると、そのパラメータをogl_diff
としてタグ付けすることで、ビューポートシェーダは、そのカラーをDiffuse Colorとして使用するようになります。
-
1個のパラメータに2個以上のGLタグを付けることができます。例えば、マテリアルの Base Color をOpenGLのdiffuse、specular、ambientのライティングカラーに紐付けることができます。
-
ビューポートシェーダは、タグ付けされていないパラメータを無視します。
-
すべてのマテリアルプロパティを表示するには、ユーザは、Houdiniビューポートで High Quality Lighting を有効にしなければなりません。 Normal Quality Lighting は、パフォーマンスを良くするためにそれより少ないマテリアルパラメータに対応しています。
-
すべてのプロパティを指定する必要はありません。定数でシェーダパラメータを持たないプロパティに関しては、代わりにGLパラメータ(Edit Rendering Parameters > Material Options > OpenGL)を使用します。
例えば、マテリアルにGGXスペキュラーモデルを使用したいのであれば、Specular Model GLパラメータを追加して、それを“GGX”に設定することができます。
Houdiniに同梱されているマテリアルには既にOpenGLタグがセットアップされています。 Principled Materialなどの既製マテリアルを使用する場合には、OpenGLタグをセットアップする必要はありません 。 とはいえ、独自マテリアルを作成する場合には、マテリアルのビューポート表示を良くするために、マテリアルパラメータをタグ付けしてください。
デフォルトのビューポートシェーダは、(ポリゴンベースのジオメトリに対して)以下の特性に対応しています:
-
色々なシェーディングモデルを使ったPBRレンダリングまたは非現実的なレンダリング
-
カラーやライティングを調整するためのテクスチャマップ:
-
Diffuse
-
Specular
-
Normal/Bump
-
Metallic
-
CoatReflections
-
Opacity
-
Occlusion
-
Roughness
-
Reflection
-
Environment
-
-
適切なレイヤーの透明度
-
ディスプレイスメントマッピング
-
シャドウ: ポイント、スポット、エリア
-
アンビエントオクルージョン
-
反射
OpenGLタグは、Key-Valueパラメータで実装されていますが、現在のところ、その値は使用されていません。
VOPマテリアルのパラメータをタグ付けする方法 ¶
基本的なビューポートシェーディングプロパティ ¶
Diffuse ¶
ディフューズ ライティングは、いくつかのGLプロパティによって制御します。このディフューズライティングモデルはOren-Nayarです。これは基本的なLambertモデルよりも若干現実的なモデルです。
Diffuse |
ディフューズライティングコンポーネントに色付ける(乗算する)カラー。指定しなかった場合、Display Optionsの Diffuse Color が使用されます。 |
Diffuse Intensity |
この係数とディフューズライティングを乗算することで、そのディフューズライティングの強度を調整します。 |
Enable Diffuse |
有効にするとマテリアルにディフューズコンポーネントが含まれ、無効にするとディフューズライティングが無効(Diffuseコンポーネントが0)になります。 |
Diffuse Roughness |
Oren-NayarモデルにはDiffuse Roughnessパラメータがあります。これは主に直接角からグレージング角(接平面と入射光線がなす角)までの減衰に影響を与えます。 このパラメータの範囲は0から1で、1は非常に緩やかな減衰で、ほぼ粘土のようなフラットな見た目になります。 |
Diffuse Textures |
ディフューズ上にテクスチャを乗せることができます。 すべてのテクスチャは、ディフューズカラーで色付けられ、Diffuse Intensityで調整されます。 ベースのディフューズテクスチャは、 Use Diffuse Map Alpha が無効でない限り、そのアルファチャンネルを使ってマテリアルの透明度に影響を与えます。 それ以外のすべてのディフューズレイヤーは、Over演算を使って、ベースレイヤーの上に重ねられます。 |
Diffuse UV Sets ( |
各ディフューズテクスチャには、 |
Specular ¶
スペキュラー 反射は、マテリアルから反射した光を制御します。 スペキュラーモデルには、Phong, Blinn, GGXを選択することができます。 エネルギー保存のために、モデルから反射した光は、Diffuse寄与度を減らし、さらに光の透過も弱くします( 不透明度 が強くなります)。
Specular |
スペキュラーライティングコンポーネントに色付ける(乗算する)カラー。指定しなかった場合、Display Optionsの Specular Color が使用されます。 |
Specular Intensity |
この係数とSpecularライティングを乗算することで、そのスペキュラーライティングの強度を調整します。 |
Enable Specular |
有効にするとマテリアルにスペキュラー反射が発生し、無効にするとマテリアルにスペキュラーライティングがなくなります。 |
Specular Tint |
スペキュラー反射に色付ける スペキュラー カラーの量を制御します。1は通常通りに色付けられ、0に近づけるほど徐々にその色味が消えていきます。 |
Coat Intensity, Coat Roughness, Coat Specular Model |
Coat Intensityが0でない場合、指定したモデルとCoat Roughnessを使って、スペキュラー反射の2番目のレイヤーがマテリアルに加算されます。 |
Inner IOR |
マテリアルのIndex of Refraction(屈折率)。これは、グレージング角(接平面と入射光線がなす角)におけるスペキュラー反射の減衰を調整します。 |
Specular Model |
Specular反射に使用するモデルを定義します。
|
Roughness |
スペキュラー反射の鮮明さを制御します。Roughnessが0に近いマテリアルほど非常に鮮明で明るいスペキュラー反射(光沢の強い金属っぽく)になります。 Roughnessが1に近いマテリアルほど広くぼんやりしたスペキュラー反射になります。 |
Shininess |
Roughness の反対の意味です。これは、 Roughness が有効なら無視されます。 Roughness とは違って、これは0から1の範囲のパラメータではありません。 この範囲は、1(粗い)から無限大(光沢)です。 |
Specular Map |
スペキュラー カラーの乗算に適用できるテクスチャマップ(RGBチャンネルまたは単一チャンネル)。 Specular Tint が0の場合、これは何の効果もありません。 |
Coat Intensity Map, Coat Roughness Map |
Coat Specular IntensityやCoat Roughnessのプロパティに乗算する単一チャンネルテクスチャマップ(そのプロパティが存在しなければ、このテクスチャマップがそのプロパティになります)。 |
Metallic ¶
Metallic プロパティは、金属体や絶縁体またはそれらの混合体に対応しています。 金属体は、高いスペキュラー反射を持った非常に小さなディフューズ寄与度を持ちます。 絶縁体は、スペキュラーと混在させた大きなディフューズ寄与度を持ちます。
Metallic |
マテリアルの金属性。値の範囲は0から1です。 完全な金属体(1)はまったくディフューズライティングを持ちません。 0の値は、マテリアルを完全に絶縁体にします。 中間の値は、それら2つのマテリアルを混在させて、酸化した金属のような性質にします。 |
Metallic Edge |
グレージング角(接平面と入射光線がなす角)におけるスペキュラー反射に適用できる色味。 |
Metallic Map |
Metallic プロパティを乗算する単一チャンネルテクスチャマップ。これを使用することで、マテリアルの金属の部分とそうでない部分を指定することができます。 |
Emission ¶
発光 はライトに依存しません。これは、スペキュラー、ディフューズ、アンビエントの光源からの最終カラーに加算されます。 そのため、発光を弱くする必要があったり、そのライティングを完全に圧倒してしまうことが多いです。
Emission |
マテリアルの照明カラーに加算する発光カラー。設定しなかった場合は、Display OptionsのEmission Colorが使用されます。 |
Emission Intensity |
生成する発光量を調整します( Emission や Emission Map に乗算されます)。 |
Enable Emission |
有効にすると、発光が計算されて、照明カラーに加算されます。無効にすると、Emissionパラメータは何の効果もなく、マテリアルはカラーを発光しなくなります。 |
Emission Map |
Emission カラーに乗算するカラー(RGB)または強度(単一チャンネル)のテクスチャマップ。 |
不透明度と透明度 ¶
Opacity(不透明度) は、 Transparency や IOR に基づいて物理的に、または、 Alpha や Alpha Parallel を使って明示的に制御することができます。 Alpha と Alpha Parallel を同じ値に設定することで、入射角度に関係なく均一にマテリアルが透明になります。
Transparency |
光がマテリアルを透過する量を決定する0から1の範囲の値。 これは、ディフューズライティングコンポーネントに影響し、Transparencyが1に近いほどそのコンポーネントが0に近くなります。 この値は Inner IOR と一緒に使用され、 Alpha プロパティが存在したら、そのプロパティを上書きします。 |
Inner IOR |
グレージング角(接平面と入射光線がなす角)では、完全に透明なオブジェクトも不透明になります。 Index of Refraction(屈折率)は、光を透過から完全に反射し始める箇所を決定します。 |
Alpha , Alpha Parallel |
直接角における表面の透明度(Alpha)とグレージング角(接平面と入射光線がなす角)における表面の透明度(Alpha Parallel)。 これらのプロパティは、 Transparency が存在した場合には無視されます。1のAlpha値は不透明で、0のAlpha値は完全に透明です( Transparency の反対)。 |
Opacity Map |
単一チャンネル不透明度マップは、 Transparency または Alpha/Alpha Parallel のプロパティに乗算します。
それらのプロパティが存在しなかった場合は、このマップが Alpha として動作します。
ほとんどのマップはAlphaとして表現するので、透明度マップとして動作させるには、 |
Enable Alpha and Transparency |
すべての不透明度プロパティを有効または無効にします。 これを無効にすると、マテリアルが完全に不透明になります。 |
Note
PBR(物理ベースのレンダリング)のルックを取得するには、Diffuse, Specular, Metallic Edgeのカラーを同じにしてください(そして、それらの強度を1個の強度スライダに紐付けます)。 同じカラーパラメータをそれぞれのタグにタグ付けすることができます。 そして、Diffuse RoughnessとSpecular Roughnessの両方を1個のRoughnessパラメータに紐付けます。 スペキュラーモデルをGGXに、Alphaの代わりにTransparencyを使用してください。 他に役立つパラメータは、MetallicとIndex of Refractionです。
ライティングテクスチャマップ ¶
これらのテクスチャすべてがライティングモデルの色々な部分に影響を与える単一チャンネルマップです。それぞれのテクスチャには、マップ値として使用するチャンネル(赤、緑、青、アルファ、RGBの輝度)を指定するためのプロパティがあります。
Coat Intensity Channel |
ゼロ以外の数値の場合、光沢のあるコートが加算されて、それが Coat Specular Model に基づいたスペキュラー反射に追加されます。 これは、 Coat Intensity プロパティが存在すれば、そのプロパティと乗算され、存在しなければ、 Coat Intensity の代わりになります。 |
Coat Roughness Channel |
Coat Roughness プロパティが存在すれば、そのプロパティと乗算し、コートのスペキュラーの鮮明さにバリエーションを加えることができます。 |
Occlusion Channel |
Diffuse Intensityに乗算されます。1の値はDiffuseを維持するのに対し、0の値はDiffuseをブラックにします。 |
Metallic Channel |
Metallicプロパティが存在すれば、そのプロパティと乗算され、存在しなければ、Metallicプロパティの代わりになります。 |
Reflect Channel |
反射マッピングに対する反射強度を指定します。 |
Roughness Channel |
Roughnessプロパティが存在すれば、そのプロパティと乗算され、存在しなければ、Roughnessプロパティの代わりになります。 |
Note
これらのマップタイプすべての可視化に対応させるには、グラフィックカードとドライバがステージあたり32テクスチャ以上に対応している必要があります。 対応していなければ、Coat, Metallic, Occlusion, Reflectionのマップはビューポートに表示されません。
ジオメトリテクスチャマップ ¶
最後に、ライティングを適用する前に大元のジオメトリを修正するための3つのテクスチャマップがあります。 法線マップやバンプマップは、それぞれモデル上の法線に対して向きを変更したり、位置を変更します。ディスプレイスメントマップは、法線または指定したベクトル方向にサーフェスを動かします。
Normal |
法線マップにはワールド空間、オブジェクト空間、接線空間を指定することができます。 ワールド空間とオブジェクト空間のマップは、鋭い折り目を維持するのが得意ですが、ジオメトリの変形には対応していません。 その一方で、接線空間のマップはそれとは反対の特性(変形に強くて、折り目に弱い)を持っています。 法線マップには、XまたはYのコンポーネントを反転させるなどの解釈の方法を制御するプロパティがたくさんあります。 同じタイプの法線マップをショットで使用する時に、これらのプロパティは、定数のGLパラメータとして追加したり、シェーダパラメータではなくSpareパラメータにタグ付けするといったことをよくします。 |
Bump |
バンプマップは、特別な形式の接線空間の法線マップです。そのマップと隣接テクセルの高さを使って、法線を動かす方向を決定します。 |
Displacement |
ディスプレイスメントマップは、大元のメッシュを細分化して、そのメッシュを移動させることで、法線マップやバンプマップではできない適切なシルエットを表現します。 対応しているディスプレイスメントモード:
|
Note
ディスプレイスメントマッピングには、GL4.0と互換性のあるグラフィックカードを必要とします。 これは、処理が重くなってしまうので、非力なGPUでパフォーマンスを上げるためには、 Displacement Level ディスプレイオプションを下げる必要があります。
他のマテリアルプロパティ ¶
特定のマテリアルで使用する環境マップを指定することができます。 これは、スペキュラー反射の色味に影響します。通常では、環境ライトの環境マップを使用しますが、 Environment Map プロパティを使用することで、これを上書きすることができます。
このプロパティには2つのトグルの Use Geometry Color と Use Packed Color があり、ジオメトリのCd
アトリビュートによってマテリアルの色付けを有効/無効にすることができます。
ジオメトリがパックプリミティブの中にある場合、そのジオメトリとそのパックプリミティブの両方のCd
が使用されます(それらのCd
が一緒に乗算されます)。
Ambient カラープロパティを使用することで、金属オブジェクトのアンビエント反射に影響を与えることができますが、このプロパティは廃止予定です。