Delmia做一些二次开发,实现虚拟场景漫游

因为导师项目需求,将学习使用Delmia做一些二次开发,实现虚拟场景漫游,初步设想需要涉及到如下几个方面:

1)CAA搭建二次平台

2)用户与系统的交互

3)显示方式

用户交互准备有两种方式,分别为飞行摇杆和kinect。显示方式用HTC的VR眼镜,截止现在还是空空如也。二次开发软件还没有购买,VR眼镜也在购物车,飞行摇杆还等着选好了从头配置。唯一有一个kinect,能做一些姿势识别上的工作,但这些都不是最重要的,如果以后有机会的话,我会把做的相应的工作也做一些整理。

所以这篇博客就是为了记录我读研究生这段时间的所做所得,相信如果很久以后回来看这些文章,那时的我会有很多感触,希望不会后悔当初没有努力过。

华丽丽的分线///

由于之前的原因,现在在做的工作是交互方式这部分内容,期望能够实现用摇杆驱动Delmai场景转换和漫游,至于更多的应用还没有想清楚,拿了一个北通的游戏手柄来做测试,在使用Win32API函数和DirectInput二者之间我选择了前者,毕竟没有那么多时间折腾,根据网上查找到的一篇关于MFC和手柄的文章,再结合MSDN基本上掌握了相关的原理,能简单实现手柄按键和方向信息在VS2102中的使用。

在windows提供的API中有WindowsMultimedia JoystickFunction函数,其中的joyGetPosEx()函数可以返回一个JOYINFOEX结构体指针,在这个结构体之中存储了六个自由度的坐标值(X,Y,Z,R,U,V)以及视点位置POV(point-of-view)range 0through 35,900. Thesevalues represent the angle, in degrees, of each viewmultiplied by 100.此外还有两个变量dwButtons|dwButtonNumber,与被按下的键相关联,根据MSDN所描述,dwButtons的值可以组合使用(如JOY_BUTTON1|JOY_BUTTON2),最多可以提供32个按钮的组合,完全满足使用需求,具体键与编号的对应可以通过电脑控制面板中的游戏手柄测试获得。现在已经可以读取按键信息并对其组合使用,但还有调试问题。

关键的部分是对按键事件的响应,虽然可以用事件中断的方式实现手柄按键状态读取,但是这样做要么只能使用上下左右四个方向键和四个功能键,要么就有一些键需要用四个功能键组合(这个用功能键组合的方法没有验证),因为手柄事件传递的消息只有三种(MOVE|DOWN|UP),而在DOWN和UP的响应中API只给出了四种可能的值JOY_BUTTON1|JOY_BUTTON2|JOY_BUTTON3|JOY_BUTTON4,此外我还希望得到POV信息和Z轴信息,所以只能放弃了。

我采用的是用joyGetPosEx()不断的对手柄信息轮询,将这段代码放到定时器响应函数中去,但是很快我就发现方向键的响应和按钮的响应频率不同步,在设定的中断时间下,按钮使用顺当,不会过快导致连续触发功能,也不会太慢发生卡顿,SetTimer(1,150,NULL),即每150毫秒响应一次,但是方向控制出现了明显的卡顿,哈哈,我灵机一动,把这两个功能的响应分别分配给两个定时器,用定时器号来区分,效果还不错,方向和功能都实现了。

下一部分的工作是看Delmia有没有提供类似的接口,有的话就可以用获取的数据来做一些驱动了,过段时间我还会再来的

    2016年11月16日 蟹大侠

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值