Houdini 18.5 マテリアル

OpenGLシェーダ

OpenGLビューポートでマテリアルの表示をカスタマイズする方法。

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マテリアルのパラメータをタグ付けする方法

  • その名前に"#"が入ったタグに関しては、その"#"をレイヤー番号に変更します(例えばベースのディフューズテクスチャレイヤーの場合は、ogl_tex#ogl_tex1に変更します)。

  • 利用可能なGLタグの詳細は、GLタグの完全リストを参照してください。

To...Do this

Parameter VOPをタグ付けする

Parameter VOPで、OpenGLタグ名を直接 Tags パラメータに入力するか、または、 BuiltIn Tags ボタンをクリックしてリストからタグを選択します。 パラメータには、2個以上のタグを選択することができます。

アセットのType Propertiesウィンドウ内のパラメータをタグ付けする

Type Propertiesダイアログで、パラメータを選択します。 OpenGLタグ名を直接 Tags フィールドに入力するか、または、 BuiltIn Tags ボタンをクリックしてリストからタグを選択します。 パラメータには、2個以上のタグを選択することができます。

GLパラメータをマテリアルVOPに追加する

  1. パラメータダイアログで、ギアアイコンをクリックして、 Edit Rendering Parameter を選択します。

  2. 左側のツリー内で Material Options ▸ OpenGL を展開します。

  3. そのツリーからGLプロパティを Existing Parameters リストにドラッグします。

  4. Channels タブで、そのパラメータの値を設定します。

プロパティの追加が完了したら、 Accept をクリックします。

基本的なビューポートシェーディングプロパティ

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 (ogl_tex#)

各ディフューズテクスチャには、UVSet #プロパティを使ってUVセットを指定することができます。 これが空っぽの場合は、そのレイヤーに対して暗黙的なUVセットが使用されます(ベーステクスチャにはuv、1番目のレイヤーにはuv2、2番目のレイヤーにはuv3など)。 これが空っぽでない場合は、そのレイヤーのUVセットとして使用するアトリビュートを参照します。

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反射に使用するモデルを定義します。

  • Phong (デフォルト) - プラスチックのような基本的なスペキュラーモデル。

  • Blinn - 基本的なスペキュラーモデル。

  • GGX - 物理ベースのレンダリングに使用されるリアルなスペキュラーモデル。

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

生成する発光量を調整します( EmissionEmission Map に乗算されます)。

Enable Emission

有効にすると、発光が計算されて、照明カラーに加算されます。無効にすると、Emissionパラメータは何の効果もなく、マテリアルはカラーを発光しなくなります。

Emission Map

Emission カラーに乗算するカラー(RGB)または強度(単一チャンネル)のテクスチャマップ。

不透明度と透明度

Opacity(不透明度) は、 TransparencyIOR に基づいて物理的に、または、 AlphaAlpha Parallel を使って明示的に制御することができます。 AlphaAlpha 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として表現するので、透明度マップとして動作させるには、0を不透明、1を透明として解釈させるために Invert Opacity Map プロパティが必要です(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

反射マッピングに対する反射強度を指定します。Reflect Multiplies IORプロパティを追加することで、反射マップを反射強度ではなくIORに影響を与えることができます。

Roughness Channel

Roughnessプロパティが存在すれば、そのプロパティと乗算され、存在しなければ、Roughnessプロパティの代わりになります。

Note

これらのマップタイプすべての可視化に対応させるには、グラフィックカードとドライバがステージあたり32テクスチャ以上に対応している必要があります。 対応していなければ、Coat, Metallic, Occlusion, Reflectionのマップはビューポートに表示されません。

ジオメトリテクスチャマップ

最後に、ライティングを適用する前に大元のジオメトリを修正するための3つのテクスチャマップがあります。 法線マップやバンプマップは、それぞれモデル上の法線に対して向きを変更したり、位置を変更します。ディスプレイスメントマップは、法線または指定したベクトル方向にサーフェスを動かします。

Normal

法線マップにはワールド空間、オブジェクト空間、接線空間を指定することができます。 ワールド空間とオブジェクト空間のマップは、鋭い折り目を維持するのが得意ですが、ジオメトリの変形には対応していません。 その一方で、接線空間のマップはそれとは反対の特性(変形に強くて、折り目に弱い)を持っています。 法線マップには、XまたはYのコンポーネントを反転させるなどの解釈の方法を制御するプロパティがたくさんあります。 同じタイプの法線マップをショットで使用する時に、これらのプロパティは、定数のGLパラメータとして追加したり、シェーダパラメータではなくSpareパラメータにタグ付けするといったことをよくします。

Bump

バンプマップは、特別な形式の接線空間の法線マップです。そのマップと隣接テクセルの高さを使って、法線を動かす方向を決定します。

Displacement

ディスプレイスメントマップは、大元のメッシュを細分化して、そのメッシュを移動させることで、法線マップやバンプマップではできない適切なシルエットを表現します。 対応しているディスプレイスメントモード:

  • Along Normal - オリジナルの法線に沿ってサーフェスを上下に動かす単一値。

  • Vector - 以下の空間の方向にサーフェスを移動させるXYZ値:

    • World - このXYZ値はワールド空間の移動量です。

    • Object - このXYZ値はオブジェクト空間の移動量です。

    • Tangent - この空間は、UVベクトルと法線によって定義され、サーフェスに沿って変化します。

Note

ディスプレイスメントマッピングには、GL4.0と互換性のあるグラフィックカードを必要とします。 これは、処理が重くなってしまうので、非力なGPUでパフォーマンスを上げるためには、 Displacement Level ディスプレイオプションを下げる必要があります。

他のマテリアルプロパティ

特定のマテリアルで使用する環境マップを指定することができます。 これは、スペキュラー反射の色味に影響します。通常では、環境ライトの環境マップを使用しますが、 Environment Map プロパティを使用することで、これを上書きすることができます。

このプロパティには2つのトグルの Use Geometry ColorUse Packed Color があり、ジオメトリのCdアトリビュートによってマテリアルの色付けを有効/無効にすることができます。 ジオメトリがパックプリミティブの中にある場合、そのジオメトリとそのパックプリミティブの両方のCdが使用されます(それらのCdが一緒に乗算されます)。

Ambient カラープロパティを使用することで、金属オブジェクトのアンビエント反射に影響を与えることができますが、このプロパティは廃止予定です。

マテリアル

マテリアルの使い方

テクスチャとUV

マテリアルの作成

導師レベル

他のレンダラー