什么是纹理和材质

378 阅读4分钟

学习链接:UE4材质节点入门 第一节《什么是纹理和材质》 - 知乎 (zhihu.com)
3D图形学(4):纹理贴图_鹅厂程序小哥的博客-CSDN博客
UE4面向美术的3D数学材质核心原理教学| ABOUTCG视频教程(欲购买)
百人计划学习笔记与作业(第五节纹理的秘密) - 知乎 (zhihu.com)

纹理与材质:
关于纹理:简单的来说你所能看到的所有的图像,它都是一种纹理。每一个纹理它都有自己的使用方式,就比如在UE4中的BPR流程里,一个完整的材质通常包含5种纹理,它分别是
基本颜色(color):基本颜色贴图
法线(normal):图形学 - 关于法线那些事 - 知乎 (zhihu.com)
环境光遮蔽(AO):环境光遮蔽_百度百科 (baidu.com)环境光遮蔽综述 - 知乎 (zhihu.com)
AO描述了表面上的任何一点所接受到的环境光被周围几何体所遮蔽的百分比, 使得环境光渲染的结果变得正确,。
粗糙度(roughness)
金属度(metalness)。

一个材质会包含各种不同用途的纹理,它们之间互相配合使用就可以呈现出,最后的材质质感。而这些纹理本质上都是图片。当不同的纹理进入不同的计算通道得到的结果也就不一样

图像纹理中的像素通常被称为纹素(Texels),区别于屏幕上的像素。通过将投影方程(projector function)运用于空间中的点 ,从而得到一组称为参数空间值(parameter-spacevalues)的关于纹理的数值,再使用一个或者多个映射函数(corresponder function)将参数空间值(parameter-space values )转换到纹理空间。这个过程就称为贴图(Mapping,也称映射 ),也就是纹理贴图(Texture Mapping,也称纹理映射 )。

计算粗糙度,环境光遮蔽(AO),金属感只需要灰度信息

将2D图像上的每一点精确对应到3D模型物体表面,在点与点之间的间隙位置进行图像光滑插值处理,这就是UV mapping

命名规范:
颜色纹理:T_BaseColor 或T_Color
法线纹理:T_Normal 或T_N
环境光遮蔽:T_AmbientOcclusion 或T_AO
粗糙度纹理:T_Roughness 或T_R
金属度纹理:T_Meatallic 或T_M

纹理导入引擎内部的大小(占内存)与原文件大小没有关系,所以我们要尽可能使用压缩率低的纹理格式。
导入的纹理需要准确设置构建纹理时使用的压缩设置

sRGB与伽马矫正
伽马矫正(Gamma correction)_dx199771的博客-CSDN博客_伽马矫正
通俗表示:人眼对亮度的变化感知并不是线性的,而图像处理程序是线性感光,所以需要sRGB处理来反映给人眼看;所以颜色贴图是给人看的,所以不关闭sRGB。而粗糙度,金属度,AO等灰度纹理,是给电脑看的,所以需要取消sRGB,来还原最正确的灰度效果

TexCoord节点(纹理坐标)

image.png

描述纹理坐标系,U:横向(R通道) V:垂直方向(G通道)
坐标原点在左上角
默认情况下,TextureCoordinate二维向量的每一个分量,取值范围都是0~1,坐标(0,0)对应纹理的左上角,坐标(1,1)对应纹理的右下角。
U是R通道(为黑色到红色) V是G通道(为黑色到绿色) 当UV放在一起时,就会有渐变的产生(变成黄色),在各自轴向末端值最大时,黄色的特征最明显。
所以当纹理坐标UV平铺倍数为2,然后减去1时,可以把中心看作新的原点,右小角四分之一的范围看作新的1x1的UV平铺图。这样子设置的好处就是,把原点移至中心,创建一个笛卡尔坐标系。(注意Y轴方向是垂直向下的)

image.png

image.png
由于这里是2x2,超过了1,所以这个右下角全部都是黄色(视为1)

image.png
随后减去1,右下角的值就变成了1x1时的值,左上角的值小于0则视为0(所以是黑色)