Delmia做一些二次开发,实现虚拟场景漫游
2016-11-16 20:44
204 查看
因为导师项目需求,将学习使用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日 蟹大侠
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日 蟹大侠
相关文章推荐
- 利用Opengl实现类似于角色漫游的场景
- as3类开发,场景2帧如何实现控制方法
- 本篇主要介绍Runtime在开发中的一些使用场景,顺便讲解了下MJExtension的底层实现
- ( 六 )Seafile FUSE 虚拟文件系统开发---写接口实现思路
- Unity3D游戏开发之使用AssetBundle和Xml实现场景的动态加载
- (转)Android游戏开发之切换游戏场景特效的实现 (十九)
- 【cocos2d-x IOS游戏开发-捕鱼达人7】游戏场景基础实现
- JS实现瀑布流吸顶栏--模拟~不是实际开发场景~
- 用 vagrant 实现虚拟开发环境的快速部署
- 基于OGRE的3D的虚拟场景漫游系统(Visual_WEB3D)
- 【iphone游戏开发】Iphone游戏开发之五:游戏场景切换,点阵字的实现和Hiero工具的利用
- Android游戏开发之切换游戏场景特效的实现 (九)
- [Unity3D]Unity3D游戏开发之异步记载场景并实现进度条读取效果
- OpenGL实现场景漫游(Qt版)
- 简单实现的BSP场景漫游
- Android游戏开发之切换游戏场景特效的实现 (十九)
- 【iphone游戏开发】Iphone游戏开发之五:游戏场景切换,点阵字的实现和Hiero工具的利用
- Unity3d游戏开发之漫游场景的制作
- Cocos2d-X开发中国象棋《三》开始场景的实现
- 关于VR(主要是虚拟城市场景)的一些想法及实现(可能会连载)