制作基于数据纹理的PBR材质
本页面提供一种基于数据本身纹理制作PBR材质的方法,从而达到美化效果。该方法适用于在保留数据本身颜色或纹理的基础上进行美化。本页面以窗户效果为例进行说明。效果对比图见下图。
原始效果 | 美化后效果 |
获取原始基色纹理
原始基色纹理是数据自带的纹理,如果具有通过3ds Max,Revit等软件获取的原始建模数据,可以直接获取;如果只有UDB数据,可以通过SuperMap iDesktopX的模型材质提取”功能,批量获取模型材质。
制作金属度粗糙度贴图
该步骤以PhotoShop为例说明基于上一步获取的原始基色纹理如何制作金属度粗糙度贴图。
- 首先约定相关表达:
- 纹理中的“红”通道用于表达“金属度”。越白金属属性越强,而越黑则金属性越弱。
- 纹理中的“绿”通道用于表达“粗糙度”。越白越粗糙,而越黑越光滑。
- 在处理红通道和绿通道时,将窗框部分设置成白色,玻璃部分设置成灰黑色。这里蓝通道不用可以暂时不处理。
- 处理完成后将处理后的纹理导出。
制作法线贴图
制作法线贴图的方法不唯一,这里介绍常用的几种方法。
- 方法1:通过PhotoShop软件的“滤镜-3D-生成法线图”命令来制作。该方法操作简单,但法线贴图的效果有时候不太明显。
- 方法2:游戏行业中经常使用的方法是通过Adobe Substance 3D Designer制作法线贴图。
- 方法3:使用如CrazyBump等其它工具来生成法线贴图。
方法1 | 方法2 | 法线贴图 |
新建材质
该步骤是在Unreal Engine中新建一个材质,并将上述步骤得到的纹理连到对应通道上。
- 在内容浏览器/All/Plugins/SuperMap内容/Materials/UE5文件夹内新建一个名为T_MXL_01_02_CK01的材质,打开材质蓝图。
- 首先将原始基色纹理贴图右侧的RGB节点连接至T_MXL_01_02_CK01材质左侧的基础颜色节点。
- 接着将金属度粗糙度纹理贴图右侧的R节点连接至T_MXL_01_02_CK01材质左侧的Metallic节点。为了制作玻璃反射的艺术效果,可以添加Lerp函数,并将金属度粗糙度纹理贴图右侧的R节点连接至Lerp函数左侧的Alpha节点,再将Lerp函数右侧的A节点连接到T_MXL_01_02_CK01材质左侧的Metallic节点。
- 然后将金属度粗糙度纹理贴图右侧的G节点连接至T_MXL_01_02_CK01材质左侧的粗糙度节点。
- 最后将法线纹理贴图右侧的RGB节点连接至T_MXL_01_02_CK01材质左侧的Normal节点。
添加材质函数
该步骤是在原始纹理前添加一个沿Y轴反转的材质函数,从而避免材质替换后纹理发生上下翻转问题。
- 打开内容浏览器/All/Plugins/SuperMap内容/Materials/MaterialFunctions文件夹,找到SM_Texcoord_One材质函数,并将其拖动至上一部分生成的T_MXL_01_02_CK01材质蓝图中。
- 在材质蓝图中,右键依次搜索并添加BreakOutFloat3Components、1-x、MakeFloat2材质函数。
- 按照如下顺序连接各材质函数:
- Texcoord_One右侧的Result节点与BreakOutFloat3Components左侧的Float3(V3)相连接。
- BreakOutFloat3Components右侧的R节点与MakeFloat2左侧的X(S)节点相连接,BreakOutFloat3Components右侧的G节点与1-x左侧节点相连接。
- 1-x右侧的节点与MakeFloat2左侧的Y(S)节点相连接。
- MakeFloat2右侧的Result节点与原始的基色纹理右侧的UVs节点相连接。
- 按照本部分上述操作步骤在金属度粗糙度纹理贴图、法线纹理贴图前进行相同的操作。
- 至此材质制作完成。
新建材质实例
针对场景中如果存在多个需要进行上述操作的材质,本部分提供一种材质实例方法,减少Unreal Engine对材质的编辑,从而优化性能。
- 依次选中纹理贴图后单击鼠标右键,在弹出的右键菜单中选择转换为参数操作,并将原始基色纹理、金属度粗糙度纹理和法线纹理参数分别命名为Basic、MetalRough、Normal。
- 在内容浏览器中选中原来的T_MXL_01_02_CK01材质并单击鼠标右键,在弹出的右键菜单中选择创建材质实例,并命名为Text_Inst。
- 打开上一步创建的材质实例,在细节面板中依次勾选Basic、MetalRough、Normal参数,通过对应参数后的下拉菜单选择对应的新纹理,实现替换。
- 其他更多的新材质可采用新建材质实例的方法进行处理。
替换材质
该部分主要是实现在S3M瓦片上替换制作好的材质。
- 采用SuperMap iDesktopX的生成场景瓦片功能将数据生成S3M瓦片数据。在生成瓦片数据时,材质类型需选择UE材质,其他参数根据需要自行配置。
- 在Unreal Engine中通过SuperMap编辑器控件添加上一步生成的S3M瓦片数据。
- 运行当前关卡,通过材质替换功能,将S3M瓦片数据的材质替换为此前制作好的材质。即可得到美化后的效果。