材质和质地有什么区别?

use*_*949 26 opengl directx graphics

在计算机图形学中,材质和纹理之间有什么区别?

Dre*_*all 37

在OpenGL中,材质是一组系数,用于定义照明模型与曲面的交互方式.特别地,每个颜色分量(R,G,B)的环境,漫反射和镜面反射系数被定义并应用于表面并有效地乘以撞击表面的每种颜色/颜色的光量.然后将最终的发射系数添加到每个颜色分量中,使得物体看起来发光而不实际与其他物体相互作用.

质地,在另一方面,是一组1-,2-,3-,或4-施加和内插的上根据纹理的表面在顶点处坐标维位图(图像)数据.纹理数据改变表面的颜色,无论是否启用照明(并且取决于纹理模式,例如贴花,调制等).纹理经常用于向表面提供子多边形水平细节,例如将重复砖和灰浆纹理应用于四边形以模拟砖墙,而不是对每个单独砖的几何形状进行建模.

在经典(固定管道)OpenGL模型中,纹理和材质有些正交.在新的可编程着色器世界中,该线已经模糊了很多.经常使用纹理以其他方式影响照明.例如,凹凸贴图是用于扰动曲面法线以实现光照的纹理,而不是像常规"图像"纹理那样直接修改像素颜色.


Nic*_*las 17

这个问题表明了对各种计算机图形概念的常见误解.它是由着色器之前的思考和编码而诞生的.

纹理只不过是一系列一个或多个图像的容器,其中图像是值的某些维度(1D,2D等)的数组,其中每个值可以是1到4个数字之间的向量.纹理还具有一些特殊技术,用于访问它们的值,允许插值和最小化来自采样的混叠伪像.

纹理可以包含颜色,但质地不具有包含颜色.纹理可用于改变对象表面上的参数,但并非所有纹理都可用于.

纹理与"材料" 没有直接联系; 你可以将它们用于各种各样的事情(或根本没有).

材料是照明的概念.给定特定光和表面上的点,在该点处从该表面反射的光的强度(即:颜色)由照明方程控制.该等式是许多参数的函数.但这些参数分为两类.

一类光方程参数是光参数.这些描述了光源的特性.点光源与定向灯对射灯.光强度(再次:颜色)是另一个参数.由于强度本身可以根据表面点相对于光的方向(认为手电筒或聚光灯)而变化,因此可以从纹理访问强度.这就是有多少游戏在黑暗的房间里投射手电筒.

另一类光方程参数描述了该点表面的特征.这些被称为材料参数.材料参数或简称材料描述了所讨论的表面的重要特性.那时的正常是重要的.还有漫反射(颜色),镜面反射,镜面光泽(Phong/Blinn-Phong的指数)和各种其他参数,具体取决于您的光照方程的综合程度.

这些价值来自哪里?光参数往往在世界上是固定的.灯光不会按对象移动(但如果您在对象空间中进行照明,则每个对象都有自己的灯光位置).光强度可以变化.但这主要是它; 帧之间发生任何其他事情,而不是在单帧渲染中.所以大多数光参数都是着色器制服.

材料参数可以来自各种来源.有效地使用着色器均匀意味着表面上的所有点都具有相同的值.因此,您可以使漫射颜色来自均匀,这将使表面具有均匀的颜色(当然,通过照明进行修改).您可以通过将顶点属性作为顶点属性传递或从其他属性计算它们来改变每顶点的材质参数.

或者,您可以通过将纹理映射到曲面来提供参数.此映射涉及将纹理坐标与顶点位置相关联,以便纹理直接附着到曲面.在渲染期间在该位置对纹理进行采样,并且该值用于执行照明.

您熟悉的最常见纹理"颜色纹理"只是改变表面的漫反射率.纹理在沿表面的每个点处提供漫反射颜色.

这不是纹理的唯一功能.您可以轻松地改变表面上的镜面光泽度.或光强度.或其他任何东西.

纹理是工具.材料只是一组光方程参数.


JOT*_*OTN 12

我对这些术语的看法:

纹理是映射到3D对象的图像.

材料模拟物理材料.以"玻璃"为例.您无法使用普通纹理贴图生成玻璃效果.它具有如何在不同角度反射和折射光的参数.材质也可以是简单的纹理贴图,因此有时这些术语意味着相同的东西.


oco*_*odo 6

尽管这些术语可以互换使用,但通常将位图称为纹理.

虽然完全定义的纹理(具有光照属性,凹凸贴图等)通常会被称为材质.

但我应该强调,根据所使用的工具,他们的术语将被相关社区使用.