


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
王东甫1 ,侯文广2( 1.广东省电力设计研究院 , 广东 广州 510600; 2.武汉大学 遥感信息工程学院, 湖北 武汉 430079)摘 要: 介绍基于O penGL的点云数据的显示与更新, 主要针对点云数据的前期处理。给出了三维场景绘制、双缓存技术的运用、坐标转换等过程及部分实现代码。关键词: 点云; O penGL; 交互操作;动态更新Display and Updating of Point Cloud Data Based on OpenGLWANG Dong fu1, HOU We ng ua ng 2( 1.Guangdong Electric Power Design Institute, Guangzhou 510600, China;2.School of Remote Sensing and Information Engineering,Wuhan University, Wuhan 430079, China)Abstr act : In order to deal with the data of point cloud, the ways of display and updating based on OpenGLhave been introduced. The paper provides process and parts of program including drawing 3D scene, application of double buffer technique, transformation of coordination etc.Key wor ds: point cloud; OpenGL; mutual operation;dynamic updating激光扫描系统与结构光测量系统正越来越广泛地用于工业生产各个方面, 这两种系统所提供主要数据 是具有三维空间坐标的点云。在一些比较高档的激光 扫描系统中, 提供配套应用软件或二次开发软件包, 使得用户能够对原始点云数据进行可视化管理。但是 有多种中低档激光扫描系统和自行开发的结构光测量 系统没有相应的后期可视化处理软件。在多数情况 下, 这些系统所提供的原始点云数据是通过市场上已 有 三 维 建 模 与 可 视 化 软 件 进 行 管 理 , 如 AutoCAD、3DMax等。三维模型和进行三维实时交互。本文主要针对前期据的简单处理, 如空间坐标三维显示、点云的旋转平移、缩放以及点云数据的删除与更新等。三维场景绘制的初始化1在Windows环境下,三维场景绘制程序必须先行图形渲染场景( Rendering Context) 的初始化,括设置绘图格式、调色板、映射模式等其它图形性。像素格式的设定是设置绘图格式的第一步操作OpenGL 通 过 设 置 PIXSELFORMATDESCRIPTOR 结的 各 项 参 数 来 设 置 像 素 格 式 , 其 中 包 括 颜 色 模( RGBA 颜色索引) 、单 双缓存、颜色深度及其它 些属性, Win32通常的设定如下:PIXELFORMATDESCRIPTOR pfd = sizeof ( PIXELFORMATDESCRIPTOR) , /p结构的大小由于这些软件本身针对性不强,对仅仅具有三维空间坐标的点云数据进行可视化管理时存在诸多不便,因此本文提出一种简单实用方法基于OpenGL的点 云数据的显示与管理。OpenGL是目前流行的开放式的 三维图形标准, 提供了一种图形与硬件的接口。它包括了120余个图形函数,开发者可以用这些函数来建立收稿日期: 2005- 04- 02!Analyst Raster Calculator, 输 入 表 达 式int ( Calcula-参考文献tion ) , 点击Evaluate,生成新的图层Suitbility。刘云越, 刘源月. 城市生活垃圾卫生填埋场选址综合 1析 J .中国测试技术, 2004, 30 ( 5) : 7475结语3颜维安, 杭德荣. 用地理信息系统评价垃圾填埋场选 2的研究 J .中国卫生工程学, 2003, 2 ( 3) : 133134本文利用GIS的建模思想,借助其制图功能和空刘云斌.城市生活垃圾填埋场选址模糊综合评判系统 M 3间分析功能将选址 中 的 限 制 性 因 子 制 作 成图地理空间信息2006 年 38 1,PFD_DRAW_TO_WINDOW |/版本号/支持在窗口中基于双缓存技术的动态操作3在OpenGL中,实现三维场景的动态操作操作是绘图通过双缓存技术实现的。当三维模型在窗口中执行旋/支持 OpenGL/双缓存模式PFD_SUPPORT_OPENGL |PFD_DOUBLEBUFFER, PFD_TYPE_RGBA,转、平移、缩放等操作时,程序分别在后台缓存和前台缓存中进行绘制, 需要更新时则交换前后台缓存,从而实现连续不断的动态效果。在视图类的OnDraw颜 色 模/RGBA式() 函数中调用双缓存技术,在后台缓存和前台缓存/24位颜色深度/忽略颜色位/没有非透明度缓24,0, 0, 0, 0, 0, 0,0,绘制的中间加入相应的操作代码。在堆栈中实现对模型的旋转、平移、缩放的代码如下:glDrawBuffer (GL_BACK) ; /指 定 在 后 台 缓 存 中 绘制glMatrixMode (GL_MODELVIEW) ; /初始化变 换 矩阵glLoadIdentity () ;存/ 忽略移位位/ 无累加缓存/ 忽略累加位/ 32 位深度缓存/ 无模板缓存/ 无辅助缓存/ 主层/ 保留/ 忽略层0,0,0, 0, 0, 0,32,0,0, PFD_MAIN_PLANE,0,0, 0, 0glClear (GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) ;glTranslatef (m_fxtran/20,m_fytran/20,0.0f) ; /进行 平移变换glRotatef (m_fxrot,1.0,0.0,0.0) ; /进行旋转变换glRotatef (m_fyrot,0.0,1.0,0.0) ;glRotatef (m_fzrot,0.0,0.0,1.0) ;glScalef ( m_fscale/5,m_fscale/5,m_fscale/5) ; /进 行缩放变换取 得 此 数 据 结 构 后 通 过 ChoosePixelFomatSetPixelFormat () 两个函数选择设定像素格式。和()在以VisualC+平台建立的工程中, 启动ClassWiz-ard, 并在视图类中添加OnCreate ()、OnSize ()、OnDe-/将矩阵压入堆栈glPushMatrix () ;RenderScene () ;/调用绘制点云的函数glPopMatrix () ; /将矩阵弹出堆栈glFinish () ;SwapBuffers (wglGetCurrentDC () ;/交 换 前 后 缓stroy () 三个消息响应函数。其中OnCreate ()函数执行场景的初始化,前述的设置像素格式操作均在此函数中进行。通过OnSize () 消息响应函数,当窗口大小发生变化时, 相应改变视口大小和投影变换方式。On-Destroy () 函数相应退出程序操作并释放内存。存glDrawBuffer (GL_FRONT) ; /绘制前景以上操作均是在OnDraw () 函数中实现的, 为实 现 人 机 交 互 式 的 动 态 操 作 , 只 需 要 响 应OnLButton- Down ( ) ,OnMouseMove ( ) ,OnKeyDown ( ) 等 函 数 ,在其中加入旋转、平移、缩放的量即可, 在此不给出详细代码。点云三维空间坐标的载入点云三维空间坐标数据必须在窗口创建完成之后2一次性载入内存, 因为动态操作需要反复进行绘制,如果每次绘制都调用坐标信息,势必造成程序运行速度的减慢和内存的极大消耗。在此定义了2种点的结构,们分别是:typedef struct float x; float y; float z; Cood;typedef struct Cood Pt; BOOL bSel; Points;它点云数据的动态删除与更新点云数据的删除与更新是前期数据处理的核心。 因为无论哪种激光扫描系统得到的数据都含有大量的 冗余信息, 对所有点云数据进行可视化, 并选择删除4显见其中第一种为点的三维空间坐标, 第二种定那些明显是多余信息的数据,既直观也给后续处理减义了一个布尔型的标志,用作标识点云数据在删除与少了工作量, 最重要的是可以减小后续处理出错的可能性。更新时的状态, 当bSel为TRUE时表示点已经被选中,需要删除更新。实现点云数据能够动态交互式的删除与更新,及 到 从 三 维 空 间 坐 标 到 屏 幕 二 维 坐 标 的 映 射 ,OpenGL的成像机理。这是一个极其复杂的过程,涉即 涉调用OnInitiaUpdate ()函数装载点云三维空间坐标,由于得到的各种初始空间坐标的坐标系统不一致性, 为程序的通用性考虑,需在装载时进行坐标的重及 到 多 种 矩 阵 运 算 和 一 些 摄 影 测 量 的 知 识 。 好 在心化处理,同时设定bSel表识为FALSE,表示初始载OpenGL提 供 了 多 种 查 询 函 数 ,并 在 实 用 库( glu.h)入的点全部未被选中。两种坐标之间的转换。图1坐标转换原理GLdoubleGLdoubleGLintmodelview 16 ;projection 16 ;viewport 4 ;图2含有大量冗余数据的车门点云图glGetDoublev (GL_MODELVIEW_MATRIX, mod- elview) ; /获取模型矩阵glGetDoublev( GL_PROJECTION_MATRIX, pro- jection) ; /获取投影矩阵glGetIntegerv (GL_VIEWPORT, viewport) ; /获取 视口矩阵欲选择部分点执行删除操作时, 用鼠标在屏幕 上选择一个范围, 并调用gluProject 函数进行坐标转换。在获取了各点屏幕坐标后,判断是否在鼠标选取的范围内,如在范围内则将bSel 设置为TRUE,表示这是待删除点。更新图像后, 删除点不会执行绘制。需要输出更新后的点云数据时, 只用判断点的bSel,当为FALSE值的时才输出 ( 图2, 图3, ) 。结语5图3经过删除和更新后的车门点云图在本文中,我们给出了一种简单实用的点云数据的前期可视化操作与管理的方法。针对初始的仅 2张祖勋, 苏国中, 郑顺义,等.O penGL成像机理及其具有的三维空间坐标的点云数据,实现了模型的动摄影测量方位元素的相关分析 J .武汉大学学报(态交互式操作, 并支持点云的动态删除与更新。文中提到的基于OpenGL的三维动态操作的实现 方法, 如渲染场景、双缓存技术、坐标
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 土地承包合同转让协议书
- 幼儿园教师合同补充协议
- 地面车位租赁协议书范本
- 培训机构与企业合同范本
- 学校食堂职工安全协议书
- 堆放柴草安全协议书范本
- 建安合同材料补差价协议
- 安徽墓碑购买协议合同书
- 商业合同的保密协议范本
- 房产实际出资人合同范本
- 智研咨询发布-2025年中国数控折弯机行业产业链全景分析及发展趋势预测报告
- 注塑车间15个岗位职责说明
- 中国高血压防治指南(2024年修订版)解读课件
- 消防设施维护培训课件
- 肾内科护理病历
- 谵妄的观察及护理
- 旅游业应急事故处理及游客服务手册
- Unit 1 Teenage Life Reading and Thinking 教学设计-2024-2025学年高一英语人教版(2019)必修第一册
- 江西美术出版社(赣美版)美术四年级上册全册课件
- 食品安全管理台账制度
- 四川省住宅设计标准
评论
0/150
提交评论