首页> 中国专利> 一种大体量三维场景三维模型渲染优化方法和系统

一种大体量三维场景三维模型渲染优化方法和系统

摘要

一种大体量三维场景三维模型渲染优化方法和系统,涉及图像数据处理技术领域,包括:三维模型文件数据简化预处理、对剔除区域进行分类、包围体构建、深度检测和实时绘制与渲染等步骤,本方法通过多层级的视域剔除区域识别和确定,把三维模型分为三种模式来剔除不可见面和不可见模型,减少渲染数据量,以此提高视角移动时的加载速度,减少丢帧卡顿现象,达到普通PC最佳的显示效果和观看体验。

著录项

  • 公开/公告号CN113808247A

    专利类型发明专利

  • 公开/公告日2021-12-17

    原文格式PDF

  • 申请/专利权人 武汉方拓数字科技有限公司;

    申请/专利号CN202111372524.X

  • 发明设计人 张驰;余晓君;张兵;武银雪;

    申请日2021-11-19

  • 分类号G06T15/20(20110101);G06T17/00(20060101);

  • 代理机构42258 武汉聚信汇智知识产权代理有限公司;

  • 代理人马尚伟

  • 地址 430040 湖北省武汉市东西湖区东西湖大道5647号43栋2层19室

  • 入库时间 2023-06-19 13:45:04

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-02-08

    授权

    发明专利权授予

说明书

技术领域

本发明涉及图像数据处理技术领域,具体涉及一种大体量三维场景三维模型渲染优化方法和系统。

背景技术

大体量三维模型的渲染优化主要有LOD(层次细节)模型和场景管理优化等,其中场景管理优化一般有使用场景分割以及进行可见性剔除计算等不同的方法,场景管理分为场景分割和可见性剔除两种方法,可见性剔除属于场景管理的优化,其目的是为了减少三维场景在渲染流程中的数据量,因为现代使用的大体量的三维场景越来越多,其规模性和复杂性大大增加,再加上人们对交互的实时性的要求越来越高,传统的算法已经不能满足现实需求。在大体量的三维场景中,场景中的对象数量极大地增加了,但是对于用户来说,可以看到的物体是远远小于场景中物体的总数的。

通过对各种可见性剔除的分析,可见性剔除方法一般分为预处理、遮挡剔除以及实时绘制三个部分。为了能够更快的实时绘制,要尽可能的把计算操作放到离线的处理中,对于大体量的三维模型场景,以大型设备的装配场景为例,总装配体模型往往有着非常庞大的数据量,远超主流配置PC所能承受的范围,为了对装配体模型进行简化,减少数据量和渲染时间,需要将模型中一些隐藏的零件模型做剔除,也可以叫做模型的轻量化。

事实上,随着人机交互需求的增加,对于普通PC而言,如果采用已有的模型剔除和简化方法,在视角转换的过程中会存在需要计算视域再绘制的过程,模型的渲染会占用CPU近100%的计算,出现模型加载过慢产生的卡顿感和丢帧现象,影响实际使用体验。

发明内容

本发明实施例提供了一种大体量三维场景三维模型渲染优化方法和系统,通过多层级的视域剔除区域识别和确定,把三维模型分为三种模式来剔除不可见面和不可见模型,减少渲染数据量,以此提高视角移动时的加载速度,减少丢帧卡顿现象,达到普通PC最佳的显示效果和观看体验。

一种大体量三维场景三维模型渲染优化方法,包括以下步骤:

S1,三维模型文件数据简化预处理,对三维模型文件进行简化,提取用于进行场景渲染的三维可视化数据,去除其他数据,减少三维模型文件总数据大小;

S2,对剔除区域进行分类,根据视点的观察范围,对三维模型文件中不在视点的观察范围的模型进行剔除区域分析,得到不同分类的剔除区域,形成多层次视域体;

S3,包围体构建,对三维模型文件中物体的轮廓进行分析,得到物体的包围体;

S4,深度检测,根据所述步骤S2中得到的多层次视域体和所述步骤S3中得到的不同物体的包围体,在视角和投影矩发生变化时,计算得到不同物体的包围体与多层次视域体的位置关系;

S5,实时绘制与渲染,根据所述步骤S4得到的不同物体的包围体与多层次视域体的位置关系进行实时绘制与渲染。

进一步的,所述步骤S2中得到的多层次视域体包括视锥体视域和圆锥体视域,所述视锥体视域和所述圆锥体视域同轴,所述圆锥体视域的范围包含所述视锥体视域的范围,位于所述圆锥体内和所述视锥体外的区域为中间体视域,所述圆锥体外的区域为视域外区域。

进一步的,所述步骤S3中,包围体类型为球形包围体。

进一步的,所述包围体与所述多层次视域体的位置关系为内含、相交和外离三种中任一种。

进一步的,所述步骤S4包括:

S41,遍历视锥体的六个裁面,判断包围体是在该裁面的正面、背面,还是与该裁面相交;

S42,计算从包围体中心到该裁面的距离;

S43,如果距离大于0,则包围体在裁面正面,即在视锥体内,返回值IN;

S44,如果小于0,则包围体是在裁面背面,进行下一步判断;

S45,如果距离的绝对值小于球体半径,则包围体与该裁面相交,即包围体部分在视锥体内,返回值INTERSECT;

S46,对于距离小于0且距离的绝对值大于包围体半径的包围体,继续遍历圆锥体三个裁面,判断包围体是在该裁面的正面,背面,还是相交;

S47,计算从包围体中心到该裁面的距离;

S48,如果距离大于0那包围体在裁面正面,即在圆锥体内和视锥体外,返回值INMED;

S49,如果小于0那么包围体在裁面背面,进行下一步判断;

S410,如果距离的绝对值小于包围体半径,那么包围体与该裁面相交,返回值INMEDSECT;

S411,如果距离的绝对值大于包围体半径,即在视域外区域,返回值OUT;

S412,集合A包含IN和INTERSECT返回值所代表的包围体内多叉树结构范围内的所有物体;集合B包含INMED和INMEDSECT返回值所代表的包围体内多叉树结构范围内的所有物体;集合C包含OUT返回值所代表的包围体内多叉树结构范围内的所有物体。

进一步的,所述步骤S411的计算方式为:

设C为包围体中心坐标;

设N为平面法线向量;

设D为坐标系原点到裁面的距离;

计算公式为:距离= C*N+D。

进一步的,所述步骤S5包括:

S51,视锥体内或与视锥体相交,集合A渲染,实时加载绘制;

S52,不在视锥体内,但在圆锥体内或与圆锥体相交,集合B不可见面做遮挡剔除;

S53,圆锥体以外,集合C做视域剔除,不渲染。

进一步的,所述步骤S52中,遮挡剔除的内侧外侧判断方法为:根据顶点的连接顺序来判断,如果形成多边形的顶点的连接顺序是顺时针,判断为外侧,逆时针的时候为内侧,亦可以反过来判断,顺时针就变成了内侧,将判断为内侧的模型面片做不可见剔除,构建完成后发送至渲染线程,剔除相关节点及其子节点,减少渲染模型面片和构件的数量,以达到简化的目的。

第二方面,本发明实施例提供一种大体量三维场景三维模型渲染优化系统,包括三维模型文件分析模块、多层次视域体分析模块、包围体构件模块、深度检测模块和实时绘制与渲染模块;

所述三维模型文件分析模块,用于对三维模型文件进行简化,提取用于进行场景渲染的三维可视化数据,去除其他数据,减少三维模型文件总数据大小;

其中,所述三维模型文件分析模块包括模型分析单元和数据剔除单元,所述模型分析单元用于对三维模型文件进行分析,对三维模型文件中用于进行场景渲染的三维可视化数据进行标记,所述数据剔除单元用于根据标记将其余未标记数据进行删除;

所述多层次视域体分析模块,用于根据视点的观察范围,对三维模型文件中不在视点的观察范围的模型进行剔除区域分析,得到不同分类的剔除区域,形成多层次视域体;

其中,所述多层次视域体分析模块包括视域分析单元、视锥体视域分析单元和圆锥体视域分析单元,所述视域分析单元用于根据分析视点的观察范围,得到视点观察范围,所述视锥体视域分析单元用于根据视点观察范围得到视锥体视域,所述圆锥体视域分析单元用于根据视点观察范围和视锥体视域得到圆锥体视域;

所述包围体构件模块,用于对三维模型文件中物体的轮廓进行分析,得到物体的包围体;

其中,所述包围体构件模块包括模型轮廓检测单元和包围体计算单元,所述模型轮廓检测单元用于分析和检测三维模型文件中单个物体的轮廓,所述包围体计算单元用于根据所述单个物体的轮廓和中心点计算得到球形包围体;

所述深度检测模块,用于检测包围体和所述多层次视域体的位置关系;

所述实时绘制与渲染模块,用于根据所述深度检测模块得到的位置关系对三维模型进行实时绘制与渲染。

本发明实施例提供的上述技术方案的有益效果至少包括:

本发明通过对三维模型文件数据进行精简,同时进行多层级的视域剔除区域识别和确定,把三维模型分为三种模式来剔除不可见面和不可见模型,减少渲染数据量,以此提高视角移动时的加载速度,减少丢帧卡顿现象,达到普通PC最佳的显示效果和观看体验的效果。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

图1为本发明实施例公开的一种大体量三维场景三维模型渲染优化方法流程示意图;

图2为本发明实施例公开的多层次视域体的结构示意图;

图3为本发明实施例公开的步骤S4-S5的流程示意图;

图4为本发明实施例公开的一种大体量三维场景三维模型渲染优化系统的结构示意图。

附图标记:

1、三维模型文件分析模块;11、模型分析单元;12、数据剔除单元;2、多层次视域体分析模块;21、视域分析单元;22、视锥体视域分析单元;23、圆锥体视域分析单元;3、包围体构件模块;31、模型轮廓检测单元;32、包围体计算单元;4、深度检测模块;5、实时绘制与渲染模块。

具体实施例

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

实施例一

如图1-3所示,本发明实施例提供一种大体量三维场景三维模型渲染优化方法,包括以下步骤:

S1,三维模型文件数据简化预处理,对三维模型文件进行简化,提取用于进行场景渲染的三维可视化数据,去除其他数据,减少三维模型文件总数据大小;

具体的,在本实施例中,限定三维模型文件的格式为FBX文件格式,FBX模型文件存储模型的数据是基于树状的数据结构,整个场景是从一个空属性的根节点开始的,所有对象之间的关联关系都是双向的,从子节点可以索引到父节点,当然父节点也可以索引到子节点;又或者单个节点可以索引到整个场景,从场景也可以索引到单个节点,多叉树的每个节点都有一个Enum值,用于标记3D模型中比较重要的属性,如Mesh,Camera,Light等,分别用eMesh,eCamera,eLight来标记,对整棵多叉树结构进行遍历,就可以获得到不同的节点属性来进行不同的处理和操作,FBX模型节点的几何信息主要保存在其所持有的节点属性之中,模型节点最主要的作用是在模型树上维护树状结构,除此之外,FBX模型节点还保存了一些矩阵变换信息以及材质信息,FBX模型属性是FBX模型节点的成员,主要定义关于该节点所表示的元素,如光源,相机,贴图,纹理或者几何元素等,在场景渲染时,我们只需要三维可视化这部分信息,因此提取出三维可视化信息并去除其他信息能大大减少数据大小。

S2,对剔除区域进行分类,根据视点的观察范围,对三维模型文件中不在视点的观察范围的模型进行剔除区域分析,得到不同分类的剔除区域,形成多层次视域体;

具体的,多层次视域体包括视锥体视域和圆锥体视域,视锥体视域和圆锥体视域同轴,圆锥体视域的范围包含视锥体视域的范围,位于圆锥体内和视锥体外的区域为中间体视域,圆锥体外的区域为视域外区域;

视锥体主要用来表示观察者视线所构成的区域,将其定义为一个包括前、后、左、右、上、下六个面的平头锥体,视锥体剔除的目的是剔除未在屏幕范围内的数据对象,而只将落入视锥体内的场景数据调入到内存中,视锥体剔除算法的输入参数为当前的视点参数;

在本实施例中对于视点参数的定义如下:视点位置sight(x, y, z),视线的方向dr(x, y, z),向上的向量(x, y, z),通常设为(0, 1, 0),h为平面到视点的距离,通过向量变换可以推导视锥体六个裁面的数学表示;

对于视锥体内模型的剔除算法,我们将FBX数据文件中的节点信息提取出来,对多叉树进行处理,一旦我们剔除掉一个节点,那么那个节点往下的子节点就也被一并剔除了,这样就不必一个个剔除三维世界中每一个物体,减少计算量的同时把需要着重渲染的模型部分进行区别;

圆锥体是一个和视锥体同轴的用来表示模型预处理和渲染的区域,该视域包含视锥体视域,圆锥体视域中分割视锥体视域的空间范围在本文称为中间体视域,在正平面上视域的投影如下:

以矩形的对角交叉点为原点O(0,0),经原点且平行于矩形的长所在直线为x轴,经原点且平行于矩形的长所在直线为y轴,建立直角坐标系xOy;因矩形的对称关系,假设其中一点为

通过对视锥体投影矩形的大小可以计算出此矩形最小的外接椭圆,即中间视域的最小区域,可以绘制出椭圆的形状;

矩形的长:

矩形的宽:

设置可变常量φ、μ,通过调整可变常量,可以对椭圆进行比例缩放,进而改变中间视域的范围;

椭圆区域表达式为:

椭圆形区域预置参数,也可根据实际情况进行手工调整;

中间视域可调节,三维模型数据量大时,椭圆形小,数据量小或对模型显示数量要求高时,椭圆形可设置大一些,影响因素包括:

1.获取当前视锥体形状、参数;

2.获取内物体个数、物体三角面、顶点数量;

3.获取当前计算机图形渲染能力;

4.重新绘制视锥体形状。

S3,包围体构建,对三维模型文件中物体的轮廓进行分析,得到物体的包围体,包围体类型为球形包围体;

S4,深度检测,根据步骤S2中得到的多层次视域体和步骤S3中得到的不同物体的包围体,在视角和投影矩发生变化时,计算得到不同物体的包围体与多层次视域体的位置关系,包围体与多层次视域体的位置关系为内含、相交和外离三种中任一种;

具体的,遍历视锥体的六个裁面,判断包围体是在该裁面的正面、背面,还是与该裁面相交,计算从包围体中心到该裁面的距离,如果距离大于0,则包围体在裁面正面,即在视锥体内,返回值IN,如果小于0,则包围体是在裁面背面,进行下一步判断,如果距离的绝对值小于球体半径,则包围体与该裁面相交,即包围体部分在视锥体内,返回值INTERSECT,对于距离小于0且距离的绝对值大于包围体半径的包围体,继续遍历圆锥体三个裁面,判断包围体是在该裁面的正面,背面,还是相交,计算从包围体中心到该裁面的距离,如果距离大于0那包围体在裁面正面,即在圆锥体内和视锥体外,返回值INMED,如果小于0那么包围体在裁面背面,进行下一步判断,如果距离的绝对值小于包围体半径,那么包围体与该裁面相交,返回值INMEDSECT,如果距离的绝对值大于包围体半径,即在视域外区域,返回值OUT,设C为包围体中心坐标,设N为平面法线向量,设D为坐标系原点到裁面的距离,计算公式为:距离= C*N+D,集合A包含IN和INTERSECT返回值所代表的包围体内多叉树结构范围内的所有物体;集合B包含INMED和INMEDSECT返回值所代表的包围体内多叉树结构范围内的所有物体;集合C包含OUT返回值所代表的包围体内多叉树结构范围内的所有物体。

S5,实时绘制与渲染,根据步骤S4得到的不同物体的包围体与多层次视域体的位置关系进行实时绘制与渲染;

具体的,根据不同物体的包围体与多层次视域体的位置,当物体的包围体在视锥体内或与视锥体相交,集合A渲染,实时加载绘制;当物体的包围体不在视锥体内,但在圆锥体内或与圆锥体相交,位于中间体视域,集合B不可见面做遮挡剔除,具体的,遮挡剔除的内侧外侧判断方法为:根据顶点的连接顺序来判断,如果形成多边形的顶点的连接顺序是顺时针,判断为外侧,逆时针的时候为内侧,亦可以反过来判断,顺时针就变成了内侧,将判断为内侧的模型面片做不可见剔除,构建完成后发送至渲染线程,剔除相关节点及其子节点,减少渲染模型面片和构件的数量,以达到简化的目的;当圆锥体以外,位于视域外区域,集合C做视域剔除,不渲染。

本发明克服了现有技术模型剔除和简化方法,在视角转换的过程中会存在需要计算视域再绘制的过程,模型的渲染会占用CPU近100%的计算,出现模型加载过慢产生的卡顿感和丢帧现象,影响实际使用体验的问题,通过对三维模型文件数据进行精简,同时进行多层级的视域剔除区域识别和确定,把三维模型分为三种模式来剔除不可见面和不可见模型,减少渲染数据量,以此提高视角移动时的加载速度,减少丢帧卡顿现象,达到普通PC最佳的显示效果和观看体验的效果。

实施例二

本发明实施例还公开了一种大体量三维场景三维模型渲染优化系统,如图2和4,包括三维模型文件分析模块1、多层次视域体分析模块2、包围体构件模块3、深度检测模块4和实时绘制与渲染模块5;

三维模型文件分析模块1,用于对三维模型文件进行简化,提取用于进行场景渲染的三维可视化数据,去除其他数据,减少三维模型文件总数据大小;

其中,三维模型文件分析模块1包括模型分析单元11和数据剔除单元12,模型分析单元11用于对三维模型文件进行分析,对三维模型文件中用于进行场景渲染的三维可视化数据进行标记,数据剔除单元12用于根据标记将其余未标记数据进行删除;

多层次视域体分析模块2,用于根据视点的观察范围,对三维模型文件中不在视点的观察范围的模型进行剔除区域分析,得到不同分类的剔除区域,形成多层次视域体;

其中,多层次视域体分析模块2包括视域分析单元21、视锥体视域分析单元22和圆锥体视域分析单元23,视域分析单元21用于根据分析视点的观察范围,得到视点观察范围,视锥体视域分析单元22用于根据视点观察范围得到视锥体视域,圆锥体视域分析单元23用于根据视点观察范围和视锥体视域得到圆锥体视域;

包围体构件模块3,用于对三维模型文件中物体的轮廓进行分析,得到物体的包围体;

其中,包围体构件模块3包括模型轮廓检测单元31和包围体计算单元32,模型轮廓检测单元31用于分析和检测三维模型文件中单个物体的轮廓,包围体计算单元32用于根据单个物体的轮廓和中心点计算得到球形包围体;

深度检测模块4,用于检测包围体和多层次视域体的位置关系;

实时绘制与渲染模块5,用于根据深度检测模块4得到的位置关系对三维模型进行实时绘制与渲染。

本实施例公开的一种大体量三维场景三维模型渲染优化系统,通过三维模型文件分析模块1对三维模型文件数据进行精简,同时多层次视域体分析模块2进行多层级的视域剔除区域识别和确定,把三维模型分为三种模式来剔除不可见面和不可见模型,减少渲染数据量,包围体构件模块3构件三维模型文件中单个物体的包围体,深度检测模块4分析包围体与多层级的视域剔除区域的位置关系,确定显示的模型、不可见面和不可见模型,实时绘制与渲染模块5根据显示的模型、不可见面和不可见模型进行实时绘制与渲染,以此提高视角移动时的加载速度,减少丢帧卡顿现象,达到普通PC最佳的显示效果和观看体验的效果。

应该明白,公开的过程中的步骤的特定顺序或层次是示例性方法的实例。基于设计偏好,应该理解,过程中的步骤的特定顺序或层次可以在不脱离本公开的保护范围的情况下得到重新安排。所附的方法权利要求以示例性的顺序给出了各种步骤的要素,并且不是要限于所述的特定顺序或层次。

在上述的详细描述中,各种特征一起组合在单个的实施方案中,以简化本公开。不应该将这种公开方法解释为反映了这样的意图,即,所要求保护的主题的实施方案需要清楚地在每个权利要求中所陈述的特征更多的特征。相反,如所附的权利要求书所反映的那样,本发明处于比所公开的单个实施方案的全部特征少的状态。因此,所附的权利要求书特此清楚地被并入详细描述中,其中每项权利要求独自作为本发明单独的优选实施方案。

本领域技术人员还应当理解,结合本文的实施例描述的各种说明性的逻辑框、模块、电路和算法步骤均可以实现成电子硬件、计算机软件或其组合。为了清楚地说明硬件和软件之间的可交换性,上面对各种说明性的部件、框、模块、电路和步骤均围绕其功能进行了一般地描述。至于这种功能是实现成硬件还是实现成软件,取决于特定的应用和对整个系统所施加的设计约束条件。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为背离本公开的保护范围。

结合本文的实施例所描述的方法或者算法的步骤可直接体现为硬件、由处理器执行的软件模块或其组合。软件模块可以位于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、移动磁盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质连接至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。该ASIC可以位于用户终端中。当然,处理器和存储介质也可以作为分立组件存在于用户终端中。

对于软件实现,本申请中描述的技术可用执行本申请所述功能的模块(例如,过程、函数等)来实现。这些软件代码可以存储在存储器单元并由处理器执行。存储器单元可以实现在处理器内,也可以实现在处理器外,在后一种情况下,它经由各种手段以通信方式耦合到处理器,这些都是本领域中所公知的。

上文的描述包括一个或多个实施例的举例。当然,为了描述上述实施例而描述部件或方法的所有可能的结合是不可能的,但是本领域普通技术人员应该认识到,各个实施例可以做进一步的组合和排列。因此,本文中描述的实施例旨在涵盖落入所附权利要求书的保护范围内的所有这样的改变、修改和变型。此外,就说明书或权利要求书中使用的术语“包含”,该词的涵盖方式类似于术语“包括”,就如同“包括,”在权利要求中用作衔接词所解释的那样。此外,使用在权利要求书的说明书中的任何一个术语“或者”是要表示“非排它性的或者”。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号