一种基于深度缓冲地表开挖的三维可视化方法转让专利

申请号 : CN201110325134.7

文献号 : CN102436677B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 齐成涛

申请人 : 克拉玛依红有软件有限责任公司

摘要 :

本发明提供了一种基于深度缓冲地表开挖的三维可视化方法,包括:构建三维地形场景,获得三维地形场景;添加地下管线模型,获得地下管线模型;创建三维坑体,获得三维坑体;修改绘制顺序,获得绘制顺序;依据绘制顺序,绘制三维场景,获得三维场景;该方法在具体项目的实施过程中既不需要修改管线的空间位置,也不需要修改地形的三角网。

权利要求 :

1.一种基于深度缓冲地表开挖的三维可视化方法,其特征在于,包括:构建三维地形场景,获得三维地形场景;

添加地下管线模型,获得地下管线模型;

创建三维坑体,获得三维坑体;

修改绘制顺序,获得绘制顺序;

依据绘制顺序,绘制三维场景,获得三维场景;

所述添加地下管线模型,获得地下管线模型的步骤,包括:采集三维管网的测绘数据,获得三维管网的测绘数据;

利用3DMax创建管线模型,获得管线模型;

在管线模型上贴上纹理或指定某一颜色,获得贴有纹理或指定某一颜色的管线模型;

把贴有纹理或指定某一颜色的管线模型导成x格式的模型数据,获得贴有纹理或指定某一颜色的管线模型的模型数据;

把贴有纹理或指定某一颜色的管线模型的模型数据加入到三维地形场景中,完成获得地下管线模型;

所述创建三维坑体,获得三维坑体的步骤,包括:利用鼠标绘制的多边形生成三维坑体的顶部,获得三维坑体的顶部;

对三维坑体的顶部的每一个顶点赋予深度值,获得三维坑体的底面顶点;

利用德劳内算法对三维坑体的顶部、三维坑体的底面及三维坑体的侧面分别构网,获得三维坑体的顶部的网络、三维坑体的底面的网络及三维坑体的侧面的网络;

分别对三维坑体的顶部的网络、三维坑体的底面的网络及三维坑体的侧面的网络分别指定某一纹理,获得三维坑体;

其中,所述三维坑体由三维坑体的底面、三维坑体的侧面及三维坑体的顶部组成;

所述修改绘制顺序,获得绘制顺序的步骤,包括:在绘制三维地形,再绘制三维坑体及绘制三维管线的过程中,将三维地形场景和坑体的深度缓冲值设置为1,并进行如下设置:获得深度缓存函数,开启深度测试,深度区测试的比较函数为总是通过测试;

当绘制三维地形,再绘制三维坑体及绘制三维管线的绘制过程完成后,恢复原始的深度测试函数,并设置恢复深度区测试的比较函数为小于等于函数。

说明书 :

一种基于深度缓冲地表开挖的三维可视化方法

技术领域

[0001] 本发明涉及计算机图形学领域,特别是涉及一种基于深度缓冲地表开挖的三维可视化方法。

背景技术

[0002] 三维可视化方法是用于显示描述和理解地下及地面诸多地物现象特征的一种工具,广泛应用于数字城市各个领域,它可以更加方便、直观的描述地面建筑物和地下管线的空间位置及相互关系,为城市决策者提供辅助支持。城市地下管线是城市基础设施的重要组成部分,是现代化城市高质量、高效率运作的基本保证,是城市赖以生存和发展的物质基础,是保证社会经济和人民生活顺利进行的基本条件。城市地下管线担负着传输信息、输送能量和排泄废物的工作,被称为城市的“生命线”,了解和掌握地下管线的现状情况,对城市的规划设计和管理、施工时非常重要的。
[0003] 如何在三维可视化场景更好的表达应用地下管线,指导人们工作就变的非常重要。
[0004] 目前,管线的三维模拟与实现有两种方法。
[0005] 第一种方法是把地下管道提到地表来,通过修改管线的高度值,使管线高出地面。这种方法的优点是简单;缺点是改变了管线的空间位置,不能直观的表达出地下管线的空间位置及相互间拓扑关系。
[0006] 第二种方法是重构地表三角网,需要重新调整地形。这种方法的缺点是若是施工的面积非常大,这样重构一次需要耗费大量时间。而城市管线三维模拟的主要目的是观察地面下的管线分布。
[0007] 因而,目前需要本领域技术人员迫切解决的一个技术问题就是:如何找到一种新型的管线的三维模拟与实现方法,该方法在具体项目的实施过程中既不需要修改管线的空间位置,也不需要修改地形的三角网。

发明内容

[0008] 本发明所要解决的一个技术问题是提供一种基于深度缓冲地表开挖的三维可视化方法,该方法在具体项目的实施过程中既不需要修改管线的空间位置,也不需要修改地形的三角网。
[0009] 为了解决上述问题,本发明公开了一种基于深度缓冲地表开挖的三维可视化方法,包括:
[0010] 构建三维地形场景,获得三维地形场景;
[0011] 添加地下管线模型,获得地下管线模型;
[0012] 创建三维坑体,获得三维坑体;
[0013] 修改绘制顺序,获得绘制顺序;
[0014] 依据绘制顺序,绘制三维场景,获得三维场景。
[0015] 优选的,所述添加地下管线模型,获得地下管线模型的步骤,包括:
[0016] 采集三维管网的测绘数据,获得三维管网的测绘数据;
[0017] 利用3DMax创建管线模型,获得管线模型;
[0018] 在管线模型上贴上纹理或指定某一颜色,获得贴有纹理或指定某一颜色的管线模型;
[0019] 把贴有纹理或指定某一颜色的管线模型导成x格式的模型数据,获得贴有纹理或指定某一颜色的管线模型的模型数据;
[0020] 把贴有纹理或指定某一颜色的管线模型的模型数据加入到渲染场景中,完成获得地下管线模型。
[0021] 优选的,所述创建三维坑体,获得三维坑体的步骤,包括:
[0022] 利用鼠标绘制的多边形生成三维坑体的顶部,获得三维坑体的顶部;
[0023] 对三维坑体的顶部的每一个定点赋予深度值,获得三维坑体的底面顶点;
[0024] 利用德劳内算法对三维坑体的顶部、三维坑体的底面及三维坑体的侧面分别构网,获得三维坑体的顶部的网络、三维坑体的底面的网络及三维坑体的侧面的网络;
[0025] 分别对三维坑体的顶部的网络、三维坑体的底面的网络及三维坑体的侧面的网络分别指定某一纹理,获得三维坑体;
[0026] 其中,所述三维坑体由三维坑体的底面、三维坑体的侧面及三维坑体的顶部组成。
[0027] 优选的,所述修改绘制顺序,获得绘制顺序的步骤,包括:
[0028] 在绘制三维地形,再绘制三维坑体及绘制三维管线的过程中,将三维地形场景和坑体的深度缓冲值设置为1,并设置获得深度缓存函数、开启深度测试及深度区测试的比较函数为总是通过测试;
[0029] 当绘制三维地形,再绘制三维坑体及绘制三维管线的绘制过程完成后,恢复原始的深度测试函数,并设置恢复深度区测试的比较函数为小于等于函数。
[0030] 本发明显著优点在于:
[0031] 1、在管线的三维模拟与实现的过程中,不需要修改管线的空间位置;
[0032] 2、在管线的三维模拟与实现的过程中,不需要修改地形的三角网;
[0033] 3、在项目的具体实施中得到了非常满意的效果。
[0034] 总之,本发明提供了一种基于深度缓冲地表开挖的三维可视化方法,该方法在具体项目的实施过程中既不需要修改管线的空间位置,也不需要修改地形的三角网。

附图说明

[0035] 图1是本发明一种基于深度缓冲地表开挖的三维可视化方法的实施例1的步骤流程图;
[0036] 图2是本发明一种基于深度缓冲地表开挖的三维可视化方法的实施例2的步骤流程图。

具体实施方式

[0037] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
[0038] 本发明的核心思想之一是提供了一种基于深度缓冲地表开挖的三维可视化方法,包括:构建三维地形场景,获得三维地形场景;添加地下管线模型,获得地下管线模型;创建三维坑体,获得三维坑体;修改绘制顺序,获得绘制顺序;依据绘制顺序,绘制三维场景,获得三维场景;该方法在具体项目的实施过程中既不需要修改管线的空间位置,也不需要修改地形的三角网。
[0039] 在计算机图形学中,深度缓冲是在三维图形中处理图像深度坐标的过程。该过程通常在硬件中实现,也可以在软件中实现,它是解决可见性问题的一个方式。当利用三维图形卡渲染物体时,每一个生成的像素深度(即z坐标)都保存在一个缓冲区中,该缓冲区即为z缓冲区,也叫做深度缓冲区,通常采用一序列x-y二维数组保存每个屏幕像素的深度。假如场景中另一个物体也采用同一像素生成渲染结果,图形处理卡首先会比较二者的深度,并且保留距离观察者较近的物体;然后将该物体的物体点深度保存到深度缓冲区中;最后,图形卡会根据深度缓冲区正确地生成深度感知效果,即较近的物体遮挡较远的物体。本发明就是依据上述原理,在地形上构建坑体,设置坑体的深度值,然后利用坑体遮挡地形,实现坑体凹在地面的效果。
[0040] 参照图1,示出了本发明一种基于深度缓冲地表开挖的三维可视化方法的实施例1的步骤流程图,具体可以包括:
[0041] 步骤101、构建三维地形场景,获得三维地形场景。
[0042] 其中,本发明采用World Wind三维场景平台,它可以将Landsat7、SRTM、MODIS等多颗卫星数据及其它WMS服务商提供的图像通过一个三维的地球模型展现,让用户体验三维地球遨游的感觉,同时,还提供了月球、金星等数据,供用户进行虚拟的巡航。用户可以在所观察的行星上随意的旋转、放大、缩小,同时可以看到地名和行政区域。另外World Wind还包含全部的国界、城市、交通、等其他参考测层。用户可以以World Wind开源平台为基础根据需要开发自己的应用程序。本发明就是采用World Wind技术建立三维城市场景。
[0043] 步骤102、添加地下管线模型,获得地下管线模型。
[0044] 为了使本领域的技术人员更好地理解本发明,在本发明的一个优选实施例中,所述步骤102,具体可以包括:
[0045] 子步骤A1、采集三维管网的测绘数据,获得三维管网的测绘数据。
[0046] 子步骤A2、利用3DMax创建管线模型,获得管线模型。
[0047] 子步骤A3、在管线模型上贴上纹理或指定某一颜色,获得贴有纹理或指定某一颜色的管线模型。
[0048] 子步骤A4、把贴有纹理或指定某一颜色的管线模型导成x格式的模型数据,获得贴有纹理或指定某一颜色的管线模型的模型数据。
[0049] 子步骤A5、把贴有纹理或指定某一颜色的管线模型的模型数据加入到渲染场景中,完成获得地下管线模型。
[0050] 步骤103、创建三维坑体,获得三维坑体。
[0051] 为了使本领域的技术人员更好地理解本发明,在本发明的另一优选实施例中,所述步骤103,具体可以包括:
[0052] 子步骤B1、利用鼠标绘制的多边形生成三维坑体的顶部,获得三维坑体的顶部。
[0053] 子步骤B2、对三维坑体的顶部的每一个定点赋予深度值,获得三维坑体的底面顶点。
[0054] 子步骤B3、利用德劳内算法对三维坑体的顶部、三维坑体的底面及三维坑体的侧面分别构网,获得三维坑体的顶部的网络、三维坑体的底面的网络及三维坑体的侧面的网络;其中,所述德劳内算法的英文为Delaunay算法。
[0055] 子步骤B4、分别对三维坑体的顶部的网络、三维坑体的底面的网络及三维坑体的侧面的网络分别指定某一纹理,获得三维坑体。
[0056] 其中,所述三维坑体由三维坑体的底面、三维坑体的侧面及三维坑体的顶部组成。
[0057] 步骤104、修改绘制顺序,获得绘制顺序。
[0058] 为了使本领域的技术人员更好地理解本发明,在本发明的另一优选实施例中,所述步骤104,具体可以包括:
[0059] 子步骤C1、在绘制三维地形,再绘制三维坑体及绘制三维管线的过程中,将三维地形场景和坑体的深度缓冲值设置为1,并设置获得深度缓存函数、开启深度测试及深度区测试的比较函数为总是通过测试。
[0060] 子步骤C2、当绘制三维地形,再绘制三维坑体及绘制三维管线的绘制过程完成后,恢复原始的深度测试函数,并设置恢复深度区测试的比较函数为小于等于函数。
[0061] 其中,修改绘制顺序是显示坑体的关键一步。首先绘制三维地形,再绘制坑体,然后绘制三维管线。将三维地形场景和坑体的深度值设置1,并进行如下设置:
[0062]
[0063] 通过上述设置,可以保证绘制的物体始终通过深度测试、保证坑体能够遮挡住三维地形场景、保证管线可以显示在坑体内部。当绘制完成后恢复原来的深度测试函数,设置如下:
[0064] //恢复深度区测试的比较函数为LessEqual
[0065] device.SetRenderState(RenderStates.ZBufferFunction,(int)Compare.LessEqual);
[0066] 步骤105、依据绘制顺序,绘制三维场景,获得三维场景。
[0067] 参照图2,示出了本发明一种基于深度缓冲地表开挖的三维可视化方法的实施例2的步骤流程图。
[0068] 从图2中可以看出:
[0069] 经过1)构建三维地形场景;2)添加地下管线模型;3)三维坑体,包括底面、侧面、顶部;4)坑体、地形深度值值为1,坑体始终通过深度测试;5)绘制场景五个步骤,完成了实现基于深度缓冲地表开挖的三维可视化方法的全过程。
[0070] 通过本发明所提供的一种基于深度缓冲地表开挖的三维可视化方法,该方法通过在三维场景中模拟地面开挖,露出地下埋藏的管线等设施,可以很直观的看到地下埋藏的管线,而且对地上设施及管线本身没有做改变;从而最终解决了地下管线的三维可视化显示问题。
[0071] 总之,本发明提供了一种基于深度缓冲地表开挖的三维可视化方法,该方法在具体项目的实施过程中既不需要修改管线的空间位置,也不需要修改地形的三角网。
[0072] 以上对本发明所提供的一种基于深度缓冲地表开挖的三维可视化方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。