一种浏览三维模型的方法和装置与流程

文档序号:18620326发布日期:2019-09-06 22:25阅读:254来源:国知局
一种浏览三维模型的方法和装置与流程

本申请涉及三维模型,尤其涉及一种浏览三维模型的方法和装置。



背景技术:

当前国内主要工业三维引擎技术路线有三类:

1、引擎封装

第一类基于unity3d或者ue4游戏引擎进行封装,此类封装方式优点在于视觉效果足够优秀,但是大多无法加载百万级模型对象。第二类基于techsoft引擎进行封装,此种封装方式适用于机械类产业,这由引擎本身的定位决定。这两种技术路线视觉效果表现优秀,不足之处均在于对电厂全厂三维模型的加载和数据库的还原面临较大压力。

2、软件封装

最初大家大部分可能是通过navisworks(以下简称nw)客户端的方式进行封装,个别厂商可能对nw二次开发之后进行贴牌销售,换汤不换药。其优秀之处在于兼容性较好,能够兼容较多的模型格式,但是这类客户端的沉重移交方式已经被现在互联网式的轻移交方式慢慢替代,此类技术路线与“互联网+”的理念和发展趋势逐渐背离。

3、自主研发

前面所述的两类方式技术路线方面虽然都有其优缺点,不能一概而论,但是真正最致命的是其底层核心,三维引擎底层核心的重要性不亚于手机中的芯片,一旦芯片被禁用,手机系统将彻底无法运行,或者需要付出更大的代价进行弥补甚至无法弥补。

伴随着互联网的发展,越来越多的用户希望在web端直接浏览三维模型。传统的三维引擎都基于桌面客户端,不具备互联网直接浏览三维模型的特性。同时在从桌面端走向web端、移动端的过程中,由于受浏览器计算能力和内存限制等方面的影响,单纯的html5技术也不能适应性能要求。对于工厂量级的模型,随着设计精度越来越高,对客户端的设备硬件要求越来越高。对于普通性能的设备想要访问超大模型,就需要服务器承担更多的计算要求。



技术实现要素:

本申请提供一种浏览三维模型的方法和装置。

根据本申请的第一方面,本申请提供一种浏览三维模型的方法,包括:

将三维模型根据管理的需求进行分类,再建立分类后的管理对象的层次结构,并给底层的模型对象建立索引;

将内存分为多个块单元,将所述管理对象存储在块单元中,并保存存储信息;

将所述块单元中存储的所述模型对象进行渲染,并保存渲染数据;

将所述渲染数据通过socket发送给客户端。

进一步地,所述存储信息包括:块单元id、模型对象三维顶点数据;

所述将所述管理对象存储在块单元中,包括:

所述块单元包括多个存储子单元;

所述管理对象存储在所述存储子单元中。

进一步地,所述将所述块单元中存储的所述模型对象进行渲染后存储在内存,包括:

根据所述索引获取所述模型对象所在的块单元和块单元中的地址;

发送到显卡渲染并将渲染数据保存到内存。

根据本申请的第二方面,本申请提供一种浏览三维模型方法,包括:

浏览器访问时先进行握手,请求服务器分配资源,得到专属的模型服务建立socket连接;

所述浏览器接受服务器发送的模型对象的渲染数据;

所述浏览器根据所述渲染数据获取渲染后的所述模型对象。

进一步地,所述浏览器根据所述渲染数据获取渲染后的所述模型对象,具体包括:

通过鼠标或者触控的方式获取所述模型对象的信息,并可改变模型状态;或

通过模型对象的索引获取所述模型对象的信息,并可改变模型状态。

根据本申请的第三方面,本申请提供一种浏览三维模型的装置,包括:

分层模块,用于将三维模型根据管理的需求进行分类,再建立分类后的管理对象的层次结构,并给底层的模型对象建立索引;

存储模块,用于将内存分为多个块单元,将所述管理对象存储在块单元中,并保存存储信息;

渲染模块,用于将所述块单元中存储的所述模型对象进行渲染,并保存渲染数据;

发送模块,用于将所述渲染数据通过socket发送给客户端。

根据本申请的第四方面,本申请提供一种浏览三维模型的装置,包括:

请求模块,用于在浏览器访问时先进行握手,请求服务器分配资源,得到专属的模型服务建立socket连接;

接收模块,用于接受服务器发送的模型对象的渲染数据;

处理模块,用于根据所述渲染数据获取渲染后的所述模型对象。

进一步地,所述渲染模块还用于:

通过鼠标或者触控的方式获取所述模型对象的信息,并可改变模型状态;或

通过模型对象的索引获取所述模型对象的信息,并可改变模型状态。

根据本申请的第五方面,本申请提供一种浏览三维模型的装置,包括:

存储器,用于存储程序;

处理器,用于通过执行所述存储器存储的程序以实现上述方法。

由于采用了以上技术方案,使本申请具备的有益效果在于:

在本申请实施例中,包括将三维模型根据管理的需求进行分类,再建立分类后的管理对象的层次结构,并给底层的模型对象建立索引;将内存分为多个块单元,将所述管理对象存储在块单元中,并保存存储信息;将所述块单元中存储的模型对象进行渲染,并保存渲染数据;将渲染数据通过socket发送给客户端,由于将三维模型数据分块进行存储,客户端无需安装任何插件或软件,通过web浏览器的方式就可以漫游三维模型,突破了操作系统和硬件的限制,同时引擎利用本身网络特性,在漫游模型的过程中进行实时工作交流,传输数据速度快。由于采用分布式渲染,将复杂、耗性能的图形渲染交给了服务器,对客户端的性能要求几乎忽略不计,普通的硬件要求就可以漫游超大型的工厂模型。

附图说明

图1为本申请的方法在一种实施方式中的流程图;

图2为本申请在一种实施方式中的三维模型数据存储结构示意图;

图3为本申请的方法在另一种实施方式中的流程图;

图4为本申请的方法在一种实施方式中浏览器访问时握手和socket交互的示意图;

图5为本申请的方法在一种实施方式中三维模型对象数据交互的示意图;

图6为本申请的方法在另一种实施方式中三维模型对象数据交互的示意图;

图7为本申请的装置在一种实施方式中的程序模块示意图;

图8为本申请的装置在一种实施方式中的程序模块示意图。

具体实施方式

下面通过具体实施方式结合附图对本发明作进一步详细说明。本申请可以以多种不同的形式来实现,并不限于本实施例所描述的实施方式。提供以下具体实施方式的目的是便于对本申请公开内容更清楚透彻的理解,其中上、下、左、右等指示方位的字词仅是针对所示结构在对应附图中位置而言。

然而,本领域的技术人员可能会意识到其中的一个或多个的具体细节描述可以被省略,或者还可以采用其他的方法、组件或材料。在一些例子中,一些实施方式并没有描述或没有详细的描述。

本文中为部件所编序号本身,例如“第一”、“第二”等,仅用于区分所描述的对象,不具有任何顺序或技术含义。

此外,本文中记载的技术特征、技术方案还可以在一个或多个实施例中以任意合适的方式组合。对于本领域的技术人员来说,易于理解与本文提供的实施例有关的方法的步骤或操作顺序还可以改变。因此,附图和实施例中的任何顺序仅仅用于说明用途,并不暗示要求按照一定的顺序,除非明确说明要求按照某一顺序。

实施例一:

如图1所示,本申请的浏览三维模型方法,其一种实施方式,包括以下步骤:

步骤102:将三维模型根据管理的需求进行分类,再建立分类后的管理对象的层次结构,并给底层的模型对象建立索引。

例如,对于一栋楼房的三维模型来说,该栋楼房包括多套房,其中的每套房均为管理对象,在一套房内,又可以分为主卧、次卧、卫生间、厨房和客厅等多个次级的管理对象,而对于客厅这个管理对象来说,其中又可以分为家俱、电器、灯具等再次一级的管理对象,对于家俱这个管理对象来说,桌子、椅子等则为模型对象。

服务器建立模型层次结构,给每个模型对象创建索引;建立存储块单元,每个块单元存储的顶点个数限制不超过216=65536(或者是232),给每个块单元分配记录id。在一种实施方式中,三维模型的数据结构如图2所示。

步骤104:将内存分为多个块单元,将所述管理对象存储在块单元中,并保存存储信息。在一种实施方式中,存储信息可以包括块单元id、模型对象三维顶点数据。

进一步地,步骤104还可以包括:

块单元包括多个存储子单元;

管理对象存储在所述存储子单元中。

分配,将描述模型对象的三维顶点数据(坐标、法向量、颜色)分配到块单元中去,并记录在当前块点单元中的地址。

步骤106:将块单元中存储的模型对象进行渲染,并保存渲染数据。

本申请中,可以将模型服务和渲染服务可以使用同一服务器,也可以分别使用模型服务器和渲染服务器。在一种实施方式中,模型服务和渲染服务分别使用模型服务器和渲染服务器时,渲染服务器在请求模型数据的时候,模型服务器根据模型索引获取模型所在的块单元以及位于块单元中的地址;模型服务器将这些信息加密压缩后,通过socket方式发送给渲染服务器。渲染服务器接受数据信息,解密解压输送到显卡渲染到内存。内存中的渲染像素数据压缩加密,通过socket的方式发送给客户端。

步骤108:将所述渲染数据通过socket发送给客户端。

实施例二:

如图3所示,本申请的浏览三维模型的方法,其一种实施方式,包括以下步骤:

步骤302:浏览器访问时先进行握手,请求服务器分配资源,得到专属的模型服务建立socket连接。

浏览器访问模型的时候,每次访问的时候需要先进行握手。握手的时候会请求服务器端分配资源,得到专属的模型服务建立socket连接。连接成功以后就可以和模型服务进行通信。图4为访问时握手和socket交互的示意图。

步骤304:浏览器接受服务器发送的模型对象的渲染数据。

浏览器在请求模型数据的时候,后台根据模型索引获取模型所在的块单元以及位于块单元中的地址。

步骤306:浏览器根据所述渲染数据获取渲染后的所述模型对象。

服务器将这些信息加密压缩后,通过socket方式发送给浏览器。

浏览器接受数据信息,解密解压输送到显卡运用html5的方式渲染显示。

从传输到渲染,通讯是通过socket方式,数据传输是以模型块的方式进行。

本申请可实现互联网无痕访问,不会在本地留下痕迹;模型在进入系统做了加密转化;而且网络传输过程中还对数据进行加密传输,三重防护保证模型数据不会外泄,提高了安全性。

进一步地,步骤306具体可以包括:

通过鼠标或者触控的方式获取所述模型对象的信息,并可改变模型状态;或通过模型对象的索引获取所述模型对象的信息,并可改变模型状态。

浏览器在对模型对象进行交互操作行为,包括:

通过鼠标或者触控的方式获取模型的信息(如几何信息、逻辑信息或者其他等),并可改变模型状态;

通过模型对象的逻辑信息(如索引)获取其他相关信息(几何信息、逻辑信息或者其他等),并可改变模型状态。

在一种实施方式中,三维模型对象的数据交互可以包括:

模型服务器根据模型索引获取模型所在的块单元以及位于块单元中的地址;

模型服务器根据射线交叉的方式获取模型所在的块单元以及位于块单元中的地址;

模型服务器将这些信息传送给渲染服务器,根据状态重新渲染并存入内存。

内存中的渲染像素数据压缩加密,通过socket的方式发送给客户端。

图5、图6分别为三维模型对象的数据交互的示意图。

使用本申请的方法浏览方便,客户端无需安装任何插件或软件,通过web浏览器的方式就可以漫游三维模型。可以挂接在任何网站进行访问,只需一个url。支持网络通信的客户端均可浏览。

实施例三:

如图7所示,本申请的浏览三维模型的装置,其一种实施方式,包括分层模块、存储模块、渲染模块和发送模块。

分层模块,用于将三维模型根据管理的需求进行分类,再建立分类后的管理对象的层次结构,并给底层的模型对象建立索引;

存储模块,用于将内存分为多个块单元,将所述管理对象存储在块单元中;

渲染模块,用于将所述块单元中存储的所述模型对象进行渲染,并保存渲染数据;

发送模块,用于将所述渲染数据通过socket发送给客户端。

实施例四:

如图8所示,本申请的浏览三维模型的装置,其一种实施方式,包括请求模块、处理模块和渲染模块。

请求模块,用于在浏览器访问时先进行握手,请求服务器分配资源,得到专属的模型服务建立socket连接;

接收模块,用于接受服务器发送的模型对象的渲染数据;

处理模块,用于根据所述渲染数据获取渲染后的所述模型对象。

进一步地,渲染模块还用于:

通过鼠标或者触控的方式获取所述模型对象的信息,并可改变模型状态;或

通过模型对象的索引获取所述模型对象的信息,并可改变模型状态。

实施例五:

根据本申请的第五方面,本申请提供一种浏览三维模型装置,包括:

存储器,用于存储程序;

处理器,用于通过执行所述存储器存储的程序以实现实施例一至二的方法。

本领域技术人员可以理解,上述实施方式中各种方法的全部或部分步骤可以通过程序来指令相关硬件完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器、随机存储器、磁盘或光盘等。

以上内容是结合具体的实施方式对本申请所作的进一步详细说明,不能认定本申请的具体实施只局限于这些说明。对于本申请所属技术领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干简单推演或替换。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1