基于等高线的三维真实感地形生成研究.doc_第1页
基于等高线的三维真实感地形生成研究.doc_第2页
基于等高线的三维真实感地形生成研究.doc_第3页
基于等高线的三维真实感地形生成研究.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

靳海亮1) ,2)高井祥1) 康建荣2)(中国矿业大学环境与测绘学院1) 徐州 221008)(徐州师范大学国土信息与测绘工程系 徐州 221116)摘要详细介绍由等高线地形图数据生成三维真实感地形的基本原理和过程 ,具体实现方法是通过等高线数字化获取离散点的高程数据 ,采用 Delaunay 三角网进行三维建模 ,然后进行三维显示 ,从而生成真实感的三维地形 。并以 Visual C + + 6 . 0为开发平台 ,Open GL 为工具 ,建立了基于等高线数据的三维真实感地形模型 。实验证明本文所述方法速度快 、精度高 。关键词 : 等高线 三维地形 真实感图形 Delaunay 三角网中图分类号 : TP391 . 41A Study on Generat ion of Three D imension Real ist ic Terra inBa sed on Contour L ineJin Ha il iang1) , 2 Gao Jingxiang1) Kang Jianrong2)( School of Enviro nment & Spatial Informatio n ,Chinese U niversity of Mining & Technology1) , Xuzhou 221008)( Territory Resources Informatio n and Surveying Engineering Depart ment , Xuzhou Normal U niversity2) , Xuzhou 221116)Abstract :This paper int roduces t he keysto ne and p rocess of generating t hree dimensio n realistic terrain by co ntour map data ,t hat is obtaining high data of discrete point , generating Delaunay t riangulatio n model and t hen generating t hree dimensio n realistic terrain , and gives an example of generating t hree dimensio n realistic terrain by co ntour line data using Open GL wit h t he Visual C+ + 6 . 0 as a developing tool . Experiment shows t hat t he p roposed t hree dimensio n realistic terrain model is fast and accurate.Key words :Co ntour line , Three dimensio n terrain , Realistic image ,Delaunay t riangulatio nClass number :TP391 . 41的难于取得而存在着相当的局限性 。基于等高线数据构造三维地形不仅能保证一定的几何精度 ,包 含有丰富的地貌特征 , 而且等高线图数据相对于 D EM 数据更容易获得 。一般情况下 ,通过对等高线地形图的数字化和简单的处理 ,就可以得到离散 点高程数据 ,所以依靠等高线数据生成三维地形的 方法比依靠 D EM 数据的方法更具推广性 。本文 介绍了一种在 Window s 平台上 ,利用 Visual C + + 和 Open GL 作为工具 ,根据等高线图产生三维真实感地形的方法 。1引言地形是自然界最复杂的景物 ,其三维真实感图形的绘制一直是国内外计算机图形学领域关注的热点 。三维真实感地图能高度逼真地反映外部真 实世界 ,相对于传统纸制地图和计算机生成的线划 地图 、实体型地图 , 它具有可视化程度高 、动态感 强 、存储和查询方便等优点 。目前生成地形的主要方法是 : 读取地形 D EM格式的数据 ,从 D EM 数据中采样 , 用 Delaunay 算 法等三角形生成算法从采样数据中生成地形的三 维模型 。这种方法的优点是生成的地形精确 ,三角 形总数可以控制 ,而且可以通过调整采样率来生成 不同精度的地形 。但这种方法也因为 D EM 数据2研究的技术路线Open GL ( Open Grap hics Library) 是 由 Silico nGrap hics Inco rpo rated ( S GI 公司) 为其图形工作站 收到本文时间 :2005 年 1 月 12 日基金项目 :江苏省高校自然科学研究计划资助项目 (项目编号 SL 020013)徐州师范大学科学基金资助项目 (项目编号 :03 XLB26)IR IS 开发的一种快速 、高质量的 3D 图形软件 ,是近几年发展起来的一个性能卓越的三维图形平台 。 目前它已被广泛应用于 CAD/ CAM/ CA E 、地质 、航 空 、图像处理 、三维建模以及虚拟现实等领域 。目 前几乎所有的主要平台都对 Open GL 提供了强劲的支持 。作为强大的 Win32 环境应用程序开发工 具 ,Visual C + + 从 4 . 2 版本以后也已经完全支持 Open GL A P I 。由于 Open GL 没有提供直接描述构 造复杂几何物体模型的方法 ,因此必须用简单的图 形元素构造复杂的模型 , 而 Delaunay 三角网正是一种优秀的数字地面模型 ,在三维建模中有着广泛 的应用 ,利用 Delaunay 三角网来建立三维地形模 型无疑是一种最好的选择 。从数据结构的角度来考虑 ,用三角网格来表示 地形未必是最优的 ,但从显示的角度来看 ,三角网格的地形有极大的优势 ,因为大部分三维显示设备 的显示速度只与三角形的数量有关 ,而几乎与三角 形的大小无关 。除此之外 ,三角网格模型还具有精 度高 、速度快 、效率高和容易处理断裂线和地物等 特点 ,因此在三维真实感地形几何模型自动生成的研究中 ,三角网格模型得到广泛应用 。因此 ,要实现基于等高线的三维真实感地形显 示 ,技术路线为 : 从等高线地形图中取得离散点 的高程数据 ; 采用 Delaunay 三角网对离散点数 据点进行三维建模 ; 采用 Open GL 对所建模型进行三维图形生成和显示 。L IN GS 风格 。3 . 3 添加响应 WM CR EA T E 的消息响应函数获取设备描述表 (DC) 、设置象素格式 ,检测用户当前的显示环境 ,若其颜色深度为 16 色或 256色模式则创建逻辑调色板并激活它 , 以使显示正 常 。紧接着创建着色描述表 ( RC) ,并使之当前化 。3 . 4 添 加 响 应 WM S IZE 和 WM ERA SE2B KGND 的消息处理函数在 OnSize 函数中建立视点 、启动透视变换并 建立视景体 ; 重 载 On EraseB kgnd 函 数 , 使 该 函 数不执行操作 ,仅返回 TRU E 值 ,以消除重绘画面引 起的黑色闪烁 。3 . 5 添加响应 WM D ES TRO Y 的消息处理函数释放 RC 和 DC 。3 . 6 在 OnDraw 函数中加人绘制场景的代码所有的绘制工作都应放在 OnDraw 函数中 。3 . 7 编译运行程序设计完成之后 ,编译运行程序 。4基于等高线的三维真实感地形构造4 . 1 本文采用的数据结构 :t ypedef st ruct hpoint 点int num ;do uble x ;do uble y ;do uble z ;点的序号点的 x 坐标点的 y 坐标点的 z 坐标3Visual C + + 6 . 0 环 境 下 实 现Open GL 三维图形编程的步骤在 Visual C + + 6 . 0 中运用 Open GL 进行图形st ruct hpoint 3 next Point ; / / 指向下一个点数据的指针 Hpoint ;绘制时 , 首 先 要 建 立 基 于 Open GL 的 图 形 编 程 环境 ,基本步骤如下 :3 . 1 创建工程并将所需的 Open GL 文件和库加入 到工程中启动 Visual C + + 6 . 0 用 App Wizard 建立一个名为“3Dterrain”的单文档应用程序 。在连接设置 中添加 opengl32 . lib 、glu32 . lib 两个文件 。同时 ,为 了通知应用程序将要用到 Open GL 函数 ,要在视类 头文件中加入对 Open GL 头文件的包含说明 :# include # include 3 . 2 重载基类 PreCreateWindow 函数为了进行 Open GL 绘制 ,必须先在有关窗口的 客户区中进 行 Open GL 初 始 化 。Open GL 需 要 窗 口加 上 WS- CL IPCH IL D R EN 和 WS CL IPS IB2t ypedef st ruct edgeint num ;边边的序号int p 1 ;int p 2 ;边的起点点号边的终点点号int used Times ;边的使用次数st ruct rdge 3 next Edge ; / / 指向下一个边数据的指针 Edge ;t ypedef st ruct t riangle 三角形int num ;int p 1 ; int p 2 ; int p 3 ;三角形的序号三角形的第一点点号三角形的第二点点号三角形的第三点点号构既便于数据查找 ,又便于内存分配 。4 . 2 获取离散点的高程数据一般情况下 ,通过对等高线地形图的数字化和 简单的处理 ,就可以得到离散点高程数据 。通过记 事本获取离散点的高程数据存为 3 . DA T 文件 ,其 存储格式为 :点名 , X 坐标 , Y 坐标 , Z 坐标 (高程) 。4 . 3 地形表面三维建模地图数据往往是离散的数据点集 ,要生成三维 地形图 ,首先要建立一个合适的三维模型 。而数字 地面模型中的不规则三角网模型 ( T IN ) 无疑是最 好的 选 择 。T IN 是 由 一 组 无 规 则 散 落 在 空 间 的点 ,各自与其邻近点相连所生成的几何模型的三角 面片描述 ,它可根据不同地形 、区域的平缓陡峭 ,用 大小各异 、疏密不同的三角网格描述 。由于 T IN 模型具有精度高 、速度快 、效率高 、容易处理断裂线 和地物等特点 ,故在实际应用中多采用 T IN 模型 。特别是 Delaunay 三角网 , 它满足最小角为最大的 原则 ,能尽量避免狭长三角形的出现 ,适用于各种 数据分布密度 ,且有利于更新和直接利用各种地形 特征信息 、原始数据 ,并且具有唯一性好 、适应不规 则形状区域等优点 ,是一种非常好的三维地形建模方法 。根据实现过程 , 可以把 Delaunay 三角网的 各种算法分为三类 : 分割 - 归并法 、逐点插入法和 逐步生长法 。本文采用生长法 。生长法由基线寻找第三点的判别法则目前有 许多种 ,本文采用的是基于网格索引的最大角法 ,其实现构网的基本步骤如下 :先在离散数据的点集 V 中任取一点 A , 然 后以点 A 为基点去寻找与它最近的一点 B 。连接 AB ,就得到了三角形的一条基边 ,见图 1 。向外进行扩展 ,具体过程同步骤 。如果边的使用次数为 2 或是右边没有点 ,该边不进行扩展 ,否则 扩展 ,同时存储新生边与三角形 。对边链表中下一位置的边进行扩展 ,实现过 程同步骤 , 同时对新生成的二条边进行一次判 断 ,如果已经存在 ,就不对该边进行存储 ,判断时不需对边表进行一次遍历 ,只要对该边的中点所在网 格中的所有边进行一次遍历即可 ,这样大大提高了 构网速度 。重复步骤 ,直至边链表的下一位置为空即 对所有的边都进行了扩展 ,就结束构网 。最大角是通过余弦公式求解的 ,为了加快构网 的速度 ,可以把求解角最大的点转化为求解余弦值 最小的点 ,这过程是等价的 ,从而减少了计算量 ,提 高了构网效率 ,由于算法在找第三点时 ,用到的是 最大角度法 ,研究表明 ,该方法构建的 T IN 中任一两相邻的三角形是不共圆的 ,即生成的三角网就是Delaunay 三角网 。4 . 4 Delaunay 三角剖分异常情况处理在通过对等高线地形图进行数字化获取离散 点高程数据时 ,常常沿等高线采样 。对这类数据进行三角剖分时 ,由于数据沿等高线分布 ,常会出现 一些不希望出现的现象 ,如三角形三顶点在同一条 等高线上 (称为平三角形) 或三角形一边穿越等高 线等 (图 2) 。这些在 T IN 中都是不允许的 。图 2 三角剖分的不合理现象对这类问题有两种处理方案 :一是把等高线数 据当作特征线处理 ,按约束 D T 进行剖分 ,一是局 部优化内插增加地形特征点 。前一种方法比较直 接 ,但要求采集数据时按特征线的方式组织等高线 数据 ,这样会加大采集数据工作量 ; 后一种方法需 要按原始等高线的拓扑关系提取特征点和采用合 理的内插方法 。4 . 5 真实感显示地形三角形网格生成之后还 要 添 加 纹 理 、材 质 、光照 ,才能使模型更为逼真 、更具真实感 。图 1 三角形逐步生长过程在基边 AB 的右边点集中寻找与 A 、B 两点 连成直线组成的夹角为最大的 P1 点 ,就组成了第一个三角形 ,将有新生成的边与三角形信息用相应的链表进行存储起来 ,边每使用一次 ,其 used Times 就加 1 。由于点都用块进行管理 ,可以将右边的点 集范围大大减少 ,先求出线段 AB 中点 C (center X ,4 . 5 . 1 光照及材质Open GL 可以控制光照与物体的关系 ,产生多 种不同的视觉效果 。光线由四个部分构成 : 发射 、 泛光 、漫反射和镜面反射 ,这四个成分单独计算 ,然 后再累加起来 。标 ,绘制场景 。几何坐标决定了顶点在屏幕上的绘制位置 ,纹理坐标决定纹理图像中哪一个纹理单元 赋予该顶点 ,其调用函数为 gl TexCoo rd 3 () 。5应用实例根据上文介绍的方法和数据结构 ,在 Pentium(定 义 光 源 的 函 数 为 void glLight if vGL enum light , GL enum p name , GLfloat param ) ;光源定义完毕后 ,须调用 gl Enable ( ) 打开该光 源 ,否则该光源对场景中的物体不起作用 。材质属性与光源的属性类似 。设置材质属性的函数是 :void glMaterialif v ( GL enum f ace , GL enum p name , T YP E param ) ;4 . 5 . 2 纹理映射纹理映射就是把纹理图像粘贴到模型的表面 ,从而获得具有真实感效果的景观模型 。纹理图通 常是正方形或矩形 ,实际上纹理数据是一个矩形数 组 ,这些数据由 R 、G、B 、A 数值构成 , 在纹理数组 中的单个值称为纹理 元 素 ( 简 称 纹 素) 。Open GL 的纹理映射只能使用在 R GBA 模式下 , 在颜色模式下是没有定义的 。用 Open GL 函数进行纹理映 射的基本步骤如下 :(1) 定义纹理 。用 gl Tex Image2D ( ) 函数说明 所映射的纹理内容 。其中包括纹理数据的指针 、纹 理的大小 、纹理的类别 (灰度或彩色) 等 。纹理中的每个纹素的数据可以由 14 个元素组成 ,表示常 值或 R GBA 值 。也可以利用多重映射 , 把纹理定 义为许多不同的分辨率 。此外 ,当建筑物的纹理坐 标在有效范围之外时 ,纹理映射可以包括纹理的边 界值 ,边界值能够把多个纹理图像光滑地粘贴在一起 。(2) 指定纹理的应用方式 。在将纹理粘贴在建 筑物表面时 ,可以有 3 种方式 : 直接把纹理颜色 作为物体的最终显示颜色 ,纹理图像直接绘制到建 筑物表面 ,就如同把印花图案直接印到建筑物上一样 ; 使用纹理调整建筑物模型的颜色 ; 利用纹 理将纹理颜色同建筑物的颜色相融合 。指定纹理 应用 、映射方式使用函数 gl Tex Parameterf 3 ( ) 和 gl Tex Env 3 () 。(3) 激活纹理映射 。在绘制场景前必须激活纹 理映射 ,可以使用 gl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论