从Revit到Web端,这一波操作就够了

@TOC

作者:徐蕾

一、 应用需求

基于Autodesk Revit制作的BIM模型数据,如何在GIS项目中使用。本文将以RVT模型数据为例,通过SuperMap iDesktop桌面软件、SuperMap iServer服务管理平台以及SuperMap iClient3D for WebGL二次开发平台,梳理BIM+GIS项目建设的全流程,详细介绍Revit模型从接入到Web端应用的技术要点,同时汇总分享大家在此过程中常见的问题。

二、 主要流程

  1. 将Revit模型转入SuperMap;

  2. 根据项目需要或数据特点深入处理模型数据;

  3. 通过SuperMap iServer 发布三维服务;

  4. 通过SuperMap iClient3D for WebGL开发WebGIS项目。

三、 涉及软件

  1. Autodesk Revit软件;

  2. SuperMap iDesktop、SuperMap iServer和SuperMap iClient 3D for WebGL;

  3. 超图Revit插件:通过百度网盘(链接:https://eyun.baidu.com/s/3dzbgVO,密码:8SsM)下载。

注意事项:
a) 目前超图Revit插件支持的Revit版本为Revit2016~2020;
b) 插件经常更新,建议大家下载使用网盘上的最新版本;
c) 网盘中提供了Revit插件配置的说明文档,请参考该文档进行配置。

四、 实现步骤

第一步 将Revit模型转入SuperMap

  1. 如果使用的是低于10i版本的iDesktop,请安装导出插件到Revit,然后借助该插件导出模型到SuperMap数据源文件中。
    具体操作是:启动Revit软件,打开RVT模型数据,在“项目浏览器”中选择三维视图模式,RVT模型数据需要在该模式下导出数据。

  2. 在Revit软件的“附加模块”中,点击Revit插件,如下图。


  3. 设置导出参数后,点击“确定”按钮,将Revit的模型的几何信息和属性信息,一次性批量导出到SuperMap的数据源文件中。

提示:
如果使用的是10i及以上版本的iDesktop,可以直接使用“导入BIM数据-Revit”功能,将模型导入到SuperMap数据源文件中,需要设置的参数与使用插件导出类似。
这种方式不要求安装插件到Revit,但计算机上要安装与iDesktop位数一致的Revit软件。


常见问题:
a)设置导出参数时需要注意什么?选择输入“模型定位点”还是“导入投影文件”?
场景投影信息:通过插入点或者投影信息文件来确定RVT模型在超图三维场景中的位置。若已知测量点在球面/投影坐标系的坐标值,输入该坐标值作为模型定位点;若Revit建模是基于坐标系的值进行的,则选择“导入投影文件”(*.xml)。
导出网络数据集:若RVT模型中存在管线、风管、电缆架桥等数据,在GIS应用中需要使用三维网络分析功能,建议勾选“导出网络数据集”,该参数会将数据导出为相应的三维点、线数据集。后续可以通过桌面软件基于该三维点、线构成三维网络数据集。
新建数据源:插件会将RVT模型数据存储在SuperMap数据源文件中,因此该参数用于设置数据源存放路径。

b)如果原始RVT模型是基于地方坐标系制作的,具体操作方法如下:
首先,Revit软件中,利用插件导出模型数据,选择输入“平面坐标”,并以测量点在地方坐标系中的值作为插入点。


其次,使用SuperMap iDesktop打开上一步导出的数据源,打开模型数据集的“属性”视窗,在“坐标系”选项卡中,重新设定其坐标系为地方坐标系。

提示:如果RVT模型需要用于WebGL开发,可以使用SuperMap iDesktop的投影转换功能(开始菜单-投影转换-数据集投影转换),将地方坐标系转换成China2000或WGS1984坐标系。

c)如果RVT模型使用了过滤器添加颜色,导出时颜色缺失,可能是因为模型导出时未勾选“着色颜色”而使用了“真实颜色”,建议使用“着色颜色”导出并查看效果;此外,目前仅支持贴图和过滤器颜色,其他材质效果暂时导不出来。

第二步 据项目需要或数据特点深入处理模型数据

  1. RVT的模型是否需要单体化处理?
    将RVT模型导出之后,不需要对其进行单体化操作,模型数据集中的构件对象与Revit软件中是一样的,构件已经是单体了。

  2. RVT模型在SuperMap中是否可以编辑?
    RVT模型导出之后,如果需要手动修改几何信息(例如位置、贴图等)和属性信息,都可以直接在SuperMap iDesktop中进行操作,不需要重新导出。
    操作方法:编辑模型的位置和贴图时,先选中模型,在右键菜单选择“编辑模型”。其中,只有带uv坐标的贴图文件,才能用于对RVT模型进行贴图。



  3. 制作和导出模型的时候随意设置的模型插入点坐标,如何校正模型的坐标?
    模型导入到SuperMap数据源中,如果坐标不正确,可以通过配准的功能(开始菜单-新建三维配准)来纠正模型数据的坐标。在三维配准时可以使用二三维线面,栅格或者影像数据作为参考数据集。


  1. RVT模型与倾斜摄影模型数据、地形数据如何精确匹配?
    如果RVT模型与倾斜摄影模型数据相互遮盖,一般是通过“三维地理设计-截面与投影-提取边界”获得RVT模型的范围面,再使用“三维地理设计-倾斜摄影操作-镶嵌/挖洞”功能,把倾斜摄影模型进行平整处理;如果RVT模型与地形数据相互遮盖,可以基于RVT模型的范围面,使用“三维地理设计-TIN地形操作-镶嵌/挖洞”功能修改地形表面,使之与模型精确匹配起来。


    提示:
    如果是高速路及隧道模型,存在地形完全覆盖路面和边沟的情况,需要与TIN地形进行精确匹配,首先准备隧道路段三维线数据,使用“三维地理设计-放样”功能生成隧道实体模型,再通过“三维地理设计-TIN地形操作-布尔运算”功能从TIN地形中挖出一条隧道。整个过程都是手动操作完成,如果会.NET组件,可以自行开发批处理工具。

  2. RVT模型构件多且精细,数据量大,加载速度慢,如何优化?
    对RVT模型进行优化的主要方式包括实例化、BIM轻量化处理和生成三维切片缓存等,下面列举3个最常用的功能进行说明。
    a)实例化
    添加RVT模型到球面三维场景,使用“实例化处理”工具(三维数据-模型工具-实例化处理)能够实现相同的几何模型只保存绘制一个,降低显卡和内存的压力,适用于重复模型较多的情况。


    b)三角网简化
    很多RVT模型存在大量冗余的三角面,通过三角网简化(三维地理设计-模型编辑-三角网简化)功能,可以实现对这些模型进行批量简化,降低内存的占用。


    c)操作子对象
    添加数据后,找到“三维地理设计-模型编辑-操作子对象”功能,可以对单个的模型进行简化、或者直接删除在GIS中无用的子对象,如建筑物里面的门把手、锁芯等。

  3. 模型数据如何生成三维切片缓存?
    将模型数据生成缓存可分为两种方式,一种是多个模型数据集批量生成到一个缓存图层中,另一种是每个数据集分别生成一个缓存图层。对于RVT模型来说,一般采用批量生成缓存的方式,它的主要优势在于能够减少图层数量,加强系统调度。
    操作方法:打开数据源文件,使用“批量生成缓存”功能(三维数据-生成缓存-批量生成缓存-模型),添加多个模型数据集,批量生成S3M缓存,以提升模型浏览性能。


    a)设置缓存参数
    设置“缓存用途”参数,主要包括普通PC设备和iOS系列设备、Android系列设备和不压缩,对于不同用途的缓存,应用程序将采用不同的纹理压缩方式,以减少纹理图像所使用的显存数量。
    若需要将模型添加到平面场景中,可以将“场景类型”改为“平面”。
    设置“LOD层数”以及每层数据的简化率,当三维场景拉近看的时候,模型呈现最精细的一层,当浏览整个场景的时候,模型只需要以较粗糙的方式显示即可,这样最大程度的优化资源的占用,提高整个三维场景的性能。


b)缓存加载到场景中,保存场景和工作空间
新建一个球面场景,通过“添加三维切片缓存”功能,将生成的缓存添加到场景中,保存场景命名为“BIMScene”,并保存工作空间命名为“BIM”。

第三步 通过SuperMap iServer发布三维服务

  1. 启动iServer服务,打开iServer服务管理页面,使用“快速发布一个或一组服务”功能,选择发布“工作空间”,远程浏览添加“BIM.smwu”工作空间文件。


    提示:发布服务时,也可以选择“数据来源”为“三维切片缓存”,直接发布三维切片缓存,然后在Web端访问时使用scene.addS3MTilesLayerByScp方法添加三维切片缓存图层到三维场景中。

  1. 选择发布的服务类型为“REST-三维服务”。
    提示:iServer会对选择发布的工作空间进行分析判断,如果“REST-三维服务”的复选框为灰色,请检查工作空间中是否没有成功保存三维场景;如果需要在Web客户端实现SQL查询,还需要勾选“REST-数据服务”。

  2. 完成服务配置后,将获得访问该服务的超链接:
    http://localhost:8090/iserver/services/3D-BIM/rest


    常见问题:
    服务发布完成后,如果对发布的工作空间进行了修改,例如使用SuperMap iDesktop在三维场景中增加了一个图层,或者修改了图层风格,不需要重新发布服务。SuperMap iServer会对发布的工作空间进行实时的检查,一旦发现有变化,会自动更新服务。

第四步 通过SuperMap iClient3D for WebGL开发WebGIS项目

SurerMap iServer三维服务支持客户端进行一系列的操作,例如加载图层、自定义 Action等。本文以打开加载了S3M缓存图层的三维场景为例,演示RVT模型在Web客户端上的访问与浏览。

  1. 获取三维服务地址
    在三维服务根目录下,点击“Realspace”进入3D资源,即三维服务根节点地址:
    (http://localhost:8090/iserver/services/3D-BIM/rest/realspace),用于在Web端访问发布的三维场景。

  2. 创建WebGIS工程
    本文直接使用SuperMap iServer自带的Tomcat进行工程发布。在SuperMap iServer安装目录下的webapps文件夹中,创建工程目录“HelloWorld”,将SuperMap iClient 3D for WebGL中的Build文件夹复制到工程目录中。其中最重要的是BuildCesium文件夹,它包含了Cesium.js及所有需要的依赖文件。

  3. 实现场景加载
    在工程目录中创建HTML文件—HelloWorld.html,添加对Cesium.js文件的引用,添加对widgets.css样式文件的引用,然后在窗体加载响应函数中,实例化Viewer,并通过viewer对象获取到场景对象scene,再获取到在线三维场景服务地址,最后通过scene对象提供的open方法,打开在线三维场景。具体代码如下:


    常见问题:
    a) 三维场景中,除了加载S3M缓存,还可以同时加载在线地图叠加显示,如果看不到在线地图,检查模型的坐标系或坐标值是否正确。
    b)如果把多种数据都放在了同一个场景中,那么在WebGL开发中直接用 scene.open方法打开就可以了;如果数据是在不同的场景或者不同的工作空间中,那么可以使用scene.addS3MTilesLayerByScp方法依次添加图层到同一个场景中。
    c)在Web端浏览时,如果需要控制各图层的显隐状态,可以通过layer.setOnlyObjsVisible(ids,true)来实现,具体代码可以参考范例。
    http://support.supermap.com.cn:8090/webgl/examples/editor.html#S3MTiles

  4. 通过浏览器浏览三维场景
    使用Chrome浏览器,访问http://localhost:8090/HelloWorld/HelloWorld.html,即可浏览三维场景中的RVT模型数据。

五、 相关资料推荐

  1. “超图知道”公众号-技术文档-《数据瘦身有几招之BIM》:介绍SuperMap三维是如何给BIM数据瘦身,从而实现高效的应用。
    “超图知道”公众号-技术文档-《数据瘦身有几招之BIM》

  2. 超图技术资源中心-培训视频-《BIM技术及与GIS平台的对接方案》:主要讲解BIM模型如何对接到GIS平台,如何进行轻量化处理,以及应用案例分享。
    超图技术资源中心-培训视频-《BIM技术及与GIS平台的对接方案》

你可能感兴趣的:(从Revit到Web端,这一波操作就够了)