SuperMap Hi-Fi 3D SDK for Unity制作游戏引擎材质

news/2024/12/2 10:31:10/

kele

一、使用背景

    在交通,电力,规划等行业中,有的对象常常具有很强的质感,比如金属质感的
钢轨,电力塔;陶瓷材质的绝缘子;玻璃材质的建筑幕墙等,但常规方式的表现效果
往往差强人意。
    游戏引擎(Unity3D)中已有丰富的材质资源库,比如玻璃,金属等材质,这些材质
很多都是 PBR 材质,质感明显,效果逼真。
    如何基于我们提供的游戏引擎插件,将这些材质资源导出,并应用到 SuperMap
iClient3D for Cesium/WebGL 平台上,以提升模型的显示效果。

二、使用Unity制作 PBR 材质

2.1、获取 PBR 材质

    在制作 PBR 材质之前,首先要了解什么是 PBR 材质,它由哪些参数构成?
    PBR 是指能够实现接近物理真实的整个渲染算法或过程。通常 PBR 材质由albedo(基色纹理)、metallic(金属度)、smoothness(粗糙度)、normal(法线纹理)四部分组成。它使得材质拥有了反射,达到接近物理正确的效果。
    在Unity3D中,有两种方式获取 PBR 材质:导入 PBR 材质、制作 PBR 材质

2.1.1、导入PBR 材质

    PBR 材质和整组贴图,国内资源较少,这里推荐几个获取 PBR 材质的地址:

网站名称网址
Textureswww.textures.com
3DTextureswww.3DTextures.me
ShareTextureswww.sharetextures.com

    下载 PBR 材质有两种方式:
    第一种是下载sbsar文件(SubstanceDesigner软件制作),安装对应插件或者在Unity商店中下载Substance in Unity,即可导入 PBR 材质

  • 下载安装SubstanceDesigner,网址https://zixue.3d66.com/softhtml/downsoft_1242.html

  • unity中unity2018及以上版本需要Appstore中下载安装插件:Substance in Unity

    第二种方式是下载 PBR 材质中的基色纹理和法线纹理,在Unity中去构建材质

在这里插入图片描述
    ①将下载得到的图片拖拽进Unity工程中
    ②在Unity工程Assets/Material中新建材质,将基色纹理拖拽到 ”Albedo“上,将法线纹理拖拽到 ”Normal Map“上

在这里插入图片描述
    ③拖动 ”metallic“和 ”smoothness“改变金属度和粗糙度,达到最终效果

2.1.2、制作 PBR 材质

    法线纹理的作用是模拟模型表面的凹凸,使模型更加真实。在没有法线纹理的情况下,我们仍然可以通过基色纹理制作法线纹理
    ①导入一张基色纹理,点击图片将 ”Texture Type“ 由 ”default“ 改为 ”Normal map“

在这里插入图片描述
    ②点击 “Apply” 得到一张基于基色纹理制作的法线纹理

在这里插入图片描述
    ③新建材质球,将基色纹理和法线纹理拖拽到对应位置(参考2.1.1-②),并设置金属度和粗糙度,完成材质制作

2.2、导出 PBR 材质

2.2.1、安装游戏引擎插件

    新项目打开后,右击 Assets,选择 Import Package> Custom Package,会弹出导入框,选择下载的 SuperMap Hi-Fi 3D SDK for Unity.unitypackage 文件,确定后会进入导入程序。点击 import 进行导入。
    导入成功后,点击 Edit/Project Settings 进入设置界面,在 player 选项卡中,找到“Allow
‘unsafe’ Code”,将其勾选上。
    安装插件的详细操作流程,请参考插件包中的 “pdf帮助文档”

2.2.2、导出材质

    右键制作好的 PBR 材质球,点击【SuperMap】-【导出材质json】

在这里插入图片描述
导出成功后,在目标路径下得到一份json文件以及两张纹理图片

三、其它端使用 PBR 材质

3.1、桌面端使用 PBR 材质

    将模型添加到球面场景,通常其它软件制作的带有贴图的模型,是有纹理坐标的,这一步可以跳过。iDesktop制作的白模没有纹理坐标,是无法贴图的。首先需要通过【三维地理设计】-【材质】-【重新计算纹理坐标】,使模型带上uv纹理坐标,就可以设置材质了
    计算纹理坐标后,点击【材质】,将模型材质类型改为 PBR

在这里插入图片描述
    点击基色、法线前的方框,去选择上面导出的图片

在这里插入图片描述
    点击应用,材质设置就完成了,接下来在场景中将太阳光设置可见,并拖动时间轴,查看模型上的光影变化

在这里插入图片描述

3.2、SuperMap iClient for Cesium/WebGL使用 PBR 材质

    ①将导出的文件拷贝到前端工程中
    ②打开场景,找到模型图层,并设置 PBR 纹理

var promise = scene.open('http://localhost:8090/iserver/services/3D-wall-bulid/rest/realspace');
Cesium.when(promise, function (layers) {//找到模型图层var wallLayer = scene.layers.find('wall@bulid_3');//设置pbr材质wallLayer.setPBRMaterialFromJSON("./SampleData/pbr/地砖pbr/New Material 1.json");
});

最终效果

在这里插入图片描述


http://www.ppmy.cn/news/122370.html

相关文章

Android 三星手机拍照无法收到回调问题

三星手机自己为是的做了一个很酷的功能 - 拍照后自动旋转的功能,从而导致了需要回调的Activity被重onCreate,导致开发者在onActivityResult中得到 resultCode RESULT_OK, 而 url null 的现象。 以下提供两种解决方案: 方案一: …

android 实现拍照,android 实现拍照的2种方法

android系统的照相功能,已实现2种方法,可供大家参考: 1.调用系统摄像头来拍照 首先,找到AndroidManifest.xml文件里加入用户权限 其次,在主类java文件里加入2个控件(button和imageview),是用来触发按钮事件和显示图片的,纯是个人爱好 final int TAKE_PICTURE = 1;//为了…

华为最新款手机2021款鸿蒙,华为最新款手机2021款_华为2021即将上市新款手机

虽然说在2020年下半年的是华为mate40系列的手机才发布,但是这丝毫不会影响到2021年华为继续推出最新款的手机。那么2021年华为即将上市的最新款手机都有哪些呢?让我们来一起看看吧! 1、华为P50 在外观方面华为P50手机将会告别药丸屏设计,改用前置单挖孔设计,中央挖孔的形式…

android开发三星手机拍照

android开发三星手机拍照旋转数据丢失 解决方法: <--在AndroidManifest.xml设置属性,这样activity横竖屏切换生命周期不会重走--> <activity android:name".xxx.xxxActivity" android:configChanges"orientation|screenSize"android:screenOrie…

三星手机拍照翻转获取照片的问题

最近在开发的过程中遇到拍照上传的需求&#xff0c;其他手机都没有问题&#xff0c;在三星的手机上就有问题&#xff0c;当拍完照后界面翻转后导致获取不到照片的问题&#xff1b; 解决办法&#xff1a; 在对应的activity中添加如下代码&#xff1a; //解决部分手机拍照后的…

三星手机拍照后显示图片角度旋转问题的解决方法

项目开发中&#xff0c;需要用一个ImageView显示拍照的图片。在使用三星手机进行测试的时候发现图片角度发生了旋转&#xff0c;经资料查询&#xff0c;这是因为三星手机拍照的图片旋转角度是90度&#xff0c;而其他手机是0度。这样思路就出来了&#xff1a;先查询被旋转了多少…

Android基础知识复习之打开照相机拍照并获取照片

对于我来说&#xff0c;做一件事情&#xff1a; 首先要理清我的思路&#xff0c;我要打开照相机&#xff0c;我能想到的是&#xff1a;在Android中我要打开系统应用&#xff0c;肯定需要一个隐式意图&#xff0c;那就要查询Android照相机的源码&#xff0c;查看并找到意图过滤…

真正解决三星等手机拍照问题

相信大家在Android 开发的过程中肯定会遇到拍照的问题&#xff0c;然而利用Android 系统自带的相机肯定是我们的首选 但是在开源力量的强大之下也会有一些 与本身系统不尽一致的存在。例如&#xff1a; 个别三星手机拍照无法正常显示。 1、通过拍照测试 发现是因为手机屏幕旋…