一、贴图的作用:
贴图的作用是描述物体表面的材质,我们创作出的纹理与材质在游戏引擎(虚拟世界)中与光交互。
二、颜色贴图
颜色贴图有三种叫法:Base Color Map, Albedo Map, Diffuse Map,因为工作流不同,所以叫法不一样,而且本质上也有区别
Diffuse map漫反射贴图
光照模型在Lambertian(兰伯特材质球)着色器中会把颜色贴图叫做Diffuse Map(也叫颜色贴图),通常在绘制这张Diffuse Map的时候会把物体的结构阴影信息也绘制进去。在传统工作流中,Diffuse Map是带着光影信息的。
Albedo反射率贴图
主要体现模型的纹理和颜色。老版本Unity的Shader(着色器)中,把颜色贴图叫做Albedo。
Base Color map固有色贴图
Base Color是把颜色贴图剔除光影变化后,我们看到的最基础的颜色。在PBR工作流中颜色贴图叫做Base Color这个术语(基本上不包含光影信息)。
三、法线贴图
Normal法线贴图:
1、凹凸贴图:法线贴图是 凹凸贴图 的一种。凹凸贴图是一种特殊的纹理,允许为模型添加表面细节,例如凸起、凹槽和划痕,这些细节将捕获光线,就像真实的几何体一样。如果在游戏引擎里用模型来表现凹凸细节,将需要绘制非常多数量的多边形,以现在的电脑耗不起,好点的电脑也就支持几千万面而已)。如果使用一张凹凸贴图来呈现细节,表面的几何形状可以变得更加简单,为了避免这种情况,就需要使用法线贴图来表示清晰的表面细节。用细节纹理调制光从表面反射的方式,以现代图形硬件可以非常快地执行这个个过程。
在现代游戏开发流程中,设计师将使用 3D 建模软件,基于非常高分辨率的原始模型生成法线贴图。然后,将法线贴图映射到较低分辨率的模型(游戏中实际使用的模型)上,这样,通过法线贴图,原始的高分率细节就被渲染了。
注意:凹凸贴图是一种相对古老的图形技术,但仍然是创建细节逼真的实时图形所需的核心方法之一。凹凸贴图通常也被称为 法线题图 或 高度图,不过这些术语的含义略有不同(看相关贴图解释)。
2、表面法线:为了真正理解法线贴图的工作原理,需要先清楚什么是 法线,以及如何在实时光照中使用法线。例如一个模型的多边形表面根据表面相对于光线的角度简单地被点亮。表面角度可以表示为一条垂直于表面并向上突出的线,是一个向量,这条线成为 表面法线,或者简单地称为 法线。
3、法线贴图:用法线贴图表示表面法线的这种变化。法线贴图通过通过一张纹理来存储如何改变表面法线的信息。法线贴图是一张映射到模型表面的图像纹理。有些类似于常规的颜色纹理,不同的是,法线贴图中每个顶点(称为纹素)还表示了在表面法线方向上离开平面(或平滑)多边形真实表面的距离。
4、Opengl与Directx的区别:
法线贴图还与Opengl与Directx这两个图形库有关。OpenGL和DirectX都是用于渲染2D和3D信息的应用程序编程接口(API)。他们还定义了法线贴图格式,其中,
Uniti游戏引擎使用的是Opengl程序接口。Unity使用的法线贴图,凸起的结构,在法线贴图上表现就是凸起的,凹的就是凹的。
UE4游戏引擎使用Directx程序接口。UE4使用的法线贴图跟Unity的相反。凸起的结构,在法线贴图上表现就是凹的,凹的结构表现为凸起的。他们的区别在于,反转法线贴图蓝色通道。
OpenGL是个专业的3D程序接口,是一个功能强大,调用方便的底层3D图形库,可跨平台使用。OpenGL的前身是SGI公司为其图形工作站开发的IRIS GL。IRIS GL是一个工业标准的3D图形软件接口,功能虽然强大但是移植性不好,于是SGI公司便在IRIS GL的基础上开发了OpenGL。OpenGL的英文全称是“Open Graphics Library”,顾名思义,OpenGL便是“开放的图形程序接口”。虽然DirectX在家用市场全面领先,但在专业高端绘图领域,OpenGL是不能被取代的主角。
DirectX是一种应用程序接口(API),它是由微软公司开发的用途广泛的API,它可让以windows为平台的游戏或多媒体程序获得更高的执行效率,加强3d图形和声音效果,并提供设计 人员一个共同的硬件驱动标准,让游戏开发者不必为每一品牌的硬件来写不同的驱动程序,也降低用户安装及设置硬件的复杂度。
World Space Normals世界空间法线贴图
表示物体的前、后、左、右、上、下方位。
Position位置贴图
表示的是从下到上的整体渐变梯度关系。
四、材质属性贴图
Glossiness map光泽度贴图:
Glossiness缩写Gloss:Glossiness定义材质得粗糙度信息,跟Roughness相反,0(黑色-0 sRGB)表示粗糙,1(白-255 sRGB)表示光滑。(如下图)。光泽度无非是指表面反射光线的能力。 表面能够反射的光线越多,光泽度越高。 表面能够反射的光线越少,光泽度越低。 表面反射光线的能力受环境中各种因素的影响,例如落在对象上的那些非常小颗粒的灰尘,以及接触对象时从手上沾染到对象上的油污, 所有这一切都会影响表面反射光线的能力。
Metallic金属度贴图(Marmoset Toolbag中叫Metalness map)
金属性贴图起到类似于蒙版的作用,区分固有色贴图中的金属和绝缘体数据。在金属性贴图中,0(黑色-0 sRGB)表示绝缘体,而1(白-255 sRGB)表示金属。绝缘体F0值不需要手动输入,由shader自动处理。当shader在金属性贴图中识别到黑色时,它将固有色贴图中的相应区域处理为绝缘体。
金属感对象的光泽度由粗糙度控制。 材质越粗糙,其光泽度就会越低, 而缺少粗糙度将使金属显得非常有光泽。 以下是粗糙度如何影响金属感的示例。
最左侧球体的“金属感(Metallic)”值为1,“粗糙度(Roughness)”值为0,因此它显得非常有光泽。 但是,最右侧球体的“金属感(Metallic)”值为1,“粗糙度(Roughness)”值为1。 这使金属看起来非常晦暗,就像已经用过很久一样。
Roughness粗糙度贴图
Roughness定义材质得粗糙度信息,0(黑色-0 sRGB)表示光滑,1(白-255 sRGB)表示粗糙。粗糙度在帮助确定表面光泽度方面扮演着重要角色。 表面越粗糙,其光泽度越低。 表面越光滑,其光泽度越高。 以下是粗糙度如何影响光泽度的示例。
Roughness粗糙度贴图 与Glossiness map光泽度贴图是相反的。Roughness 反向就变成Glossiness map 。
Specular高光贴图
Specular表示高光得范围、强度、颜色,在Specular工作流中,颜色越亮高光越强,黑色表示没有高光。
高光度也可影响材质的光泽度。 将“高光度(Specular)”值调整到接近1时,将使材质的反射和反射高光显得特别强特别显眼, 而将该值减小到接近0会弱化反射及反射高光,直到它们几乎不存在为止。 以下示例说明当“高光度(Specular)”值从0更改为1时,对反射及反射高光强度的影响。
高光度(Specular)也深受粗糙度影响。 即使“高光度(Specular)”输入设置为1,通过将“粗糙度(Roughness)”的值设置为1,也可以取消高光度效果。 另外,如果启用了金属感,那么调整高光度不会影响材质。
五、关于结构体积的贴图
Ambient Occlusion环境吸收贴图 简称AO贴图
模拟物体之间所产生的阴影,在不打光的时候增加体积感。也就是完全不考虑光线,单纯基于物体与其他物体越接近的区域,受到反射光线的照明越弱这一现象来模拟现实照明(的一部分)效果。
Height Map高度图也叫置换贴图
高度图(也称为视差贴图或凹凸贴图 )是一个类似于法线贴图的概念,但是技术更复杂 — 因此更性能开销更大。高度图通常与法线贴图结合使用,负责定义和渲染表面额外的大型凸起。
虽然法线贴图改变了纹理表面的光照,但是视差高度图更进一步,它会移动表面纹理的可见区域,从而实现表面遮挡效果。这意味着,明显的凸起将具有放大的正面(面向相机)和缩小的反面(背向相机),并且反面会被遮挡住。
虽然可以产生非常逼真的 3D 几何效果,但是仅限于物体网格的平面多边形表面。这意味着,表面凸起将会突出现实并且彼此遮挡,但是并不会改变模型的『轮廓』,因为最终效果是绘制在模型表面,并不会实际的几何形状。
一张高度图应该是一张灰阶图,白色区域表示纹理的高区域,黑色区域代表低区域。看下图右半部分。
Curvature曲率贴图
作用:曲率贴图允许提取和存储凹凸信息。黑色的值代表了凹区域,白色的值代表了凸区域,灰度值代表中性/平 地。
Thickness厚度贴图
作用:黑色代表薄的地方、白色代表厚的地方。它可以用于辅助制作表面散射(SSS,简称3S材质)材质,或直接扩散/反照率假装SSS的效果。 从冰面,蜡烛以及皮肤上观察到这种效果,表面看起来有一种半透明的深度感。
六、其他贴图
ID贴图
用于选择不同的区域,进行分别绘制。相当于Mask遮罩。
Emissive自发光贴图:
自发光贴图控制表面发射光的颜色和亮度。当场景中使用了自发光材质时,它看起来像一个可见光。物体将呈现『自发光』效果。
自发光材质通常用于某些部位应该从内部照亮的物体上,例如监视器屏幕、高速制动的汽车盘式制动器、控制面板上的发光按钮,或黑暗中仍然可见的怪物眼睛。
简单的自发光材质可以通过一个颜色和亮度来定义。
Opacity透明贴图
定义贴图的不透明度。黑色是透明的部分,白色为不透明的部分,灰色为半透明的部分。
Lightmap光照贴图
Lightmap是用于静态模型上的间接光照。将场景的光照结果烘培到模型贴图上,从而实现模拟(假冒)现实光照效果,可以节省硬件资源。在游戏引擎里做场景地图的时候会用到。