一种三维模型渲染显示方法及系统技术方案

技术编号:14345755 阅读:122 留言:0更新日期:2017-01-04 16:56
本发明专利技术实施例公开了三维模型渲染显示方法,包括:根据当前视点的位置信息,判断建立的三维模型中每个子块的根节点是否可见;三维模型按照三维坐标方向进行了分块,分成多个子块,且每个子块预先根据各自的层级和数据量信息生成有各自对应的自适应树LOD;根据自适应树LOD,从可见的根节点开始递归遍历子树,对根节点下的所有节点进行LOD的可见性判断,按照层级逐层对根节点下的所有节点进行可见性判断和LOD精度测试,得出满足可见性和LOD精度要求的节点对应的层级;加载满足要求的所述层级对应的模型数据,对三维模型进行渲染显示。本发明专利技术还公开了一种三维模型渲染显示系统,采用本发明专利技术,可解决现有技术中LOD策略的缺陷。

【技术实现步骤摘要】

本专利技术涉及计算机网络通信领域,尤其涉及一种三维模型渲染显示方法及三维模型渲染显示系统。
技术介绍
由于对三维模型进行渲染时,一般需要对三维模型数据从粗到近,从低level到高level逐级请求并渲染;当三维模型比较精细时,对网速和内存的要求比较高,否则很难达到流畅的效果,因此现有技术中往往通过浏览器控件或客户端软件的方式来实现远程浏览三维模型,即用户需要安装插件或软件。然而,随着html5及WebGL的发展,在浏览器上直接浏览三维模型成为可能。WebGL是一项利用JavaScriptAPI呈现3D电脑图形的技术,有别于过往需加装浏览器插件,通过WebGL的技术,只需要编写网页代码即可实现3D图像的展示。对于高精度三维模型,例如三维建筑物,它们的特点是地理范围小,采样精度高,数据量大。当前常用的方案是简单分块多细节层次(LOD,LevelsofDetial)或自适应分块的模型数据来实现三维模型的渲染。如图1示出的现有技术中简单分块LOD的数据结构示意图,可以将三维模型初始划分为i*j*k个子块,图1中以只列出三个子块(块0、块1和块2)为例,每个子块根据LOD需要,再生成n个层级level对应的节点数据,渲染时,根据视点远近直接选定目标子块、目标level的节点数据进行绘制。然而,当模型精度较高时,初始分块数据就可能过大(顶点数过多或纹理过大);如果为了保证单个子块的数据量,就得划分过多的子块,导致可见对象数目过多,在绘制时帧率会明显下降,并对通过WebGL来实现远程浏览三维模型造成更加明显的影响。因此这种方法无法适应高精度模型的远程可视化。如图2示出的现有技术中自适应树LOD的数据结构示意图,将最粗糙的原始模型,即level=0的三维模型作为根节点,然后根据数据复杂度的需要,在level=1时,将模型划分为1~k个子块,以此类推,形成了一颗自适应树。每个节点除了记录对应的模型数据(几何数据及纹理数据)外,还需要记录它的子树信息。然而,由于树的结构记录在节点数据中,所以必须从根节点逐级请求数据,才能找到并显示目标level的模型数据,网络流量大、内存消耗高、显示速度慢,很难适应当前移动互联网的需要。
技术实现思路
本专利技术实施例所要解决的技术问题在于,提供一种三维模型渲染显示方法及三维模型渲染显示系统,可解决现有技术中LOD策略的缺陷,适用于高精度三维模型的可视化。为了解决上述技术问题,本专利技术实施例第一方面公开了一种三维模型渲染显示方法,包括:根据当前视点的位置信息,判断建立的三维模型中每个子块的根节点是否可见;所述三维模型按照三维坐标方向进行了分块,分成多个子块,且每个子块预先根据各自的层级和数据量信息生成有各自对应的自适应树多细节层次LOD;根据所述自适应树LOD,从可见的根节点开始递归遍历子树,按照层级逐层对所述根节点下的所有节点进行可见性判断和LOD精度测试,得出满足可见性和LOD精度要求的节点对应的层级;加载满足要求的所述层级对应的模型数据,对三维模型进行渲染显示。结合第一方面,在第一种可能的实现方式中,通过预设的元数据文件对所述三维模型的基本信息,所述自适应树LOD的树形结构信息以及每个节点的瓦片Tile信息进行存储;所述根据当前视点的位置信息,判断建立的三维模型中每个子块的根节点是否可见之前,还包括:通过请求所述元数据文件,在内存中重建三维模型的节点构成的树形结构。结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述分块中的节点对应的几何数据和纹理数据分别通过独立的文件进行存储;所述加载满足要求的所述层级对应的模型数据,对三维模型进行渲染显示包括:根据得出的满足要求的所述层级对应的模型数据,从所述独立的文件中进行提取并进行加载,对三维模型进行渲染显示。结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,判断出子块中可见的根节点之后,所述根据所述自适应树LOD,从可见的根节点开始递归遍历子树之前,还包括:判断所述可见的根节点是否标识绘制过;当判断结果为否时,请求并绘制所述可见的根节点。结合第一方面,在第四种可能的实现方式中,所述按照层级逐层对所述根节点下的所有节点进行可见性判断和LOD精度测试,得出满足可见性和LOD精度要求的节点对应的层级,包括:将所述可见根节点的下一层级节点作为当前层级节点,判断所述当前层级节点是否可见;当判断结果为是时,对所述当前层级节点进行LOD精度测试,分析是否满足LOD精度要求;当分析结果为是时,则所述当前层级为满足可见性和LOD精度要求的节点对应的层级;当分析结果为否时,则将所述当前层级节点的下一层级节点作为更新的当前层级节点,并重复执行所述判断所述当前层级节点是否可见的步骤,直到得出满足可见性和LOD精度要求的节点对应的层级。结合第一方面,或者第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,或者第一方面的第三种可能的实现方式,或者第一方面的第四种可能的实现方式,在第五种可能的实现方式中,当所述视点的位置或视角发生变化需要进行场景切换时,得出满足可见性和LOD精度要求的节点对应的层级从层级i变化到层级j,其中所述i和j为正整数,且j大于i;所述加载满足要求的所述层级对应的模型数据包括:根据满足要求节点的所属子块对应的自适应树LOD,分析所述层级i到所述层级j之间是否存在分叉树;当分析结果为否时,跨级直接请求加载所述层级j对应的模型数据;当分析结果为是时,请求加载从所述层级i往下的第一个分叉树所对应的模型数据。结合第一方面的第五种可能的实现方式,,在第六种可能的实现方式中,加载了所述层级j对应的模型数据,完成对三维模型的渲染显示后,将所述上一层级对应的模型数据进行卸载。结合第一方面的第五种可能的实现方式,在第七种可能的实现方式中,当多个子块中的节点需要同时从层级i变化到层级j时,所述加载满足要求的所述层级对应的模型数据,包括:判断从层级i到层级j经过的层级数量是否到达预设阈值;当判断结果为是时,按照预设的间隔层级数,逐层加载层级对应的模型数据,并当所述多个子块的节点都完成加载当前层级对应的模型数据后,才间隔所述间隔层级数加载下一层级对应的模型数据。本专利技术实施例第二方面公开了一种三维模型渲染显示系统,包括:可见判断模块,用于根据当前视点的位置信息,判断建立的三维模型中每个子块的根节点是否可见;所述三维模型按照三维坐标方向进行了分块,分成多个子块,且每个子块预先根据各自的层级和数据量信息生成有各自对应的自适应树多细节层次LOD;判断测试模块,用于根据所述自适应树LOD,从可见的根节点开始递归遍历子树,按照层级逐层对所述根节点下的所有节点进行可见性判断和LOD精度测试,得出满足可见性和LOD精度要求的节点对应的层级;加载显示模块,用于加载满足要求的所述层级对应的模型数据,对三维模型进行渲染显示。结合第二方面,在第一种可能的实现方式中,通过预设的元数据文件对所述三维模型的基本信息,所述自适应树LOD的树形结构信息以及每个节点的瓦片Tile信息进行存储;所述系统还包括:请求重建模块,用于在所述可见判断模块根据当前视点的位置信息,判断建立的三维模型中每个子块的根节点是否可见之前,通过请求所述本文档来自技高网
...
一种<a href="http://www.xjishu.com/zhuanli/55/201510257945.html" title="一种三维模型渲染显示方法及系统原文来自X技术">三维模型渲染显示方法及系统</a>

【技术保护点】
一种三维模型渲染显示方法,其特征在于,包括:根据当前视点的位置信息,判断建立的三维模型中每个子块的根节点是否可见;所述三维模型按照三维坐标方向进行了分块,分成多个子块,且每个子块预先根据各自的层级和数据量信息生成有各自对应的自适应树多细节层次LOD;根据所述自适应树LOD,从可见的根节点开始递归遍历子树,按照层级逐层对所述根节点下的所有节点进行可见性判断和LOD精度测试,得出满足可见性和LOD精度要求的节点对应的层级;加载满足要求的所述层级对应的模型数据,对三维模型进行渲染显示。

【技术特征摘要】
1.一种三维模型渲染显示方法,其特征在于,包括:根据当前视点的位置信息,判断建立的三维模型中每个子块的根节点是否可见;所述三维模型按照三维坐标方向进行了分块,分成多个子块,且每个子块预先根据各自的层级和数据量信息生成有各自对应的自适应树多细节层次LOD;根据所述自适应树LOD,从可见的根节点开始递归遍历子树,按照层级逐层对所述根节点下的所有节点进行可见性判断和LOD精度测试,得出满足可见性和LOD精度要求的节点对应的层级;加载满足要求的所述层级对应的模型数据,对三维模型进行渲染显示。2.如权利要求1所述的方法,其特征在于,通过预设的元数据文件对所述三维模型的基本信息,所述自适应树LOD的树形结构信息以及每个节点的瓦片Tile信息进行存储;所述根据当前视点的位置信息,判断建立的三维模型中每个子块的根节点是否可见之前,还包括:通过请求所述元数据文件,在内存中重建三维模型的节点构成的树形结构。3.如权利要求2所述的方法,其特征在于,所述分块中的节点对应的几何数据和纹理数据分别通过独立的文件进行存储;所述加载满足要求的所述层级对应的模型数据,对三维模型进行渲染显示包括:根据得出的满足要求的所述层级对应的模型数据,从所述独立的文件中进行提取并进行加载,对三维模型进行渲染显示。4.如权利要求2所述的方法,其特征在于,判断出子块中可见的根节点之后,所述根据所述自适应树LOD,从可见的根节点开始递归遍历子树之前,还包括:判断所述可见的根节点是否标识绘制过;当判断结果为否时,请求并绘制所述可见的根节点。5.如权利要求1所述的方法,其特征在于,所述按照层级逐层对所述根节点下的所有节点进行可见性判断和LOD精度测试,得出满足可见性和LOD精度要求的节点对应的层级,包括:将所述可见根节点的下一层级节点作为当前层级节点,判断所述当前层级节点是否可见;当判断结果为是时,对所述当前层级节点进行LOD精度测试,分析是否满足LOD精度要求;当分析结果为是时,则所述当前层级为满足可见性和LOD精度要求的节点对应的层级;当分析结果为否时,则将所述当前层级节点的下一层级节点作为更新的当前层级节点,并重复执行所述判断所述当前层级节点是否可见的步骤,直到得出满足可见性和LOD精度要求的节点对应的层级。6.如权利要求1-5任一项所述的方法,其特征在于,当所述视点的位置或视角发生变化需要进行场景切换时,得出满足可见性和LOD精度要求的节点对应的层级从层级i变化到层级j,其中所述i和j为正整数,且j大于i;所述加载满足要求的所述层级对应的模型数据包括:根据满足要求节点的所属子块对应的自适应树LOD,分析所述层级i到所述层级j之间是否存在分叉树;当分析结果为否时,跨级直接请求加载所述层级j对应的模型数据;当分析结果为是时,请求加载从所述层级i往下的第一个分叉树所对应的模型数据。7.如权利要求6所述的方法,其特征在于,加载了所述层级j对应的模型数据,完成对三维模型的渲染显示后,将所述上一层级对应的模型数据进行卸载。8.如权利要求6所述的方法,其特征在于,当多个子块中的节点需要同时从层级i变化到层级j时,所述加载满足要求的所述层级对应的模型数据,包括:判断从层级i到层级j经过的层级数量是否到达预设阈值;当判断结果为是时,按照预设的间隔层级数,逐层加载层级对应的模型数
\t据,并当所述多个子块的节点都完成加载当前层级对应的模型数据后,才间隔所述间隔层级数加载下一层级对应的模型数据。9.一种三维模型渲染显示系统,其特征在于,包括:可见判断模块,用于根据当前视点的位置信息,判断建立的三维模型中每个子块的根节点是否可见;所述三维模型按照三维坐标方...

【专利技术属性】
技术研发人员:王斌
申请(专利权)人:深圳市腾讯计算机系统有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1