一种基于线性四叉树的lod模型生成方法

文档序号:9647097阅读:619来源:国知局
一种基于线性四叉树的lod模型生成方法
【技术领域】
[0001] 本发明属于计算机图形图像学技术领域,特别涉及一种基于线性四叉树的L0D模 型生成方法。
【背景技术】
[0002] 大规模地形场景的绘制以及三维真实感绘制技术一直是国内外计算机图形学领 域关注的热点。在目前的渲染方法中,渲染的速度由地形模型中纹理面数量的多少决定,并 且为渲染提供的光、质等渲染因子也受到模型中纹理面数量的限制,在此两种因素的影响 下对地形的绘制效果和植染质感的影响进一步加深。而L0D(LevelofDetail,细节层次 模型)技术正式为了解决此类问题而提出,L0D简化技术在场景中的应用主要可分为两类: 一类是直接利用满足误差条件的顶点生成网格的细节层次模型;另一类是从DEM(Digital ElevationModel高程数据模型)栅格数据出发按四叉分割或者二叉分割的方式生成规整 的三角形网格的基于规则网格的细节层次模型。现阶段对基于规则网格的L0D算法绝大部 分是从这两个算法发展演变而来。
[0003] 在大规模地形场景的渲染过程中,当视点距某一物体较近时,物体绘制所使用的 像素较多,当视点距某一物体较远时,物体绘制所使用的像素较少。基于此种情况,在地形 的绘制过程中就没有必要使用大量的多边形片面去精确表示所占像素较少的物体细节。多 细节层次技术可以更好的实现三维复杂模型的实时动态显示效果,通过将三维物体通过用 不同精度的模型进行表示,并在此过程中根据视点位置的变化而选择不同精度的模型绘制 成像,此种技术可以大大提高渲染的速度和效率。判断通过三维可视化技术所绘制的场景 是否能够达到实时变化的效果主要着重于两点:一是所采用的计算机本身硬件的性能高 低;二是绘制物体的几何目标是否简单,这将直接决定实时可视化中的计算量。在目前的技 术条件下受限于对计算机硬件依赖度比较大的计算机图形制作系统的制图能力还比较有 限,在这种情况的影响下,对场景绘制渲染成像的过程中每帧所能绘制的原始几何模型即 三角形数量也变得十分有限。综上所述情况,实时复杂场景特别是大规模地形绘制的关键 所在就是探索如何有效的降低几何模型的复杂度。

【发明内容】

[0004] 针对现有技术存在的问题,本发明提供一种基于线性四叉树的L0D模型生成方 法。
[0005] 本发明的技术方案是:
[0006] -种基于线性四叉树的L0D模型生成方法,包括以下步骤:
[0007] 步骤1、对待绘制地形进行线性四叉树分割,每一个线性四叉树节点代表一个分割 的地形块即地形节点,其中距视点近的地形区域分辨率较高且分割层级越大,而远离视点 的地形区域分辨率较低,分割层级越小;
[0008] 步骤2、待绘制地形的数据存储在二维数组中,线性四叉树中每一个节点信息通过 索引从该二维数组中读取;同时建立一个和所述二维数组大小相同的标志数组,此标志数 组指示线性四叉树节点的状态,如果一个线性四叉树节点需要被继续分割,则把相应的位 置标记为1,否则标记为0;
[0009] 步骤3、对线性四叉树的叶结点信息进行存储:将叶结点位置通过基于十进制的 Morton编码表示形成十进制矩阵,叶结点的大小用该叶结点的深度表示;
[0010] 步骤4、引入希尔伯特填充曲线来组织地形节点,使线性四叉树中的地形节点按照 由顶向下、分辨率低到高的顺序存储进一个一维数组中;
[0011] 步骤5、在考虑静态误差和动态误差的基础上建立地形节点评价机制:若当前地 形节点的投影误差大于设定的屏幕误差阈值,则当前地形节点需要进一步分割,返回步骤 1 ;否则,当前地形节点满足投影误差要求,停止分割;
[0012] 步骤6、对不同分割层级的相邻地形节点进行裂缝消除,得到基于线性四叉树的 L0D模型。
[0013] 步骤3所述对线性四叉树的叶结点信息进行存储,具体如下:
[0014] 步骤3-1、将叶结点位置通过基于十进制的Morton编码表示形成十进制矩阵;
[0015] 步骤3-2、将十进制矩阵的行号和列号分别转换成伪码;
[0016] 步骤3-3、计算地形Morton编码;
[0017] 步骤3-4、使用Morton编码进行统一编码,每个叶结点都具有唯一识别的索引,将 二维的地形数据转化成一维,进而基于Morton编码生成线性四叉树。
[0018] 所述步骤3-4的具体步骤如下:
[0019] 步骤3-4-1、依次检查分割后的四个地形块的灰度值,若有一个地形块的灰度值与 其他不同,将这四个地形块的灰度值暂时赋以一个标志值,否则,直接移动到下四个地形块 检查;
[0020] 步骤3-4-2、第一轮完成以后再依次检查四个地形块的灰度值,直至最后,分割的 所有地形块的左上角的灰度值都相同,然后将带有标志的灰度值依次序统一保存,即生成 线性四叉树,并记录叶结点的地址码和对应的灰度值,遍历地形节点的计算量仅与地形区 域大小呈线性关系,叶结点的地址码即灰度值数组的序号。
[0021] 所述地形节点评价机制的建立方法如下:
[0022] 步骤5-1、根据人眼的可见角度、投影平面的高度、世界坐标系的单位长度与屏幕 坐标系的单位长度之比值、地形节点的几何误差、地形块的中心点到视点的距离确定地形 节点的投影误差;
[0023] 步骤5-2、利用地形节点的投影向量与视线方向的夹角对地形节点的投影误差进 行修正;
[0024] 步骤5-3、根据地形节点的投影误差的修正值,确定线性四叉树分割准则即地形节 点评价机制:若当前地形节点的投影误差大于设定的屏幕误差阈值,则当前地形节点需要 进一步分割,返回步骤1 ;否则,当前地形节点满足投影误差要求,停止分割。
[0025] 有益效果:
[0026] 本发明不仅是对以往的经典L0D模型生成方法的一个有效改进和优化,在利用树 型结构存储数据节点方面提出一个高效的可避免重复存储的便利方式,并且利用视点相关 评价系统进行节点分割,能够有效实现地形的简化,此外还给出一个高效可行的裂缝消除 方法,能快速的消除细化分割所产生的裂缝。
[0027] 采用L0D场景简化技术,对虚拟场景地形进行大幅优化,并将其应用到3D漫游系 统中,能够有效解决虚拟大规模场景渲染中的三角形数目问题,并加快地形场景的绘制速 度,从而提高场景漫游的逼真程度。
[0028] 线性四叉树相对于传统四叉树存储模型只存储最后叶结点信息,包括叶结点的位 置、大小和灰度。叶结点位置通过使用Morton编码表示,目前最常用的是基于四进制的 Morton编码,但由于大部分编程语言并不支持四进制编码,所以在实际使用时还需要进一 步转化为十进制编码,这无形之中就影响了算法的运行效率,因此在此提出一种基于十进 制的Morton编码,此种编码规则可以保证在各种开发语言平台上顺利运行,保证算法的整 体运行效率。
[0029] 在分析误差因素的基础上建立决策评价机制。误差因素考虑静态误差和动态误差 两个方面。通过合理选取四叉树中的节点集合可以实现地形多分辨率的正确表达,节点评 价体系是地形多分辨率表达的天平,用以确定在实时动态显示过程中应该采用哪一级的分 辨率标准。
[0030] 在运用树型数据结构对地形进行多分辨率表示时,由于相邻数据节点的分割层级 不同,就会产生裂缝问题。在此采用去点法来解决裂缝问题,通过遍历分析相邻地形块间的 层级等级将细节层级高的一侧的分割点去掉,消除分割层级的差异从而消除裂缝问题。
[0031] 本发明是应用在计算机图形图像学领域中的地形简化方面,利用线性四叉树存储 模型并结合使用二维填充曲线来组织地形节点,在充分考虑误差因素的基础上建立节点评 价机制消除地形裂缝问题,能明显的提高地形绘制效率。
【附图说明】
[0032] 图1为本发明【具体实施方式】的对待绘制地形进行线性四叉树分割过程示意图;
[0033] 图2为本发明【具体实施方式】的地形标记数组示意图;
[0034] 图3为本发明【具体实施方式】的基于十进制的Morton码四叉树分解;
[0035] 图4为本发明【具体实施方式】的Hilbert填充曲线填充示意图,其中(a)为第一步 遍历,(b)为第二步遍历,(c)为第三步遍历;
[0036] 图5为本发明【具体实施方式】的透视原理示意图;
[0037] 图6为本发明【具体实施方式】的裂缝产生原因示意图;
[0038] 图7为本发明【具体实施方式】的裂缝消除原理示意图;
[0039] 图8为本发明【具体实施方式】的基于线性四叉树的L0D模型生成方法流程图;
[0040] 图9为本发明【具体实施方式】的对线性四叉树的叶结点信息进行存储流程图;
[0041] 图10为本发明【具体实施方式】的地形节点评价机制的建立流程图。
【具体实施方式】
[0042] 下面结合附图对本发明的【具体实施方式】做详细说明。
[0043] 一种基于线性四叉树的L0D模型生成方法,如图8所示,包括以下步骤:
[0044] 步骤1、对待绘制地形进行线性四叉树分割,每一个线性四叉树节点代表一个分割 的地形块即地形节点,其中距视点近的地形区域分辨率较高且分割层级越大,而远离视点 的地形区域分辨率较低,分割层级越小;
[0045] 从整个完整的地形出发,递归的把地形不断的分割成相等的四个区域,分割的深 度越大,则得到的分辨率越高。即分割深度每提高一层,采样密度提高一倍。由于四叉树分 割是个严格递归的过程,父节点完全包含子节点。分割的过程是一个不断精细的过程,直至 最后一步时,视点所处的地形块被分割的最精细,显示质量也最好,而远离视点的部分分割 的较粗糙。通过这种方法,在不损失图像质量的前提下,渲染的三角形数量明显减少。对待 绘制地形进行线性四叉树分割过程如图1所示。
[0046] 步骤2、待绘制地形的数据存储在二维数组中,线性四叉树中每一个节点信息通过 索引从该二维数组中读取;同时建立一个和所述二维数组大小相同的标志数组即地形标记 数组,此标志数组指示线性四叉树节点的状态,如果一个线性四叉树节点需要被继续分割, 则把相应的位置标记为1,否则标记为〇,如图2所示。
[0047] 在图2中,黑点表示节点需要继续分割,空心点表示不需要继续分割。地形大小尽 量满足(2n+l)X(2n+l),这样可以保证最多可分割成2nX2nf网格。
[0048] 步骤3、对线性四叉树的叶结点信息进行存储:将叶结点位置通过基于十进制的 Morton编码表示形成十进制矩阵,叶结点的大小用该叶结点的深度表示;
[0049] 如图9所示,具体步骤如下:
[0050] 步
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1