如何将游戏引擎中的材质导出,并应用到其它平台

该方案是对游戏引擎材质的扩展应用,主要是将Unity3D中的PPBR材质资源导出,并应用到SuperMap iClient3D for WebGL平台上,以提升模型的显示效果。

使用背景

在交通,电力,规划等行业中,有的对象常常具有很强的质感,比如金属质感的钢轨,电力塔;陶瓷材质的绝缘子;玻璃材质的建筑幕墙等,但常规方式的表现效果往往差强人意。

游戏引擎(Unity3D)中已有丰富的材质资源库,比如玻璃,金属等材质,这些材质很多都是PBR材质,质感明显,效果逼真。

如何基于我们提供的游戏引擎插件,将这些材质资源导出,并应用到SuperMap iClient3D for WebGL平台上,以提升模型的显示效果是本文档主要介绍的内容。

主要流程

制作PBR材质

首先大致介绍下如何在游戏引擎中制作PBR材质,了解PBR材质常用的调整参数及纹理贴图类型。 用户也可以直接去网上找一些已有的PBR材质资源,导入工程,进行使用。

金属材质的制作:

  1. 新建一个Unity工程

  2. 右键单击,新建一个材质,命名为“Metal”

  3. 修改材质的颜色,金属度,光滑度参数;可以将其赋给场景中的模型,以查看效果


大理石材质的制作:

  1. 将制作材质需要的纹理导入Unity(相关的基色纹理,法线纹理等资源需要从素材网站上下载)

  2. 新建一个材质,命名为“Marble”
  3. 将导入的基色纹理(Marble_Albedo)与法线纹理(Marble_Normal)分别拖动到Marble材质上的Albedo与Normal Map前面的方框中;

  4. 导入已有的材质资源: 如果本身已经有所需的材质资源,只需要将其导入Unity工程即可。 需要注意的是,材质资源,尽量是Stadard Shader,并且目前只支持基色,基色纹理,金属度,光滑度,法线纹理等参数的导出,其它的一些参数及纹理贴图暂不支持导出。RoughnessFactor的值,不能为0;Tiling保持默认值1。

安装游戏引擎插件

参考本手册安装指南的内容。

导出PBR材质

  1. 单击选中需要导出的材质球,右键单击,在弹出的面板中,选择“SuperMap-导出材质json”选项;

  2. 弹出“保存Json路径”面板,选择保存的路径;
  3. Unity的Console面板中,提示导出成功;

  4. 使用同样的方法导出Marble等其它材质。

  5. 导出的材质由两部分组成:Json文件及使用的纹理贴图。其中,Json文件中记录了金属度,粗糙度等材质参数,及引用贴图的相对路径。

在SuperMap iClient3D for WebGL中,使用导出的PBR材质

两种方式:1.指定图层,设置图层PBR材质;2.以专题图的方式,设置图层对象的PBR材质。

方式一:

使用S3MTilesLayer下的setPBRMaterialFromJSON接口,给图层中所有对象设置PBR材质效果,一个图层对应一种材质效果。以金属材质为例进行说明:

先找到需要设置金属材质的图层,在该范例中,对井盖图层使用Metal材质;管道图层使用Metal_Normal材质。


设置之后的效果:


在线参考网址:http://support.supermap.com.cn:8090/webgl/examples/webgl/editor.html#showUnderGround

方式二:

通过专题图的方式,给一个图层中,不同属性的对象设置不同的材质。

比如在该范例中,guidao_qiu图层中,有三种材质的对象:1.陶瓷材质的绝缘子对象;铜材质的吊弦对象;铝质的其它对象。

具体设置方式:


最终效果:


注:专题图的方式中,目前仅支持不带纹理的PBR材质。

使用场景

这里根据常见数据的类型,列举了三种使用场景,用户可以根据自己的数据类型,去制作对应的材质并进行使用。

BIM及管道数据的美化

BIM中的铁路轨道,接触网等数据以及管道数据,常常没有纹理,并且具有范围广,质感强的特点,我们制作Json材质文件进行美化的时候,只需要使用金属度,粗糙度两个参数就可以有很好的效果,不必设置基色纹理。


如果想要更加细腻逼真纹路效果,比如下面的截图,在金属度,粗糙度的基础上添加一个法线贴图即可(如果使用贴图,数据本身必须带有纹理坐标)。


白模数据的美化

另外有一些数据,本身也是没有纹理的,后续美化的时候,需要添加纹理。比如在白模上面制作一个墙砖的效果。针对这种情况,美化过程中使用的Json材质文件,是要带有基色纹理的,但是必须数据本身带有纹理坐标的情况下,才能有效果。


本身带有纹理的数据的美化

有的数据本身带有纹理,该类数据在美化的时候,不会改变本身的纹理。因此,使用的Json材质文件,不需要带有基色纹理,只需要有合适的金属度粗糙度,法线贴图即可。比如5.3.2.4章节中,介绍的地下管道井盖模型数据的美化。

注:这里使用的SuperMap Hi-Fi 3D SDK for Unity插件及SuperMap iClient3D for WebGL均为10.2及其之后的版本才有相关功能。