2009 Second International Conference on Information and Computing Science
Flight Environment Virtual Simulation Based on OpenGL
Ruixian Li
School of Transportation and Vehicle Engineering
Shandong University of Technology
Zibo, China
e-mail:lrx@sdut.edu.cn
Abstract—According to the flight dynamic mathematical model
according to the flight kinematics, and users can use the
keyboard to control the aircraft.
and the kinematic mathematical model, this article adopts the
Visual C 6.0 visualization development environment and the
OpenGL programming technology to simulate the flight rule of the
aircraft. The flight environment virtual simulation system can
simulate the flight rules in 3D space and users can control the 3D
aircraft real time by the keyboards, and the main parameters of the
aircraft can dynamically change with it, and the interface of the
software is friendly and easy to operate.
II.
INTRODUCTION OF OPENGL
OpenGL is a sort of interface about graphics and
hardware in fact, and it includes numerous graphic operation
functions which can be utilized to establish 3D models to
implement real-time interaction by developers. Different
with other graphic program designs, it offers very clear
functions, and it is a software package with high
performances. In addition, the powerful graphic function of
OpenGL doesnrsquo;t require developers to write the 3D object
model as fixed data format, and it can utilize the data sources
with different formats flexibly.
Keywords: VC , OpenGL, Simulation
I.
INTRODUCTION
The visual simulation of flight environment is the
representative man-in-the-loop real-time simulation system,
and it is a sort of practical application of the visual reality
technology. It adopts the computer-graphics technology and
the multimedia technology to establish the dynamical and
kinematics mathematical models and evaluate the whole
flight quality of the aircraft. The visual simulation of flight
environment is mainly used to analyze the study the flight
control, guidance and navigation system of the aircraft,
which include the confirmations of the control rule, guidance
rule and navigation mode, the selection of the parameters,
the matching of the system, the analysis and the evaluations
about the dynamic characters, flight quality, guidance and
navigation precision of the aircraft. In addition, the visual
simulation of flight environment also could be used in flight
training and employee training.
Because the visual simulation of fight environment
possesses many advantages such as cheap costs, reliable
technology, flexibility and convenience which can not be
unexampled by general technologies, it has been increasingly
emphasized in domestic and foreign markets, and the
research and application domains about relative technologies
are continually extended from initial single-flat simulation
such as flight performance and aviation electron to present
simulator network and distributed interactive simulation,
from initial simulated flight training to present product
research project argumentation, design analysis, production
manufacturing, experiment evaluation and maintenance
training. As a sort of new technology, the visual simulation
of flight environment is gradually going to be mature.
The plotting mode of OpenGL is different with the
plotting mode of Windows, and it uses the special pixel
format and the rendering contexts to plot the graphics. And
the plotting process can be described as follows.
bull;
Over load the object model by the geometric
primitive and establish the mathematical description
of the object.
bull;
Select proper position to place the object in the 3D
space and confirm the optimal viewpoint to see the
scene.
bull;
bull;
Compute the color of the object in the scene.
Transform the mathematical description of the object
model in the scene into the pixel points in the screen,
and this process is called as the rasterization.
The plotting flow is seen in Figure 1.
OpenGL could produce the 3D scene with true color
which includes simple 2D object plotting and interactive 3D
animation scenes with different effect and it can help
developers to complete these plotting works higher
effectively.
III.
OPENGL PLOTTING
A.
Establishing 3D scene
Before plotting, we should implement the initialization
operation. And the usual clear commands include followings.
bull;
Void glClearColor (GLfloat rad, GLfloat green,
GLfloat blue, GLfloat alpha). It is used to confirm
the clearing value of the color buffer.
The visual simulation of flight environment is a complex
system, and it needs a great lot modeling works of subjects.
Taking Visual C 6.0 and OpenGL as the development
tools, this article will simulate the scene of the flight process
bull;
bull;
Void glClearDepth (GLfloat depth). It is used to
appoint the clearing value of the deep buffer.
Void glClear (GLbitfield mask). It is used to clear
one sort
剩余内容已隐藏,支付完成后下载完整资料
2009年第二次国际信息与计算科学会议
基于OpenGL的飞行环境虚拟仿真
中国 ,淄博 山东科技大学交通与车辆工程学院李瑞贤
电子邮件:lrx@sdut.edu.cn
摘要:根据飞行动态数学模型和运动学数学模型,本文采用Visual C 6.0的可视化开发环境和OpenGL的编程技术来模拟飞机的飞行规则。在三维空间中,飞行环境虚拟仿真系统可以模拟飞行规则,用户可以通过键盘控制3D环境下飞机实时情况,并且飞机的主要参数可以用它动态地改变,该软件的界面友好和易于操作。
关键词:VC ,OpenGL,模拟
I.介绍
飞行环境的可视化仿真是人在半实物实时仿真系统的代表,它是一种视觉现实技术的实际应用。它采用计算机图形技术和多媒体技术建立动力学和运动学的数学模型,并评估了飞机的整个飞行质量。飞行环境的视觉模拟主要用于分析和研究飞机,其中包括确认控制规则,引导规则和导航模式,所述参数的选择,对所述匹配的飞行控制;在引导和导航的系统系统中,分析关于飞机的动态字符,飞行质量,并进行指导和导航精度的评价。此外,飞行环境的视觉模拟还可以在飞行培训和员工培训使用。
由于对环境的可视化模拟具有许多优点,如廉价的成本,可靠的技术,灵活性和便利性。这些都是一般的技术无可比拟的,它已经在国内和国外市场,以及关于相关技术的研究和应用领域中不断从最初的单一平板模拟扩展(如飞行表演和航空电子提出模拟器网络和分布式交互仿真)而越来越多出现,从最初的模拟飞行训练来展示产品,到研究项目论证,设计分析,生产制造,试验评估和维修培训。作为一种新的技术,飞行环境的可视化仿真逐渐走向成熟。
飞行环境的视景仿真是一个复杂的系统,它需要大量模型来支撑整个开发流程。本文采取Visual C 6.0和OpenGL作为开发工具来模拟飞行过程,整个过程遵循飞行运动学,并且用户可以使用键盘来控制飞行器。
II.OpenGL的介绍
OpenGL实际上是一种图形和硬件接口,它包括许多可以由开发者建立三维模型来实现实时交互图形操作的功能。与其他图形程序设计不同的是,它提供了非常清楚的功能,作为一个软件包,OpenGl在开发上具有很高的效率。此外,OpenGL强大的图形函数不需要开发者编写三维对象模型来作为固定的数据格式,并且它可以灵活的利用具有不同格式的数据源。
OpenGL绘图方式与Windows的绘图方式最大的差别在于,它采用特殊的像素格式和渲染语境来绘制图形。绘图过程如下所述:
bull;根据基本图形单元建立景物模型,并且对所建立的模型进行数学描述。
bull;选择适当的位置来在三维空间中放置景物模型,并且设置视点以观察所感兴趣的景物。
bull;计算模型中所有物体的色彩。
bull;把景物模型的数学描述及其色彩信息转换至计算机屏幕上的象素,这个过程也就是光栅化。此绘制过程如图1示
OpenGL的可以产生真彩色的3D场景(包括简单的2D对象绘制和不同的效果的交互式3D动画场景),它可以帮助开发者更高效的完成这些场景的绘制。
III.OpenGL绘制
A.建立 3D场景
绘制之前,我们应该执行初始化操作。通常使用的命令如下:。
bull;void glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha). 用来清除窗口颜色缓存区的值。
bull;void glClearDepth (GLfloat depth). 用来清除深度缓存区的值。
bull;void glClear (GLbitfield mask). 用来清除颜色缓存区的值。
在OpenGL中,所有的几何对象都由许多有序顶点数据集合来描述,OpenGL采取有序顶点数据集合建来立几何图元。在一个几何图元所有被定义的顶点数据集合被放置在函数在glBegin()和函数glEnd()之间,并且这些顶点数据之间的关系已经定义。
但是由上述函数绘制复杂的3D对象是非常困难复杂的,而更为方便的方法是利用现有的绘图工具来绘制模型,并使用适当的转换软件来将模型变换成支持c 或直接可以编译的文件并将其读入程序,然后得到对象模型的相关数据。
B.坐标转换
坐标转换包括模型变换,视点变换,投影变换和视口变换。两个完整的转换命令应当包括选择投影矩阵功能glMatrixMode(Glenum模式),和用来重置投影矩阵的函数glLoadIdentity。
模型变换可以改变场景中对象的大小,位置和方向,它包括以下三个OpenGL命令:
bull;glTranslate {fd}(TYPE x,TYPE y,TYPE z)。这个函数可以通过移动坐标系的一点(X,Y,Z)来进行矩阵变换。
bull;glRotate {fd}(TYPE angleTYPE x,TYPE y,TYPE z)。该函数中第一个变量angle制定模型旋转的角度,单位为度,后三个变量表以原点到点(x,y,z)的连线为轴逆时针旋转物体。其中,参数“角”默认的旋转角度为负矢量旋转,而参数“x,y,z”默认从原点到矢量点(x,y ,z)的连线,并且所述方向为负方向。
bull;glScale {fd}(TYPE x,TYPE y,TYPE z)。此命令用于改变对象的实际大小。可以通过对物体沿着x,y,z轴分别进行放大和缩小。函数三个参数分别是各轴比例变换因子。缺省为1.0,即物体不发生变换。
视点变换改变了视点的位置和方向,它的作用就像场景照相中固定的三脚架。在这里,我们只介绍函数gluLookAt(),是由实用应用程序库提供,即“void gluLookAt(GLdouble eyex,GLdouble eyey,GLdouble eyez,GLdouble center,GLdouble centery,GLdouble centerz,GLdouble upx,GLdouble upy,GLdouble upz)”。函数的参数分别用来确定视点的位置,所述参考点的位置和向上向量的方向。
投影变换用来定义一个视景体,使得视景体外多余的部分裁剪掉,最终进入图像的只是视景体内的有关部分。投影变换包括透视投影和正视投影两种。透视投影最明显的特点是根据物体的远近程度进行缩放,符合人们心理习惯,即离视点近的物体大,离视点远的物体小,远到极点即为消失,成为灭点。它的视景体类似于一个顶部和底部都被进行切割过的棱锥,也就是棱台。这个投影常用于动画,视觉仿真以及其它许多具有真实性反映的方面。透视投影的常用函数是void gluPerspective(GLdouble fovy,GLgouble Aspect,GLdouble zNear,GLdouble zFar),它也创建一个对称透视视景体,参数fovy定义视野在y轴方向上角度;参数Aspect是投影平面宽度与高度的比率;参数zNear和zFar分别是远近裁剪面沿z负轴到视点的距离,它们总为正值。
视口变换用于确定视口的大小,它的函数是“void glViewport(Glint x,GLint y,GLsizei width,GLsizei height)”,其中,“x,y”是视口在屏幕窗口坐标系中的左下角点坐标,参数width和height分别是视口的宽度和高度。缺省值即(0,0,winWidth,winHeight)指的是屏幕窗口的实际尺寸大小。所有这些值都是以像素为单位,全为整型数。
还有一个重要的操作,即堆栈操作。它指的就是内存中专门用来存放矩阵数据的某块特殊区域。并且它利用该堆栈操作函数“glPushMatrix()”,来将所有矩阵依次压入堆栈中,顶部矩阵是第二个矩阵的备份;并使用“glPopMaterix()”来弹出堆栈顶部的矩阵,令原第二个矩阵成为顶部矩阵,接受当前操作,故原顶部矩阵被破坏;
C.纹理管理
纹理投影是三维图形制作过程中重要的组成部分,它可以更方便的让我们制作更多具有真实性的图形,而在过程中我们不必花费太多的时间来考虑物体的表面细节。在OpenGL中,纹理映射的基本方法包括以下几个方面:
(1)纹理定义
我们可以使用下面的程序函数来定义2D纹理投影。
void glTexImage2D(GLenum target,GLint level,GLint components,GLsizei width,Glsizi height,GLint boder,Glenum format,GLenum type,Const GLvoid *pixels)
(2)纹理控制
由于物体的外观和质感不总是与物体的形状相同,所以OpenGL的纹理控制是用来定义我们如何对物体的表面进行纹理包装。控制OpenGL纹理的函数是“void glTexParameter{if}[v](GLenum target,GLenum pname,TYPE param)”;第一个参数target可以是GL_TEXTURE_1D或GL_TEXTURE_2D,它指出是为1D或2D说明参数,参数pname和param用于放大和缩小滤波器中方式的选择。
(3)纹理坐标
在绘制纹理映射场景时,我们不仅要给每个顶点定义几何坐标,而且也要定义纹理坐标。经过多种变换后,几何坐标决定顶点在屏幕上的绘制位置,而纹理坐标决定纹理图像中的哪一个纹素赋予该顶点。纹理图像是方形数组,纹理坐标通常可定义成一,二三或四维形式,称为s,t,r和q坐标。在OpenGL被用来设置当前纹理坐标的函数是“void gltexCoord{1234}{sifd}[v](TYPE coords);”
D.帧缓存和动画
(1)帧缓存组成
屏幕上所绘的图形都是由象素组成的,每个象素都有一个固定的颜色或带有相应点的其它信息,如深度等。因此在绘制图形时,内存中必须为每个象素均匀地保存数据,这块为所有象素保存数据的内存区就叫缓冲区,又叫缓存。不同的缓存可能包含每个象素的不等数位的数据,但在给定的一个缓存中,每个象素都被赋予相同数位的数据。存贮一位象素信息的缓存叫位面。系统中所有的缓存统称为帧缓存,可以利用这些不同的缓存进行颜色设置、隐藏面消除、场景反走样和模板等操作。
OpenGL帧缓存是由四种缓冲器:颜色缓存,深度缓存,模板缓存和累积缓存组成。
(2)缓存清除
OpenGL清除缓存操作过程是:先给出要写入每个缓存的清除值,然后用单个函数命令执行操作,传入所有要清除的缓存表,若硬件能同时清除,则这些清除操作可以同时进行;否则,各个操作依次进行。。
以下函数为每个缓存设置清除值:
void glClearColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha);
void glClearIndex(GLfloat index);
void glClearDepth(GLclampd depth);
void glClearStencil(GLint s);
void glClearAccum(GLflaot red,GLfloat green,GLfloat blue,GLfloat alpha);
选择了要清除的缓存及其清除值后,就可以调用glClear()来完成清除的操作了。这个清除函数为:void glClaear(Glbitfield mask);
(3)OpenGL动画
OpenGL提供了双缓存,可以用来制作动画。也就是说,在显示前台缓存内容中的一帧画面时,后台缓存正在绘制下一帧画面,当绘制完毕,则后台缓存内容便在屏幕上显示出来,而前台正好相反,又在绘制下一帧画面内容。这样循环反复,屏幕上显示的总是已经画好的图形,于是看起来所有的画面都是连续的。在OpenGL中,设计这样的动画程序很简单,只需掌握一个重点函数,即:void auxSwapBuffers(void);设置交换缓存。即执行完一次绘制过程,便交换前后台缓存,以便让下一帧图形在屏幕后绘制完成。
IV.在飞行模拟环境中的3D场景
A. 3D地形模拟
三维地形的模拟是可视化系统发展中最重要的技术之一,地形仿真包括两大类:真实地形和模拟地形。
真实地形是在现实世界中真实地形的再现,我们必须采取具体的数据来建立。在这种情况下,标准数字模型的方法通常适用,虽然该方法的数据结构很是复杂的,并且图形生成速度缓慢,但是它的精度是非常高的。
当我们只考虑场景需求,而不考虑在可视化过程中的地形生成时,我们可以通过随机标准数据和分维标准数据来进行地形模拟地形。通过这些方法产生的地形虽然是非常直观的,而且图形生成速度是非常快的,但它不能与现实世界对应。在系统中,我们采用分维标准数据制作的方法来建模。
B.天空和云的模拟
天空只是加强了视觉效果。在天空中的主要景观都是浮云,但云的形状有许多不同的地方。通常的方法是box(在绘制多边形时执行纹理化)或roundness(绘制多个顶点数据,纹理凸起和平均的分配)。本文我们了box的方法,通过对云图形的四边形纹理进行绘制,并利用函数glTranslate()和glRotate()来实现纹理坐标的平移和旋转来模拟天空。
......
glColor4f(1,1,1,1)
glBindTexture(GL_TEXTURE_2D,texture[1])
glTranslatef(-Xtrans,-ytrans-MAX * 48,-ztrans)
glRotatef(90,1,0,1)
gluSphere(二次,
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[148068],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。