基于VC++的三维视景中虚拟实体的路径设置毕业论文.doc

上传人:来看看 文档编号:3921438 上传时间:2019-10-10 格式:DOC 页数:29 大小:1.15MB
返回 下载 相关 举报
基于VC++的三维视景中虚拟实体的路径设置毕业论文.doc_第1页
第1页 / 共29页
基于VC++的三维视景中虚拟实体的路径设置毕业论文.doc_第2页
第2页 / 共29页
基于VC++的三维视景中虚拟实体的路径设置毕业论文.doc_第3页
第3页 / 共29页
基于VC++的三维视景中虚拟实体的路径设置毕业论文.doc_第4页
第4页 / 共29页
基于VC++的三维视景中虚拟实体的路径设置毕业论文.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《基于VC++的三维视景中虚拟实体的路径设置毕业论文.doc》由会员分享,可在线阅读,更多相关《基于VC++的三维视景中虚拟实体的路径设置毕业论文.doc(29页珍藏版)》请在三一文库上搜索。

1、 内容摘要 随着虚拟现实技术的应用越来越广泛,虚拟环境系统得到很快 发展。在虚拟仿真环境中经常要事先设置虚拟对象的运动路径,而 仿真软件 Vega Prime 提供的 Path Tool 工具能很好地解决了这一问 题。 本文是通过采用 Vega Prime 和 VC+作为软件平台来实现运动 路径的变化显示,主要讨论了基于仿真软件 Vega Prime 的路径和 导航器基本原理,详细阐述了如何应用这两个模块在 Lynx Prime 中 进行路径的设定,然后介绍了路径和导航器在 VC+编程中的实现, 最后基于实践应用探讨了仿真环境中虚拟实体运动路径的一些解决 方法。 索引关键词:索引关键词:路径

2、导航 控制点 张力 - 2 - 目录目录 第一章 绪论.- 2 - 1.1 研究背景.- 2 - 1.2 研究的目的和意义.- 3 - 2.1 VEGA PRIME的基本情况 - 5 - 2.2 VP 和 LP 的简介.- 5 - 第三章 虚拟实体的运动路径设定的实现.- 11 - 3.1 PATH和 NAVIGATOR模块的基本原理.- 11 - 3.2 在 LYNX PRIME中创建路径和导航对象.- 11 - 3.3 PATH和 NAVIGATOR在编程中的实现.- 18 - 3.4 实现过程存在一些问题的解决方法.- 22 - 第四章 结论.- 24 - 后记.- 25 - 参考文献.

3、- 27 - - 3 - 第一章第一章 绪论绪论 1.1 研究背景 随着计算机和信息技术等高新技术的飞速发展,计算机仿真技 术也正在全球范围内得到迅速的推动,并在航空、航天、地面战场 模拟以及其它复杂任务中发挥着越来越重要的作用, 虚拟仿真环境 开发成为当前研究的亮点,而三维视景中虚拟实体的运动体现得越 来越重要了。 在虚拟仿真环境开发过程中,经常会遇到虚拟对象的运动路径设 置。一般情况是事先确定运动路线,记录路线上的若干控制点的位 置,点与点的连线采取数据平滑处理,运动对象按照设定的路线运动。 Vega Prime是SGI Performet基础上发展起来的环境仿真软件环境,它 把常用的软件

4、工具和高级仿真功能结合起来,可使用户以简单的操 作、迅速的创建、编辑和运行复杂的仿真程序。该软件具有良好的 图形界面Lynx,完整的C语言应用程序接口API,丰富的适用库函数以 及大量的功能模块,其中路径( Pathing) 和导航(Navigator) 模块是 Vega Prime提供的两个路径控制模块。应用这两个模块及其接口函 数,用户可以为预先确定的路径创建关键点,然后通过虚拟场景的运 动对象用Navigator穿行设定的Path来自动对运动进行控制。 1.2 研究的目的和意义 本文中我们要研究的是以面向对象的思想对运动平台的三维实 体运动路径的制作进行分析,提炼出了创建点集、设定路线、

5、实体 建模以及规定策略、导航等步骤;应用 Vega Prime 软件设置一系 列动态的、有规律的运动路径,该软件可以根据用户需求进行高级 功能仿真和特殊仿真需求的实现;还应用 VC 环境灵活的处理较复 杂的路径设定 设计此课题的目的,是在仿真过程提供一个软件平台的基础之 上,不断掌握整个软件的功能和分析该软件不完善之处。通过利用 Vega Prime 软件完成相关任务,帮助规划人员确定最佳运动路径设 - 4 - 定的方案,解决虚拟对象在运动路径中的很多问题。Vega Prime 软 件中的 Path Tool 是路径和导航类的图形设置界面,并直接显示所要 编辑的三维虚拟场景。使用这个工具,路径

6、控制点将可以在三维场 景中移动,在地形中插入、删除; 导航器可以在 Path Tool 实时环境 中创建、编辑导航标记,并预览控制点的按照导航标记的运动过程。 Vega Prime 的其它模块都支持 Vega Prime 导航器为它们特殊的导 航功能,并可以设置自己的路径导航。如果用 Path Tool 创建了一条 路径和一个导航器,路径和导航数据就作为路径文件和导航标记文 件存在磁盘上,Vega Prime 其它基本模块在配置中读入这些文件无 需编写任何代码。路径和导航也可以完全通过 API 接口函数编程创 建。 在上面所述的课题背景下,研究基于三维视景中虚拟实体 的运动路径设定具有很大的实

7、际意义和可操作并成功的应用到了理 学院漫游、野外综合演练仿真系统的虚拟仿真环境中,效果良好。 - 5 - 第二章第二章 Vega Prime 概述概述 2.1 Vega Prime 的基本情况 Vega Prime是MultiGen-Paradigm公司开发的一个对象的著名虚 拟现实平台,它可以方便地完成场景的构建和三维模型的绘制,并 支持许多的特效。Vega Prime作为一种硬件虚拟现实的软件接口, 并且作为一个独立的工作平台,独立于硬件设备、窗口系统,用它 编写的软件可以在Windows NT以及更高级的操作系统间移植。它 是模拟虚拟现实和实时的应用软件,是开发实时视觉和听觉仿真、 虚拟

8、现实和通用的视频应用的业界领先的软件环境。它把先进的仿 真功能和易用的工具结合到一起,创建了一种使用最简单,但最具 有创造力的体系结构,来创建、编辑和运用高性能的实时应用。结 合先进的模拟技术通过简单可利用的应用工具,它提供了一种能够 快速准确的建立复杂的应用模型的方法,并且能够提供复杂的虚拟 模拟原型。 2.2 VP 和 LP 的简介 Vega prime(以后简称VP)是用于虚拟现实,实时视景仿真的 一个实时三维驱动工具包。在这个工具包中,包含了一个重要的编 辑器Lynx prime(以后简称LP),它为VP提供一个人机交互界面 。 Vega Prime原意是用来连接LynX Prime的

9、。虽然Vega Prime 包 含了所有的建立一个应用程序所必需的Api,但是LynX Prime 简化 了开发过程,不用写任何代码就可以配置一个应用程序。LynX Prime 是一个可以增加类的接口,定义接口参数的编辑器。这些参 数可以是观测点的位置,场景中的对象位置、运动,灯光,环境效 果,目标硬件平台等等,都可以在一个acf文件存为一个接口框架。 一个acf文件包含一个Vega Prime 应用程序初始化必须的和运行时 要用到的信息,可以在活动预览窗口预览在acf 中的定义活动,预 览窗口可以交互式的定义acf文件。活动预览窗口会持续不断的检 查acf文件的变化,一旦有改变发生,它就会用

10、新的数据更新Vega - 6 - Prime 的仿真窗口。本文也可以用C+来开发可视化的应用程序。 可以在应用程序里根据特定环境修改接口值,例如当某个物体碰到 了一个目标物时可以指定相应的位置变化。Vega Prime 应用程序 也可以在一个图形通道里面加载acf文件。当应用程序编译完成后 就可以执行了。关于LynX Prime 和在Vega Prime 中工作的详细信 息可以查看Vega Prime Programmers Guide。 2.2.1 VP 系统结构 图2-1 VP系统结构 2.2.2 VP 的应用组成 (1)应用程序)应用程序 应用程序控制场景,模型在场景中的移动,和场景中其

11、它大量的 动态模型。实时应用程序包括汽车驾驶,动态模型的飞行,碰撞检 测,和特殊效果,如爆炸。 - 7 - 在VP外的开发平台创建应用程序,文件是以.ccp格式存档。并包 含了C+可以调用的VP库的功能和分类。在编辑完成后就形成了一 个可执行的实时3D应用文件。 (2)应用配置文件)应用配置文件 应用配置文件包含了VP应用在初始化和运行时所需的一切信息。 通过编译不同的ACF文件,一个VP能够生成不同种类的应用。 ACF文件为扩展Mark-up语言(XML)格式。 首先可以使用VP编辑器LP来开发一个ACF,然后可以使用VP API动态地改变应用中模型运动。对于实时应用来说,ACF不是必 要的

12、,但它可以将改动信息进行译码,记录在.cpp程序中,这样可 以节省大量的时间。 (3)模型包)模型包 以前,通常是通过计算机辅助设计系统或几何学来创建单个模型, 但这些方法在实时应用很难进行编码。现在,可以使用MulitGen Creator和ModelBuilder 3D,以OpenFlight的格式来创建实时3D应用 中所有独立的模型。可以使用Creator Terrain Studio(CTS) ,以 MetaFlight格式来生成大面积地形文件。并可以使用这两种格式在 VP中增加模型文件。 2.2.3 LynX Prime 用户界面 LynX Prime 用户界面包含四个不同的部分:树

13、视图(Instance Tree View)、GUI 视图(GUI View)、API 视图(API View)、 工具栏(ToolBar)。对于已选择的类来说所有视图显示的信息除 了一小部分格式不同外大部分相同。还可以在多于 1 个视图中定 义 acf. - 8 - 图 2-2 用户界面 (1)GUI 视图(视图(GUI View) 在用户界面中显示,可以很容易的使用,GUI视图显示acf的接 口和参数。可以在下拉列表中选择参数,在文本域里输入值。当打 开LynX Prime,第一个GUI 视图被命名为myKernel,它是Vega Prime中的Kernal类的一个实例。Kernel是应用

14、程序的起点,它控制 所有的实时操作。 (2)实例树视图()实例树视图(Instance Tree View) 实例树视图显示了当前加载的acf文件和它的所有接口。实例树 视图显示了由父实例和子实例组成的实例等级图中的联结关系。能 看到在程序中实例间的相互关系。如果在树中选择了一个实例,所 有的视图都会同时显示它。如果在文件中的一个实例的引用指向了 不止一个地方,这个实例的名字就会跟在一个蓝色的箭头,向下的 - 9 - 箭头表示文件第一次被使用。向上的箭头 表示有另外的引用 指向实例。 图2-3 实例树视图 在上面的例子中,myPipeline 被展开,显示了myChannel连接 myWind

15、ow ,这是myChannel的第一个引用,所以前面有个下 箭头。myChannel 也被myObserver引用,在这个例子中它前面有个 上箭头。当选择了一个实例,实例的属性和当前值会同时显示 在GUI视图和API视图中。 介绍实例树视图几个主要部分: 1.通道(Pipeline)模块 通道指的是 Vega Prime 应用程序运行平台与图形生成硬件设 备相连的显示终端屏幕,它决定了仿真应用提供给用户的可视范围 的大小,表现为图形硬件所支持的最大分辨率。注意:图形硬件所 支持的分辨率跟终端显示设备所使用的分辨率是不同的两个概念, 大型的图像工作站都支持多个显示设备的同时输出。 2.窗口(Wi

16、ndows)模块 窗口在 Vega Prime 中代表的是一条渲染通道,渲染通道指的 是可视化仿真系统实现中的整个渲染流程,所以要执行 Vega Prime 应用程序必须先定义一个窗口。用户可以指定窗口在屏幕上的位置, - 10 - 由于屏幕支持图形硬件的最大分辨率,所以窗口的大小实际上可以 超出当前显示终端的分辨率设置,其效果是一部分窗口在显示器上 看不见。 3.频道(Channel)模块 频道代表了用户用以观察场景的特定视角,表现为窗口中的一 个矩形区域,实际上所有实时渲染都是通过频道进行的,所以场景 要显示出来至少还要定义一个频道。一个窗口中可以包含任意多条 频道,它们在窗口中的位置甚至

17、还可以重叠。 4.视点(Observer)模块 视点是 Vega Prime 中的一个非常重要的概念,也是核心概念 之一。一个视点类似于一台摄像机或一台设置在数据库中的传感器, 视点控制管理并且被锁定在一个场景运动体上,也可以同一个运动 模型进行放置。观察一个场景必须要由一个视点。视点使用通道决 定场景的观察体,就像照相机使用镜头观测区域一样,每个视点可 以同时观察多个通道。最后应用程序显用户最终是通过观察者的视 角,从本质上讲是通过通道来观察场景的。 5.场景(Scene)模块 场景就是所有载入的模型对象的集合。 (3)API 视图(视图(API View) API区显示选定的模型的所有可能

18、的变量。在这里可以定义模 型的值,就象在用户操作区一样。但是在API中,可以直接给变量 赋值。当更改应用中的参数时,可参考API区中要使用的变量的值。 (4)工具条)工具条(ToolBar) LynX Prime工具条包括所有操作模型及属性的快捷按钮。这些 功能同样可以在LynX Prime的目录中找到。 - 11 - 第三章 虚拟实体的运动路径设定的实现 3.1 Path 和 Navigator 模块的基本原理 在Vega Prime模块库中的路径( Path) 和导航器(Navigator)在虚拟 场景中提供了控制运动对象轨迹的功能。路径就是一组在场景中设 置了的控制点;导航器是路径中与这

19、些控制点相关的一组数据信息 集合。一个特定的导航器可以解释出路径的数据结构,并可以通过 路径控制导航器穿过其控制点的运动方式。路径和导航模块提供了 vpPath 类和vpNavigator类。vpPath类通过路径对象中的位置作为厄 密(Hermite) 样条段的控制点。这样, vpNavigator类就可以通过设置 切向量、紧密度参数、速度、持续时间等与路径类相结合。利用这 些信息,导航器通过当前曲线段平滑进入下一曲线段。Vega Prime的 Lynx Prime自带路径设置工具Path Tool,可以为用户在未编写路径导 航代码时设置控制点和导航参数提供了方便。Path Tool是路径和

20、导 航类的图形设置界面,并直接显示所要编辑的三维虚拟场景。使用 这个工具,路径控制点将可以在三维场景中移动,在地形中插入、删 除; 导航器可以在Path Tool实时环境中创建、编辑导航标记,并预览 控制点的按照导航标记的运动过程。Vega Prime的其它模块都支持 Vega Prime导航器为它们特殊的导航功能,并可以设置自己的路径导 航。如果用Path Tool创建了一条路径和一个导航器,路径和导航数 据就作为路径文件和导航标记文件存在磁盘上,Vega Prime其它基本 模块在配置中读入这些文件无需编写任何代码。路径和导航也可以 完全通过API接口函数编程创建。vpPath类提供函数设

21、置路径控制 点, vpNavigator类提供函数设置导航标记。通过编程,可以根据需要 动态的改变路径和导航参数,使得路径控制更加灵活。 3.2 在 Lynx Prime 中创建路径和导航对象 Lynx Prime是Vega Prime模块设定的图形界面, 用来定义和预览 Vega Prime各种模块应用程序。用户只需用鼠标的左、中、右键点 - 12 - 击即可创建和驱动图形中的模块对象。在不涉及源代码的前提下便 捷地改变应用程序的性能,如显示通道、多CPU资源分配、视点、 观察者、特殊效果等。尽管Vega Prime包含了建立一个应用程序所 必须的所有API函数,但是Lynx prime可以

22、简化这些过程,且允许使用 者在图形界面下定义和预览ADF文件而不用写代码。在应用程序中, Vega Prime API函数与Lynx Prime相结合使用是非常有用的,能够减 少很多复杂的工作。路径和导航模块属于Lynx Prime的两个基本模 块。Vega Prime可以根据要求和特定的仿真应用,很容易的直接加 以扩展来满足特殊仿真的需要。 3.2.1 创建路径对象 首先,如图3-4,打开Lynx Prime图形界面中打开Pathing, 在Pathing 标题下创建路径对象名称,如MPI_WayPointSet_1。然后在File Name 标题下建立路径文件,为了便于记忆,路径文件一般和

23、路径对象名一 致。如果你想在对话关闭就开始增加路径点的话就选择自动增加模 式。复杂的运动场景中可以创建多个路径对象。 图3-4 创建路径 如图3-5,创建完路径后, 打开Navigators界面, 在Navigators标题 下创建导航器对象名称,如MPI_Navigator_16。然后在File Name标 题下建立导航器路径文件。同样,导航器文件一般和导航器对象名 - 13 - 一致.在Select Path Way标题下选择将要导航器经过的路径对象。根 据运动场景的需要,导航器对象可以定义多个,而且每一个导航器对 象都有相对应的选项,只有用户选中时导航才会有效。 图3-5 创建导航 3.

24、2.2 路径和导航的编辑 Path Tool 工具界面是编辑路径对象和导航对象的专用工具,它包 括菜单栏、通用的工具栏、一个视窗。在路径工具的 Graphic Window 导航是很容易的默认状态下,它被调成创建者移动模式 完全和 Creator Graphic 视图导航相同。比如,按下 Ctrl 键并使用 鼠标右键进行相位控制;使用 Shift+鼠标右键进行缩放控制。而鼠 标右键会自动围绕一个点旋转视图。Path Tool 工具栏包括六大部 分:Display 、scenes 、Pathing、Motion、Data、Environment。Display 用来控制和设置 显示对 Path

25、Tool 程序有效的属性, 有 Texture、Fog、Lighting、Normals、wireframe 等的开关控制还有浏 览位置的设置和放大/缩小场景、裁剪场景等操作; Pathing 主要对路 - 14 - 径控制操作,包括添加/移除/插入路径控制点等操作; Data 用于输入、 查看、编辑路径和导航数据;Environment 包括 Path Tool 应用软件 的环境控件用于环境的变化和显示经度、纬度的值。Vega Prime 可 以分别定义多个路径对象和导航器对象,视图当前选择的路径对象, 其第一个控制点为绿色最后一个显示的点则是紫红色的,当前选择 的控制点为红色,没有被选择的

26、路径上的控制点为黄色。选择一个 导航器对象后,路径上的控制点就会根据导航器选项按顺序连接。 如果要改变选择的控制点的位置可以在视图用鼠标左键选点,也可 以在左边控制节点对话框中输入坐标值精确定位。 3.2.3 Path Tool 控制点操作 Path Tool左边的工具栏主要是针对控制点和场景进行操作。 (1) Add (加入新点) 在一个选定的路径对象中加入一个新控制点,有两种方法:第一种 方法是在创建路径对象的时候选中Auto-Add Mode按钮, 用按下Ctrl 键并使用鼠标左键定位;也可以在右边控制节点对话框中输入坐标 值精确定位。第二种方法是直接用工具栏“+”键添加控制节点并 且按

27、下Ctrl键并使用鼠标左键定位或者在坐标系中直接输入值就能 完成控制节点的添加。 (2) Move (移动) 该选项是用来移动要修改的控制点。可以直接用鼠标进行拖动 或者在坐标系中直接输入值。 (3) Insert (插入) 该选项类似于加入新的控制点。不同的是所插入的控制点在当 前选择的控制点之后,后面的控制点标号自动增加。 (4) Delete (删除) 控制点的删除。只要选中该选项,然后在正视图中找到需要删除 的点,击鼠标左键删除,后面控制点的标号随之减小。删除后的点无 法恢复。 - 15 - 图 3-6 控制点操作的结果 3.2.4 导航选项的操作 在创建导航对象的基础上选择显示高级的

28、用户界面创建一个和 导航名相关联的路径路线对象。在导航选项栏可以选择不同段的导 航对象进行导航,这样的目的为了能更直观的仿真效果和发现问题。 还可以选择不同的观察方式和着眼点。导航的设置主要包括循环 (Loop) 、关闭循环(Close Loop) 、暂停(Pause) 、重新开始 (Reset) 、反向(Reverse) ,延迟(Start Delay)时间、运动状态和 速度等。 - 16 - 图3-7 导航的设置 3.2.5 路径与导航选项的几个重要设置 Path Tool的左侧工具栏中设定Path和Navigator几个重要参数设 置,对控制点的属性的设置至关重要。 (1)Loop Ac

29、tion (循环动作) 当运动对象到达最后一个控制点后,循环动作指示样条曲线导 航器该做什么动作; - 17 - 1. Stop:运动对象到达最后一个控制点后停止运动; 2. Loop :运动对象到达后从最后一个控制点运动到第一个控制 点再继续运动; 3. Restart :运动对象到达后从第一个控制点重新开始运动。 (2 ) Start at Control Point (运动对象从某控制点开始运动) 导航器在穿越控制点的运动时不一定从第一点开始,可以从任 何一个控制点开始它的旅程。 (3 ) Delay Start (延迟开始) 在穿越控制点开始前所需要等待的时间,默认值为0.000000

30、。 (4 ) Render Path (渲染路径) 渲染路径根据所设的控制点描绘出近似的运动曲线。选中这一 选项就显示一条黄色(颜色可以自己选择)的路径,这就是运动对 象所要运动的轨迹。 (5 ) Segment type (段类型) 段就是两控制点之间的部分,如果段是linear (线性) ,就表示两控 制点之间是以一条直线连接。Hermite (厄密段) 用样条曲线来连接 两控制点,并且通过张力向量计算曲线的曲率。 (6 ) Velocity Modes(速度模式) 有三种设定速度的方法: 1.Duration (持续时间) 表示导航器穿 过一段曲线所花费的时间恒定,但是控制点之间的相距越

31、近,速度越 快,相距越远,速度越慢,因此整个曲线的运动速度不恒定。2. Constant Velocity(恒定速度) 表示导航器以匀速运动穿过曲线每一 个控制点。3.Aceeleration(加速度)表示导航器可以以常数、指数增 长、线性变化等一些变化来运动。 我们还可以在不同段设置不同的速度这对地形起伏变化有很大 帮助使仿真效果更逼真,还可以容易发现不同段的问题。 (7 )改变路径点的方法 在有路径点后,如果想要改变一些路径点的。Path Tool 提供 了几种方法。1.可以在当前的光标位置上改变一个现有的路径点的 坐标系。2.点击Move the Way Point Up键或者Move

32、the Way Point Down键直到放在新的位置可以改变,这个方法只能在被选择的路 - 18 - 径点被横穿时才能改变其顺序。3.用手工操作只能粗略定位坐标。 (8 )坐标轴 在Path Tool平面地面的坐标系统中,用X,Y,Z来表示观察者 的位置。观察者的方向是用坐标系统中的朝向,斜度和转角度的 HPR值来表示。坐标轴是显示在默认坐标和定向系统里,+Z是向上, +Y是向北,而+X是向东。而朝向是围绕Z正方向旋转,即以一个 计数器顺时针方向旋转。这样北是0,西是90,南是180,而东是 270这些对定点有很大帮助。 (9)Zoom in /Zoom out (放大、缩小) 直接对场景整

33、体放大或缩小,也可以对场景中某一区域比较精 确地放大或缩小。当需要对特定区域操作时,按鼠标右键+Shift拖动 进行缩放控制,出现蓝色边框,这时的放大或缩小就只针对所选的蓝 色边框内有效。 3.3 Path 和 Navigator 在编程中的实现 在VC+环境下编程,用户可以把Vega Prime提供的zsVegaView 类作为调用和控制Vega Prime的编程接口,该类封装了调用Vega的头 文件vp1h,用户可以根据需要扩充该类。如果路径和导航已经在 Lynx Prime中定义,并且Object对象已经连接了导航器,则只要在编程 中调用该Object到场景中,它就会按照所定义的路径和导

34、航特性在场 景中运动。但是用这种方法实现的运动在场景中缺乏路径和导航随 时间变化的灵活性。Vega Prime提供了vpPath类和vpPathNavigator 类的API函数库,在编程中几乎完全可以实现Lynx Prime图形界面中 路径和导航模块的所有功能,而且Vega Prime的路径编程相对于Lynx Prime具有很大的灵活性,更加方便地通过程序进行修改或调整控制 点参数。 Vega Prime提供了路径文件的读/写、路径属性的设置、控制点 创建和设置等函数。 3.3.1 基于 VP API 的应用程序编写流程 在VC+中,创建一个项目是会自动产生一个窗口,因此我们 - 19 -

35、不需要定义窗口,而只需在所需的窗口中进行必要的程序设计即可。 在实际程序设计之前,必须建立一个基于视图类的私有类,贯穿于 整个程序设计中。头文件根据需要可增加#include 、#include 、#include 等头文件。在定义自己 的应用类时,应添加所有所需函数。 #include int main(int argc,char *argv1) /初始化 VP vp:initialize(argc,argv); /创建一个 vpApp 类 vpApp *app=new vpApp; /装载 ACF 文件 app-define(argv1); /配置应用 app-configure() ;

36、/仿真循环 app-run() ; /取消引用 app-unref() ; /退出 VP vp:shutdown() ; return 0; 以下以具体实例为例,详细叙述整个设计的思想及步骤。该实 例的整个流程图如下: 初初始始化化V VP P 加加载载A AC CF F文文件件 配配置置运运用用程程序序 注注销销运运用用程程序序 V VP P显显示示每每一一帧帧的的图图像像 停停止止V VP P 是是否否停停止止 否否 是是 图3-8 vp应用程序运行的流程 3.3.2vpPath 的类图结构 vpPath主要包括 vpPathNavigator、vpPathWay、vpPathWayPoi

37、ntSet等类,类图结构 - 20 - 如图3-9所示。 vpPathNavigator vpPathWay vpPathKinematicStatevpPathRenderState vpPathFinder vpPathFinderLinearvpPathFinderCardinalSpline vpPathWayPointSet WayPoint 图3-9 vpPath类图 路径控制点集类(vpPathWayPointSet)是路径上所有控制点的 集合。 vpPathNavigator类是导航器类,主要包括路径,是否延迟,延 迟是按时间延迟还是按帧延迟等属性。 PathWay是对路径信息

38、类,是路径设置最重要的一部分,它主 要包括路径的信息;主要函数有:设置连接控制点的方式 (SetPath- Finder);设置路径、控制点以及控制点名称的显示方式 (SetRender- State);设置实体在路径上的运动信息(SetKinamaticSelect); 以及设置该路径是否循环使用(SetLoopingEnable)。 vpPathRenderState是对路径信息是否在屏幕上显示的设置类, 主要属性有:是否显示路径线、路径线的颜色、路径线的粗细、是 否显示控制点,控制点显示的大小、是否显示控制点标签,标签的 大小等。 vpPathFinder是一个接口,主要是对连接控制点的

39、路径曲线进行 设置。有PathFinderLiNear(直线),PathFinderCardinalSpline(曲 - 21 - 线)两个类继承自该接口。 vpPathKinematicState是对仿真实体在路径上的运动状态进行描 述,主要函数有:设置运动的加速方式,设置初速度的值,以及设 置运动状态持续的时间或者帧等。 3.3.3 在应用程序中设置路径及导航 在应用程序中设置路径及导航有两种方式,一种是在配置应用 程序时设置,一种是在回调函数中设置,基本的流程有一样。 具体的流程为: i.在VC环境中创建和初始化一个vpPathWayPointSet对象。 ii.根据具体的连接方式创建v

40、pPathFinder对象。 iii.创建与vpPathWayPointSet对象和vpPathFinder对象相关的 vpPathWay对象,并设置相关属性。 iv.获取vpPathWay对象中的属性vpPathRenderState对象和 vpPathKinematicState对象,并对其进行设置。 v.创建与vpPathWay相关的vpPathNavigator对象,并设置其 属性。 由于路径和导航类为基类,因此可以根据仿真环境的具体要求 创建它们的派生类,这需要我们进一步的探索运动对象的路径导航 特性,从而扩充Vega Prime的这两个模块的路径导航功能。 3.4 实现过程存在一些

41、问题的解决方法 (1)控制点的精确定位 一般地说,由于Path Tool软件界面设计的局限性,直接在三个正 视图中定位控制点的手工操作难度较大,点的精确位置不易确定,尤 其是要求精确到小数点多位以后的位置根本无法确定。有三种方法 解决这个问题:一是在Creator软件中确定要设置控制点的坐标值并 记录,然后调用Path Tool,在其界面右侧的添加控制点的对话框中直 接加点输入坐标值;二是在Lynx Prime的坐标系中可以寻找控制点的 准确位置;三是通过Vega Prime的API函数编程直接定位,这也是确定 控制点最为灵活的方法。 - 22 - (2)Path Tool的张力因子设定 张力

42、因子如果设定得太小,路径曲线就会发生异常,例如纽结和 打弯,一条很普通的曲线段中就出现一个结。运动对象就会沿着结 运动,这是我们不希望看到的情况,解决的方法就是增大张力( Tension) 值。 (3) 速度的设定 速度并不是整条路径上的速度,事实上每个控制点都有它本身 的速度值。因此可以在不同的段根据程序的需要设定不同的速度。 另外还可以在Path Tool中改变速度的设定模式,达到预期效果。 (4) 运动体方向调整 运动体的方向要随着路径方向的改变而变化。例如,一辆汽车 转弯,汽车的方向要随着转弯方向而不断调整,这需要调整控制点的 HPR值,使汽车的方向和运动路线相切。为了让运动体的方向调

43、整 不至于过于剧烈,可在曲率较大的位置设置多个控制点。 (5)拐点的平滑设定 由于Path Tool软件界面设计的局限性,运动体随着拐点方向变 化时我们会发现运动体的方向是强行转过去的与我们生活的现象很 不一致。解决这个问题是1.当拐点为九十度,首先确定一个圆,默 认半径设为10米,根据拐点前后两点的坐标可以得出圆心坐标的值; 然后根据运动体的走向取四分之一的圆弧;在四分之一的圆弧上以 每九度定十一个点;用正弦定理和余弦定理计算出每拐点的坐标值。 2.当拐点不垂直时,首先用两点的坐标确定一条直线得出两条直线 列方程计算交点的坐标并计算弧度;确定圆计算半径再把弧度除以 十得出每度的增长值;最后按

44、拐点为九十度的方法计算结果。 - 23 - 第四章 结论 虚拟仿真环境的开发是是二十一世纪最受瞩目的热点之一,构 建具有真实感的虚拟环境是应用虚拟现实技术一项不可缺少的关键 步骤。 本文围绕如何开发运动平台三维物体路径的制作与实体运动路 径的三维显示,进行了以下几个方面的工作: 1.对Vega Prime软件进行研究,熟悉此软件相关功能; 2.了解和掌握Path Tool工具中路径和导航器的基本原理; 3.给出一个虚拟实体运动路径设定的整体框架; 4.通过Path Tool工具来实现运动路径的设定; 5.研究在VC+中如何实现运动路径的设定; 6.解决实践应用中存在的难点问题。 本文在对运动路

45、径可视化问题设定的过程中,提出了可视化的 实施技术路线与一些关键问题的解决方案,这些方法在理学院漫游、 野外综合演练仿真系统中达到了一定的效果,但是从实际应用的角 度看,尚有许多欠缺,在本文研究工作的基础上,我的合作伙伴从 以下几个方面做了进一步的研究和探索工作: 1 虚拟物体在运动中没有考虑地形起伏等情况,也没有考虑空 气阻力等因素,此轨迹需要进一步研究和完善。 2 虚拟物体运动时在转角处相邻的两帧不连续,以至观察者会 感觉到画面有明显的抖动,这需要进一步研究和完善。 - 24 - 后记 1、心得体会和收获 四年的大学学习如何,毕业设计是很好的一个反映。从一开始搜 集资料到毕业设计论文的完成

46、前前后后持续了两个多月的时间。在 这段紧张有序的时间里,我也收获了很多东西。 一、通过这次毕业设计,让我又温习了一遍自己所学的专业知 识,并且对 Vega Prime 有了更深的了解,增长了在相关理论方面 的知识;同时在使用 Vega Prime 软件进行动态实现过程中让我对 Vega Prime 软件的强大功能产生了极大的兴趣,在 Path Tool 制作 的特效功能以及技巧方面掌握得也比较快,相信这个软件对我将来 也会有很大的帮助。 二、通过这次毕业设计更加使我明确了整体构思和经验的重要 性。刚开始做时,心里没有一个具体的规划以至于老虎吃天,不知 道从何处开始。其次在 Path Tool

47、工具的运用过程中,不了解其中 的经验技巧,犯了很多错误,最后在同学们的帮助和教员的指导才 顺利完成,在这些问题上浪费了不少时间。从这些问题上使我了解 到毕业设计不是一个人的事情,一个组的同学之间应多交流交流这 段时间的毕业设计心得体会以及一些经验,这样在获得经验的同时 也放松了自己紧张的心情,达到双赢的目的。 三、通过这次毕业设计,使我对运动体的运动路径设定的知识 有了很大的增长,特别是针对目前部队工作中的综合演练,怎样才 能够更好的去制定行军路线并体现出首长的意图,这是作训参谋主 要要解决的问题;此次毕业设计也在无形中锻炼了我部队任职的需 要,这对我以后的工作和发展都有很大帮助。 四、通过这

48、次毕业设计,在我获得知识和经验的同时,自己的 知识结构还不全面,能力也有所欠缺,特别是在软件常识方面还有 待进一步加强。 2、致谢语 时光如梭,转眼间四年的大学生活就要结束了。军校思念生活 - 25 - 的点点滴滴都浮现在我的脑海。这次毕业设计是对四年学习所得的 一次检验,在这次毕业设计中我要感谢导师姚世军教授和郭晓峰教 员,正是他们对我的精心指导和帮助,才有了毕业设计的顺利完成, 教员不仅在学业方面给我以无私的帮助,更多的是传授给我解决问 题的思维方法和严谨的学习工作态度。 感谢曾经向我传道授业的教员们,正是你们的不倦教诲,指引 着我在求知的道路上越走越远。 感谢四年来所有培养我关心我的首长

49、与领导,感谢你们对我的 培养和帮助,你们的关怀,我将永远铭记在心! 感谢四年来朝夕相处,给予我无私的关心和帮助的战友们! 最后,向所有给予我关心和帮助的人们致谢! - 26 - 参考文献 1 Vega Prime Programers Guide for Windows NT and Windows 2000 M.Version 3.5 , MultiGen-Paradigm Inc. 2 MultiGen-Paradign IncVega Prime Programmers Guide (Version3.7 ). Z .U.S.A.:MultiGen-Paradigm Inc. 3 (Vega Prime Programmers Guide),.MultiGen-Praradigm Inc. 4 倪明田,吴良芝.计算机图形学.计算机图形学M .北京:北京 大学出版社, 1999. 5 龚卓蓉. 实时三维视景仿真软件Vega 程序设计M . 北京: 国防工业出版社, 2002-8. 6 胡社教,等.虚拟现实与卫星仿真技术 J .计算机仿真, 2001- 3. 7 戴锋. Visual C+程序设计基础M .

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1