我要发帖 回复

高级会员

6

主题

1761

积分

0

专家分

兴趣点(最多三项):

视景仿真

私信
发表时间 : 2014-1-10 13:14:03 | 浏览 : 3485    评论 : 22
Vega Prime的路径导航程序设计


1 引言

        在视景仿真应用中,经常需要调整观察者或者活动对象在场景中的位置和姿态。为此Vega Prime提供了多种运动定位方式,包括手动调整方式、运动模式方式、栓系模式方式、路径导航方式等。手动调整方式是直接指定观察者或者活动对象在场景中的位置和姿态。运动模式方式是模拟各种常见的运动状态,包括驾驶模式、飞行模式、游戏模式、旋转模式、UFO模式、行走模式和沙盘模式等。栓系模式方式是将观察者跟活动对象绑定在一起,观察者的位置根据活动对象的位置来决定,包括跟随栓系模式、旋转栓系模式和固定栓系模式等。路径导航方式是指观察者或者活动对象按照导航器的指引沿着设定的路径在场景中运动,其有两层含义:首先是指包含了一系列路径控制点的路线,其次它需要一个导航器来连接路线中各个散布的控制点,进而形成一条完整可用的运动路径。

        在下文中通过一个实例讨论路径导航程序设计的基本方法,实例的开发运行环境为:Windows XP SP3、Vega Prime2.2、VS2005。


2 路径工具Path Tool

        Vega Prime中定义运动路径有两种方式:一种是使用Vega Prime提供的图形界面路径工具Path Tool,另一种是使用Vega Prime API函数来定义和设置运动路径。这里采用第一种方式。
路径工具Path Tool只在Windows平台上有效,使用路径工具可以创建路点(Waypoint)文件和导航器(Navigator)文件。路点文件定义运动路径上的控制点坐标,导航器文件定义每个控制点上的速度、加速度和行为等。路径导航程序设计的主要步骤如下:
        ⑴ 使用Path Tool创建路点文件;
        ⑵ 使用Path Tool创建导航器文件;
        ⑶ 将路点和导航器文件包含到ACF(应用配置文件)文件中;
        ⑷ 将导航器指定给需要路径导航的实例。


3 路径导航程序设计

3.1 创建路点文件

        路点文件存储运动路径上定义的所有路点,路点定义了路径上的控制点坐标,包括位置和方向。路点文件被导入或包含到ACF文件中,提供给ACF中预定义的实例引用。

        启动LynX Prime,选择菜单“Tools”-“Path Tool”,打开Vega Prime Path Tool路径工具,如图1所示。其中,Clamp HAT定义每个路点的最小Z值,这个值可以在以后修改; Markers(标记)描述如何在Path Tool窗口中渲染路点,路点可以被绘制成方形、球形或者三角形,将Markers的尺寸设置为100X可以为定义的每个路点绘制较大的标记。

1.jpg

图1 Vega Prime路径工具

        单击Add New Way Point Set按钮,打开添加新路点集对话框,如图2所示。在对话框的Name编辑框中输入路点集的名字,在File Name编辑框中输入路点文件的名字,勾选复选框Enter Auto-Add Way Points Mode,单击OK按钮关闭对话框。
2.jpg

图2 添加新路点集对话框


        路径上的每一个控制点的坐标由路点的XYZHPR值定义,可以通过鼠标在窗口中点击定义路点坐标,也可以通过编辑框更改或修正路点坐标值,如图3所示。

3.jpg

图3定义路点

        Path Tool键鼠操作方法是:按住鼠标左键移动路点,按住Ctrl+单击鼠标左键定义一个路点,按住鼠标右键旋转场景,按住Ctrl+鼠标右键平移场景,按住Shift+鼠标右键缩放场景。勾选复选框Orientation with respect to curve body axis,可以使按照固定路径运动的对象沿着路径曲线的方向运动,而不是始终指向设定值。需要注意的是,路径工具经常会自动为每个路点的朝向角H、倾斜角P和侧偏角R赋值,为了避免发生无法预测的结果,最好将HPR的值设为0。


3.2 创建导航器文件

        导航器定义如何遍历路点,包括多大的速度、什么样的姿态及遍历完所有的路点后做什么。导航器必须总是引用一个有效的路点集。
        单击Navigators标签,打开导航器属性设置页。单击Create New Navigator按钮,打开添加新导航器对话框,如图4所示。在对话框的Name编辑框中输入导航器的名字,在File Name编辑框中输入导航器文件的名字,单击OK按钮关闭对话框。
4.jpg

图4 添加新导航器对话框


        导航器属性设置页如图5所示,勾选复选框Enable Follower,设置Follower尺寸为100X,设置Navigator Type(导航器类型)为Cardinal,设置Speed(速度)为300,其它均为默认值,这里的设置可以根据需要适当调整。
5.jpg

图5 导航器属性设置页





3.3将路点和导航器包含到ACF文件中

        创建完路点文件和导航器文件后,需要将它们包含到当前的ACF文件中,这样才能够将其指定给需要路径导航的对象。
首先保存前面定义的路点文件和导航器文件,并关闭路径工具,然后在LynX Prime中,选择菜单“File”-“ACF Information”,打开ACF信息对话框。在对话框中,选择“Included Files”标签,在标签页中显示了当前ACF中包含的引用文件的属性信息,路点和导航器实例就是通过这种文件引用的方式在ACF中使用的。由于没有包含任何文件,所以这里的引用文件信息框为空白。单击“Include New File”按钮,将路点文件MPI_WayPointSet.way和导航器文件MPI_Navigator.nav包含到ACF文件中。单击“Done”按钮关闭ACF信息对话框。此时,在LynX Prime的实例树视图中,可以看到导入的路点实例和导航器实例,如图6所示。
6.jpg

图6 路点实例和导航器实例



3.4 将导航器指定给需要路径导航的实例

        在场景中新建一个Object实例myObject1,模型文件使用Vega Prime自带的模型f16.flt,在笔者的电脑上该模型的存储路径为:F:/Program Files/MultiGen-Paradigm/resources/data/models/f16。

        设置实例myObject1的Get Position From 为 MPI_Navigator(PathNavigator)。设置实例myMotion的Type(类型)为MotionTetherFixed,Reference(引用)为myObject1(Object)。设置实例myObserver的Get Position From为myMotion(MotionTetherFixed)。至此设置结束,路径导航ACF实例树如图7所示。

7.jpg

图7 路径导航ACF实例树



        需要注意的是,为了使程序能够正常运行,不要将程序文件放在含有中文字符的目录下,程序文件的名字也不要含有中文字符,在LynX Prime中动态预览截图如图8所示。
8.jpg

图8 动态预览截图





4 结语
        针对Vega Prime中的路径导航运动方式,使用LynX Prime和Path Tool,结合实例讨论了路径导航程序设计的基本方法,采用这种方式的优点是界面友好操作方便,可以快速定义出复杂的运动路径,但是采用这种方式的运动路径必须是预先定义的,即在应用程序执行之前就要定义。如果使用Vega Prime API函数来定义和设置运动路径,用户就可以实现实时的路径控制,即在应用程序的执行过程中添加、设置或修改路径控制点及导航器,这给用户带来极大的灵活性,并进一步提高应用程序的交互性,具体方法将另文讨论,有兴趣的读者可以尝试完善。

评分

参与人数 1积分 +325 VR币 +100 收起 理由
obuil + 325 + 100 赞一个!

查看全部评分

最近VR访客查看更多↓

haha459862 评论于2014-1-10 15:58:00
大赞,支持一个,学习
584481388 评论于2014-1-10 23:30:13
LZ难道是该论文作者?
jia2563422 评论于2014-1-12 22:20:12
再次感谢楼主分享,这个方法我在vega里面成功了。
但是不会编程序,所以没法用api函数来实时定义路径定义导航器。
期待楼主早日分享api方法。
sichuanwww 评论于2014-1-13 09:20:08
jia2563422 发表于 2014-1-12 10:20 PM
再次感谢楼主分享,这个方法我在vega里面成功了。
但是不会编程序,所以没法用api函数来实时定义路径定义导 ...

API导航,可以用另外一个线程,改变你需要移动物体的位置就OK了,setTranslateX(1.0,true);sleep(100);
努力挣钱,快乐生活!
freeman专家组 评论于2014-1-13 20:14:37
不错,很实用,感谢楼主
first001 评论于2014-2-15 10:09:27
谢谢楼主,终于对路径导航有了正确认识,原来以为这个路径是预定航线呢,现在看来,这应该是预先定制了飞机的航迹线。
传说中的寡人 评论于2014-2-27 20:11:26
受教了~~多谢啦
magicyang 评论于2014-3-19 20:09:28
非常感谢楼主 太帅了!!!!
mxsf_yu 评论于2014-3-24 18:45:57
学习了学习了
miumiu123 评论于2014-7-31 15:15:47
非常适用啊,谢谢楼主!
iamdela 评论于2015-1-6 16:03:57
非常感谢
橙子orange 评论于2015-4-5 19:39:23
请问从外部txt文件中读取路径应该怎么写呢?
考拉丹妮 评论于2015-5-28 18:02:24
我设定了两个路径点,预览时为什么是在两点间不停的往复移动呢,我本来是想让物体直线运动,在到达第二个点的时候停止,。请问该怎么去设定呢。
谢谢楼主
aibingyu 评论于2015-6-11 11:30:30
赞   学习了   初学者受教了
许瀚 评论于2015-7-8 14:41:19
学习了 谢谢
上兰村 评论于2016-1-19 09:31:46
牛,太赞了           
yudu12专家组 评论于2017-6-16 17:49:47
xiaochao0227 发表于 2016-4-19 03:30 PM
**** 作者被禁止或删除 内容自动屏蔽 ****

C:\Users\Administrator\Desktop\QQ截图20170616174829.png
Harbin_tdzj 评论于2017-6-25 10:50:34

很想知道地形是怎么来的

手机版|VR开发网 ( 津ICP备18009691号 )|网站地图 统计 网安备12019202000257

GMT+8, 2018-12-18 07:51 PM

返回顶部