基于OpenGL的飞机模型运动3D实时仿真显示

基于OpenGL的飞机模型运动3D实时仿真显示
基于OpenGL的飞机模型运动3D实时仿真显示

本科毕业论文

(科研训练、毕业设计)

题目:基于OpenGL的飞机模型运动

3D实时仿真显示

姓名:李培锋

学院:物理与机电工程学院

系:航空系

专业:航空机械

年级:2009级

学号:3######0

指导教师(校内):## 职称:教授

指导教师(校外):职称:

2013年 5 月15 日

摘要

基于OpenGL的飞机模型运动

3D实时仿真显示

[摘要] 近年来,随着计算机动画技术的高速发展,基于计算机动画技术的实时仿真技术在航天航空、机械设计、游戏开发、地理信息、气象模拟、虚拟现实等领域的应用越来越广泛。

本文以计算机图形学,图像处理技术为基础,运用OpenGL这一软件接口,以Visual

C++6.0为集成开发环境,在Windows系统中建立飞机模型运动3D仿真应用程序。通过获取传感器采集的飞机模型的姿态数据,对绳牵引机器人控制的飞机模型在试验中的运动进行实时仿真显示。文中详细介绍了OpenGL构建模型和实现动画仿真显示的原理和过程,以及在编程过程中使用到的双缓冲,Win32多线程和3DS格式模型导入等关键技术。

[关键词] 实时仿真OpenGL三维运动3DS格式模型导入

ABSTRACT

[ABSTRACT] In recent years, with the rapid development of the computer animation technology, real-time simulation technology, which is based on the computer animation technology, is being used in many fields such as aerospace, mechanical design, game development, geographic information, weather simulation, virtual reality and so on more and more wildly.

This paper is mainly based on computer graphics and image processing technology, using a high performance graphics application programming interface (API): OpenGL and Visual C++ 6.0 as integrated development environment to build model airplane and the external frame in Windows system. The aircraft model entity data is acquired by sensor acquisition to achieve the purpose that simulates the three-dimensional motion attitude changes of the aircraft model controlled by traction rope robot in time. This paper introduces the principles and processes of OpenGL to build model and achieve animation , as well as the key technologies used in the programming process such as double buffering, Win32 multi-threading , 3DS format models import and so on.

[Key Word] Real-time simulationOpenGLthree-dimensional motion3DS format models import

目录

第一章绪论 (1)

1.1 本文研究的背景意义 (1)

1.2 本文的主要工作 (2)

1.3 本文的主要内容 (2)

第二章OpenGL简介及其实现绘图的原理和过程 (3)

2.1 OpenGL简介 (3)

2.1.1 OpenGL功能 (3)

2.1.2 OpenGL图形显示方式 (4)

2.2 OpenGL绘图前期准备 (5)

第三章实时仿真显示的关键技术和关键环节 (6)

3.1 VC简介 (6)

3.2 多线程技术 (6)

3.3 本文涉及的坐标系 (7)

3.3 3DS格式模型文件的生成 (7)

3.4 3DS模型文件导入OpenGL (9)

第四章飞机模型运动3D实时仿真显示的实现 (11)

4.1 3D实时仿真显示应用程序的总体设计 (11)

4.2 创建窗口 (12)

4.3 程序初始化 (13)

4.4 模型场景构建及运动仿真 (14)

4.4.1 飞机模型运动实时数据的获得和显示 (14)

4.4.2 飞机模型的绘制 (15)

第五章成果展示和功能分析 (17)

第六章总结 (19)

[参考文献] (20)

致谢语 (21)

第一章绪论

1.1 本文研究的背景意义

本文研究目的是完善现有的绳牵引并联支撑系统(WDPSS)[1]主控制界面(简称主控制界面)。在分析现有的WPDSS原理样机和主控制界面后,发现实验者在实验过程中不便于直接观察飞机模型的运动情况,而现有的主控制界面没有实时显示飞机模型姿态方面的功能。这不利于实验者在实验过程中直观地掌握飞机模型的运动情况并根据实时仿真显示结果对飞机模型的运动姿态进行相应的调整。本文就是针对这一不足,制定合理的方案去解决问题。

近年来,随着计算机动画技术的高速发展,利用计算机动画技术实现仿真显示在国内外各个领域都日益成为最热门的研究课题之一。现已有多家公司各自开发出了相应的仿真软件。现在主流的仿真软件主要有由美国MultiGen-Paradigm公司开发的能用于虚拟现实、实时视景仿真、声音仿真以及其他可视化领域的软件工具Vega[2],由Quantum公司开发的软件工具VTree[3]和由美国MultiGen-Paradigm公司开发的Multigen Creator系列软件等。

虽然上述软件工具都被广泛的使用,但是各有侧重的领域。Vega提供了稳定、兼容、易用的界面使开发、支持和维护工作更快和高效。Vega能有效地减少在图形编程上花费的时间,在对复杂系统进行仿真的时候有明显的优势。Multigen Creator拥有针对实时应用优化的OpenFlight数据格式和多种专业选项及插件,能高效、最优化地生成实时三维(RT3D)数据库,能与后续的实时仿真软件紧密结合。Multigen Creator在大型的视景仿真和娱乐游戏环境的创建时较为适合。VTree则适合于开发高帧速率三维图像应用。

OpenGL(全写Open Graphics Library)是由SGI公司于1992年7月发布的,并且在此之后一直保持对软件相对高频率的更新升级,这使得OpenGL的功能越来越强大,现已成为主流的专业三维图形程序接口。OpenGL可以和各种编程语言紧密结合,以它为基础的开发应用程序方便在各个平台间的移植,而且它为实现交互式视景仿真和虚拟现实提供了高效率的库函数,因此功能强大[4]。

对比上述软件工具,OpenGL在本文研究的课题中有以下几点优势:首先OpenGL的使用相对简单;其次,由于OpenGL发展较为成熟,其各类辅助学习和编程的资料较为完整且容易获取;最重要的是OpenGL能容易地在Visual C++ 6.0(简称VC++6.0,是Visual Studio

的一个开发工具库)环境下和主控制界面程序编写在一起。

因此,本文选择使用OpenGL编写实时仿真显示子界面(简称子界面),完善现有的主控制界面。通过使用子界面,实验者能在实验中直观的了解飞机模型运动情况并据此对飞机模型的运动进行调整。

1.2 本文的主要工作

本文研究目的是通过使用OpenGL实现飞机运动3D实时仿真显示。具体而言就是以计算机图形学和图像处理技术为理论基础,在Win32基础上运用OpenGL,以VC++6.0为集成开发环境,对实验过程中飞机模型的运动情况进行实时仿真显示。为了达到这个目的,本文完成工作主要包含以下几方面:

1. 学习和了解OpenGL和其他必要软件。研究坐标变换、双缓冲和多线程等关键技术。

2. 使用OpenGL搭建飞机模型场景,研究如何设计应用程序实现飞机模型运动实时仿真。创建一个OpenGL窗口,显示飞机模型的运动仿真。

3. 使用多线程技术将设计好的子界面链接到主控制界面中。

1.3 本文的主要内容

本文详细介绍了研究课题的实现过程和设计方法,具体的章节安排如下。

第一章为绪论部分,主要简述了本文研究课题的背景意义、主要工作和主要内容。

第二章中对OpenGL的特点和功能进行了简要的介绍。分析了在本文研究课题中使用到OpenGL的主要技术环节,并且说明了上述技术在本文中的使用。

第三章首先对OpenGL的VC开发环境进行介绍,并通过使用多线程技术,实现主控制界面和子界面的链接,最后研究如何使用3DMAX生成3DS模型文件和3DS模型文件导入OpenGL。

第四章编写了基于OpenGL的飞机模型运动3D实时仿真显示的应用程序(简称应用程序)。通过分析总体结构和介绍具体模块的流程及重要代码,阐述了应用程序的开发过程。

第五章对应用程序编写的成果和功能进行基本的介绍。

第六章是对本次毕业设计的总结和分析。介绍应用程序设计的不足和设计过程中的得失。

第二章OpenGL简介及其实现绘图的原理和过程

本章首先对OpenGL的概念、特点、基本功能进行分析,在此基础上着重研究了OpenGL 图形显示和OpenGL绘图的前期准备两个方面。通过对OpenGL的初步研究为接下来应用程序的编写做准备。

2.1 OpenGL简介

OpenGL是一图形硬件的一种软件接口[5],被广泛应用于游戏开发、地理信息、气象模拟、虚拟现实等领域。OpenGL是高性能图形和交互场景处理的行业标准,它是一个函数库而不是一种编程语言。开发人员可以使用它提供的功能自由选择操作系统,在合适的开发平台上编写出功能强大的三维图形应用程序。

OpenGL是一个开发的标准,虽然由SGI公司首创,但是它的标准是由OpenGL体系结构审核委员会(ARB)掌管。ARB由IBM、Intel、Microsoft、ATI等著名公司创立,每隔四年举行一次会议,对OpenGL规范进行维护、改善和升级,使OpenGL能一直保持与时代同步。

OpenGL的主要特点是具有高度的可移植性,丰富的函数库,简单易记的函数功能及命名,高性能的图形渲染和与C语言能紧密结合能力。优秀的性能使得OpenGL成为当下主流的计算机仿真软件工具。

2.1.1 OpenGL功能

总的来说OpenGL是一个功能非常强大的专业三维图形程序接口,主要具有以下八大功能:

1. 建模:OpenGL图形库除了提供点、线、多边形等基本图元的绘制函数外,还提供了复杂的三维物体(球、锥、多面体、茶壶等)以及复杂曲线和曲面绘制函数。

2. 矩阵变换:复杂的图形都是由基本图元组成并经过一系列的变换实现的,而OpenGL 的变换都是通过乘以对应的矩阵来实现的。OpenGL提供了两种变换方式:基本变换和投影变换。其中基本变换包含了平移、缩放、旋转和镜像四种,投影变换包含了平行投影(正射投影)和透视投影两种。

3. 颜色模式设置:OpenGL提供了RGBA模式和颜色索引模式(Color Index)两种颜色

模式。RGBA模式为每个像素点指定颜色,而颜色索引模式则提供一个颜色表,各像素点通过索引颜色表得到颜色值。

4. 光照和材质设置:OpenGL假设光由三原色(RGB)组成,物体对三原色分别有不同的反射率,通过物理光学模型,计算物体实际颜色。

5. 纹理映射:OpenGL提供了完善的纹理映射机制可以十分逼真地表达物体表面细节。

6. 位图显示:OpenGL提供基本的拷贝和像素读写能力。

7. 图像增强:OpenGL提供融合、雾和反走样这三种特殊图像效果处理,使被仿真物体更具真实感,增加图形显示效果。

8. 双缓冲动画:双缓冲技术是OpenGL出色的动画效果的重要保障。OpenGL绘图前会先分配两个颜色缓冲区,在绘图时,一个缓冲区执行绘图命令(后台),另一个进行图形显示(前台)。循环反复,保证屏幕(前台)上总是显示已经画好的图形,以此实现图形显示的连续变化,达到动画效果,其中动画交换帧函数为SwapBuffers(g_hDC)。此外,利用OpenGL 还能实现深度暗示、运动模糊等特殊效果,从而实现消隐算法[6]。

在本文应用程序编写过程中主要需要使用到建模、矩阵变换、颜色模式设置、光照和材质设置、位图显示及双缓冲动画等功能。

2.1.2 OpenGL图形显示方式

绝大多数OpenGL在实现图像显示时都有相似的操作顺序,一系列相关的处理阶段叫做OpenGL渲染管线[7],如图1所示。虽然没有严格的规定OpenGL必须采用这样的实现方式,但是图1所示的顺序是一个已经得到证明的可靠的操作顺序,所以本次论文中选择通过这一顺序来实现图形显示。

图1. OpenGL渲染管线

2.2 OpenGL绘图前期准备

OpenGL绘图的前期准备的第一步是选择一个编译环境。现在Windows系统的主流编译环境有Visual Studio,Broland C++ Builder,Dev-C++等,这些编译环境都是支持OpenGL的。在本文中,现有的主控制界面的编写环境是VC++6.0,因此同样选择VC++6.0作为应用程序的开发环境。

第二步是要安装导入OpenGL工具包。几乎对于所有的OpenGL应用程序,在使用之前都需要导入OpenGL头文件和工具函数库(GLU),本文中编写程序的过程也不例外,另外Microsoft Windows要求在OpenGL头文件之前包含windows.h头文件。所以在本文的应用程序编程前先将OpenGL头文件和GLU导入程序目录下,然后在源代码开头编写以下代码:#include

#include

#include

#include

#include

#include

#include

第三步是建立OpenGL应用程序的框架,也就是创建OpenGL窗口并对OpenGL进行初始化。这部分的具体内容在本文第四章中会有详细介绍。

第三章实时仿真显示的关键技术和关键环节

在上一章对OpenGL进行研究的基础上,本章主要介绍了在实现飞机运动实时仿真显示过程中使用到的关键技术环节,为应用程序的编写提供技术支持。本章首先介绍了本文应用程序的VC++6.0开发环境,然后分析使用多线程技术链接子界面和主控制界面的过程。由于在使用计算机动画技术实现仿真的过程中涉及各种坐标系,在实际操作中易因为混淆而产生错误,所以本章详细介绍了本文中用到的几个坐标。在本章的最后,对3DS模型文件的生成和导入OpenGL这两个关键环节进行研究。通过对本章中内容的研究,为应用程序的开发奠定理论基础。

3.1 VC简介

Visual C++ 6.0是Microsoft公司推出的一种开发Windows应用程序的高级语言,具有强大的功能和较高的执行效率。它提供了程序设计领域中所涉及的多种技术,如文件访问,图形图像处理,数据处理和多媒体等,VC的开发对象几乎涵盖所有领域。

VC是一个基于Windows操作系统的可视化且面向对象的集成开发环境[8],用户可使用该环境开发有关C和C++的各种应用程序,包括了建立,编辑,浏览,保存,编译,链接和测试等操作。其中应用程序的开发主要有两种模式:Windows API方式和MFC方式,两种模式各具特色。

3.2 多线程技术

在一个程序中,独立运行的程序片断被叫作“线程”(Thread)[9]。多线程的基本概念是程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。其目的不是为了提高运行效率,而是为了通过提高资源使用效率来提高系统的效率。Win32多线程技术提供线程创建,线程挂起,恢复线程,线程退出、获取当前线程ID和条件锁等基本操作,用户通过使用这些操作可以实现基本功能。

在本文研究中,已经存在有主线程。本文为防止OpenGL应用程序的运行对主线程产生影响,把OpenGL应用程序独立编写成一个线程,保证两个界面窗口能正常的同时运行。

本文创建线程的具体操作如下:

1.定义一个OpenGL线程的入口函数,代码如下所示

DWORD WINAPI ThreadFunc1(LPVOID n)

{

OpenGL_Main();

return 0;

}

在上述函数中,OpenGL_Main()是OpenGL应用程序的入口函数。使用线程创建函数创建子线程后,可以调用ThreadFunc1这个线程函数进入子线程。

2. 创建线程:用函数CreateThread(NULL,0,ThreadFunc1,0,0,NULL)创建线程。该线程在点击了主控制界面中特定的按钮后开始创建。线程创建之后,OpenGL窗口打开,开始绘制飞机模型。窗口打开的具体过程在第五章中会详细介绍。

3.3 本文涉及的坐标系

本文需要涉及到坐标系的过程主要是在OpenGL窗口中模型的绘制以及模型平移旋转。上述两个过程涉及多个坐标系,在编写时需要明确具体涉及哪坐标系并根据该坐标系的特点进行处理,这样才能保证程序正确运行。

本文涉及的四种OpenGL坐标系,包括世界坐标、模型坐标、设备坐标和视点坐标。接下来对这四种坐标系分别进行介绍。

世界坐标是OpenGL中用来描述场景的坐标,Z轴正方向垂直屏幕向外,X轴正方向从左到右,Y轴正方向轴从下到上,是右手笛卡尔坐标系统。我们用这个坐标系来描述物体及光源的位置。

模型坐标是以模型某一点为原点而建立的“世界坐标”,仅对模型本身适用,用来方便对模型坐标的描述。模型在OpenGL中移动时,整体的相对位置是不变的,所以用模型自身的坐标来描述模型,和人的思维习惯一致。

设备坐标是指将三维的世界坐标经过变换、投影等计算后最终算出的在显示设备上对应的位置。

视点坐标是以视点坐标为原点,以视线的方向为Z轴正方向的坐标系。

3.3 3DS格式模型文件的生成

目前使用OpenGL绘制模型的方法主要有两种。第一种是使用OpenGL图形库提供的点、线、多边形等基本图元绘制函数或者相对复杂的三维物体以及复杂曲线和曲面的绘制函数,

通过高级语言环境(主要是C语言)进行开发。此方法比较灵活,适用性强,在模型结构较为简单的时候有明显的优势,但要求开发者熟练掌握编程技术和OpenGL,当模型结构比较复杂的时候工作量极大,而且并容易出错。另一种方法是使用专业的三维模型绘制软件绘制生成OpenGL能够读取的模型文件,通过将模型文件导入OpenGL实现模型的绘制。此方法由于其在处理复杂模型结构时有明显优势,被广泛地使用。

图2. 3DMAX中的飞机模型

在本文的研究中,为保证OpenGL中的模型是飞机模型实体按比例缩小的结果,同时考虑到已有SolidWorks生成的飞机模型WRL格式文件,故而采用第二种方法对飞机模型进行绘制。OpenGL强大的功能使得自身支持DFX,3DS等多种模型文件的导入。由于3DS格式文件Intel式的存储方式很符合windows系统下编程习惯,不需要对文件进行进一步转换,因此本文选择使用3DS格式模型文件导入OpenGL。为此在应用程序编写前首先需要使用3D MAX软件将原有的飞机模型WRL格式文件转化为3DS格式,并且对模型自身的三维坐标系进行调整设置。飞机模型自身坐标系调整后原点与飞机重心重合,机身长轴及短轴分别与X,Y轴重合。原点到机头顶点方向为X轴正方向,从飞机正前方观察向右为Y轴正方向,机身垂直向下为Z轴正方向。最后将生成的3DS模型文件命名为“feiji.3DS”,放在程序目录下。飞机模型在3D MAX软件中调整后的最终效果如图2所示。

3.4 3DS模型文件导入OpenGL

3DS模型文件由许多的块(Chunk)组成的,每个块包含头和主体。众多块之间是相互嵌套的,即块是有分层的。通常一个块会包含下级子块作为自己的数据,因此在读取3DS模型文件时,必须用递归的方式读取块。在3DS模型文件导入OpenGL过程中主编辑块、材质块、物体块、纹理块和颜色块等对模型绘制起关键作用。3DS模型文件导入OpenGL的过程本质上就是合理读取块的过程,下面对几个主要的块进行介绍:

1.主编辑块(0X3D3D)

主编辑块是主块(0X4D4D)的一个子块,其中包含了场景中使用的材质、配置和视口的定义方式、背景颜色等一系列相关信息。主编辑块存储了当前编辑场景的状况和当前窗口的配置数据,是3DS模型文件导入OpenGL过程的重点研究对象。

2. 材质块

材质块定义了3DS文件材质库中的信息,包括材质名称、颜色和纹理等。

3. 物体块

物体块包括了物体网格块和物体材质块。此处的物体材质块和材质块是不同的,物体材质块定义的是当前物体所使用的材质信息而材质块则定义了整个文件中所有用到的材质信息。

在VC++6.0中读取3DS模型文件首先需要定义若干结构体变量并分配内存空间用于保存对应块的数据。读取3DS模型文件的基本过程是先使用ReadChunk()函数分别读出单个块并为该模块分配内存空间,完成后释放当前模块的内存空间并将当前模块设置成前面模块。循环使用上述方法将所有需要读取的块进行内存空间分配后,将每个块的数据分类导入对应的定义好的模块结构体中。直到所有需要的块读取完毕后,将每个块的相关数据生成显示列表,3DS模型文件导入OpenGL过程结束。具体过程的流程图如图3所示。

图3. 3DS模型文件导入OpenGL流程图

第四章飞机模型运动3D实时仿真显示的实现

在前几章研究的基础上,本章将详细研究飞机模型运动3D实时仿真显示应用程序的开发过程。具体组成是首先对整个应用程序进行了总体设计,然后通过介绍各个子模块的具体实现过程,对整个应用程序的编写进行研究和说明。

4.1 3D实时仿真显示应用程序的总体设计

在对OpenGL、3DMAX等软件进行研究之后,为了解决如何基于OpenGL实现飞机模型运动的实时仿真显示这一课题,首先对整个应用程序进行了总体设计。在本次研究中,应用程序编写的思路主要是模块化设计。模块化设计的含义就是对应用程序进行分析后将整个程序分成若干个子模块,然后对子模块分别进行设计,最后将子模块有机结合在一起满足应用程序功能上的需求。模块化设计的采用有利于使应用程序的结构更加清晰、调试更加容易,从而提供程序的可靠性、可修改性、可读性和可移植性。

根据OpenGL绘图的特点和程序整体功能的要求,应用程序主要分为创建窗口,程序初始化和模型场景构建及运动仿真三个模块。对三个模块分别进行设计编辑之后,完成的应用程序的流程图如图4所示。本章接下来将对三个模块程序编写的具体流程和关键的程序代码进行分析,研究整个应用程序的实现过程。

图4. 3D实时仿真显示程序的总体设计

4.2 创建窗口

实时仿真显示功能的实现首先需要建立一个OpenGL窗口。在本文应用程序中通过自行定义的HWND CreateMyWindow(LPSTR strWindowName, int width, int height, DWORD dwStyle, HINSTANCE hInstance)函数来创建显示窗口的。窗口创建程序的流程如图5所示。最后生成一个初始大小为800×600,名字为“飞机动态飞行模拟”的窗口。

窗口创建函数将HWND gl_hWnd设置为窗口句柄。用WNDCLASS wndclass这个窗口类结构来保存窗口信息,在窗口信息中包含了WndProc函数,用来处理Windows消息及键盘响应。然后通过RegisterClass(&wndclass)函数注册窗口。在设置完窗口的属性和大小以后,用CreateWindow()函数完成窗口的创建。最后用ShowWindow()函数设置窗口的显示状态后,返回窗口句柄。

WndProc函数用于处理窗口消息,主要添加的消息主要是两个部分:第一个部分是用于控制窗口的形状变化,响应窗口右上角的最小化和最大化功能,并且使窗口能够通过拉伸来调整大小。第二个部分是用于关闭窗口的,响应窗口右上角的关闭功能。实际上在本文中关闭窗口并没有将OpenGL线程停止,而是调用ShowWindow(gl_hWnd,SW_HIDE)将窗口隐藏起来。

图5. 创建窗口流程图

4.3 程序初始化

程序初始化部分承接了创建窗口,并为模型场景构建及运动仿真做准备,是应用程序重要的组成部分。本文中用void Init(HWND gl_hWnd)此函数实现程序初始化,其流程如图6所示。

获取窗口坐标用GetClientRect(g_hWnd, &g_rRect)函数实现。初始化OpenGL就是对整个OpenGL绘图环境进行设置,总共可分为三步。第一步是重新设置窗口的像素格式,并声明一个PIXELFORMATDESCRIPTOR的结构体变量用来保存相关信息。第二步是为OpenGL 建立一个图形操作描述表RC。具体步骤是先用wglCreateCurrent(g_hDC)函数建立图形操作描述表。该函数的作用是以设备描述句柄g_hRC为参数,返回与设备描述表相关的图形操作描述表句柄g_hDC。再以g_hRC和g_hDC两个句柄为参数调用wglMakeCurrent(g_hDC, g_hRC)函数,使建立的图形操作描述表成为线程当前使用的图形操作描述表。第三步是对投影变化进行初始化。

3DS文件导入OpenGL的技术和原理在本文第三章中已经做过具体的分析在这里就不加以赘述。根据上述原理,在C语言程序中编写3DS模型文件导入函数

g_Load3ds.Import3DS(&g_3DModel, FILE_NAME)。程序初始化中导入3DS文件的具体过程是首先在程序开头将飞机3DS模型文件名"feiji.3DS"定义到FILE_NAME中,然后在

Init(HWND gl_hWnd)函数中调用导入函数,把3DS文件装入模型结构体中。

图6. 程序初始化流程图

4.4 模型场景构建及运动仿真

4.4.1 飞机模型运动实时数据的获得和显示

本文的应用程序的编写是应用于WDPSS系统控制的飞机模型试验中的,该试验系统样机安装有用于采集飞机模型试验位姿系统关键数据的传感器。在实验过程中通过传感器采集数据,进行处理后得到飞机模型运动的六个姿态数据(俯仰,滚转,偏航的角度以及X,Y,Z轴上的位移)。由于数据的采集和处理在原有主程序中已有完整的函数,故而在本文研究的应用程序中只需要直接调用数据即可。由于数据采集和处理部分不是本文研究的重点,所以在此不加以展开。

本文研究的课题是“基于OpenGL的飞机模型运动3D实时仿真显示”,接下来对实时性

进行分析。在仿真显示的实现过程中,有几个过程会产生时间上的滞后,分别是数据采集过程,数据处理过程和OpenGL窗口中飞机模型绘制过程。所以本文中所指的实时并不是完全意义上的和飞机模型实体的运动同步。但是分别分析几个过程,其中OpenGL绘图采用双缓冲技术,刷新频率和屏幕的刷新频率一致,故而滞后时间一般是在0.01s数量级的。书籍处理过程只有几个计算函数和数据传递,滞后的时间很短。而数据的采集的滞后时间也是小于0.01s数量级的。又由于本实验创建基于OpenGL的飞机模型运动3D实时仿真显示窗口的目的只要是观察飞机模型运动的情况,对于实时性这一指标在时间的精确性上要求并不是非常高。故而上述三个过程产生的总的滞后时间用肉眼很难分辨,故而其对实时性的影响在本文研究过程中可以忽略,即能够本文编写的OpenGL应用程序能达到本文研究课题对于实时性的要求。

OpenGL应用程序从主程序中获得到六个姿态数据以后,,使用WinAPI函数TextOut()将姿态数据显示在OpenGL窗口的左上角。使实验者可以在观察飞机模型运动动画的同时,观察到实时的姿态数据的具体值。

具体实时姿态数据显示函数中显示俯仰角度数据的代码如下:

char str0[100];

sprintf(str0, "%-08.3lf", wc.pitch);

char str_pitch[] = "俯仰角度:";

strcat(str_pitch, str0);

SetBkColor(g_hDC,NULL);

TextOut(g_hDC,5,5,str_pitch,strlen(str_pitch));

SetTextColor(g_hDC,RGB(0,200,0));

4.4.2 飞机模型的绘制

在绘制飞机模型前,首先需要调用glClear()函数对OpenGL进行颜色清除以及深度缓冲。然后用glLoadIdentity()函数设置单位矩阵,具体作用就是将飞机模型自身坐标系和世界坐标系重合。最后使用gluLookAt()函数设置观察视角。在设置好这些参数后,就具备了绘制飞机模型的基本条件。

具体飞机模型场景的绘制有两个部分。第一部分是使用OpenGL图形库提供线绘制函数glBegin(GL_LINE_LOOP)绘制一个0.82×0.78×1.04的长方体框架(尺寸具体参考已有的WDPSS控制的风洞试验原理样机的设计尺寸[1])。具体的思路就是先计算出长方体的八个顶

点的坐标,然后根据点绘制线,最后通过分别绘制长方体框架的六个面来完成框架的绘制。第二部分是绘制已经导入的3DS模型文件中的飞机模型。绘制的具体方法是遍历飞机模型中所有的对象生成的显示列表(具体生成过程在第三章中有详细介绍),将3DS模型文件导入过程中生成的显示列表里的信息全部显示出来。

在主控制界面调整飞机姿态数据后,数据传递到OpenGL线程后。需要使用位移变化和旋转函数调整飞机模型的位置。由于位移变化和旋转是以世界坐标为基准的,所以在调用位移和旋转函数后需要配对调用glPushMatrix()和glPopMatrix()函数。这两个函数配对调用在本文应用程序中实现的作用是保证下一次调用位移和旋转函数时飞机模型自身坐标系和世界坐标系重合。具体的程序代码如下:

glTranslatef(g_x,g_y,g_z);

glRotatef(g_Rotatex,1.0f, 0, 0); //绕指定轴旋转

glRotatef(g_Rotatey, 0, 1.0f, 0); //pitch的角度

glRotatef(g_Rotatez, 0, 0,1.0f); //yaw的角度

glPushMatrix(); //将当前变换矩阵(单位阵)压入堆栈

glPopMatrix();

在本文程序编写时为了降低OpenGL使用时的CPU使用率,通过在交换缓冲区前调用Sleep(5)函数,使交换缓冲区过程停滞5毫秒。能够在不影响视觉效果的情况下降低刷新频率,从而减低CPU使用率。

本文中应用程序为避免与主控制界面程序中的定时器发生冲突,在模型场景构建及运动仿真部分并未单独设置一个定时器,而是只是使用一个While(1)循环一直循环刷新该部分。具体来说,飞机模型运动数据的获取的频率可以理解为和主控制界面中相关部分的定时器设置的刷新频率相同。而数据的显示、场景的绘制和飞机模型的运动的刷新频率在默认设置的情况下根据OpenGL双缓冲技术的原理和Win32 API的原理和程序运行设备的屏幕的刷新频率相同。

自己设计制作模型飞机的体会

尽管学飞以来一直在飞成品机(ARF),但是,我自己要设计制作一架模型飞机的愿望一直在心里涌动。几经周折后,我成功地将自己亲手设计制造的一架航模送上了蓝天。我的愿望得到了厚重的实现,那种喜悦满足的心情是难以用语言来表达的。 下面我就讲讲我的设计制作过程,希望能对想动手做航模的朋友有所帮助。不对之处,还望大家共同交流提高。 按照现成的图纸制作一架模型飞机,不是一件太难的事。但是,如果根据您的需要自己设计制作一架飞机,恐怕就具有一定的挑战性了。当您要下手设计制作时,会遇到很多需要解决的问题。如:为什么要选用这个翼型、翼展和翼弦是怎么确定的、机身长度应该是多少、尾翼的面积需要多大、各部件的位置应该放在哪里等等。好在现在的由有关书籍较多,只要认真学习归纳,就能找到答案。根据我所学的知识,我是这样设计制造我的“菜鸟1号”的。 第一步,整体设计。 1。确定翼型。我们要根据模型飞机的不同用途去选择不同的翼型。翼型很多,好几千种。但归纳起来,飞机的翼型大致分为三种。一是平凸翼型,这种翼型的特点是升力大,尤其是低速飞行时。不过,阻力中庸,且不太适合倒飞。这种翼型主要应用在练习机和像真机上。二是双凸翼型。其中双凸对称翼型的特点是在有一定迎角下产生升力,零度迎角时不产生升力。飞机在正飞和到飞时的机头俯仰变化不大。这种翼型主要应用在特技机上。三是凹凸翼型。这种翼型升力较大,尤其是在慢速时升力表现较其它翼型优异,但阻力也较大。这种翼型主要应用在滑翔机上和特种飞机上。另外,机翼的厚度也是有讲究的。同一个翼型,厚度大的低速升力大,不过阻力也较大。厚度小的低速升力小,不过阻力也较小。因为我做的是练习机,那就选用经典的平凸翼型克拉克Y了。因伟哥有一定飞行基础,速度可以快一些,所以我选的厚度是12%的翼型。 实际上就选用翼型而言,它是一个比较复杂、技术含量较高的问题。其基本确定思路是:根据飞行高度、翼弦、飞行速度等参数来确定该飞机所需的雷诺数,再根据相应的雷诺数和您的机型找出合适的翼型。还有,很多真飞机的翼型并不能直接用于模型飞机,等等。这个问题在这就不详述了。机翼常见的形状又分为:矩形翼、后掠翼、三角翼和纺锤翼(椭圆翼)。 矩形翼结构简单,制作容易,但是重量较大,适合于低速飞行。后掠翼从翼根到翼梢有渐变,结构复杂,制作也有一定难度。后掠的另一个作用是能在机翼安装角为0度时,产生上反1-2度

航模飞机设计基础知识

第一步,整体设计 1、确定翼型 我们要根据模型飞机的不同用途去选择不同的翼型。翼型很多,好几千种。但归纳起来,飞机的翼型大致分为三种。一是平凸翼型,这种翼型的特点是升力大,尤其是低速飞行时。不过,阻力中庸,且不太适合倒飞。这种翼型主要应用在练习机和像真机上。二是双凸翼型。其中双凸对称翼型的特点是在有一定迎角下产生升力,零度迎角时不产生升力。飞机在正飞和到飞时的机头俯仰变化不大。这种翼型主要应用在特技机上。三是凹凸翼型。这种翼型升力较大,尤其是在慢速时升力表现较其它翼型优异,但阻力也较大。这种翼型主要应用在滑翔机上和特种飞机上。另外,机翼的厚度也是有讲究的。同一个翼型,厚度大的低速升力大,不过阻力也较大。厚度小的低速升力小,不过阻力也较小。实际上就选用翼型而言,它是一个比较复杂、技术含量较高的问题。其基本确定思路是:根据飞行高度、翼弦、飞行速度等参数来确定该飞机所需的雷诺数,再根据相应的雷诺数和您的机型找出合适的翼型。还有,很多真飞机的翼型并不能直接用于模型飞机,等等。这个问题在这就不详述了。机翼常见的形状又分为:矩形翼、后掠翼、三角翼和纺锤翼(椭圆翼)。矩形翼结构简单,制作容易,但是重量较大,适合于低速飞行。后掠翼从翼根到翼梢有渐变,结构复杂,制作也有一定难度。后掠的另一个作用是能在机翼安装角为0度时,产生上反1-2度的上反效果。三角翼制作复杂,翼尖的攻角不好做准确,翼根受力大,根部要做特别加强。这种机翼主要用在高速飞机上。纺锤翼的受力比较均匀,制作难度也不小,这种机翼主要用在像真机上。翼梢的处理。由于机翼下面的压力大于机翼上面的压力,在翼梢处,从下到上就形成了涡流,这种涡流在翼梢处产生诱导阻力,使升力和发动机功率都会受到损失。为了减少翼梢涡流的影响,人们采取改变翼梢形状的办法来解决它。 2、确定机翼的面积 模型飞机能不能飞起来,好不好飞,起飞降落速度快不快,翼载荷非常重要。一般讲,滑翔机的翼载荷在35克/平方分米以下,普通固定翼飞机的翼载荷为35-100克/平方分米,像真机的翼载荷在100克/平方分米,甚至更多。还有,普通固定翼飞机的展弦比应在5-6之间。确定副翼的面积机翼的尺寸确定后,就

SU导入3D的流程

Sketchup建模及导入3D的方法及选项设置 用su建模,一是推敲方案,二是在方案推敲完成导入3D后进入后期的渲染,出效果图。 SU建模注意:为了加快建模速度必须设定自己的一套快捷键,在建模的过程中必须每个体量编辑组件,以便以后的修改。为了能导入3D中进行渲染,Sketchup的模型必须面是统一 的,系统默认白色的是正面,蓝色的是反面,就必须把正面朝外反面朝里,要不然在3d里面反面是显示不出来。 第一,第二就是Sketchup 一定是专业版,只有它才能导出3ds格式和dwg格式。 第二,在Sketchup中把材质都赋好,记得一点是不要用Sketchup默认的材质,要新建材质赋你有的jpg格式贴图,这样在3d里面才能继续调整贴图,Sketchup默认的贴 图在3d里可是不认。 第三,就是导出了,在Sketchup里面:文件,导出,3d模型,第一个下拉菜单选所有图层,然后中间的全部都不要选择,最后一个把单位改成毫米就可以了。第一个不动直接确定,第二个点否,现在导进来了,打灯光,打摄像机,调Vary选项。 第四,在Sketchup中赋好的材质,先把模型选中然后在编辑菜单中选Poly Select (可编辑网格选择),下面有几个选项选倒数第二个Polygon,然后在Select By Material ID里面输入相应的材质ID,被选中的材质就会变成红色,这样就可以进行材质的调 整了。 第五,SU导出3DS格式说明:1、Sin gel Object勾选此选项时,整个场景将合并成一个物体被输出,在SketchUP中建立的群组和组件将不能被单独进行操作,在场景中线面数很大的情况 下有可能不能完成输出;(这视情况而定) 2、Objects By Geometry 此选项将以群组和组件为单位输出物体,SketchUP 最表面一层的群组和组件被保留为单独的物体,可以在max中进行单独灵活的各种 编辑,推荐使用。缺点是每一个群组和组件都会输出一个自身的多重子材质 3、Output Texture Maps 如果不勾选,输出材质中将不包含贴图信息;贴图 文件路径需要在max里添加,建议将所有贴图复制到max模型文件所在工作目录, 这样就不会出现找不到贴图的错误信息 4、Output 2-Sides 输出双面:一般情况下不需要,会额外增加模型量;但是 在SketchUP建模阶段必须保证面法线正反的正确性,否则反面在max里无法显示, 产生丢面现象。Materiar和Geometry分别以材质和物体产生双面。 5、Output Standalong Edges 输出边线,对于max 不必要。 6、Use “Color By Layer ” Mater用I层的颜色作为材质输出,是以层颜色进行管 理的材质,需要在建模起始阶段就规划好的材质管理方式,物体(或面)将以所在的层的颜色为自身的材质。因为SketchUP里组件和层是参插的,在组件具有复合 材质时好像不易管理。 7、Gen erate Cameras 产生相机,基本上每一个页面会产生一个相机,这个不用勾 选。

小学生的简易航空模型地制作

简易航空模型的制作 从人类诞生以来,一直都有一个梦,梦想着能像鸟儿一样飞翔。人类为此伤透了脑筋:为什么鸟儿有翅膀就能飞上天空,人类却不能。为此,我们的祖先制作出了种类繁多的风筝、竹晴蜒、孔明灯和木鸟模型。它们在飞机发明的过程中起了重要的作用。经过一代又一代人的努力。人类终于梦想成真了。 1903年,美国莱特兄弟(哥哥威尔伯,弟弟奥维尔)利用汽油发动机制造的“飞行者”号在美国基蒂霍克成功进行了历史上第一次机械动力飞行,12秒钟飞行了36米。此后在第一次世界大战中,飞机的性能得到迅速改善。1927年,美国飞行员林白曾驾驶“圣路易精神号(Spirit of Saint Louis)”成功飞越纽约和巴黎之间的大西洋,连续飞行5809公里,飞行时间为33小时50分钟。 但是,我国在航空同工业发达的国家相比,还有不少差距。开展航空模型小制作活动,可以使学生了解我国航空发展的历史和现状,激发学生从小立志献身于祖国的航空事业,为四化建设作出贡献。 航空模型的制作需要运用许多的科学知识,通过模型的制作,可以启发学生运用所学知识勇于实践,培养动手能力和创造能力。 初级橡筋动力模型飞机 初级橡筋动力模型飞机是一个比较典型的传统普及项目。通过制作、放飞初级橡筋动力模型飞机,可以对带有动力的自由飞项目有一个初步了解,为进一步学习制作复杂的模型飞机打下一个扎实的基础,是在初级模型滑翔机的基础上学习的延伸。下面让我们来做一架初级橡筋动力模型飞机. 第一节飞机的制作 一、材料工具: 一套初级橡筋动力模型飞机材料。砂纸板、壁纸刀、尖嘴钳、铅笔、尺子、透明胶带、双面胶带、模型快干胶(白乳胶、502胶水均可)。 二、制作过程: 1、制作机翼: 将吹塑纸按图示尺寸裁出左右机翼

飞机模型制作

一、设计篇: 现代F3A运动讲求姿态控制精准,动作细腻柔和,飞行速度均匀稳定。其大部分动作基本在一个面内完成,运动轨迹基本由规则的几何图形组成,包括大量的滚转、倒飞、侧飞和垂直飞行动作,努力达到和更好地完成这些飞行动作是设计工作的基本方向。 3A特技机的气动外形是基于FAI比赛需要而设计的,随不同时代技术进步以及飞行动作发展而不断进化。由早期的大翼展(翼展大于机身长度)过渡到现在的长机身(翼展与机身长度基本相同,或机身长度略大于翼展),由较小的机身侧投影面积发展为较大的投影面积等无不体现着这些变化。据此,对各种姿态下飞行稳定和平衡的追求,作为整体思路贯穿在本架飞机的设计之中--长的尾力臂可以使姿态控制更加柔和,适中的主翼根梢比提供了均衡的横侧稳定性,大的尾舵面弥补了长尾臂带来的操纵迟缓,以完成礼帽等直角空中动作,高而窄的机身使飞机有着较大的侧投影面积,尽量以较小的倾角完成侧飞动作 由于此模型为小型F3A特技机,我不希望其飞行速度过快,不然就缺少了一种稳定感。同时为了使之在做俯冲或垂直下降动作时也尽量保持匀速稳定飞行,在设计过程中增大和利用了形状阻力。比如,使用成熟的NACA0014作为主翼翼型以提高相对小雷诺数机翼模型飞行时的稳定性和抗失速性;适当降低了一些翼载荷--约50g/dm2,以求降低整机的惯性力矩,用以弥补使用NACA0014这类翼型造成的直角动作的相对迟缓;尾翼均使用带翼型的NACA0009。垂直尾翼的设计,尝试了2007年克里斯托弗的参赛机型Osmose的特点,加大了方向舵的后缘厚度,以期达到更好的直线性。垂直安定面采用标准翼身融合的设计,增加了其下部靠近机身纵轴的前缘厚度,然后过渡到较薄的翼尖。这样即可增大整架飞机的纵轴上尾部阻力,同时尽量保持各向气动布局均匀,使飞行更加稳定。 大致确定各项基本参数: 1. 外形尺寸:1.2m x 1.2m 2. 重量:1.2kg 3. 翼载荷:约50g/dm2 4. 主翼面积:约26dm2 5. 水平尾翼面积:6.5dm2

三维模型导入ADAMS的实用方法

三维模型导入ADAMS仿真的实用方法摘要:此文内容主要来源于 宋博士的博客(https://www.360docs.net/doc/5b2705581.html,/doctorsongshaoyun)。 本文所提供的方法是现有ADAMS书籍上未曾提供的内容,是解决大家建模感觉繁琐的非常实用的方法。 下面谈谈我的一些经验:尽管ADAMS软件中提供了几何建模的工具,但相比现在成熟的三维专业设计CAD软件而言其功能非常薄弱。ADAMS/View提供的建模工具功能非常的原始,即使对于简单的几何模型,用户想直接在ADAMS/View中建立也需要非常熟练地掌握移动和旋转工作栅格才能实现,而对于复杂的机械装配模型,ADAMS/View基本无能为力,因此目前通常的做法是先用成熟三维设计软件(如CATIA,UG,Pro/E,Solidwork等)精确建立机械系统实体零件模型和虚拟装配模型,之后通过数据交换的方式(我一般使用parasolid格式)将模型导入到ADAMS软件中,根据实际情况抽象出相应的运动副添加适当的约束、驱动和负载等(此处在正确位置建立合适的Maker点很关键,对于不规则实体有时软件自动建立的cm点并非在仿真需要的地方,运动副位置设置错了容易导致仿真失败)建立起机械系统的虚拟样机,来模拟实际工况和真实运动情况。此外机械系统方面的仿真建议大家使用Adams/Machinery这个插件,可以极大的提高仿真效率。 欢迎访问我的新浪博客(https://www.360docs.net/doc/5b2705581.html,/u/1774643737)。 基于SOLIDWORKS-ADAMS的机构动力学仿真对一个实际的机构做动力学仿真,是我们在机械设计实践中经常会遇到的的问题。一般我们会首先用某款三维软件(如SOLIDWORKS,SOLIDEDGE,PRO/E,UG,CATIA等)对所有零件进行建模,然后把零件组装成为装配体,接着把模型导入到机构动力学软件如ADAMS中进行动力学中仿真。 然而,从三维软件的装配模型导入到ADAMS中时,由于装配体中的零件很多,如果直接导入,会在ADAMS中出现许多零件,而其中许多零件之间并不存在相对运动,为了在ADAMS 中进行正确的仿真,就需要首先对没有相对运动的一系列零件之间建立固定副。对于简单的

遥控飞机模型的制作

遥控飞机模型的制作 从人类诞生以来,一直都有一个梦,梦想着能像鸟儿一样飞翔。人类为此伤透了脑筋:为什么鸟儿有翅膀就能飞上天空,人类却不能。为此,我们的祖先制作出了种类繁多的风筝、竹晴蜒、孔明灯和木鸟模型。它们在飞机发明的过程中起了重要的作用。经过一代又一代人的努力。人类终于梦想成真了。 1903年,美国莱特兄弟(哥哥威尔伯,弟弟奥维尔)利用汽油发动机制造的“飞行者”号在美国基蒂霍克成功进行了历史上第一次机械动力飞行,12秒钟飞行了36米。此后在第一次世界大战中,飞机的性能得到迅速改善。1927年,美国飞行员林白曾驾驶“圣路易精神号(Spirit of Saint Louis)”成功飞越纽约和巴黎之间的大西洋,连续飞行5809公里,飞行时间为33小时50分钟。 但是,我国在航空同工业发达的国家相比,还有不少差距。开展航空模型小制作活动,可以使学生了解我国航空发展的历史和现状,激发学生从小立志献身于祖国的航空事业,为四化建设作出贡献。 航空模型的制作需要运用许多的科学知识,通过模型的制作,可以启发学生运用所学知识勇于实践,培养动手能力和创造能力。 初级橡筋动力模型飞机 初级橡筋动力模型飞机是一个比较典型的传统普及项目。通过制作、放飞初级橡筋动力模型飞机,可以对带有动力的自由飞项目有一个初步了解,为进一步学习制作复杂的模型飞机打下一个扎实的基础,是在初级模型滑翔机的基础上学习的延伸。下面让我们来做一架初级橡筋动力模型飞机. 第一节飞机的制作 一、材料工具: 一套初级橡筋动力模型飞机材料。砂纸板、壁纸刀、尖嘴钳、铅笔、尺子、透明胶带、双面胶带、模型快干胶(白乳胶、502胶水均可)。 二、制作过程: 1、制作机翼: 将吹塑纸按图示尺寸裁出左右机翼

DMAX模型导入到Unity3D的步骤

3DMAX模型导入到Unity3D的步骤 1、打开3DMAX,自定义-》单位设置,将系统单位和显示单位都设置为“厘米” 2、建立一个Polygon管状体,参数如下:内径20CM,外径30CM,高30CM 注:保证其坐标原点在0,0,0 3、选中模型右击鼠标转换为可编辑多边形。 多模型进行一些挤出操作。 4、开始导出模型。保持模型选中状态,点击左上角3DMAX图标菜单, 导出-》导出选定对象。导出格式为.FBX,名称必须为英文字母类, 跳出的选项框默认直接确定即可。 例如导出的名称为 5、接下来打开Unity3D,新建立一个项目。 因为是测试项目所以可不导入Unity提供的资源包 6、将之前在3DMAX里导出的模型复制到Unity项目所在文件夹中的Assets文件夹下。 Unity会自动刷新出资源并自动创建一个Materials材质文件夹。如下图示: 7、单击Tube资源,在旁边的Inspector视图中可以看到:Scale Factor的值 表示的比例

8、鼠标拖动Tube到场景中,保持选择状态,摁键盘“F”键,物体自动放大到场景最大 点。3DMAX模型导入到Unity3D的步骤完成。 9、在3DMAX里新建立一个圆柱,系统单位和显示单位仍为CM厘米,圆柱参数如下: 半径100cm,高100cm,模型中心在坐标原点,转换为可编辑多边形, 保存命名为。将复制到Unity项目的Assets文件夹下 10、拖动yuanzhu到主场景。接着在Unity里建立一个圆柱体 Unity里默认是直径1M,高1M的圆柱。我们之前在3DMAX里建立的圆柱半径100cm,导入到Unity后即直径是200cm了。 将Unity里建立的圆柱,Scale参数中的X和Z放大2倍,这个圆柱的半径才是100cm(直径200cm) 然后将从3DMAX里导入的圆柱与Unity里建立的圆柱比较:半径是一样大小的。 说明在3DMAX里建立对应到Unity的模型,系统单位和显示单位设置为“CM”最好。

基于OpenGL的飞机模型运动3D实时仿真显示

本科毕业论文 (科研训练、毕业设计) 题目:基于OpenGL的飞机模型运动 3D实时仿真显示 姓名:李培锋 学院:物理与机电工程学院 系:航空系 专业:航空机械 年级:2009级 学号:3######0 指导教师(校内):## 职称:教授 指导教师(校外):职称: 2013年 5 月15 日

摘要 基于OpenGL的飞机模型运动 3D实时仿真显示 [摘要] 近年来,随着计算机动画技术的高速发展,基于计算机动画技术的实时仿真技术在航天航空、机械设计、游戏开发、地理信息、气象模拟、虚拟现实等领域的应用越来越广泛。 本文以计算机图形学,图像处理技术为基础,运用OpenGL这一软件接口,以Visual C++6.0为集成开发环境,在Windows系统中建立飞机模型运动3D仿真应用程序。通过获取传感器采集的飞机模型的姿态数据,对绳牵引机器人控制的飞机模型在试验中的运动进行实时仿真显示。文中详细介绍了OpenGL构建模型和实现动画仿真显示的原理和过程,以及在编程过程中使用到的双缓冲,Win32多线程和3DS格式模型导入等关键技术。 [关键词] 实时仿真OpenGL三维运动3DS格式模型导入

ABSTRACT [ABSTRACT] In recent years, with the rapid development of the computer animation technology, real-time simulation technology, which is based on the computer animation technology, is being used in many fields such as aerospace, mechanical design, game development, geographic information, weather simulation, virtual reality and so on more and more wildly. This paper is mainly based on computer graphics and image processing technology, using a high performance graphics application programming interface (API): OpenGL and Visual C++ 6.0 as integrated development environment to build model airplane and the external frame in Windows system. The aircraft model entity data is acquired by sensor acquisition to achieve the purpose that simulates the three-dimensional motion attitude changes of the aircraft model controlled by traction rope robot in time. This paper introduces the principles and processes of OpenGL to build model and achieve animation , as well as the key technologies used in the programming process such as double buffering, Win32 multi-threading , 3DS format models import and so on. [Key Word] Real-time simulationOpenGLthree-dimensional motion3DS format models import

一款制作简单的纸飞机模型

款制作简单的纸飞机模型 手掷模型飞机是制作较简单的无动力模型飞机,它靠人用手向前上方掷出。在模型掷出后的一段时间里,模型在空气中较快移动产生了升力使模型向空中飞去。当遇到向上的气流时,它会飞得更远一些。 小制作准备 手掷模型飞机套材、快干胶、笔、锉、刀、铅丝 科技小制作过程

相关知识 ●纸飞机 纸飞机是一种用纸做成的玩具飞机。它可能是航空类折纸手工中的最常见形式,航空类折纸手工属于折纸手工的一个分支。 由于它是最容易掌握的一种折纸类型,所以深受初学者乃至高手的喜爱。最简单的纸飞机折叠方法只需要六步就可以完成。现在,“纸飞机”这个词也包括那些用纸板做成的飞机。 用纸制作玩具被认为起源于2000年前的中国,那时放风筝是一种流行的娱乐项目,虽然这些可以被看做是现代纸飞机起源的证据,但是没有人能提供准确的证据指出这项发明到底起源于哪里。随着时间的推移,纸飞机速度、浮力和外形的设计已经有了较大的改进。 已经有很多人宣称自己做出了世界上最好的纸飞机。模型DC—03(DC--03纸飞机模型)就是其中之一。Dc--03拥有巨大的滑翔翼,和一个可能在所有纸飞机里独一无二的尾翼。可惜的是没有一个国际性的纸飞机联盟或者协会对这是否是世界最好的飞机进行官方认定。 对于DC--03模型的尾翼,吉尼斯世界纪录保持者肯·布莱克布恩不同意在纸飞机的尾部加尾翼的做法。他在自己的网站解释纸飞机的空气动力学时提到尾翼是不必要的。他以实际的B--2幽灵飞翼轰炸机

为例,提到沿着机翼的配重使重心更向前,因此飞机也就更平稳。很多人认为轻的纸飞机比重的纸飞机飞得更远,但是肯·布莱克布恩认为这是不正确的。他打破20年前的纸飞机记录就是基于他的信念:最好的飞机拥有短的机翼和重心位于掷飞机的人掷出飞机的那个点上,同时长机翼和更轻的重量能让纸飞机更远的飞行。但是在掷出阶段不能给予更多的力量。 很多年来,许多人试图突破手掷飞机在空中的最长停留时间这一极限。肯·布莱克布恩保持这一吉尼斯世界纪录长达l3年时问(1983年一l996年)。1998年lo月8日他创造了室内纸飞机飞行记录.他的纸飞机在空中保持了27.6秒。吉尼斯官方和国际新闻网见证并报导了这项记录。肯·布莱克布恩在这次冲击记录的尝试中使用的纸飞机被归属到滑翔(无引擎飞机)类当中。美国著名的纸飞机设计者托尼·弗莱特1985年创下飞行距离世界纪录——l93英尺(58.82米)。到目前为止,依然没有人打破它。这个距离比莱特兄弟首次飞行的距离还要长。

航模基础知识及模型教练飞机结构详细讲解

一、什么叫航空模型 在国际航联制定的竞赛规则里明确规定“航空模型是一种重于空气的,有尺寸限制的,带有或不带有发动机的,不能载人的航空器,就叫航空模型。 其技术要求是: 最大飞行重量同燃料在内为五千克; 最大升力面积一百五十平方分米; 最大的翼载荷100克/平方分米; 活塞式发动机最大工作容积10亳升。 1、什么叫飞机模型 一般认为不能飞行的,以某种飞机的实际尺寸按一定比例制作的模型叫飞机模型。 2、什么叫模型飞机 一般称能在空中飞行的模型为模型飞机,叫航空模型。 二、模型飞机的组成 模型飞机一般和载人的飞机一样,主要由机翼、尾翼、机身、起落架和发动机五部分组成。 1、机翼———是模型飞机在飞行时产生升力的装置,并能保持模型飞机飞行时的横侧安定。 2、尾翼———包括水平尾翼和垂直尾翼两部分。水平尾翼可保持模型飞机飞行时的俯仰安定,垂直尾翼保持模型飞机飞行时的方向安定。水平尾翼上的升降舵能控制模型飞机的升降,垂直尾翼上的方向舵可控制模型飞机的飞行方向。 3、机身———将模型的各部分联结成一个整体的主干部分叫机身。同时机身内可以装载必要的控制机件,设备和燃料等。 4、起落架———供模型飞机起飞、着陆和停放的装置。前部一个起落架,后面两面三个起落架叫前三点式;前部两面三个起落架,后面一个起落架叫后三点式。 5、发动机———它是模型飞机产生飞行动力的装置。模型飞机常用的动装置有:橡筋束、活塞式发动机、喷气式发动机、电动机。 三、航空模型技术常用术语 1、翼展——机翼(尾翼)左右翼尖间的直线距离。(穿过机身部分也计算在内)。 2、机身全长——模型飞机最前端到最末端的直线距离。 3、重心——模型飞机各部分重力的合力作用点称为重心。 4、尾心臂——由重心到水平尾翼前缘四分之一弦长处的距离。 5、翼型——机翼或尾翼的横剖面形状。 6、前缘——翼型的最前端。 7、后缘——翼型的最后端。 8、翼弦——前后缘之间的连线。 9、展弦比——翼展和平均翼弦长度的比值。展弦比大说明机翼狭长。 练习飞行的要素和原则分析 玩模型飞机和玩模型大脚车完全是两种不同的运动,模友们千万别想当然,买来了就上天,否则就只能看着飞机的残骸落泪了。在开展模型飞机运动前,最需要有一套合理、简单的教程来指导你学会为什么这么飞和怎么样飞,让你更快更安全的把爱机送上蓝天。

手掷飞机模型的制作和试飞教学案例精品

手掷飞机模型的制作和试飞》案例 一、学情分析 学生喜欢飞机,但由于学生初中没有《通用技术》这样动手能力的课,更没有科学和技术作铺垫。多数学生的动手能力不强,他们只知道剪、拼、粘等简单组装。《手掷飞机模型的制作和试飞》是本课的主题。教学内容是让学生动手设计制作和试飞比赛自己的拼粘好的小飞机,在试飞比赛中,增强学生自信心和友谊第一,比赛第二的理念,也激发了学生的挑战欲。 在动手操作中去发现原有事物的不足、去改进它、发展学生的创新精和实践能力,当学生拿着自己的小飞机进行试飞尝试时,就有几个学生飞的还可以,多数学生不成功,这样需要学生在实践中去调试、添加、削减、不断总结,并加以改进,并让学生对比观察飞行好的,远的与飞行近的、不直的飞机的各部分有什么不同,找到自己的不足,然后加以修改调试,在进行比赛。总之,给每个学生发展的空间,找到自己的问题,敢于挑战,让他们自主参与,亲身体验并积极实践,是本课程的指导理念。 二、教学设计 教学目标 知识与能力: 1.初步了解手掷模型飞机的构造和飞行原理。 2、进一步会看流程图。 3、初步知道副翼、尾翼的作用。 过程与方法: 1、学习正确运用砂皮板打磨加工零部件的技能。 2、在制作手掷小模型飞机的过程中, 掌握副翼、方向舵、升降舵的调整方法。 3、初步掌握手掷直线小模型飞机比赛规则。 情感态度价值观: 培养学生做事认真踏实的态度,和对飞机的爱,发展学生的创新精神和动手实践能力。※教学重点: 飞机制作和调试。 ※教学难点: 机头制作和调试 ※教学准备: 模型飞机一架,手掷小模型飞机1 套, 胶, 美工刀,砂皮板,剪刀。 ※教学过程 (一)情景导入 师出示:手掷小模型飞机

基于ADAMS的玩具飞机的机构运动仿真..

基于ADAMS的玩具飞机的机构运动仿真 摘要:本文首先对目前市场上涉及到的机械玩具进行了一个简要的概括,然后选取一款玩具飞机的模型分析了它的运动规律,并进行测绘利用SolidWorks建立了其总体结构;对玩具飞机的关键部件—发条机构进行了简要介绍,在运动学分析的基础上,运用虚拟样机仿真软件Adams对玩具飞机进行了仿真。结果表明:玩具飞机的运动是稳定的,基本和实际运动状态一致。 关键词:玩具飞机;ADAMS;运动学分析 Dynamic simulation of toy aircraft based on ADAMS Abstract: Firstly,mechanical toys on the market at present involved in a brief summary,and then choose a toy airplane model to analyze the movement rules of it,and mapping of SolidWorks was utilized to establish the overall structure; the key part of the toy plane clockwork mechanism are introduced,on the basis of kinematics analysis last,the application of virtual prototype simulation software Adams simulation of the toy plane. The results show that: the toy plane movement is stable,consistent with the basic and the actual state of motion. Key words:toy aircraft;ADAMS;kinematics analysis 1 引言 中国是世界上最大的玩具制造国和出口国,全球70%的玩具是在我国境内制造的。在琳琅满目的玩具之中,靠发条驱动的纯机械玩具吸引着许多小孩子的眼球这类玩具用塑料做成,价格低廉,体积较小,节能环保,大多模拟某一种动物的动作这类机械玩具在设计方面采用了大量的机械机构,如连杆机构,齿轮机构,凸轮机构,不完全齿轮机构,槽轮机构等,很多玩具的设计思想十分巧妙"对这些商品玩具进行测绘、建模、装配并做仿真,这对玩具的研发和设计,都具有重要的参考价值[2]。 然而,对机械玩具进行仿真的相关研究在国内期刊上很少见到"中科院自动化研究所的张志刚等从仿生学的角度出发,按照一系列步骤,编制了机器鱼的设计与仿真软件,实现了由生物特征到机器鱼实现的过渡,方便了机器鱼的设计[1]。在对玩具市场进行一番调研后发现,一款玩具飞机设计非常巧妙,也很有代表性,这里主要以它为例来阐述玩具的运动机理和y运动学仿真中的一些关键技术。 2 玩具飞机的运动原理及仿真方案 玩具飞机的虚拟仿真研究过程中,零件之间存在着各种相对关系,为得到理想的结 果,首先需要对玩具进行拆卸,然后分析出其零件间的连接关系,测绘出其零件的尺寸, 完成装配,为仿真准备好模型数据。玩具飞机的整体图如下:

通用的能力模型字典

胜任力分级素质词典(通用素质部分) 第一部分词典介绍 该分级素质词典是世界范围内迄今为止经透彻研究后最好的胜任力素质词典。它集二十多年素质研究之精华,在世界范围内的上乘、杰出者身上得到过验证,其有效性经历过多种经验式素质模式的不断确认。各素质的级别经不断修改,变得越来越明晰、越来越可靠、越来越有效。其中,所有的素质都已通过最严格的研究测试和专业标准测试。每一核心素质都在许多企业组织的管理者评估过程中得到了可靠地鉴别表现证实。 收录在该词典里的通用核心素质,标准系列共有18个素质,通常被用来推导出一个人的素质模式:即每一行为事件访谈都会用这18个素质进行分析。而真正透彻研究的模式往往皆包括这18个为一组的素质(也许以18个素质的改进版为一组)

第二部分通用素质(按英文字母顺序排列) 1.成就导向(ACH): 希望工作杰出或超出优秀标准。其标准可以是某个人自己过去的业绩(力求改进之);或一种客观衡量标准(只论结果);或比其他人做得更好(即竞争性);或某人自己设定的挑战性目标;或任何人从未做过的事(改革性)。因此一种独特的成就也可定为ACH。(是否考虑要满足并超过既定目标?为达所期好处肯冒一定风险?) 这种人: 1)要把工作做好:努力把工作做好或做对。也许有对浪费或低效率的受搓感(即抱怨所浪费的时间、表示想做得更好),却没有带来具体任何改进。 2)自创杰出衡量标准:面对他人强加的杰出标准,采用自己具体衡量结果的方法。也许表现为专注于某些新的或更确切的方法以达到管理目标。(那种对结果或业绩优秀衡 量标准有自然兴趣者需具体分析)。 3)业绩有改善:对某系统或自己个人工作方法作出具体改变以改进业绩(即把某事做得更好、更快、更省、更有效;改善其质量、客户满意度、精神面貌、收益),而没有 预先设定任何具体目标。(业绩的改进应该是明显的且可测量的。即使结果尚不知道或改进率低于所期望的,仍要计分。) 4)为达到有难度的目标而努力:“有难度”即仅有百分之50的机会达到目标、有百分之50的可能失败。其努力肯定是超常的,却又不时不实际或不可能的。或者,以最初 某基线业绩表现对照投入努力后的更高业绩表现:即“在我接手时,工作效率为20%,现在提高到了85%。”(如果目标不太难也不知达到与否,可作为2级计算分析作为于传统标准相竞争的证据。如果计为4级,那么一个人同样的行为或事件便不宜计为3。) 5)有做成本-效益分析:在仔细计算过投入和产出的基础上做决定、定先后或选定目标:对潜在利润、投资盈利率或成本效益分析做详细明确考虑。家对商业结果做分析。(计 算分析时,这人应:1)具体提到过成本和2)效益和3)基于成本效益考虑的决定。 6)明知有风险仍一往无前:为提高效益调动最大资源和/或时间(明知不一定成功),(即改进业绩,达到一个有大难度的目标,等)。如计算分析时为6级,应注意计算 低级的ACH作为证据以充分抓住访谈者ACH的深度及广度。 2.演绎思维(AT): 喜把事物拆分成小块小块来理解,或用步步推进的方法对事物进行解剖。演义思维包括对问题、局势等系统地、组织结构地理解;进而对不同特性或方面进行系统比较;理性地制定出先后对策;确定时间秩序,因果关系或如果这样便会那样的关系。(这人是否理解因果关系链?)

怎样设计一架航模飞机

怎样设计一架航模飞机集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)

怎样设计一架航模飞机 按照现成的图纸制作一架模型飞机,不是一件太难的事。但是,如果根据您的需要自己设计制作一架飞机,恐怕就具有一定的挑战性了。当您要下手设计制作时,会遇到很多需要解决的问题。如:为什么要选用这个翼型、翼展和翼弦是怎么确定的、机身长度应该是多少、尾翼的面积需要多大、各部件的位置应该放在哪里等等。好在现在的由有关书籍较多,只要认真学习归纳,就能找到答案。 第一步,整体设计。 1。确定翼型。我们要根据模型飞机的不同用途去选择不同的翼型。翼型很多,好几千种。但归纳起来,飞机的翼型大致分为三种。一是平凸翼型,这种翼型的特点是升力大,尤其是低速飞行时。不过,阻力中庸,且不太适合倒飞。这种翼型主要应用在练习机和像真机上。二是双凸翼型。其中双凸对称翼型的特点是在有一定迎角下产生升力,零度迎角时不产生升力。飞机在正飞和到飞时的机头俯仰变化不大。这种翼型主要应用在特技机上。三是XXXXX翼型。这种翼型升力较大,尤其是在慢速时升力表现较其它翼型优异,但阻力也较大。这种翼型主要应用在滑翔机上和特种飞机上。另外,机翼的厚度也是有讲究的。同一个翼型,厚度大的低速升力大,不过阻力也较大。厚度小的低速升力小,不过阻力也较小。因为我做的是练习机,那就选用经典的平凸翼型克拉克Y了。因伟哥有一定飞行基础,速度可以快一些,所以我选的厚度是12%的翼型。 实际上就选用翼型而言,它是一个比较复杂、技术含量较高的问题。其基本确定思路是:根据飞行高度、翼弦、飞行速度等参数来确定该飞机所需的雷诺数,再根据相应的雷诺数和您的机型找出合适的翼型。还有,很多真飞机的翼型并不能直接用于模型飞机,等等。这个问题在这就不详述了。 机翼常见的形状又分为:矩形翼、后掠翼、三角翼和纺锤翼(椭圆翼)。 矩形翼结构简单,制作容易,但是重量较大,适合于低速飞行。后掠翼从翼根到翼梢有渐变,结构复杂,制作也有一定难度。后掠的另一个作用是能在机翼安装角为0度时,产生上反1-2度的上反效果。三角翼制作复杂,翼尖的攻角不好做准确,翼根受力大,根部要做特别加强。这种机翼主要用在高速飞机上。纺锤翼的受力比较均匀,制作难度也不

prescan 3D模型导入步骤

3D模型导入 一.把3D导入PreScan中有步骤: 1.从sketchup软件中导出目标模型文件 1)打开sketchup,右击“文件”——“3D模型库” ——“获取模型”,然后再弹出的模型库页面中 搜索目标模型; 2)选择目标文件并点击下载(保存为.dae格式,只有这个文件prescan才能识别)。 2.把下载下来的目标模型文件添加到prescan用户元素 库中 1)右击prescan上的“Tools”——“User Library Elments Wizard”; 2)弹出的菜单最上面是选择存放路径,下面的选项按钮点击“classic ULE”,然后点击“Add folder” 并对新生成的文件命名; 3)点击新生成的文件来激活对话框右边的“New Element”按钮并点击; 4)在弹出的对话框的第一页给文件命名以及选择元素类型并点击“next”; 5)在弹出的对话框的第二页给添加的心元素命名以及必要的描述并点击“next”; 6)在弹出的对话框的第三页选择第一步骤下载下

来的目标模型文件并点击“next”; 7)第四页是对目标模型进行尺寸设置,一般从sketchup中下载文件都已设置好,可以直接点 击“next”; 8)下面只要顺着点击“next”即可,最后点击“User Library Elments Wizard”对话框上的“refersh and close”就能在prescan的UL Elements中直接拖 拉该模型放置场景中。 注意:1)在3D模型库中下载的文件需有 textures.txt文件,不然导入的在3D viewer中看 到的模型将是一片漆黑。

iAircraft飞机仿真模型软件包..

iAircraft飞机仿真模型 iAircraft是一个飞机仿真模型包,该模型被设计针对用于飞机测试实验室的如“铁鸟”仿真机以及基于仿真的飞控、航电集成测试实验室。iAircraft可以通过调整参数来代表一大类的固定翼飞机,如直升机、无人机。iAircraft由一系列Simulink模型组成,可以在Simulink 仿真软件中运行,也可以在ADI的实时仿真计算机系统(rtX, rtX-V, RTS)中运行。iAircraft 是按照这样的架构开发的,即允许在纯仿真模式下进行飞机仿真,同时可以容易的连接真实的飞机LRU来进行飞机硬件在回路测试,集成以及飞控验证活动。下图展示了iAircraft Simulink模型的顶层仿真框图。

1. iAircraft 6自由度运动方程模型 飞机6自由度运动方程模型参考旋转的球形大地,是基于Robert M. Howe 在其名为“Airframe Equations of Motion and Transfer Operators”的论文中所作的工作。飞机6自由度运动方程模型具有以下特点: ●飞机被当作一个刚体进行建模; ●采用运动与动力学方程表示飞机运动; ●包含飞机质量特性,具备飞机的质量、惯性力矩等参数。 飞机6自由度运动方程模型 2. iAircraft气动力学模型 iAircraft气动力学模型包含风速、动力装置的力和力矩、气动力和力矩、地球轴向力、平移方程、旋转方程和四元数方程。这个气动力学模型的逼真度及细节的丰富程度足够支持进行飞机飞控系统的设计以及需要高逼真度的工程飞行仿真机,例如铁鸟仿真机和基于仿真的集成测试实验室。飞机气动力学具有以下特点: ●根据飞行条件以及控制面的偏转, ●空气动力学模型计算气动力和力矩; ●模型采用查找表方式获取飞机的气动系数。

Quest3D模型的导入教程

一、前期准备工作(本教程以3DSMax为建模工具作为使用参考) 1.使用3DSMax创作一个最简单的茶壶模式: 2.在File(文件)菜单栏中选择运行Export(输出)命令,然后在Select File to Export(选择输出文件)对话框中选择Quest3D公司自己开发支持的X文件格式,选定后点击"完成"按钮: 3.在"场景统计和文件选项"对话框中选择并完成相应的设置: 4.Quest3D公司为3DSMax开发的X文件输出插件会自动将模型保存为X文件,本实例中将文件名设置保存为teaport.X.

二、在Quest3D中导入模型: 1.双击快捷图标运行Quest3D程序,在File(文件)菜单栏中选择运行Import导入命令: 2.在Select File to Import(选择输入文件)对话框中选择teaport.x文件: 3.Quest3D在点击导入文件对话框中的"打开"按钮后会弹出X Object Importer Options(X对象导入选项)对话框,进行相应的载入类型和选项设置.完成设置后点击"OK"确认按钮:

4、在Load Channel Group(载入通道组合)警告提示框,用以确定文件名和文件类型,: 5、当Channel通道窗口中出现DX8 3D Object相应的模型结构关系图后,就完成了模型的导入任务: 三、在动画窗口正常显示3D模型 出现问题:当我们完成第二步骤的工作以后,却发现在动画窗口中看不到相应的模型,这就意味着在Run预览运行效果和打包输出后一无所见! 这可是一个及其严重的问题哟,怎么办呢,解决方法如下: 1.在template模板窗口中,拖动Quick Start中的ObjectInspectiong的链接到Channel通道窗口:

技术体验活动案例飞机模型的设计与制作

飞机模型的设计与制作 设计项目: 设计一个简易的飞机模型 设计起源: 飞机模型的设计与制作是在《模型的设计和制作》这个章节让学生动手实践的一个设计与制作活动,学生对于飞机并不陌生,对于飞机的设计和制作也热情高涨。通过这个活动可以让学生能够根据设计方案和已有的条件选择加工的工艺,并能正确、安全的操作,根据设计方案制作一个简单产品的模型和原型,制作成功后,能对产品的外观进行润色,同样,实际教学过程中,我们教师也可以根据需要把此活动放在结构的稳定性与强度这个部分来开展活动,飞机模型在设计和制作的过程中要考虑飞机结构的稳定和结构的强度,在选材,在加工的过程中都应该注意,飞机模型也是一个整体系统,我们可以把它作为教具,在教材的系统与设计这个部分使用,飞机系统是由哪些子系统的组成的,很好的阐述系统与子系统的概念、以及之间的相互关系等。 飞机模型的设计要求: 1.具有一定的稳定性和强度,飞机不容易变形,支架不容易松动;各个部件之间的连接牢 固 2.能够在地面上滑动 3.外形美观,比例恰当,构思新颖,制作简便 设计准备: 1.合适的制作材料和连接材料,制作材料如长木头,三合板,废旧汽车轮子,薄铝片,圆 珠笔等,连接材料如粗铁丝,小铁钉,乳胶,细铁丝等; 2.必备工具,如卷尺,剪刀,老虎钳,锉,锤,木工锯,刀,三角尺,木工笔等 根据设计要求制定合理的设计方案 设计分析: 飞机模型的结构设计主要分成三个部分,即机身,机翼和尾翼 对于机身部分主要是有滑动轮和机舱主体部分构成。滑动轮在飞机系统中起滑行滚动,同时,也是飞机的支撑系统,支撑整个机体,对于飞机的稳定平衡起了重要的作用。滑动系统在设计的过程采用废旧的玩具汽车车轮组成,前面两个轮,后面一个轮,构成三角形,能够稳定的支撑整个机体部分,滑动轮用粗铁丝和薄铝片,前轮部分用薄铝片将铁丝固定在木质机舱,粗铁丝弯折后和机轮连接,结构稳定。后轮采用薄铝片,做成可以放滑动轮胎的滚槽,将薄铝片与木质机舱连接,再将轮胎和滚槽连接,滑动系统部分制作完成。机身的机舱部分是整个飞机的一个主体部分,是机身,机翼和尾翼之间的一个连接的系统。将长条的木块,加工成飞机机舱的雏形。尾翼机身采用插接的方式,机翼部分,是用钉子固定在机身上,为了使机身形象,美观,设计制作过程中,机头部分处理是应该注意比例恰当,机身的窗外采用圆珠笔绘制出来,飞机尾巴的处理合理,同样比例要做到协调。

相关文档
最新文档