CN101169871A - 面向大规模静态场景实时渲染的hlod预处理方法 - Google Patents
面向大规模静态场景实时渲染的hlod预处理方法 Download PDFInfo
- Publication number
- CN101169871A CN101169871A CNA2007101786420A CN200710178642A CN101169871A CN 101169871 A CN101169871 A CN 101169871A CN A2007101786420 A CNA2007101786420 A CN A2007101786420A CN 200710178642 A CN200710178642 A CN 200710178642A CN 101169871 A CN101169871 A CN 101169871A
- Authority
- CN
- China
- Prior art keywords
- hlod
- scene
- octree
- model
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本发明是面向大规模静态场景实时渲染的HLOD预处理方法。该方法首先进行单模型HLOD(Hierarchical Levels of Detail)的预计算;然后对预计算结果进行存储,根据场景载入所需要的单模型HLOD信息,进行场景HLOD的预计算;最后根据用户指定的误差基于视点对HLOD进行选择和渲染。本发明的特点是对模型和场景都可以灵活地进行不同层次和粒度的剖分,从而可以在渲染时保持较好的细节和较少的计算量,适用于大规模静态场景的模型数据的预处理。并针对预计算需要较长时间的问题,设计了一种HLOD文件格式,从而增加了其复用性。
Description
技术领域
本发明属于计算机虚拟现实技术领域,具体地说是一种面向由多个大数据量模型组成的大规模场景实时渲染预处理方法,用于真实感虚拟环境的绘制。
背景技术
随着三维采集设备和建模技术的不断发展,三维模型的精度越来越高,其数据量也随之迅速增长,对计算机的绘制能力提出了巨大挑战。如何实现由多个大数据量模型组成的大规模场景的实时渲染,是虚拟现实、实时仿真以及交互三维设计等许多重要应用的底层支撑技术,也是计算机图形学本身的一个基础性研究课题。
LOD技术是图形生成加速渲染方法中的一种主要方法。早在1976年,Clark就提出了层次细节(Levels of Detail,LOD)模型的概念(参见Clark J.Hierarchical Geometric Models forVisible 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 ReportUU-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的预计算的方法如下:首先计算单模型的中心和尺寸,根据指定的剖分粒度N进行Octree剖分,剖分停止条件是当前包围盒中的顶点数n≤N,在剖分过程中,父节点保存剖分边界面;然后自底向上建立HLOD结构,并根据设计的HLOD文件格式进行输出存储,加强复用性。
所述的场景HLOD的预计算的方法为:根据场景所需模型,逐个载入建立好的单模型HLOD,对单模型的包围盒进行融合,得到场景包围盒,并进行场景的Octree剖分,剖分的停止条件为当前包围的单模型数目m≤2,从而得到场景模型结构;然后自底向上建立场景HLOD。
所述的根据用户指定的误差基于视点对HLOD进行选择和渲染方法为:根据用户指定的屏幕像素误差N,转化为空间距离误差E,从场景根节点遍历场景Octree和单模型Octree,当HLOD的简化误差e≤E时,选择此HLOD进行渲染。
本发明与现有技术相比的有益效果是:
(1)由于本发明首先进行单模型HLOD的预计算;然后对预计算结果进行存储,根据场景载入所需要的单模型HLOD信息,进行场景HLOD的预计算;最后根据用户指定的误差基于视点对HLOD进行选择和渲染。因此,相对于离散LOD提供了较好的细节性绘制;相对于连续LOD又减少了渲染的复杂度,预计算结果得到了保留,增加了应用的重用性。
(2)对单模型进行粒度为N的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剖分
对所有顶点坐标取平均值得到包围盒的center,再取所有顶点到中心的最大距离的两倍作为包围盒的size。预先规定模型Octree的剖分粒度所对应的顶点数minVertNum=500,只要包围盒空间含有的顶点数目少于minVertNum,包围盒对应的节点就停止剖分。由于Octree的剖分必定会产生边界面片,而这些面片在自底向上的HLOD建立中,不能参与化简,否则会在模型的各个部分之间产生缝隙,所以要对每一次剖分产生的边界进行保留,单模型Octree剖分边界保留渲染如图2所示。
1.2单模型HLOD的递归建立
Octree建立好之后,就可以进行自底向上单模型HLOD的构建了。从叶子节点开始,建立模型的HLOD结构。本发明采用一种保留几何及属性边界的网格简化方法[6]对剖分后的模型分块进行化简。以下是建立模型HLOD的算法描述:
Step1.如果当前节点node是否叶子节点,则把其当前未简化的几何信
息作为最精细层LOD1,而将LOD1的面片简化到1/2得到次精细层LOD2,将LOD2简化到1/2得到最粗层LOD3,在简化过程中同时得到各个LOD与原始几何信息对应的空间距离误差distanceError,它是逐渐叠加的值。
Step2.若node不是叶子节点,则先对其非空子节点调用
Step1-Step2来构建HLOD,这是个递归调用过程。当node的所有非空子节点构建完HLOD后,进行如下操作:
(1)将所有子节点的最初粗层HLOD的几何信息和它们之间的边界信息(子节点之间的边界保存在父节点中)联合起来,得到meshesTemp,
(2)将meshesTemp进行面片数减半的化简,得到最精细层HLOD1,依次得到次精细层HLOD2和最粗糙层HLOD3,
(3)对于非叶子节点,其distanceError取其子节点中的最大空间距离误差值。
对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-guidedprogressive lossless 3D mesh coding with octree(OT)decomposition.ACM Transactions on Graphics,24(3),2005:609-616中的编码方法对Octree的节点信息进行了编码,从而得到了Octree节点信息编码和Octree节点描述码。节点描述码是标识节点是否叶子节点的码段,和节点信息编码合在一起,就可以重构出原Octree结构。下面是构建节点编码段octreeCode和节点描述码段nodeDiscription的简略算法描述:
Step1.把Octree的根节点放入队列node Queue;
Step2.从nodeQueue中取出一个节点,遍历它的8个子节点,进行如下操作:
(1)若子节点为空,则把0放入octreeCode容器,若非空,则把1放入octreeCode;
(2)若子节点是叶子节点,则把1放入nodeDiscription容器,若是非叶子节点,则把0放入nodeDiscription,并将此非叶子节点加入到nodeQueue队列中
Step3.重复Ste1-Step2,直到nodeQueue为空
为了将各个节点的信息在读入HLOD文件时放入相应的Octree节点中,必须在读取HLOD数据之前重构模型原来的Octree结构,所以在HLOD文件中把Octree结构信息放于节点信息之前。HLOD文件的第3部分记录的是各个节点的HLOD信息和边界信息,顺序和OctreeCode所记录的节点顺序一致,这样就能把HLOD信息放入到相应得节点中,从而保证整个HLOD文件的正确读取。
2.场景HLOD的预计算
2.1场景的Octree剖分
由于场景中的模型是按照一定的位置进行摆放的,按照场景中模型的空间变换信息,对以HLOD文件格式载入的单模型包围盒信息作相应的变换,包括旋转、平移和缩放。遍历所有的单模型包围盒数组,得到它们中心的平均值作为场景包围盒的中心sceneCenter,以所有模型包围盒轴向边界距离sceneCenter最大距离作为场景包围盒的尺寸sceneSize。得到了场景的包围盒之后,使用与单模型剖分类似的方法对场景进行Octree剖分。本发明规定剖分停止的条件为单位包围盒中所包含模型的数目小于2,并且不用考虑边界。剖分完毕之后,就可以得到一棵场景Octree。
2.2建立场景HLOD
场景HLOD的建立与单模型HLOD的建立类似,需要注意以下两点:
(1)从叶子节点自底向上简化时,简化单位是叶子节点所包含的模型,场景叶子节点的最精细层HLOD,是它包含的单模型根节点的最粗层HLOD的几何信息。
(2)场景节点建立HLOD时,不用考虑边界。
3.基于视点渲染HLOD得到单模型和场景的HLOD之后,还必须根据用户指定误差及漫游视点进行HLOD的选择和基于视点渲染,基于视点的HLOD渲染如图5、图6所示。
根据公式 选择HLOD进行渲染,其中P是用户指定的屏幕像素误差,d是场景中HLOD中心距离视点的距离,θ是视景体的水平夹角,N是渲染窗口的宽度。基于视点渲染的算法描述如下,首先将场景根节点加入队列nodeQueue
Step1.从nodeQueue取出节点node,遍历node的3个HLOD,比较简化误差e与E,若符合公式(1),则把node节点指针和满足条件的HLOD指针作为一个2元组加入到渲染队列renderQueue。
Step2.遍历完毕node的HLOD之后,若没有符合公式(1)的,则将node的非空子节点加入nodeQueue
Step3.重复Step1-Step2,直到nodeQueue为空
Step4.遍历渲染队列进行渲染。
Claims (5)
1.面向大规模静态场景实时渲染的HLOD预处理方法,其特征在于:首先进行单模型HLOD的预计算;然后对预计算结果进行存储,根据场景载入所需要的单模型HLOD信息,进行场景HLOD的预计算;最后根据用户指定的误差基于视点对HLOD进行选择和渲染。
2.根据权利要求1所述的面向大规模静态场景实时渲染的HLOD预处理方法,其特征在于:所述的单模型HLOD的预计算的方法如下:首先计算单模型的中心和尺寸,根据指定的剖分粒度N进行Octree剖分,剖分停止条件是当前包围盒中的顶点数n≤N,在剖分过程中,父节点保存剖分边界面;然后自底向上建立HLOD结构,并根据设计的HLOD文件格式进行输出存储,加强复用性。
3.根据权利要求1所述的面向大规模静态场景实时渲染的HLOD预处理方法,其特征在于:所述的场景HLOD的预计算的方法为:根据场景所需模型,逐个载入建立好的单模型HLOD,对单模型的包围盒进行融合,得到场景包围盒,并进行场景的Octree剖分,剖分的停止条件为当前包围的单模型数目m≤2,从而得到场景模型结构;然后自底向上建立场景HLOD。
4.根据权利要求1所述的面向大规模静态场景实时渲染的HLOD预处理方法,其特征在于:所述的根据用户指定的误差基于视点对HLOD进行选择和渲染方法为:根据用户指定的屏幕像素误差N,转化为空间距离误差E,从场景根节点遍历场景Octree和单模型Octree,当HLOD的简化误差e≤E时,选择此HLOD进行渲染。
5.根据权利要求2所述的面向大规模静态场景实时渲染的HLOD预处理方法,其特征在于:所述的设计的HLOD文件格式结构为:文件头、Octree结构信息和节点数据信息三个部分,其中文件头描述三维模型的全局信息,包括:模型包围盒中心、包围盒尺寸、顶点数目、面片数目和材质数据;结构信息部存储了Octree结构,包括:Octree编码信息和节点描述信息,用来在读取时恢复Octree结构;节点数据信息是每个Octree节点包含的数据信息,包括边界面片数据、HLOD数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007101786420A CN101169871A (zh) | 2007-12-03 | 2007-12-03 | 面向大规模静态场景实时渲染的hlod预处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007101786420A CN101169871A (zh) | 2007-12-03 | 2007-12-03 | 面向大规模静态场景实时渲染的hlod预处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101169871A true CN101169871A (zh) | 2008-04-30 |
Family
ID=39390485
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007101786420A Pending CN101169871A (zh) | 2007-12-03 | 2007-12-03 | 面向大规模静态场景实时渲染的hlod预处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101169871A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101655993B (zh) * | 2008-08-20 | 2012-01-11 | 武汉大学 | 复杂建筑物三维模型多分辨率建模方法 |
CN101877142B (zh) * | 2009-11-18 | 2012-05-30 | 胡晓峰 | 一种基于多尺度层次细节的仿真方法 |
CN110044522A (zh) * | 2019-03-25 | 2019-07-23 | 北京航空航天大学 | 一种利用神经网络实现压电式压力检测触屏压电响应均匀化的方法 |
CN110717967A (zh) * | 2019-07-16 | 2020-01-21 | 北京航空航天大学青岛研究院 | 面向大场景模型web端动态渲染LOD处理方法 |
CN111340925A (zh) * | 2020-02-28 | 2020-06-26 | 福建数博讯信息科技有限公司 | 一种区域划分的渲染优化方法及终端 |
CN112231020A (zh) * | 2020-12-16 | 2021-01-15 | 成都完美时空网络技术有限公司 | 模型切换方法和装置、电子设备和存储介质 |
CN113287153A (zh) * | 2018-10-14 | 2021-08-20 | 本特利系统有限公司 | Hlod树的动态前端驱动生成 |
CN113287154A (zh) * | 2018-10-14 | 2021-08-20 | 本特利系统有限公司 | 基础设施模型几何形状到图块格式的转换 |
-
2007
- 2007-12-03 CN CNA2007101786420A patent/CN101169871A/zh active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101655993B (zh) * | 2008-08-20 | 2012-01-11 | 武汉大学 | 复杂建筑物三维模型多分辨率建模方法 |
CN101877142B (zh) * | 2009-11-18 | 2012-05-30 | 胡晓峰 | 一种基于多尺度层次细节的仿真方法 |
CN113287153A (zh) * | 2018-10-14 | 2021-08-20 | 本特利系统有限公司 | Hlod树的动态前端驱动生成 |
CN113287154A (zh) * | 2018-10-14 | 2021-08-20 | 本特利系统有限公司 | 基础设施模型几何形状到图块格式的转换 |
CN110044522A (zh) * | 2019-03-25 | 2019-07-23 | 北京航空航天大学 | 一种利用神经网络实现压电式压力检测触屏压电响应均匀化的方法 |
CN110044522B (zh) * | 2019-03-25 | 2020-07-24 | 北京航空航天大学 | 一种利用神经网络实现压电式压力检测触屏压电响应均匀化的方法 |
CN110717967A (zh) * | 2019-07-16 | 2020-01-21 | 北京航空航天大学青岛研究院 | 面向大场景模型web端动态渲染LOD处理方法 |
CN111340925A (zh) * | 2020-02-28 | 2020-06-26 | 福建数博讯信息科技有限公司 | 一种区域划分的渲染优化方法及终端 |
CN111340925B (zh) * | 2020-02-28 | 2023-02-28 | 福建数博讯信息科技有限公司 | 一种区域划分的渲染优化方法及终端 |
CN112231020A (zh) * | 2020-12-16 | 2021-01-15 | 成都完美时空网络技术有限公司 | 模型切换方法和装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Fortune | Voronoi diagrams and Delaunay triangulations | |
CN101169871A (zh) | 面向大规模静态场景实时渲染的hlod预处理方法 | |
Lindstrom et al. | Visualization of large terrains made easy | |
Cignoni et al. | Multiresolution modeling and visualization of volume data based on simplicial complexes | |
Pajarola et al. | Survey of semi-regular multiresolution models for interactive terrain rendering | |
CN102521863B (zh) | 一种基于粒子系统的三维流体标矢量统一动态表示方法 | |
CN1946180B (zh) | 一种基于Octree的三维模型压缩编码方法 | |
CN101604453A (zh) | 基于分块策略的大规模数据场体绘制方法 | |
CN106709975A (zh) | 一种交互式三维人脸表情动画编辑方法、系统及扩展方法 | |
CN102930594A (zh) | 基于保持边界的计算机三维地形网格的绘制方法 | |
CN113628331B (zh) | 一种虚幻引擎中摄影测量模型的数据组织和调度方法 | |
CN110298922A (zh) | 一种三维模型简化方法、装置及设备 | |
Dai et al. | Skeletal animation based on BVH motion data | |
Wang et al. | Fast mesh simplification method for three-dimensional geometric models with feature-preserving efficiency | |
Chang et al. | A new solid subdivision scheme based on box splines | |
CN104463934B (zh) | 一种“质点‑弹簧”系统驱动的点集模型动画自动生成方法 | |
Gong et al. | Three-dimensional reconstruction of medical image based on improved marching cubes algorithm | |
Remacle et al. | Fast and robust mesh generation on the sphere—Application to coastal domains | |
CN107330209A (zh) | 一种基于参数化设计的造型墙智能模板实现方法 | |
CN105279788A (zh) | 一种生成物体空间扫掠体的方法 | |
CN108830929A (zh) | 基于数据库的多分辨率地形金字塔模型生成方法及系统 | |
Chiang et al. | Out-of-core algorithms for scientific visualization and computer graphics | |
Hsiung et al. | Accelerating arts | |
CN105957142A (zh) | 一种面向TIN构建的Hilbert排序方法 | |
Yalçın et al. | GPU algorithms for diamond-based multiresolution terrain processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20080430 |