游戏美术基础(一):游戏贴图
贴图的作用贴图的作用是描述物体表面的材质,我们创作出的纹理与材质在游戏引擎(虚拟世界)中与光交互。贴图类型一、颜色贴图颜色贴图有三种叫法:Base Color Map, Albedo Map, Diffuse Map,因为工作流不同,所以叫法不一样,而且本质上也有区别Diffuse(漫反射贴图)Diffuse也叫漫反射,人眼之所以能看到物体的面貌,主要是靠漫反射光在眼内的成像。光照模型在Lambe
贴图的作用
- 贴图的作用是描述物体表面的材质,我们创作出的纹理与材质在游戏引擎(虚拟世界)中与光交互。
- 贴图是可以导入材质球,并投射到模型表面的图形。
贴图类型
一、颜色贴图(漫反射颜色)
- 颜色贴图有三种叫法:Base Color Map, Albedo Map, Diffuse Map,因为工作流不同,所以叫法不一样,而且本质上也有区别
Diffuse Map(漫反射颜色)
- Diffuse也叫漫反射,人眼之所以能看到物体的面貌,主要是靠漫反射光在眼内的成像。
- Diffuse是通过特殊的光照采集到的颜色,包含纯颜色和diffuse光源下的部分阴影。
- 黑色:表示没有漫反射。
- 漫反射颜色:除了黑色,其他颜色都是漫反射颜色。
1、在传统工作流(纯手绘和传统次世代)中。
- 由于技术和硬件的限制,使得以前使用的着色器只支持Diffuse、Specular、Normal这几张通用的贴图,而且着色器并不能很好的把物体的体积结构表现出来,所以为了弥补这个缺点,通常在绘制Diffuse Map的时候,需要把物体的光影信息也绘制进去。
- 总结:在传统工作流中。Diffuse包含了漫反射颜色和光影信息。
2、在Specular/Glossiness PBR工作流程中。
-
对于金属材质而言它没有漫反射(或者说比较少),所以使用黑色来填充。而非金属材质反射光少于金属材质,并且它折射的光只有较少的吸收通常重新折射回表面,因此对于非金属材质,使用的是漫反射颜色来填充。需要特别注意的是,在该工作流中,漫反射纹理不应该包含任何光照信息,因为将基于(环境)添加光照到物体的纹理上。
-
总结:在Specular/Glossiness PBR工作流程中。Diffuse包含了漫反射颜色和金属色(黑色)。
Albedo(反照率纹理)
- 在Unity中使用的颜色贴图是Albedo。
- Albedo主要体现模型的纹理和颜色。
- Albedo是没有高光与暗部的纯颜色贴图。
- 必须注意的是,反照率纹理不应包含任何光照,因为光照将根据看到对象的上下关系添加到另外的光照贴图中。
Base Color(固有色)
- Base Color是把颜色贴图剔除光影变化后,我们看到的最基础的颜色。
- 在PBR工作流中颜色贴图叫做Base Color这个术语(基本上不包含光影信息)。
- 在虚幻引擎(UE5)中使用的颜色贴图叫Base Color。
二、Normal(法线贴图)
- 法线贴图作用:用来表现物体上的凹凸体积结构
- 原因:由于技术与硬件的限制,在游戏里不能使用高模(面数高的模型),只能使用低模,低模没法展现物体上的各种凹凸细节,这时候就得用到法线贴图了。另外如果在UE5中使用高模,那么法线贴图就用不到了。
法线贴图相关术语:
1、表面法线:
- 为了真正理解法线贴图的工作原理,需要先清楚什么是 法线,以及如何在实时光照中使用法线。例如一个模型的多边形表面根据表面相对于光线的角度简单地被点亮。表面角度可以表示为一条垂直于表面并向上突出的线,是一个向量,这条线成为 表面法线,或者简单地称为 法线。
2、法线贴图:
- 用法线贴图表示表面法线的这种变化。法线贴图通过通过一张纹理来存储如何改变表面法线的信息。法线贴图是一张映射到模型表面的图像纹理。有些类似于常规的颜色纹理,不同的是,法线贴图中每个顶点(称为纹素)还表示了在表面法线方向上离开平面(或平滑)多边形真实表面的距离。
Opengl与Directx的区别:
-
法线贴图还与Opengl与Directx这两个图形库有关。OpenGL和DirectX都是用于渲染2D和3D信息的应用程序编程接口(API)。他们还定义了法线贴图格式,其中,
-
Unity游戏引擎使用的是Opengl程序接口。Unity使用的法线贴图,凸起的结构,在法线贴图上表现就是凸起的,凹的就是凹的。
-
UE4游戏引擎使用Directx程序接口。UE4使用的法线贴图跟Unity的相反。凸起的结构,在法线贴图上表现就是凹的,凹的结构表现为凸起的。他们的区别在于,反转法线贴图蓝色(G)通道。
-
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(位置)
- 表示的是从上到下的整体渐变梯度关系。
三、材质属性贴图
Metallic(金属度)
- 金属度(Metallic)控制材质的金属性,如控制材质表面在多大程度上"像金属"。
- 金属度贴图起到类似于蒙版的作用,区分固有色贴图中的金属和绝缘体数据。
- 在金属性贴图中,金属的金属度(Metallic)值为 1,非金属的金属度(Metallic)值为 0。
- 对于纯表面,例如纯金属、纯石头、 纯塑料等等,金属度值将是 0 或 1,而不是任何介于它们之间的值。
- 创建受腐蚀、落满灰尘或生锈金属之类的混合表面时,金属度值介于 0 与 1 之间。
- 金属感对象的光泽度由粗糙度控制。 材质越粗糙,其光泽度就会越低, 而缺少粗糙度将使金属显得非常有光泽。 以下是粗糙度如何影响金属感的示例。
上图最左侧球体的“金属感(Metallic)”值为1,“粗糙度(Roughness)”值为0,因此它显得非常有光泽。 但是,最右侧球体的“金属感(Metallic)”值为1,“粗糙度(Roughness)”值为1。 这使金属看起来非常晦暗,就像已经用过很久一样。
Roughness(粗糙度)
- Roughness是一个属性(反射属性),控制材质表面的粗糙或平滑程度(控制材质反射光的强度)。与平滑的材质相比,粗糙的材质将向更多方向散射所反射的光线。 这决定了反射的模糊或清晰度(或者镜面反射高光的广度或密集度)。在UE4中是用Roughness来控制材质的粗糙度。
- 在Roughness贴图中,0(黑色-0 sRGB)表示光滑,1(白-255 sRGB)表示粗糙。粗糙度在帮助确定表面光泽度方面扮演着重要角色。 表面越粗糙,其光泽度越低。 表面越光滑,其光泽度越高。 以下是粗糙度如何影响光泽度的示例。
Glossiness(光泽度)
- Glossiness(缩写Gloss):Glossiness定义材质得粗糙度信息,跟Roughness相反,0(黑色-0 sRGB)表示粗糙,1(白-255 sRGB)表示光滑。(如下图)。
- 光泽度无非是指表面反射光线的能力。 表面能够反射的光线越多,光泽度越高。 表面能够反射的光线越少,光泽度越低。 表面反射光线的能力受环境中各种因素的影响,例如落在对象上的那些非常小颗粒的灰尘,以及接触对象时从手上沾染到对象上的油污, 所有这一切都会影响表面反射光线的能力。
Smoothness(平滑度)
- 在Unity中,用**Smoothness(平滑度)**来定义材质的粗糙或平滑度,并具有不同的镜面反射级别和颜色。平滑度越底,材质越粗超(漫射);平滑度越高,材质越光滑(镜面反射)。
- 在Unity中,Smoothness(平滑度)的取值跟Roughness(粗糙度)的取值相反(把贴图反向),但都是表示材质表面的粗糙程度。
- 在Unity中,Smoothness(平滑度)的概念同时适用于镜面反射 (Specular) 工作流程和金属性 (Metallic) 工作流程,并且在两者中的工作方式非常相同。默认情况下,如果未分配 Metallic 或 Specular 纹理映射,则材质的平滑度由滑动条控制。此滑动条可用于控制表面上的“微表面细节”或平滑度。
- 在 Unity 中,“微表面细节”不是直接可见的。它是光照计算中使用的概念。但是,你可以看到这个微表面细节的效果,它表示当光线从对象反弹时散射的光量。在光滑的表面上,所有光线都倾向于以可预测和一致的角度反弹。在极端的情况下,一个完美光滑表面的光反射就像镜子一样。较不光滑的表面会在较宽的角度范围内反光(当光照射到微表面的凸起时),因此反射具有较少的细节并以更倾向于漫射的方式在表面上扩散。
Specular(镜面反射/ 高光)(反射)
1、传统次世代工作流中的高光:
- 在传统Specular工作流中:Specular翻译成高光,表示高光的范围、强度、颜色,颜色越亮高光越强,黑色表示没有高光。
- 在传统Specular工作流中。由于不同材质反光的强度不同,用高光来区分不同的材质、材质质感、体积结构等。
2、Unity 中的Specular(镜面反射/ 高光):
-
镜面反射 (Specular) 效果本质上是场景中光源的直接反射,通常会在对象表面上显示为明亮的高光和反光(尽管镜面高光也可能是微妙或漫射的)。
-
注意:黑色镜面反射颜色 (0,0,0) 将使镜面反射效果无效。
-
在Unity 中,Specular工作流仅在使用 Specular setup 着色器时使用。该着色器可直接控制镜面高光的亮度和色调。
-
在 Specular 模式下工作时,Specular参数中的 RGB 颜色将控制镜面反射率的强度和色调。这包括来自光源的光泽和来自环境的反射。
-
Smoothness 参数控制着镜面反射效果的清晰度。在平滑度值较低的情况下,即使强烈的镜面反射也会出现模糊和漫射。在平滑度值较高的情况下,镜面反射更明显、更清晰。
-
有时,可能希望改变材质表面上的 Specular 值;例如,如果纹理包含角色的外套,而外套上有一些闪亮的按钮,您会希望按钮的镜面反射值高于服装面料的镜面反射值。要实现此目的,请分配纹理贴图,而不使用单个滑动条值。这样可以根据镜面反射贴图的像素颜色更好地控制材质表面上的镜面光反射的强度和颜色。
3、UE4中的Specular(镜面反射/高光):
- 在UE4中编辑非金属表面材质时,你有时可能希望调整它反射光线的能力,尤其是它的 高光 属性。 要更新材质的高光度,需输入介于0(无反射)和1(全反射)之间的标量数值。注意,在UE4中,材质的默认高光值为0.5。
- 在UE4中。对于漫射度非常大的材质,不能将此值设置为零,因为所有材质 都具有镜面反射,对于漫射度非常大的材质,你真正要做的是调它们粗糙度。
四、关于结构体积的贴图
Ambient Occlusion(环境遮挡贴图)简称AO贴图
-
模拟物体之间所产生的阴影,在不打光的时候增加体积感。也就是完全不考虑光线,单纯基于物体与其他物体越接近的区域,受到反射光线的照明越弱这一现象来模拟现实照明(的一部分)效果。
-
遮挡贴图用于提供关于模型哪些区域应接受高或低间接光照的信息。间接光照来自环境光照和反射,因此模型的深度凹陷部分(例如裂缝或折叠位置)实际上不会接收到太多的间接光照。
-
遮挡纹理贴图通常由 3D 应用程序使用建模器或第三方软件直接从 3D 模型进行计算。
-
遮挡贴图是灰度图像,其中以白色表示应接受完全间接光照的区域,以黑色表示没有间接光照。有时,对于简单的表面而言,这就像灰度高度贴图一样简单(例如前面高度贴图示例中显示的凸起石墙纹理)。
-
在其他情况下,生成正确的遮挡纹理稍微复杂一些。例如,如果场景中的角色穿着罩袍,则罩袍的内边缘应设置为非常低的间接光照,或者完全没有光照。在这些情况下,遮挡贴图通常将由美术师制作,使用 3D 应用程序基于模型自动生成遮挡贴图。
Height Map(高度图/ 置换贴图/ 视差贴图)
-
Height Map是一个二维数组(一张8位数灰度图),储存高度(Z)方向的数字。
-
每个不同灰度的像素索引表示不同的高度信息。它的高度值变化范围是在0和255之间,其中0 (黑色)表示最低高度,255 (白色)表示最大高度。
-
高度图(也称为视差贴图或凹凸贴图 )是一个类似于法线贴图的概念,但是技术更复杂,因此更性能开销更大。高度图通常与法线贴图结合使用,负责定义和渲染表面额外的大型凸起。
-
虽然法线贴图改变了纹理表面的光照,但是视差高度图更进一步,它会移动表面纹理的可见区域,从而实现表面遮挡效果。这意味着,明显的凸起将具有放大的正面(面向相机)和缩小的反面(背向相机),并且反面会被遮挡住。
-
虽然可以产生非常逼真的 3D 几何效果,但是仅限于物体网格的平面多边形表面。这意味着,表面凸起将会突出现实并且彼此遮挡,但是并不会改变模型的『轮廓』,因为最终效果是绘制在模型表面,并不会实际的几何形状。
上图从左到右为: 1.分配了反照率贴图但未分配法线贴图和高度贴图的岩石墙壁材质。 2.分配了法线贴图。表面上的光照经过修改,但岩石不会相互遮挡。 3.分配了法线贴图和高度贴图的最终效果。岩石看起来从表面突出,较近的岩石似乎遮挡了它们后面的岩石。 -
一张高度图应该是一张灰阶图,白色区域表示纹理的高区域,黑色区域代表低区域。看下图右半部分。
-
通常情况下,用于高度贴图的灰度图像也适合用于遮挡贴图(AO贴图)。
Curvature(曲率贴图)
- 作用:曲率贴图允许提取和存储凹凸信息。黑色的值代表了凹区域,白色的值代表了凸区域,灰度值代表中性/平 地。
Thickness厚度贴图
- 作用:黑色代表薄的地方、白色代表厚的地方。它可以用于辅助制作表面散射(SSS,简称3S材质)材质,或直接扩散/反照率假装SSS的效果。 从冰面,蜡烛以及皮肤上观察到这种效果,表面看起来有一种半透明的深度感。
- 特性:透光,光线可以穿透物体,从背光面可以观察到灯光效果。
- 如灯笼、角色皮肤就会用到。
五、其他贴图
ID贴图
- 用于选择不同的区域,进行分别绘制。相当于Mask遮罩。
Emissive(自发光贴图)
-
自发光贴图控制表面发射光的颜色和亮度。当场景中使用了自发光材质时,它看起来像一个可见光。物体将呈现『自发光』效果。
-
自发光材质通常用于某些部位应该从内部照亮的物体上,例如监视器屏幕、高速制动的汽车盘式制动器、控制面板上的发光按钮,或黑暗中仍然可见的怪物眼睛。
-
简单的自发光材质可以通过一个颜色和亮度来定义。
Opacity(透明贴图)
- 定义贴图的不透明度。黑色是透明的部分,白色为不透明的部分,灰色为半透明的部分。
Lightmap(光照贴图)
- Lightmap是用于静态模型上的间接光照。将场景的光照结果烘培到模型贴图上,从而实现模拟(假冒)现实光照效果,可以节省硬件资源。在游戏引擎里做场景地图的时候会用到。
TGA缩略图预览
- 可以使用BandiView看图软件
- BandiView看图软件下载
- 缩略图预览开启
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)