GPS几何监测系统的三维可视化设计与初步实现

2010-11-13 08:01黄声享沈凤娇张翠峰
测绘工程 2010年1期
关键词:立方体视图绘制

黄声享,沈凤娇,张翠峰

(武汉大学 测绘学院,武汉 430079)

GPS几何监测系统的三维可视化设计与初步实现

黄声享,沈凤娇,张翠峰

(武汉大学 测绘学院,武汉 430079)

现代GPS几何监测系统的数据采样率高,监测点数多,数据管理与利用的可视化技术能使这些数据信息生动、直观。文中以VC++6.0为开发工具、OpenGL为图形接口,利用OpenGL提供的几何建模、光照等特性,结合苏通大桥 GPS监测系统数据,设计并初步实现三维监测数据的动态可视化显示。

GPS;几何监测;可视化;OpenGL

随着计算机技术的发展,可视化的概念已经得到大大扩展,它不仅包括科学计算可视化,而且包括工程数据和测量数据的可视化[1]。

在建筑物的实时监测系统中,监测数据的可视化可以非常清楚、直观地反映出结构物的动态变化情况,更容易呈现对被监测对象的工作状态、荷载能力等的监测。因此,对监测数据信息的可视化,是大型结构物实时动态监测系统中必不可少的功能之一[2]。GPS由于其具有的全天候、高精度、高效率、自动化等优点,目前,已广泛应用在工程建(构)筑物的监测。GPS动态监测的数据采样率已可设置到10~20 Hz,多点全天候工作的 GPS监测系统,其数据量显得非常大,迫切需要实时、动态的一维、二维和三维可视化技术作为支撑。

至今已有许多绘图软件能够实现数据的可视化,比如:目前,常用的3DM AX建模软件,但它很难用于实时的数据建模;AutoCAD提供了二次开发的功能,但是不能实现实时刷新,也很难用于数据的实时动态显示。OpenGL作为底层图形开发工具,是独立于操作系统和硬件环境的三维图形库,具有强大的图形和跨平台的能力,目前,已被广泛应用于实体造型、模拟仿真、CAD/CAM等诸多领域[3-5]。现代桥梁实时几何监测系统也有采用OpenGL进行可视化的尝试,如虎门大桥的监测系统中加入了三维位移实时动态演示系统[6]。

本文以VC++6.0为开发工具,OpenGL为图形接口,设计并初步实现了GPS几何监测系统的可视化,包括一维的三方向位移时程可视化、二维平面位移可视化和三维空间动态可视化等功能。

1 GPS动态几何监测系统简介

结合苏通大桥 GPS几何监测系统[7]的实测数据进行可视化建模。该远程 GPS动态几何监测系统由基准站、监测站、监控中心和数据通讯等部分组成。基准站接收视场内所有的 GPS卫星信号得到差分信息,并通过通讯链将这些信息发送给监测站;监测站一方面跟踪视场内的 GPS卫星得到自己的载波观测值;另一方面接收来自基准站的差分信息,通过GPS软件实时处理得到监测点的三维坐标,并随GPS采样频率而实时地更新坐标,同时将其发送到监控中心;监控中心采用数据处理软件,对数据进行处理与分析,得到监测点在不同方向上的位移参数,实时地对其进行可视化显示,并存入动态数据库中。

通过一维可视化建模可以得到监测点单一方向的位移时程曲线,能够反映监测部位的动态性和振幅范围,进一步分析可以诊断其结构的稳定性;通过监测数据的二维可视化分析监测点的平面位移情况,观察其平面变化的平衡位置及范围;三维可视化可以更加生动直观地反映监测点的三维空间动态变化状况。

2 基于VC++的OpenGL应用程序框架的建立

目前,在众多的W indow s应用程序开发工具中,微软公司的VC++6.0已经成为OpenGL图形应用的首选开发工具。要使用OpenGL图形库来开发 2D/3D的应用程序,必须解决程序框架问题[2,8-9]。

由于OpenGL是独立于硬件系统、窗口系统和操作系统,所以在VC++6.0中调用OpenGL的函数编写程序之前,必须加入一些设置。

1)在文件视图中增加OpenGL视图类的头文件“OpenGLView.h”和应用程序文件“OpenGLView.cpp”到工程。

2)在“StdAfx.h”头文件中包含,〈glgl.h〉、〈gl glu.h〉、“glaux.h”头文件。

3)设置OpenGL连接。在“工程”的“设置”中选择“连接”选项卡,在“对象库模块”一项中键入: opengl32.lib glu32.lib glaux.lib,即建立好 M FC类与OpenGL的连接。

4)将新建工程视图类的基类改为OpenGL视图类,实现以OpenGL为应用程序接口,对其视图类中的函数进行覆盖,绘制自己所需要的图像。

5)在新建工程的视图类中调用OpenGLView中的绘图函数OnDraw,覆盖CView中的同名函数。

6)重载OpenGL视图类中的虚函数:初始化窗口函数、窗口重绘函数、图形渲染函数和销毁窗口函数。

这样,一个OpenGL应用程序框架就建好了,只需要在新建工程的视图类中添加自己所需的绘图代码即可。

3 监测系统的三维可视化实现流程

OpenGL的基本绘图过程为先初始化绘图窗口,接着进行视景变换和投影变换,然后绘制所需的图形,并且通过改变窗口大小来重新进行视景变换,最后在程序将要退出前销毁窗口。程序实现的基本流程见图1。

图1 可视化程序流程图

3.1 窗口初始化

首先,将窗口背景颜色清理为黑色,然后,设置深度缓存;再设置一个定时器:SetTimer(1,50, NULL),根据需要设置窗口重绘的时间间隔。添加一个布尔变量作为程序开始的标志,将其初始值设为TRUE,这是设置动画效果的关键。

3.2 视口设置与投影变换

要在计算机屏幕的正确位置显示图形,必须确定计算机屏幕坐标系与实体坐标系的关系,将所要绘制的物体,经过几何变换,放置到屏幕正确的位置。这个过程就需要进行视口设置与投影变换。

1)用glViewport(x,y,w,h)定义一个视口,函数参数(x,y)是视口在屏幕窗口坐标系中的左下角点坐标,参数w和h分别为视口的宽度和高度。

2)调用 glM atrixMode(GL_PROJECTION),说明当前矩阵方式是投影。

3)调用矩阵初始化函数glLoad Identity(),重置投影矩阵。

4)设置视口的大小。调用glOrtho(left,right, bottom,top,near,far)函数,创建一个平行视景体,即创建一个正射投影矩阵。其中近剪裁平面是一个矩形,其左下角的三维坐标是(left,bottom, -near),右上角的坐标是(right,top,-near);同理,远剪裁面其左下角空间坐标为(left,bottom, -far),右上角空间坐标(right,top,-far),如果没有其他变换,正射投影的方向平行于 Z轴,且视点朝向Z负轴。

5)选择模型观察矩阵 glM atrixMode(GL_ MODELV IEW),然后再重置模型观察矩阵,调用glLoad Identity()。

3.3 绘制图形

在工程实现监测点的一维、二维、三维动态可视化,需设置消息处理函数,按下不同的键,执行不同的显示模式。按下键盘数字“1”、“2”、“3”分别显示一维、二维、三维位移变化图。按下“1”时执行函数Mode1D(),按下“2”时执行函数Mode2D(),按下“3”时执行函数Mode3D()。所以要在所建工程的源程序文件中添加新的成员函数Mode1D、Mode2D和Mode3D,规定各自的画法。另外,在窗口中新建一个子对话栏显示当前监测点的时间和坐标信息。

3.3.1 一维可视化程序编制与实现

在成员函数Mode1D()中添加代码。在一个窗口中同时显示 X、Y、Z坐标的位移时程变化图,具体算法如下。

1)清除屏幕和深度缓存。glClear(GL_COLOR_BUFFER_B IT|GL_DEPTH_BUFFER_B IT );

2)画背景。用glBegin(GL_QUADS)绘制三组独立的填充四边形作为背景,用glVertex2f()绘制单精度浮点型的二维平面顶点,这些顶点为即将绘制的四边形的坐标,用glEnd()收尾。接着在屏幕上画坐标轴。

3)读数据,画位移时程图。①画流动虚线,使点的位移时程图看上去更加生动;②统计 X、Y、Z坐标的最大最小值和平均值,为后面平移画点做好准备;③进行OpenGL几何变换;④开始读文件,分别在对应的背景上以点的方式(GL_PO IN TS)画读到的第一个点分坐标;⑤读取数据的过程中,用某种颜色分别以点的方式画当前的 X、Y、Z坐标点;⑥画位移时程线。用画独立线的方式(GL_L INES)连接当前点与前一个点,并且使用与当前点不同的颜色。每画一个点做一次平移变换,使所绘的当前点能一直在屏幕上显示。

4)实例效果。以苏通大桥某监测点2007-03-17T12:20~13:30的监测数据(二维和三维实例所用数据也为此数据)为例,得到的位移时程图如图2所示。

图2 某监测点的一维可视化效果图

图2中从上到下的三个横轴分别代表 x、y、z的平均位置,浅色的竖轴为波动幅度的参考线。右侧显示了当前点即最右端的点的日期、时间和坐标。深色的竖线为流动线,以便动态效果更加明显。

3.3.2 二维可视化程序编制与实现

在成员函数Mode2D()中添加代码。显示监测点的瞬时平面位置,同时还要用不同颜色绘制平面位置变化的轨迹,具体算法:

1)清除屏幕和深度缓存。

2)画背景:首先画一个四边形作为背景平面,再画坐标轴。

3)设置点的属性特征:先设置要绘制点的大小,再对点进行反走样平滑处理。

4)读数据,画点位图:①刚开始读文件时,画出点的初始平面位置;②往后读数据时,用某种颜色画出当前数据之前所有点的轨迹;③用另外一种颜色画当前点。

5)实例效果:见图3。

3.3.3 三维可视化程序编制与实现

1)画前设置。

glShadeModel(GL_SMOO TH);//启用阴影平滑

glEnable(GL_DEPTH_TEST);//启用深度测试

glDep th Func(GL_LEQUAL);//所做深度测试的类型

glEnable(GL_PO IN T_SMOOTH);//启用点平滑

glEnable(GL_CULL_FACE);//不画多边形的背面

glFrontFace(GL_CCW);//顶点逆时针方向定义的多边形为前面

2)添加光照。光照是OpenGL一个非常重要的功能,为了使立方体有立体感,在绘制之前要添加光源。

3)OpenGL初始变换。因为OpenGL在绘制三维图形时,它默认的是图4所示的坐标轴向。而一般用的空间坐标系的轴向如图5所示。所以要进行初始的旋转变换,变换代码如下:

图3 二维可视化效果图

4)开始绘图:①绘制立方体的六个平面:画之前先启动光照。多边形模式采用 glPolygonMode( GL_BACK,GL_FILL)。表示所画的多边形模式为背面填充,这样可以透过立方体的前面看到里面点的运动。②画坐标轴:画之前要关闭光照和深度测试,因为坐标轴是画在立方体内部的,如果不关闭深度测试,线将会被它前方的立方体的面遮挡而无法显示;打开混合GL_BLEND可以使绘制的轴线与立方体更好的融合。③读数据,画监测点:统计X、Y、Z坐标的最大值与最小值之差及平均值。以最大值与最小值之差的绝对值来确定缩放比例;统计平均值目的是平移坐标,使绘制点的平均位置在立方体中心。然后每读取一个数据,就画一个点,则在窗口中就可以动态显示其位置。

5)添加消息处理函数。其实现功能是:鼠标能够拖动立方体,进行旋转,观察移动点在不同方向上的位移。

3.4 销毁窗口

程序退出前,调用函数DestroyScene(),销毁窗口,关掉计数器。

4 结束语

本文以VC++6.0为开发工具、OpenGL为图形接口,利用OpenGL提供的几何建模、光照等特性,结合GPS实时监测系统的数据,初步实现了监测点的一维、二维和三维时程数据的动态可视化显示。通过对GPS高采样率监测数据的可视化,可以直观地察视监测点位置的动态变化状态,并分析其动态特征。这比以往仅依靠事后的图表来分析显得更为及时、直观清楚,有助于实现对被监测对象的实时监控。三维可视化技术在现代大型建筑工程的几何监测系统中具有广阔的应用前景。

[1]丁爱玲.计算机图形学基础教程[M].北京:电子工业出版社,2004.

[2]杨培军.基于 GPS的大跨度桥梁健康监测系统研究[D].成都:西南交通大学,2006.

[3]王同洲,郭淑娟,廖 平.1000m海试水面船运动监测可视化仿真[J].计算机仿真,2004,261(5):177-179.

[4]廖 平,刘少军.基于OpenGL的深海采矿系统监测可视化[J].矿山机械,2004,6(8):6-8.

[5]毛朝阳.卫星监测中三维可视化图形技术应用[J].计算机应用,1999(8):18-20.

[6]陆新征,江见鲸.计算机图形仿真技术在结构动力分析中的应用[C].中国计算力学大会论文集.2001.

[7]黄声享,杨保岑,张 鸿,等.苏通大桥施工期几何监测系统的建立与应用研究[J].测绘学报,2009,38(1):66-72.

[8]Dave Shreiner,Mason Woo,Jackie Neider.OpenGL编程指南[M].北京:人民邮电出版社,2005.

[9]吴 斌,段海波,薛凤武.OpenGL编程权威指南[M].北京:中国电力出版社,2001.

The 3D visualization and initial implementation of GPSgeometry monitoring system

HUANG Sheng-xiang,SHEN Feng-jiao,ZHANG Cui-feng
(School of Geodesy and Geomatics,Wuhan University,Wuhan 430079,China)

Modern GPS geometry monitoring system has high hits as well as p lentiful monitoring stations, so the visualization of data management and its utilization can make the data information getting from the system mo re vivid and direct.In this paper,stress is laid on the initial imp lementation of the outputs of three-dimensionalmonito ring data,through the research of how to make use of VC++6.0 as the development tool,OpenGL as the graphic interface by w hich the geometry modeling,lighting are p rovided,and finally the monito ring data from GPSmonito ring system of Sutong Bridge.

GPS;geometry monitoring;visualization;OpenGL

TP391.9

A

1006-7949(2010)01-0001-04

2009-04-05

国家科技支撑计划项目(2006BAG04B03)

黄声享(1964-),男,教授,博士.

[责任编辑:李铭娜]

猜你喜欢
立方体视图绘制
超萌小鹿课程表
放学后
内克尔立方体里的瓢虫
5.3 视图与投影
视图
图形前线
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
立方体星交会对接和空间飞行演示
折纸