目录
六、SuperMap iClient3D for Cesium/WebGL平台中应用UE材质
前言
什么是物体的材质,材质属性定义了物体的某些特性,从而决定了物体表面是如何与光线相作用的。UE中物理基础渲染(Physically Based Rendering OR PBR)几乎可以让我们模拟显示世界中的任何材质。那么如何在UE中制作出真实的PBR材质,基于我们提供的游戏引擎插件,如何将这些材质资源导出,并应用到 SuperMap iClient3D for Cesium/WebGL 平台上,提升模型的显示效果呢,下面小编将详细讲解一下。
一、PBR材质
PBR材质就是指基于物理渲染的材质,能够实现接近物理真实的整个渲染算法或过程。我们通过材质的四个基本层来实现这一点:
1.基本的颜色或者基本纹理;
2.材质的金属性;
3.材质表面的粗糙度;
4.使用法线贴图来增加材质额外的深度。
二、材质基本节点
2.1新建材质
在内容浏览器中选择合适文件夹,右键,新建材质。
双击这个材质文件。打开材质编辑界面。
2.2材质中的基本节点
UE中的材质是一种非常重要的资源,它用于控制对象表面的外观和渲染效果。材质定义了对象在渲染过程中如何与光线、阴影、相机和其他环境因素交互, 从而实现了我们想要的模型效果。在UE材质中是通过节点来连接变量和常量的,下面简单介绍下UE材质中的基本节点:
1.基础颜色(Base Color):材质本身的颜色,例如绿色蓝色等。
2.金属度(Metallic):金属度,材质是否含有金属光泽。
3.粗糙度(Roughness):粗糙或者平滑度,物体表面的粗糙程度。
4.自发光(Emissive Color):物体本身是否发光。
5.透明度(Opactity):物体表面是否透明,适用于半透明(Translucent)、添加(Additive)。
6.不透明蒙板(Opacity Mask):仅在使用遮罩模式下(Masked)可使用,与不透明度(Opacity)一样,但不会出现那种半透的颜色,这种模式下,材质要么完全可见,要么完全不可见。
7.法线(Normal):是否能够看都物体的细节部分,使物体表面有凹凸细节。
8.世界位置偏移(World Position Offset):输入允许网格体的顶点在世界空间中由材质操纵。实现使对象移动、改变形状、旋转和各种其他效果。这适用于环境动画之类的内容。
9.世界位移(World Displacement):与世界位置偏移(World Position Offset)非常相似,但它使用曲面细分顶点,而非网格体的基础顶点。为了启用此功能,材质上的曲面细分(Tessellation)属性必须设为 无(None) 以外的值。
10.曲面细分乘数(Tessellation Multiplier):控制沿表面的曲面细分量,能够在需要的地方添加更多细节。与世界位移(World Displacement)一样,为了启用这个功能,曲面细分(Tessellation)属性必须设为 无(None) 以外的值。
11.次表面颜色(Subsurface Color):属性设为次表面(Subsurface)时,才会启用 次表面颜色(Subsurface Color)。
12.折射(Refraction):输入接受一个纹理或数值,其模拟表面的折射率。适用于玻璃和水这样的物质,因为光穿过这些物质时会发生折射。
三、常量与向量(Constant)
材质中存在一维常量、二维向量、三维向量等节点,它们分别用于多种用途,如调整材质属性、控制效果和特效等。允许手动指定数值,这些值可以直接或间接地影响着材质表面的属性和效果,从而实现更加丰富多样的视觉效果和动态特效。这些节点是基于PBR的物理方式进行计算。PBR渲染技术基于物理光学原理,考虑了光照、材质、表面的物理属性和相互作用,以实现更加真实的视觉效果。
3.1 一维常量
一维常量节点用于表示单个标量(只有一个数值)常量,通常用于控制一些单值属性,如金属度、粗糙度、透明度等。通过调整一维常量节点的数值,可以改变材质表面的属性,比如调整物体的金属感、光滑度、透明度等,从而影响渲染效果。
3.2 二维向量
二维向量常量节点表示一个包含两个分量的向量,通常表示二维坐标或参数。在材质中,它可以用来控制某些需要两个值进行调整的效果,如二维偏移、纹理平铺和重复等。二维向量节点通常用于在材质中创建各种效果,比如平铺纹理、创建移动效果等。
3.3 三维向量
三维向量常量节点表示一个包含三个分量的向量,通常表示三维坐标或参数。在材质中,它可以用于控制需要三个值进行调整的效果,如三维偏移、光照方向等。三维向量节点在材质中使用较广泛,可以控制对象的位置、旋转、缩放等。此外,它还可以用于计算光照效果如调整表面的法线方向来模拟凹凸效果、材质的颜色等。
3.4 添加常量与向量方法
第一种方式是通过控制板里面搜索所有节点(搜索框中搜“Constant”)。
第二种做法更常见:右键编辑区弹出搜索框。输入你要加入的节点( “Constant”)。
第三种方式:快捷键:安装键盘的数字(比如想要添加三维向量,按键3),然后左击编辑区。
3.5 实操
以常量调整粗糙度为例,调整数值可以通过材质球预览材质效果。如下演示,将金属度设为1,即将材质设置为纯金属材质,粗糙度数值分别为0和1时的材质状态如图变化。
四、纹理贴图变量
4.1 添加纹理贴图变量(Texture Sample)
通过控制板里面搜索所有节点里面搜索“Texture Sample”或者右键编辑区弹出搜索框,输入“Texture Sample”来找到纹理贴图变量,点击即可加入到窗口视图里。设置纹理图片连接相应的节点即可。
4.2 漫反射贴图
“漫反射贴图”通常指的是PBR材质中的"Base Color"贴图。这个贴图是PBR渲染中的一个重要组成部分,用于表示物体表面的颜色和纹理。它不仅仅是单一的颜色值,而是包含了红、绿、蓝三个颜色通道的纹理信息。这允许在物体表面上添加各种细节、纹理和图案,从而使物体看起来更加真实和丰富。因为RGB是混合后的效果,所以连接线时是连接到RGB节点。
贴图素材可以在虚幻商城里面进行下载,如下图,红墙的一系列贴图均可拖拉进行使用。
4.3 粗糙度贴图
“粗糙度贴图”(Roughness Map)是一种用于控制物体表面粗糙度的贴图。用于模拟物体表面的光滑程度。在PBR渲染中,物体表面的粗糙度决定了光线在表面上的反射情况。粗糙度贴图基本为灰度图,提供材质上的细节质感,其中较亮的像素表示较光滑的表面,而较暗的像素表示较粗糙的表面。较光滑的表面会产生清晰的镜面反射,而较粗糙的表面会导致光线更加散射,产生更模糊的反射。
4.4 法线贴图
“法线贴图”(Normal Map)是一种用于增强物体表面细节和视觉效果的贴图,俗称凹凸贴图。法线贴图通过在像素级别上模拟物体表面的微小凹凸细节,从而使平滑表面看起来具有更多细节和真实感。法线贴图由 RGB 构成,用色值代表向量值,去模拟光影,最终可以在平面上模拟出凹凸感。
五、纹理坐标变量(Texture Coordinate)
任何贴图都是由UV值的,简单说来就是XY轴,U相当于X,代表横向坐标;V相当于Y,代表纵向坐标。当想改变贴图位置和大小时,就可以使用这个节点。是一个非常常用的节点。
5.1 添加纹理坐标变量
通过控制板里面搜索所有节点里面搜索“Texture Coordinate”还可以右键编辑区弹出搜索框,输入“Texture Coordinate”来找到纹理坐标变量,点击即可加入到窗口视图里,或者直接快捷键按住键盘U键,然后鼠标左键点击空白处。
5.2 实操
用法就是点击添加的纹理坐标变量,在左侧的细节里面更改U值和V值,然后把纹理坐标变量连在纹理贴图的UVs节点上。当有多个贴图想要同时变化时,就可以全部连上1个,改一个节点就可以引起多个变化,不会出现不同步。
六、SuperMap iClient3D for Cesium/WebGL平台中应用UE材质
6.1 模型缓存说明
模型材质需要具有纹理坐标,否则在后续更换UE材质时效果会不对。本文以桌面拉伸白模缓存为例,对矢量面设置侧面材质和顶部材质属性字段,使用面拉伸成模型瓦片功能生成缓存,设置拉伸高度、材质类型设置为UE材质、设置顶面和侧面贴图字段(否则缓存不带纹理坐标),其他参数默认即可。
6.2 替换UE材质
1.开启碰撞检测,插件中添加模型缓存数据。
2.替换材质
在右侧的功能菜单中选中数据美化,然后在弹出的对话框中点击材质编辑,再选中材质替换,将之前制作好的材质拖拽至材质替换中,点击确认即可进行模型材质的替换。
3.替换后的材质效果
6.3 导出UE材质
在右侧的功能菜单中选中数据美化,然后在弹出的对话框中点击材质编辑,再选中材质导出,图层列表选择替换的模型即可。
导出材质后在模型缓存同级目录下,新生成一个 MaterialPackage 的文件夹,里面为导出的 UE 材质包,里面包含记录了原始材质与导出的 PBR 材质的关联关系的LayerInfo.json 文件、材质的.json 文件、.png格式的纹理贴图。
6.4 for Cesium/WebGL中应用UE材质
将UE中使用的模型缓存数据,添加到 SuperMap iDesktopX 场景中,保存为工作空间,然后发布三维服务。通过 SuperMap iClient3D for Cesium/WebGL 打开场景,加载服务即可看到UE导出的PBR材质效果。