一种三维模型场景渲染方法与流程

文档序号:29744292发布日期:2022-04-21 21:01阅读:299来源:国知局
一种三维模型场景渲染方法与流程

1.本发明涉及三维模型场景渲染领域,特别涉及一种三维模型场景渲染方法。


背景技术:

2.当前,数字孪生技术在越来越多的企业中得到了广泛的应用,使用虚拟模型优化流程,具有更复杂的仿真和建模能力、更好的互操作性,系统三维可视化的数字仿真平台和工具得到广泛使用。
3.对于数字仿真平台中生成的三维场景模型在渲染时,一般需要对模型中所有对象的所有像素点进行,像素点数量较多,导致渲染处理的次数也就越多,从而导致渲染的效率较低。
4.同时,由于三维模型涉及的专业较多,且有着海量的属性信息,使得模型数据十分庞大,不进行渲染预处理而直接应用,会导致三维平台使用卡顿不流畅。
5.因此,需要发明一种通过对三维模型进行场景渲染预处理,基于层次包围盒,即bvh(bounding volume hierarchy)的渲染方法。


技术实现要素:

6.为了解决三维模型构件较多导致渲染效率低的技术问题,本发明提供一种三维模型场景渲染方法,其技术方案如下:
7.s1:创建层次包围盒(bounding volume hierarchy,bvh)结构树。
8.s2:针对所需渲染的三维模型,进行模型数据的提取,获取所有模型构件对象。
9.s3:遍历所有建筑构件对象的模型数据,为每一个建筑构件对象创建最小包围盒,并将其设为一个节点插入到bvh树的最底层。
10.进一步的详细的,上述s3包括有如下内容:
11.s31:对系统内存区的模型数据进行空间聚类,将所述模型数据按空间位置关系分为至少一个分类;
12.对每一个分类分别计算最小包围盒。
13.s32:最小包围盒的计算方式:即在每个模型数据空间分类中先确定各个模型在xyz轴方向上的最大值maxx、maxy、maxz,最小值minx、miny、minz;然后根据具有如下坐标的八个点:a(maxx,maxy,maxz)、b(maxx,miny,maxz)、c(minx,miny,maxz)、d(minx,maxy,maxz)、e(maxx,maxy,minz)、f(maxx,miny,minz)、g(minx,miny,minz)、h(minx,maxy,minz),形成一个长方体,并将该长方体作为该分类的最小体积包围盒。
14.s4:遍历所有包含构件的最小包围盒,将构件类型相同的最小包围盒组织排列在一起并创建一个新的最小包围盒将其包围,且将新的包围盒设为一个节点插入到树的倒数第二层。
15.进一步的详细的,上述s4包括有如下内容:
16.s41:根据所述最小包围盒的大小将所述最小包围盒划分为多个预定大小的分块;
17.s42:统计各个分块的数据访问频率,根据所述数据访问频率的大小对同一个最小包围盒中的各个分块进行排序,并根据排序结果确定同一个最小包围盒中的各个分块的访问顺序。
18.s5:依据构件类型递归往上创建新的最小包围盒包围包含所有族类别或族的最小包围圈,直至场景所有构件都处于一个大的最小包围圈中,并把每一个最小包围圈设为节点插入树中。
19.s6:采用视锥体算法进行无效构件剔除,降低需要渲染的模型信息数量,用于提高渲染效率;
20.进一步详细的,上述s6包括以下步骤:
21.s61:构建视锥体,对bvh树根节点进行可视性检测,根节点为当前节点;
22.s62:遍历当前节点的所有子节点进行可视性检测,若子节点与视锥体非相交及包含关系,则剔除该节点;若子节点与视锥体相交或包含关系,则遍历该子节点的所有内部子节点进行可视性检测,重复递归步骤s12,直到所有节点检测完毕。
23.s7:对剔除构件后的bvh树进行三维引擎渲染,实现模型渲染呈现。
24.本发明的原理就是利用建立bounding volume hierarchy(bvh)即层次包围体模型,在bvh中,所有的对象数据都会被包在bounding volume的叶子节点里面,bounding volume外面继续包着一个更大的bounding volume,递归地包裹下去,最终形成的根节点会包裹着整个场景。
25.采用本发明提供的方法,与现有技术相比,具有如下有益效果:
26.通过对三维模型进行场景渲染预处理,基于层次包围盒,即bvh的渲染方法,进行模型的层次划分及构件的可视化裁剪,完成模型数据的渲染预处理,极大的提高了三维引擎对模型的渲染效率,有效提升了用户在三维平台使用过程中的体验。
附图说明
27.图1是本发明一种三维模型场景渲染方法的结构框图;
28.图2是本发明一种三维模型场景渲染方法的流程示意图。
具体实施例
29.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
30.以下结合具体实施例对本发明的具体实现进行详细描述。
31.本发明实施例提供一种三维模型场景渲染方法,其技术方案如下:
32.创建层次包围盒(bounding volume hierarchy,bvh)结构树;针对所需渲染的三维模型,进行模型数据的提取,获取所有模型构件对象;遍历所有建筑构件对象的模型数据,为每一个建筑构件对象创建最小包围盒,并将其设为一个节点插入到bvh树的最底层。
33.在本实施例中,对系统内存区的模型数据进行空间聚类,将所述模型数据按空间位置关系分为至少一个分类,对每一个分类分别计算最小包围盒。最小包围盒的计算方式:即在每个模型数据空间分类中先确定各个模型在xyz轴方向上的最大值maxx、maxy、maxz,
最小值minx、miny、minz;然后根据具有如下坐标的八个点:a(maxx,maxy,maxz)、b(maxx,miny,maxz)、c(minx,miny,maxz)、d(minx,maxy,maxz)、e(maxx,maxy,minz)、f(maxx,miny,minz)、g(minx,miny,minz)、h(minx,maxy,minz),形成一个长方体,并将该长方体作为该分类的最小体积包围盒。
34.遍历所有包含构件的最小包围盒,将构件类型相同的最小包围盒组织排列在一起并创建一个新的最小包围盒将其包围,且将新的包围盒设为一个节点插入到树的倒数第二层。同时根据所述最小包围盒的大小将所述最小包围盒划分为多个预定大小的分块。统计各个分块的数据访问频率,根据所述数据访问频率的大小对同一个最小包围盒中的各个分块进行排序,并根据排序结果确定同一个最小包围盒中的各个分块的访问顺序。
35.依据构件类型递归往上创建新的最小包围盒包围包含所有族类别或族的最小包围圈,直至场景所有构件都处于一个大的最小包围圈中,并把每一个最小包围圈设为节点插入树中。
36.采用视锥体算法进行无效构件剔除,降低需要渲染的模型信息数量,用于提高渲染效率。视锥法的具体步骤为:
37.构建视锥体,对bvh树根节点进行可视性检测,根节点为当前节点;
38.遍历当前节点的所有子节点进行可视性检测,若子节点与视锥体非相交及包含关系,则剔除该节点;若子节点与视锥体相交或包含关系,则遍历该子节点的所有内部子节点进行可视性检测,重复上述递归步骤,直到所有节点检测完毕。
39.最后,对剔除构件后的bvh树进行三维引擎渲染,实现模型渲染呈现。
40.本发明实施例的原理就是利用建立bvh层次包围体模型,在bvh中,所有的对象数据都会被包在bounding volume的叶子节点里面,递归地包裹下去,最终形成的根节点会包裹着整个场景。
41.以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1