web-dev-qa-db-ja.com

素材と質感の違いは何ですか?

コンピュータグラフィックスでは、マテリアルとテクスチャの違いは何ですか?

27
user496949

OpenGLでは、materialは、照明モデルがサーフェスとどのように相互作用するかを定義する係数のセットです。特に、各色成分(R、G、B)の周囲係数、拡散係数、および鏡面係数が定義され、表面に適用され、表面に当たる各種類/色の光の量が効果的に乗算されます。次に、最終的な放射率係数が各カラーコンポーネントに追加され、他のオブジェクトと実際に相互作用することなく、オブジェクトが明るく見えるようになります。

一方、textureは、テクスチャ座標に従ってサーフェスに適用および補間される1次元、2次元、3次元、または4次元のビットマップ(画像)データのセットです。頂点で。テクスチャデータは、ライティングが有効になっているかどうかに関係なく(また、デカール、モジュレートなどのテクスチャモードに応じて)、サーフェスの色を変更します。テクスチャは、サブポリゴンレベルの詳細をサーフェスに提供するために頻繁に使用されます。個々のレンガのジオメトリをモデル化するのではなく、繰り返しレンガとモルタルのテクスチャをクワッドに適用して、レンガの壁をシミュレートします。

従来の(固定パイプライン)OpenGLモデルでは、テクスチャとマテリアルはやや直交しています。新しいプログラム可能なシェーダーの世界では、線がかなりぼやけています。多くの場合、テクスチャは他の方法で照明に影響を与えるために使用されます。たとえば、バンプマップは、通常の「イメージ」テクスチャのようにピクセルの色を直接変更するのではなく、サーフェスの法線を摂動させてライティングを実行するために使用されるテクスチャです。

35
Drew Hall

この質問は、さまざまなコンピュータグラフィックスの概念に関する一般的な誤解を示唆しています。これは、シェーダー前の思考とコーディングから生まれたものです。

テクスチャは、一連の1つ以上の画像のコンテナにすぎません。画像は、値の次元(1D、2Dなど)の配列であり、各値は1〜4の数値のベクトルになります。テクスチャには、テクスチャから値にアクセスするための特別な手法もいくつかあります。これにより、補間と、サンプリングによるエイリアシングアーティファクトの最小化が可能になります。

テクスチャには色を含めることができますが、テクスチャには色を含める必要がありません。テクスチャを使用してオブジェクトの表面全体でパラメータを変更できますが、すべてのテクスチャを使用できるわけではありません。

テクスチャには、「マテリアル」との直接の関連付けはありません。さまざまな用途に使用できます(またはまったく使用できません)。

素材は照明のコンセプトです。特定の光と表面上の点が与えられると、その点でその表面から反射される光の強度(つまり色)は、照明方程式によって支配されます。この方程式は多くのパラメータの関数です。ただし、これらのパラメータは2つのカテゴリに分類されます。

光方程式パラメータの1つのカテゴリは、光パラメータです。これらは、光源の特性を説明しています。ポイントライトvs.ディレクショナルライトvs.スポットライト。光の強さ(ここでも:色)は別のパラメーターです。強度自体は、光に対する表面ポイントの方向によって異なる場合があるため(懐中電灯またはスポットライトを考えてください)、強度はテクスチャからアクセスできます。それは、暗い部屋に懐中電灯を投影するゲームの数です。

光方程式パラメータの他のカテゴリは、そのポイントでのサーフェスの特性を表します。これらはマテリアルパラメータと呼ばれます。材料パラメータ、または略して材料は、問題のポイントでの表面の重要な特性を説明します。その時点での法線は重要なものです。照明方程式の包括性に応じて、拡散反射率(色)、鏡面反射率、鏡面光沢(Phong/Blinn-Phongの指数)およびその他のさまざまなパラメーターもあります。

これらの値はどこから来ていますか?光のパラメータは、世界で固定される傾向があります。ライトはオブジェクトごとに移動しません(ただし、オブジェクトスペースでライティングを行う場合、各オブジェクトには独自のライト位置があります)。光の強さは異なる場合があります。しかし、それはほとんどそれだけです。他のことは、単一のフレームのレンダリング内ではなく、フレーム間で発生します。したがって、ほとんどのライトパラメータはシェーダーユニフォームです。

材料パラメータは、さまざまなソースから取得できます。シェーダーユニフォームを効果的に使用するということは、サーフェス上のすべてのポイントが同じ値を持つことを意味します。したがって、拡散色を均一から取得することができます。これにより、表面に均一な色が与えられます(もちろん、照明によって変更されます)。頂点属性として渡すか、他の属性から計算することにより、頂点ごとにマテリアルパラメータを変更できます。

または、テクスチャをサーフェスにマッピングしてパラメータを指定することもできます。このマッピングでは、テクスチャ座標を頂点の位置に関連付けて、テクスチャがサーフェスに直接アタッチされるようにします。テクスチャはレンダリング中にその場所でサンプリングされ、その値はライティングを実行するために使用されます。

よく知っている最も一般的なテクスチャである「カラーテクスチャ」は、表面の拡散反射率を変化させるだけです。テクスチャは、サーフェスに沿った各ポイントで拡散色を提供します。

これは、テクスチャのonly関数ではありません。表面の鏡面の輝きを簡単に変えることができます。または光の強さ。または他の何か。

テクスチャはツールです。マテリアルは、光方程式パラメータの単なるグループです。

17
Nicol Bolas

私がそれらの用語で考えること:

テクスチャは、3Dオブジェクトにマッピングされる画像です。

マテリアルは、物理的なマテリアルをシミュレートします。 「ガラス」を例にとってみましょう。プレーンテクスチャマップではガラス効果を生成できませんでした。さまざまな角度で光を反射および屈折させる方法などのパラメータがあります。マテリアルは単純なテクスチャマップである可能性もあるため、用語が同じことを意味する場合があります。

12
JOTN

これらの用語は同じ意味で使用できますが、ビットマップをテクスチャと呼ぶのが一般的です。

ライティングプロパティ、バンプマッピングなどを含む完全に定義されたテクスチャは、通常、マテリアルと呼ばれます。

ただし、使用するツールによっては、関連するコミュニティでそれらの用語が使用されることを強調する必要があります。

6
ocodo