面向大规模静态场景实时渲染的hlod预处理方法

文档序号:6613942阅读:241来源:国知局
专利名称:面向大规模静态场景实时渲染的hlod预处理方法
技术领域
本发明属于计算机虚拟现实技术领域,具体地说是一种面向由多个大数据量模型组成的大 规模场景实时渲染预处理方法,用于真实感虚拟环境的绘制。
背景技术
随着三维采集设备和建模技术的不断发展,三维模型的精度越来越高,其数据量也随之迅 速增长,对计算机的绘制能力提出了巨大挑战。如何实现由多个大数据量模型组成的大规模场 景的实时渲染,是虚拟现实、实时仿真以及交互三维设计等许多重要应用的底层支撑技术,也 是计算机图形学本身的一个基础性研究课题。
LOD技术是图形生成加速渲染方法中的一种主要方法。早在1976年,Clark就提出了层次 细节(Levels of Detail, LOD)模型的概念(参见 Clark J. Hierarchical Geometric Models for Visible Surface Algorithms [A〗.Communications of the ACM, 1976. 547- 554.),认为当物体覆盖屏 幕较小区域时,可以使用该物体较低分辨率的模型,反之则使用较高分辨率模型,以便对复杂 场景进行快速绘制。目前的LOD技术可以分为离散LOD和连续LOD两类。
离散LOD中的模型层次是按照逐渐简化的顺序排列的,相互之间没有外在联系,在绘制时, 选择合适的层次进行渲染。离散LOD计算简单,绘制快捷,但其层次有限,因而不能满足多种 应用的需求。而由于其剖分粒度过粗,以模型为单位,对于大尺度模型,由于近视点和远视点 区域都采用同样的LOD层次,这样就影响了细节性的绘制并造成了额外的绘制开销。
连续LOD就是为了解决这些问题而提出来的,它允许同一个模型上的LOD层次连续变化 (参见M. de Berg and K. Dobrindt, "On the Levels of Detail in Terrains", Technical Report UU-CS-1995-12, Department of Computer Science, Utrecht University, April 1995.)广泛应用在大 型模型和地形模型的浏览中。但连续LOD计算复杂,多数要在网格简化中生成某种记录结构, 从而在渲染时根据视点信息进行重建,在提高了绘制视觉效果的同时,也增加了绘制的开销。

发明内容
本发明的目的是提供一种面向大规模场景实时渲染的HLOD预处理方法.相对于离散LOD 提供了较好的细节性绘制;相对于连续LOD又减少了渲染的复杂度,从而满足大规模静态场景 实时渲染得需要。
本发明的技术解决方案面向大规模静态场景实时渲染的HLOD预处理方法;首先进行单
模型HLOD (Hierarchical Levels of Detail)的预计算;然后对预计算结果进行存储,根据场景 载入所需要的单模型HLOD信息,进行场景HLOD的预计算;最后根据用户指定的误差基于视 点对HLOD进行选择和渲染。
所述的单模型HLOD的预计算的方法如下首先计算单模型的中心和尺寸,根据指定的剖 分粒度iV进行Octree剖分,剖分停止条件是当前包围盒中的顶点数"SW,在剖分过程中,父节 点保存剖分边界面;然后自底向上建立HLOD结构,并根据设计的HLOD文件格式进行输出存 储,加强复用性。
所述的场景HLOD的预计算的方法为根据场景所需模型,逐个载入建立好的单模型 HLOD,对单模型的包围盒进行融合,得到场景包围盒,并进行场景的Octree剖分,剖分的停止 条件为当前包围的单模型数目mS2,从而得到场景模型结构;然后自底向上建立场景HLOD。
所述的根据用户指定的误差基于视点对HLOD进行选择和渲染方法为根据用户指定的屏 幕像素误差N,转化为空间距离误差E,从场景根节点遍历场景Octree和单模型Octree,当HLOD 的简化误差《E时,选择此HLOD进行渲染。
本发明与现有技术相比的有益效果是-
(1) 由于本发明首先进行单模型HLOD的预计算;然后对预计算结果进行存储,根据场景 载入所需要的单模型HLOD信息,进行场景HLOD的预计算;最后根据用户指定的误差基于视 点对HLOD进行选择和渲染。因此,相对于离散LOD提供了较好的细节性绘制;相对于连续 LOD又减少了渲染的复杂度,预计算结果得到了保留,增加了应用的重用性。
(2) 对单模型进行粒度为W的Octree剖分,自底向上建立HLOD,绘制时根据视点选择 剖分块数目众多的HLOD层次,避免了离散LOD绘制的单一化,从而在绘制时提供了较好的细 节;在绘制时,本发明可以对HLOD进行简单并高效地选取,减少了绘制复杂度,而连续LOD
还要根据折叠树进行以面片为单位的遍历。
(3) 本发明设计了一种HLOD文件格式对计算结果进行了保存,当场景变化时,不用再次 计算单模型的HLOD,从而增加了应用的重用性。


图1为本发明的面向大规模静态场景实时渲染的HLOD预处理方法流程图; 图2为本发明的单模型Octree剖分边界保留图示; 图3为本发明的单模型HLOD渲染图示图; 图4为本发明的HLOD文件格式图5、图6为本发明采用基于视点和用户指定误差进行HLOD选择和渲染的图示。
具体实施方式
如图1所示,本发明的具体实施方法如下 1.单模型HLOD的预计算 1.1单模型的Octree剖分
对所有顶点坐标取平均值得到包围盒的"Wer,再取所有顶点到中心的最大距离的两倍作为 包围盒的^e。预先规定模型Octree的剖分粒度所对应的顶点数/m'"FertM^n=500,只要包围盒 空间含有的顶点数目少于m&reWVww,包围盒对应的节点就停止剖分。由于Octree的剖分必定 会产生边界面片,而这些面片在自底向上的HLOD建立中,不能参与化简,否则会在模型的各 个部分之间产生缝隙,所以要对每一次剖分产生的边界进行保留,单模型Octree剖分边界保留 渲染如图2所示。
1.2单模型HLOD的递归建立
Octree建立好之后,就可以进行自底向上单模型HLOD的构建了 。从叶子节点开始,建立 模型的HLOD结构。本发明采用一种保留几何及属性边界的网格简化方法[6]对剖分后的模型分 块进行化简。以下是建立模型HLOD的算法描述
Stepl.如果当前节点"o&是否叶子节点,则把其当前未简化的几何信
息作为最精细层L0D1,而将L0D1的面片简化到1/2得到次精细层LOD2,将LOD2简化到 1/2得到最粗层LOD3,在简化过程中同时得到各个LOD与原始几何信息对应的空间距离误差 cfoto"ce五nw,它是逐渐叠加的值。
Step2.若w&不是叶子节点,则先对其非空子节点调用
Stepl——Step2来构建HLOD,这是个递归调用过程。当node的所有非空子节点构建完 HLOD后,进行如下操作
(1) 将所有子节点的最初粗层HLOD的几何信息和它们之间的边界信息(子节点之间的边 界保存在父节点中)联合起来,得到m^/z^7femp,
(2) 将me^^7fewp进行面片数减半的化简,得到最精细层HLODl,依次得到次精细层 HLOD2和最粗糙层HLOD3,
(3) 对于非叶子节点,其^feto"ce五nw取其子节点中的最大空间距离误差值。
对Octree的根节点调用上述过程,递归地建立整个Octree的HLOD结构。在HLOD建立 过程中,将属于同一纹理的面片归为同一组,避免在绘制过程中纹理的频繁切换,从而进一步 提高渲染效率。图3是选取单模型第2层Octree节点不同层次HLOD的渲染结果。
1.3单模型HLOD文件格式的设计
当单模型较大时,建立HLOD是比较耗时的。为提高渲染效率本发明设计了一种HLOD的 文件格式,对己构建好HLOD的模型进行二进制分块存储。.这样即使场景有改动,,也不用对所有模型进行再次预处理,得到了各个模型的HLOD数据文件,就可以直接导入进行场景HLOD 的构建,从而大大减少了场景变动后的HLOD预处理时间。HLOD的文件格式如图4所示,包 括-文件头、Octree结构信息和节点数据信息三个部分。其中文件头描述三维模型的全局信息,
包括模型包围盒中心、包围盒尺寸、顶点数目、面片数目和材质数据,以便支持纹理;结构
信息部存储了 Octree结构,包括Octree编码信息和节点描述信息,用来在读取时恢复Octree 结构;节点数据信息是每个Octree节点包含的数据信息,包括边界面片数据、HLOD数据。
为了将Octree的结构信息进行记录,本发明采用了 J.Peng, C,C. J. Kuo, Geometry-guided progressive lossless 3D mesh coding with octree (OT) decomposition. ACM Transactions on Graphics, 24(3), 2005: 609-616中的编码方法对Octree的节点信息进行了编码,从而得到了 Octree节点信 息编码和Octree节点描述码。节点描述码是标识节点是否叶子节点的码段,和节点信息编码合 在一起,就可以重构出原Octree结构。下面是构建节点编码段oc^eeO^fe和节点描述码段 "ocfeD/scr桝kw的简略算法描述
Stepl.把Octree的根节点放入队列
Step2.从wo^Qwew中取出一个节点,遍历它的8个子节点,进行如下操作
(1) 若子节点为空,则把0放入oc/reeCocfe容器,若非空,则把1放入oc加eQ^e;
(2) 若子节点是叶子节点,则把l放入/w&i)^r妙'M容器,若是非叶子节点,则把0放入 jwcfeltocnjjrtora,并将此非叶子节点加入到Mo^fegwewe队列中
Step3.重复Stel-Step2,直到nocfegwewe为空
为了将各个节点的信息在读入HLOD文件时放入相应的Octree节点中,必须在读取HLOD 数据之前重构模型原来的Octree结构,所以在HLOD文件中把Octree结构信息放于节点信息之 前。HLOD文件的第3部分记录的是各个节点的HLOD信息和边界信息,顺序和OctreeCode所 记录的节点顺序一致,这样就能把HLOD信息放入到相应得节点中,从而保证整个HLOD文件 的正确读取。
2.场景HLOD的预计算
2.1场景的Octree剖分
由于场景中的模型是按照一定的位置进行摆放的,按照场景中模型的空间变换信息,对以 HLOD文件格式载入的单模型包围盒信息作相应的'变换,包括旋转、平移和缩放。遍历所有的 单模型包围盒数组,得到它们中心的平均值作为场景包围盒的中心we朋Ce对e。以所有模型包 围盒轴向边界距离sce"eCeW^最大距离作为场景包围盒的尺寸^e"eS&e。得到了场景的包围盒 之后,使用与单模型剖分类似的方法对场景进行Octree剖分。本发明规定剖分停止的条件为单 位包围盒中所包含模型的数目小于2,并且不用考虑边界。.剖.分完毕之后,就可以得到一棵场景
Octree 。
2.2建立场景HLOD
场景HLOD的建立与单模型HLOD的建立类似,需要注意以下两点-(l)从叶子节点自底向上简化时,简化单位是叶子节点所包含的模型,场景叶子节点的最精 细层HLOD,是它包含的单模型根节点的最粗层HLOD的几何信息。 C2)场景节点建立HLOD时,不用考虑边界。
3.基于视点渲染HLOD得到单模型和场景的HLOD之后,还必须根据用户指定误差及漫游 视点进行HLOD的选择和基于视点渲染,基于视点的HLOD渲染如图5、图6所示。
根据公式e^五-^丄tan^选择HLOD进行渲染,其中P是用户指定的屏幕像素误差,d
是场景中HLOD中心距离视点的距离,e是视景体的水平夹角,N是渲染窗口的宽度。基于视 点渲染的算法描述如下,首先将场景根节点加入队列wcfe2"et^
Stepl.从"o&gwewe取出节点wwfe,遍历的3个HLOD,比较简化误差e与£,若符 合公式(l),则把节点指针和满足条件的HLOD指针作为一个2元组加入到渲染队列
Step2.遍历完毕朋&的HLOD之后,若没有符合公式(l)的,则将的非空子节点加入 nodeQueue
Step3.重复Stepl-Step2,直到为空
Step4.遍历渲染队列进行渲染。
权利要求
1、面向大规模静态场景实时渲染的HLOD预处理方法,其特征在于首先进行单模型HLOD的预计算;然后对预计算结果进行存储,根据场景载入所需要的单模型HLOD信息,进行场景HLOD的预计算;最后根据用户指定的误差基于视点对HLOD进行选择和渲染。
2、 根据权利要求1所述的面向大规模静态场景实时渲染的HLOD预处理方法,其特征在 于所述的单模型HLOD的预计算的方法如下首先计算单模型的中心和尺寸,根据指定的剖 分粒度W进行Octree剖分,剖分停止条件是当前包围盒中的顶点数在剖分过程中,父节 点保存剖分边界面;然后自底向上建立HLOD结构,并根据设计的HLOD文件格式进行输出存 储,加强复用性。
3、 根据权利要求1所述的面向大规模静态场景实时渲染的HLOD预处理方法,其特征在于 所述的场景HLOD的预计算的方法为根据场景所需模型,逐个载入建立好的单模型HLOD, 对单模型的包围盒进行融合,得到场景包围盒,并进行场景的Octree剖分,剖分的停止条件为 当前包围的单模型数目mS2,从而得到场景模型结构;然后自底向上建立场景HLOD。
4、 根据权利要求1所述的面向大规模静态场景实时渲染的HLOD预处理方法,其特征在于 所述的根据用户指定的误差基于视点对HLOD进行选择和渲染方法为根据用户指定的屏幕像 素误差N,转化为空间距离误差E,从场景根节点遍历场景Octree和单模型Octree,当HLOD的 简化误差eSE时,选择此HLOD进行渲染。
5、 根据权利要求2所述的面向大规模静态场景实时渲染的HLOD预处理方法,其特征在于 所述的设计的HLOD文件格式结构为文件头、Octree结构信息和节点数据信息三个部分,其 中文件头描述三维模型的全局信息,包括模型包围盒中心、包围盒尺寸、顶点数目、面片数 目和材质数据;结构信息部存储了 Octree结构,包括Octree编码信息和节点描述信息,用来 在读取时恢复Octree结构;节点数据信息是每个Octree节点包含的数据信息,包括边界面片数 据、HLOD数据。
全文摘要
本发明是面向大规模静态场景实时渲染的HLOD预处理方法。该方法首先进行单模型HLOD(Hierarchical Levels of Detail)的预计算;然后对预计算结果进行存储,根据场景载入所需要的单模型HLOD信息,进行场景HLOD的预计算;最后根据用户指定的误差基于视点对HLOD进行选择和渲染。本发明的特点是对模型和场景都可以灵活地进行不同层次和粒度的剖分,从而可以在渲染时保持较好的细节和较少的计算量,适用于大规模静态场景的模型数据的预处理。并针对预计算需要较长时间的问题,设计了一种HLOD文件格式,从而增加了其复用性。
文档编号G06T15/20GK101169871SQ20071017864
公开日2008年4月30日 申请日期2007年12月3日 优先权日2007年12月3日
发明者沈旭昆, 硕 高, 越 齐 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1