首页> 中国专利> 适用于Revit BIM模型的Web端轻量化展示方法

适用于Revit BIM模型的Web端轻量化展示方法

摘要

本申请公开了一种适用于Revit BIM模型的Web端轻量化展示方法,包括:基于Revit BIM模型内容设定转换文件格式内容;基于所设定的格式内容,采用深度八叉树法将模型内容生成LOD(层次细节)数据;上传变换后的模型LOD数据至服务器,使用数据库存储外围数据;采用JavaScript解析变换后的LOD数据,并在Web端显示以展示。有益效果:本申请实现了模型的自定义转换,特别是二进制格式,可有效的降低转换后模型数据的尺寸,方便存储和网络传输,实现了LOD,可支持超大模型的Web端展示。

著录项

  • 公开/公告号CN112596727A

    专利类型发明专利

  • 公开/公告日2021-04-02

    原文格式PDF

  • 申请/专利权人 南京北冥鲲科技有限公司;

    申请/专利号CN202011191949.6

  • 发明设计人 高鹏;

    申请日2020-10-30

  • 分类号G06F8/38(20180101);G06T17/00(20060101);

  • 代理机构

  • 代理人

  • 地址 211100 江苏省南京市江宁区秣陵街道秣周东路12号U411(南京未来科技城)

  • 入库时间 2023-06-19 10:27:30

说明书

技术领域

本申请涉及计算机技术领域,尤其涉及一种适用于Revit BIM模型的Web端轻量化展示方法。

背景技术

当前Revit BIM模型在Web端轻量化展示,有2种方法。

第一种,使用Autodesk公司提供的云服务,将BIM模型上传至Autodesk公司服务器。此种方法的技术缺点是,不能私有化部署,不能保护敏感数据,访问速度慢,不能定制需求。

第二种,使用IFC格式文件作为BIM模型的输出,再对其进行解析、转换、使用。此种方法的技术缺点是,处理须进行2次格式转换,IFC格式信息固定,形成的文件较大,且不能定制;不包含LOD(Levels of Detail,层次细节)信息,不能在Web端显示超大模型,否则浏览器会崩溃;不包含除建筑模型外的其他信息,比如光照信息,导致数据不完整,同时也有不能保护敏感数据的缺点。

发明内容

为了解决上述技术问题,本申请实施例提供一种适用于Revit BIM模型的Web端轻量化展示方法,实现了Revit BIM模型格式的可定制化转换,可定制化根据应用场景需要设计私有化的文件格式,通过1次格式转换既可完成全量数据的转换;同时可指定层次因子,自动生成LOD数据,支持超大模型的Web端显示。

本申请实施例提供了一种适用于Revit BIM模型的Web端轻量化展示方法,包括:

基于Revit BIM模型内容设定转换文件格式内容;

基于所设定的格式内容,采用深度八叉树法将模型内容生成LOD数据;

上传变换后的模型LOD数据至服务器,使用数据库存储外围数据;

采用JavaScript解析变换后的LOD数据,并在Web端显示以展示。

进一步地,所述设定转换文件格式内容包括定义场景数据、几何体数据、材质数据、对象数据、用户数据。

进一步地,定义场景数据时,定义整个BIM模型的整体信息,包含模型名称、缩放比例。

进一步地,定义几何体数据时,定义几何体的类型、唯一标识符、顶点数据、法线数据、面数据、缩放因子、是否可见、是否双面材质、是否阴影、UV坐标数据。

进一步地,定义材质数据时,定义材质类型、材质颜色、环境光、漫反射、高光、透明度、是否线框数据。

进一步地,定义对象数据时,定义几何体与材质的关联关系。

进一步地,定义用户数据时,定义建筑应用数据,包含墙、门、窗、矩形直墙洞门、分割条、墙饰条、常规模型、结构基础、楼板、栏杆扶手、屋顶、地形、建筑地坪、结构柱、管道、中心线、管件、机械设备、灯具、火警设备、风道末端、照明设备、安全设备、模型组、专用设备、管道隔热层、管道附件、喷头、楼梯、梯段、支撑、电气设备、管道系统、风管系统构件的Revit属性数据。

进一步地,所述基于所设定的格式内容,采用深度八叉树法将模型内容生成LOD数据具体包括:

基于层次因子计算层次深度、子节点体积;

基于深度八叉树算法分层分解转换后的模型,标记模型分片在场景中的位置;

基于分解后的模型,按照层次分目录存储,其中层次目录按由小到大的顺序表示由粗略信息到详细信息,文件名包含该片模型在场景的中的位置。

进一步地,所述上传变换后的模型LOD数据至服务器,使用数据库存储外围数据具体包括:

将生成的LOD数据压缩成zip文件上传服务器;

服务器解压zip文件并存储在服务器指定目录;

采用数据库存储对应的模型序号、名称和各类属性,作为后续查询、显示使用的依据。

进一步地,所述采用JavaScript解析变换后的LOD数据,并在Web端显示以展示具体包括:

在JavaScript中使用Three.js构建三维场景;

通过Ajax获取模型0级LOD数据,显示粗略模型,模型数据载入后,根据自定义的格式解析数据,构建几何体、材质、灯光元素,并添加至Three.js构建的三维场景中;

获取视点与模型的空间距离,当视点与模型的空间距离满足LOD层次切换的阈值时,载入相应级别的模型LOD数据,更新显示直至所有的LOD数据显示完毕。

有益效果:本申请实现了模型的自定义转换,特别是二进制格式,可有效的降低转换后模型数据的尺寸,方便存储和网络传输,实现了LOD(层次细节),可支持超大模型的Web端展示。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的适用于Revit BIM模型的Web端轻量化展示方法的流程图;

图2是子节点的8等分示意图;

图3是数据存储目录结构的示意图;

图4是本申请实施例提供的一种识别装置的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和 “包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/ 或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为 “当... 时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。

本申请所涉及的一种适用于Revit BIM模型的Web端轻量化展示方法可以实现Revit BIM模型格式的可定制化转换,可定制化根据应用场景需要设计私有化的文件格式,通过1次格式转换既可完成全量数据的转换;同时可指定层次因子,自动生成LOD数据,支持超大模型的Web端显示。

具体步骤包括:

S101:基于Revit BIM模型内容设定转换文件格式内容。

可以理解的是,根据需要自定义BIM模型转换后的文本或二进制私有化格式。具体地,设定转换文件格式内容包括定义场景数据、几何体数据、材质数据、对象数据、用户数据。

定义场景数据时,定义整个BIM模型的整体信息,包含模型名称、缩放比例。

定义几何体数据时,定义几何体的类型、唯一标识符、顶点数据、法线数据、面数据、缩放因子、是否可见、是否双面材质、是否阴影、UV坐标数据。

定义材质数据时,定义材质类型、材质颜色、环境光、漫反射、高光、透明度、是否线框数据。

定义对象数据时,定义几何体与材质的关联关系。

定义用户数据时,定义建筑应用数据,包含并不限于标高、主题、偏移、体积、图像、成本、类型数据。

S102:基于所设定的格式内容,采用深度八叉树法将模型内容生成LOD数据。

可以理解的是,在上步骤中已经将模型数据进行文本转换或者二进制私有化格式了,使用Revit的二次开发接口转换模型,实现导出上下文接口以及自定义的导出上下文,完成实际的模型转换,使用自定义导出器执行模型导出。

具体地,编写Revit二次开发程序时,首先配置Revit SDK,建立二次开发环境,其次实现IExportContext接口,按照步骤S101中定义的格式,分别编写View、Polymesh、Face、Material、Light等对象的转换方法,最后使用CustomExporter执行模型导出。

在上述基于所设定的格式内容进行导出之后,采用深度八叉树法将模型内容生成LOD数据,具体包括:

基于层次因子计算层次深度、子节点体积;

基于深度八叉树算法分层分解转换后的模型,标记模型分片在场景中的位置(本文方案,在传统深度八叉树算法等值抽稀的基础上,对抽稀进行了优化。方法是,近似计算点的曲率,对于曲率大于阈值的点作为关键点,在抽稀的过程中予以保留,可以最大程度的保留集合体的主要轮廓。);

基于分解后的模型,按照层次分目录存储,其中层次目录按由小到大的顺序表示由粗略信息到详细信息,文件名包含该片模型在场景的中的位置。

作为一个具体的实施例,下面给出两种生成LOD数据的步骤。

方法一:

1、设定子节点数据体的最大体积s,设定视点距离阈值vd;

2、计算已导出模型数据体的外接体积V;

3、计算LOD各级节点对应的数据体、LOD层次数;

3-0、设函数f表示一个数据体所需的空间;

3-1、如果f(V)≤s,该模型的LOD划分完成(该模型仅有根节点);3-2、如果f(V)>s,将该模型进行8等分,如图2,各子节点命名为V

3-3、对子节点V

3.3.1如满足f(V

3.3.2如满足f(V

3-4、重复3.3步骤,直至子节点数据体的体积f(V

4、子节点数据生成与存储:

4.0、设步骤3中计算所得的LOD叶节点的层次数为d,根节点的层次数为0;

4.1、建立目录层次结构,如图3,其中目录0存储根节点数据;目录1-8存储第一级节点数据,及各自子节点的下级目录;直至存储d级节点所对应的数据文件;

4.2计算子节点数据:

4.2.1对d级叶节点,直接存储原始模型中对应空间位置的数据;

4.2.2对d-1级节点,通过计算其子节点数据生成;

4.2.2.1合并d-1级节点所属的8个子节点数据;

4.2.2.2对合并后的数据进行抽稀处理;

4.2.2.2.1对仅属于线的点,计算近似曲率,大于阈值的标记为关键点;

4.2.2.2.2分别从X、Y、Z轴进行等值抽稀,如当前点为关键点则保留;

4.2.2.3在相应的目录下存储经过抽稀后的数据;

4.2.3重复以上步骤,直至根节点。

5.生成节点空间位置与节点文件的索引关系:

5.1根据步骤3中对各级子节点的体积划分,计算其空间位置,并建立与文件存储的目录结构之间的关系;

5.2在根节点目录写入索引文件;

6.生成模型信息文件:

6.1生成模型整体描述信息文件,包括模型名称、描述,模型LOD层次数,模型坐标中心、模型外接体坐标、模型位置变换值,视口距离阈值;

6.2在根节点目录写入文件。

方法二:

1、设定子节点体积数据最大密度dp,设定视点距离阈值vd;

2、计算已导出模型数据体的外接体积V;

3、计算子节点数据体的最大体积s:

3.0:计算1级子节点最大数据密度dp

3.1:如1级子节点最大数据密度dp

3.2:如dp

3.3:重复上述步骤,直至第N级子节点的数据密度dp

4、使用步骤3中计算所得的子节点数据体的最大体积s,重复方法一中的步骤3-步骤6,完成模型LOD数据处理。

方法二相比与方法一,其区别在于直接指定了节点数据密度,适用于预期应用环境中软硬件设备配置相对一致的场景,可根据网络带宽、CPU能力、内存大小设定合理的最大数据密度。

S103:上传变换后的模型LOD数据至服务器,使用数据库存储外围数据;

可以理解的是,外围数据一般指代序号、名称、各类属性等。

将生成的LOD数据压缩成zip文件上传服务器;

服务器解压zip文件并存储在服务器指定目录;

采用数据库存储对应的模型序号、名称和各类属性,作为后续查询、显示使用的依据。

S104:采用JavaScript解析变换后的LOD数据,并在Web端显示以展示。

可以理解的是,本步骤在JavaScript中使用Three.js构建三维场景后,通过Ajax获取模型0级LOD数据,显示粗略模型,模型数据载入后,根据自定义的格式解析数据,使用WebGL技术在Web端对已解析的模型LOD数据三维显示,构建几何体、材质、灯光元素,并添加至Three.js构建的三维场景中。

实时计算用户鼠标拖动时,获取视点与模型的空间距离,当视点与模型的空间距离满足LOD层次切换的阈值时,载入相应级别的模型LOD数据,更新显示直至所有的LOD数据显示完毕。

图4是本申请实施例提供的一种轻量化展示设备的结构示意图。该对象检测设备4000包括处理器41,还可以包括输入装置42、输出装置43和存储器44。该输入装置42、输出装置43、存储器44和处理器41之间通过总线相互连接。

存储器包括但不限于是随机存储记忆体(random access memory,RAM)、只读存储器(read至only memory,ROM)、可擦除可编程只读存储器(erasable programmable readonly memory,EPROM)、或便携式只读存储器(compact disc read至only memory,CD至ROM),该存储器用于相关指令及数据。

输入装置用于输入数据和/或信号,以及输出装置用于输出数据和/或信号。输出装置和输入装置可以是独立的器件,也可以是一个整体的器件。

处理器可以包括是一个或多个处理器,例如包括一个或多个中央处理器(centralprocessing unit,CPU),在处理器是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。处理器还可以包括一个或多个专用处理器,专用处理器可以包括GPU、FPGA等,用于进行加速处理。

存储器用于存储网络设备的程序代码和数据。

处理器用于调用该存储器中的程序代码和数据,执行上述方法实施例中的步骤。具体可参见方法实施例中的描述,在此不再赘述。

可以理解的是,图4仅仅示出了对象检测设备的简化设计。在实际应用中,动作识别装置还可以分别包含必要的其他元件,包含但不限于任意数量的输入/输出装置、处理器、控制器、存储器等,而所有可以实现本申请实施例的动作识别装置都在本申请的保护范围之内。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。所显示或讨论的相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者通过该计算机可读存储介质进行传输。该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是只读存储器(read至onlymemory,ROM),或随机存储存储器(random access memory,RAM),或磁性介质,例如,软盘、硬盘、磁带、磁碟、或光介质,例如,数字通用光盘(digital versatile disc,DVD)、或者半导体介质,例如,固态硬盘(solid state disk ,SSD)等。

以上详细描述了本发明的优选实施方式,但是本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种等同变换(如数量、形状、位置等),这些等同变换均属于本发明的保护。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号