打印

基于Virtex-5的3D体感互动游戏设计

[复制链接]
1923|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiao6666|  楼主 | 2012-10-11 22:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在前面我已经实现了两个例子,一个是在FPGA上用纯硬件逻辑写成的类似于打地鼠的游戏,就是有一定数目的LED和与之对应的按键,每一个按键对应一个LED,这些LED随机发光,当它发光时,玩家需要按下与亮的LED对应的按键就为正确,否则错误,并且设置了等级和错误等限制,通过改变亮灯的频率来提高难度,直到游戏结束。另外一个是在FPGA上植入microblaze软核来构建SOPC,添加自己的IP核,如TFT-LCD,GPIO等,然后在上面跑软件程序,在液晶显示屏上面显示游戏画面并且通过中断来检测按键的输入并判断正确与否。
下面我们就进一步的深入来探讨一下我们的这个我们的基于Virtex-5的3D体感互动游戏设计,我们的设计就是希望你能够在游戏里面互动,进行全身心的体验和享受。这个系统整体来讲可以分为几个部分动作捕获,三维重建,整体控制。
现在动作捕获主流的有两种方式:一种就是基于多传感器(以微机电MEMS方式设计的加速度计作为目前的主流的架构和搭配陀螺仪架构成惯性量测系统,以及一系列的其他的传感器)融合的方法和基于视觉的动作捕捉的方法(主要就是用一个或者多个CCD的或者CMOS的传感器来捕捉动作,然后进行处理),
首先来探讨一下基于传感器的实现,从实现上来讲,基于传感器的方法实现起来比较简单,可靠性也很好,但是它最大的一个问题在于不能摆脱一样东西,那就是玩家手里始终要拿一个基于动作感应的“手柄”或者称为遥控器一类的东西,我们可以用无线传输技术将其与主机来分开,对于人的位置没有太大的要求,但是,你始终要挥舞这个控制器才能进行操作,这就是他的最大弊端;加速度计是基于牛顿第二理论基础之下的应用技术,根据机本的物理原则,处在一个系统内部,速度是无法进行测量的,不过其加速度却可以测量出来。如果初速度已知,那么可以通过积分计算出线性速度,进而可以计算出直线位移。如果结合陀螺仪(用来测角速度),还可以进一步对物体进行精确定位。加速度计的工作原理其实相当简单:当加速度计连同外界物体(该物体的加速度就是待测的加速度)受到外力一起进行加速运动时,惯性质量就受到惯性力的作用向相反的方向运动。而惯性质量发生的位移将会受到弹簧和阻尼器的限制,这两者之间的关系相当密切,当外界加速度固定时,惯性质量将会具有确定的位移,而外界加速度变化时(只要变化不是很快),惯性质量的位移也发生相应的变化。另一方面,当惯性质量发生位移时,传感器之间的电容就会发生相应的变化;如果测得传感器输出电压的变化,就等同于测得了惯性质量的位移。因此透过输出电压的感测就能得知外界的加速度。

相关帖子

沙发
xiao6666|  楼主 | 2012-10-11 22:20 | 只看该作者
对于基于视觉捕捉的方式来说,对硬件的要求就会高蛮多,对于一个实时交互的游戏来说,你必须保证它的实时性,如果用一个摄像头的话,你只能捕捉到二维平面上的动作,再通过一系列图像的处理来进行模式识别,从一个摄像系统获取的二维图像中确定距离信息时,人们必须依赖对于物体形态,光照条件等的先验知识.如果这些知识不完整,对距离的计算可能产生错误;对于两个摄像头的话,就是利用人眼双目立体视觉的原理.从两个多个摄像系统获取的不同视觉方向的二维图像中确定距离信息,常常要求大量的数据运算.当被测目标的结构信息过分简单或过分复杂,以及被测目标上各点反射率没有明显差异时,这种计算变得更加困难,双摄像头常用于对三维目标的识别,理解,以及用于位置,形态分析。这个得到的就是我们通常所讲的双目立体视觉,两摄像机在同一时刻观看空间物体的同一特征点,分别在“左眼”和“右眼”上获取了同一个点的图像,但是获得的图像坐标是不一样的,左相机像面上的任意一点只要能在右相机像面上找到对应的匹配点,就可以确定出该点的三维坐标。这种方法是完全的点对点运算,像面上所有点只要存在相应的匹配点,就可以参与上述运算,从而获取其对应的三维坐标。 在用视觉来处理的时候,要对摄像头进行摄像机标定,图像捕获,图像预处理和特征提取,以及后期的决策算法的提取,对硬件的要求很高。
讨论完了这两种特点之后,我就开始我的设想吧。
首先来讲基于多传感器的吧,我们的设计分为两部分,前端传感器捕捉动作及射频发射的模块实际上就是我们所谓的控制器,随着无线传输技术的各种方案的性能的提升和成熟,以及MEMS技术的飞速发展,现在的MEMS都做得很小,我们可以利用其特点将其设计成腕带一类的装备,然后分别戴在左右手腕和左右脚踝处,对于不同的游戏,我们可以选择其中的一部分,比如只需要手部运动的游戏只用戴在手上的就可以。后端的射频接收模块置于我们的FPGA的开发板上,后端的射频接收模块我们可以通过USB接口,或者串口,I2C,SPI等与vitex5的开发板上实现数据的传输。我们通过前端的传感器来捕捉玩家的动作,将数据通过ZigBee无线网络传输给接收端,接收端处理后转换为操作指令传给系统的控制端,实现对于游戏中角色的控制。
前端的的传感器的输出有模拟输出的和数字输出的,对于模拟输出的,对于数字输出的可以通过I2C,SPI等接口来控制,对于模拟接口就要进行A/D转换之后才能送到控制器里面。
我们的信号采集模块是一个多传感器系统,因此要求处理好对多传感器信息的协同运行,得到满足精度要求的快速响应输出,为了满足ZigBee无线网络传输的数据的短距离,低数据速率,低成本的特点,更好的满足其实时性,我们让传感器网络中的中间节点尽量多做些数据采集处理工作,尽量减少原始数据的发送量。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

48

主题

453

帖子

1

粉丝