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 -参考文献 .- 27 - 3 -第一章 绪
3、论1.1 研究背景随着计算机和信息技术等高新技术的飞速发展,计算机仿真技术也正在全球范围内得到迅速的推动,并在航空、航天、地面战场模拟以及其它复杂任务中发挥着越来越重要的作用, 虚拟仿真环境开发成为当前研究的亮点,而三维视景中虚拟实体的运动体现得越来越重要了。在虚拟仿真环境开发过程中,经常会遇到虚拟对象的运动路径设置。一般情况是事先确定运动路线,记录路线上的若干控制点的位置,点与点的连线采取数据平滑处理,运动对象按照设定的路线运动。Vega Prime是SGI Performet基础上发展起来的环境仿真软件环境,它把常用的软件工具和高级仿真功能结合起来,可使用户以简单的操作、迅速的创建、编辑和
4、运行复杂的仿真程序。该软件具有良好的图形界面Lynx,完整的C语言应用程序接口API,丰富的适用库函数以及大量的功能模块,其中路径( Pathing) 和导航(Navigator) 模块是Vega Prime提供的两个路径控制模块。应用这两个模块及其接口函数,用户可以为预先确定的路径创建关键点,然后通过虚拟场景的运动对象用Navigator 穿行设定的Path来自动对运动进行控制。1.2 研究的目的和意义本文中我们要研究的是以面向对象的思想对运动平台的三维实体运动路径的制作进行分析,提炼出了创建点集、设定路线、实体建模以及规定策略、导航等步骤;应用 Vega Prime 软件设置一系列动态的、
5、有规律的运动路径,该软件可以根据用户需求进行高级功能仿真和特殊仿真需求的实现;还应用 VC 环境灵活的处理较复杂的路径设定设计此课题的目的,是在仿真过程提供一个软件平台的基础之上,不断掌握整个软件的功能和分析该软件不完善之处。通过利用Vega Prime 软件完成相关任务,帮助规划人员确定最佳运动路径设- 4 -定的方案,解决虚拟对象在运动路径中的很多问题。Vega Prime 软件中的 Path Tool 是路径和导航类的图形设置界面,并直接显示所要编辑的三维虚拟场景。使用这个工具,路径控制点将可以在三维场景中移动,在地形中插入、删除; 导航器可以在 Path Tool 实时环境中创建、编辑
6、导航标记,并预览控制点的按照导航标记的运动过程。Vega Prime 的其它模块都支持 Vega Prime 导航器为它们特殊的导航功能,并可以设置自己的路径导航。如果用 Path Tool 创建了一条路径和一个导航器,路径和导航数据就作为路径文件和导航标记文件存在磁盘上,Vega Prime 其它基本模块在配置中读入这些文件无需编写任何代码。路径和导航也可以完全通过 API 接口函数编程创建。在上面所述的课题背景下,研究基于三维视景中虚拟实体的运动路径设定具有很大的实际意义和可操作并成功的应用到了理学院漫游、野外综合演练仿真系统的虚拟仿真环境中,效果良好。- 5 -第二章 Vega Prim
7、e 概述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的。虽然Vega Prime 包含了所有的建立一个应用程序所必需的Api,但是LynX Prime 简化了开发过程,不用写任何代码就可以配置一个应用程序。LynX Prime 是
9、一个可以增加类的接口,定义接口参数的编辑器。这些参数可以是观测点的位置,场景中的对象位置、运动,灯光,环境效果,目标硬件平台等等,都可以在一个acf文件存为一个接口框架。一个acf文件包含一个Vega Prime 应用程序初始化必须的和运行时要用到的信息,可以在活动预览窗口预览在acf 中的定义活动,预览窗口可以交互式的定义acf文件。活动预览窗口会持续不断的检查acf文件的变化,一旦有改变发生,它就会用新的数据更新Vega - 6 -Prime 的仿真窗口。本文也可以用 C+来开发可视化的应用程序。可以在应用程序里根据特定环境修改接口值,例如当某个物体碰到了一个目标物时可以指定相应的位置变化
10、。Vega Prime 应用程序也可以在一个图形通道里面加载acf文件。当应用程序编译完成后就可以执行了。关于LynX Prime 和在Vega Prime 中工作的详细信息可以查看Vega Prime Programmers Guide。2.2.1 VP 系统结构图2-1 VP系统结构2.2.2 VP 的应用组成(1)应用程序应用程序控制场景,模型在场景中的移动,和场景中其它大量的动态模型。实时应用程序包括汽车驾驶,动态模型的飞行,碰撞检测,和特殊效果,如爆炸。- 7 -在VP外的开发平台创建应用程序,文件是以.ccp格式存档。并包含了C+ 可以调用的VP库的功能和分类。在编辑完成后就形成了
11、一个可执行的实时3D应用文件。(2)应用配置文件应用配置文件包含了VP应用在初始化和运行时所需的一切信息。通过编译不同的ACF文件,一个 VP能够生成不同种类的应用。ACF文件为扩展Mark-up语言(XML)格式。首先可以使用VP 编辑器LP来开发一个ACF,然后可以使用VP API动态地改变应用中模型运动。对于实时应用来说,ACF不是必要的,但它可以将改动信息进行译码,记录在.cpp程序中,这样可以节省大量的时间。(3)模型包以前,通常是通过计算机辅助设计系统或几何学来创建单个模型,但这些方法在实时应用很难进行编码。现在,可以使用MulitGen Creator和ModelBuilder
12、3D,以OpenFlight的格式来创建实时3D应用中所有独立的模型。可以使用Creator Terrain Studio(CTS) ,以MetaFlight格式来生成大面积地形文件。并可以使用这两种格式在VP中增加模型文件。2.2.3 LynX Prime 用户界面LynX Prime 用户界面包含四个不同的部分:树视图(Instance Tree View)、GUI 视图(GUI View)、API 视图(API View)、工具栏(ToolBar)。对于已选择的类来说所有视图显示的信息除了一小部分格式不同外大部分相同。还可以在多于 1 个视图中定义 acf.- 8 -图 2-2 用户界面
13、(1)GUI 视图(GUI View)在用户界面中显示,可以很容易的使用,GUI视图显示acf的接口和参数。可以在下拉列表中选择参数,在文本域里输入值。当打开LynX Prime,第一个GUI 视图被命名为myKernel,它是Vega Prime中的Kernal 类的一个实例。Kernel是应用程序的起点,它控制所有的实时操作。(2)实例树视图(Instance Tree View)实例树视图显示了当前加载的acf文件和它的所有接口。实例树视图显示了由父实例和子实例组成的实例等级图中的联结关系。能看到在程序中实例间的相互关系。如果在树中选择了一个实例,所有的视图都会同时显示它。如果在文件中的
14、一个实例的引用指向了不止一个地方,这个实例的名字就会跟在一个蓝色的箭头,向下的- 9 -箭头 表示文件第一次被使用。向上的箭头 表示有另外的引用指向实例。图2-3 实例树视图在上面的例子中,myPipeline 被展开,显示了myChannel 连接myWindow ,这是myChannel 的第一个引用,所以前面有个 下箭头。myChannel 也被myObserver引用,在这个例子中它前面有个上箭头 。当选择了一个实例,实例的属性和当前值会同时显示在GUI视图和 API视图中。介绍实例树视图几个主要部分:1.通道(Pipeline )模块通道指的是 Vega Prime 应用程序运行平台
15、与图形生成硬件设备相连的显示终端屏幕,它决定了仿真应用提供给用户的可视范围的大小,表现为图形硬件所支持的最大分辨率。注意:图形硬件所支持的分辨率跟终端显示设备所使用的分辨率是不同的两个概念,大型的图像工作站都支持多个显示设备的同时输出。2.窗口(Windows)模块窗口在 Vega Prime 中代表的是一条渲染通道,渲染通道指的是可视化仿真系统实现中的整个渲染流程,所以要执行 Vega Prime应用程序必须先定义一个窗口。用户可以指定窗口在屏幕上的位置,- 10 -由于屏幕支持图形硬件的最大分辨率,所以窗口的大小实际上可以超出当前显示终端的分辨率设置,其效果是一部分窗口在显示器上看不见。3
16、.频道(Channel)模块频道代表了用户用以观察场景的特定视角,表现为窗口中的一个矩形区域,实际上所有实时渲染都是通过频道进行的,所以场景要显示出来至少还要定义一个频道。一个窗口中可以包含任意多条频道,它们在窗口中的位置甚至还可以重叠。4.视点(Observer )模块视点是 Vega Prime 中的一个非常重要的概念,也是核心概念之一。一个视点类似于一台摄像机或一台设置在数据库中的传感器,视点控制管理并且被锁定在一个场景运动体上,也可以同一个运动模型进行放置。观察一个场景必须要由一个视点。视点使用通道决定场景的观察体,就像照相机使用镜头观测区域一样,每个视点可以同时观察多个通道。最后应用程序显用户最终是通过观察者的视角,从本质上讲是通过通道来观察场景的。5.场景(Scene)模块场景就是所有载入的模型对象的集合。(3)API 视图(API View)API区显示选定的模型的所有可能的变量。在这里可以定义模型的值,就象在用户操作区一样。但是在API 中,可以直接给变量赋值。当更改应用中的参数时,可参考API 区中要使用的变量的值。(4)工具条(ToolBar)LynX Prime工具条包括所有操作模型及属性的快捷按钮。这些功能同样可以在LynX Prime的目录中找到。