渐行渐远的kinect体感传感器 评体感游戏的未来在哪儿

注: 文章写于2015年8月, 目前VR游戏Demo已经完结, 所以把上一次预研的一些经验分享出来, 希望对大家有所帮助。背景初接触Oculus时, 从网上下载了一大堆的Demo来体验, 但是, 操作体验大都比较差, 特别是FPS类. 这也让我们意识到, 对于VR游戏, 最大的挑战还不是显示方式的变化, 而是交互方式. 在一个沉浸式的环境中, 最自然的交互就是最完美的方式. 其中基本的需求, 就是可以使用双手跟VR中的虚拟环境进行交互. 这么一来, 首先键鼠或手柄就被排除掉了, 我们只好针对市面上的一些输入设备, 挨个进行评估实验:Wiimote: 只能检测运动和方向, 无法准确定位双手的位置 ;Leap Motion: 粘在Oculus上可以模拟出双手, 但是识别范围太小, 骨骼的稳定性比较差, 严重影响体验 ;Razer Hydra: 可以获取双手的空间位置和旋转, 加上两个手柄上的按键也能触发一些状态切换, 算是看起来还不错的方案. 缺点是位置偏差比较大, 可能是磁场受干扰的问题 ;RealSense: 类似LeapMotion, 但是精度比较低, 导致识别出的骨骼位置抖动严重, 无法用于双手的骨骼映射。试来试去, 好像目前市面上除了高成本的动作捕捉设备, 还没有比较完美的VR输入设备可以用. 最后, 把目光转向了旁边XboxOne开发机配的Kinect2。因为我们组去年进行了XboxOne体感游戏的研发, 积累了一些Kinect2体感操作的经验, 就把Kinect2连接到了PC上, 看看能不能把体感操作与Oculus的VR显示结合到一起。需求分析前面也提到了, 尽量达到接近自然的交互方式, 那就需要实现这几个关键点:-可以在虚拟世界中显示出双手, 最好能有肢体躯干;-虚拟空间中的双手位置与现实空间中跟头部的相对位置(包括旋转)保持一致;-可以使用双手对虚拟世界中的物体产生影响;-能够识别一些简单的手势, 如抓, 推, 拉, 按, 摸等等。那Kinect2提供的数据或者功能有哪些呢?-30帧/s的Color/Depth/BodyIndex/IR数据;-身体骨骼位置和朝向(比较不稳定, 会抖动);-双手的三种状态识别, 正好对应 石头 剪刀 布(误识别率较高);-其它诸如语音之类的功能暂时用不上。像LeapMotion那样每根手指单独识别是做不到了, 退而求其次, 只能在交互设计上就去规避过小元素, 使用整个手掌做为交互 。双手的骨骼位置可以为我们提供双手的空间定位, 而三种状态可以参考我们在XboxOne体感游戏中的UI交互经验, 把抓住拖动之类的手势利用起来。实现细节双手肢体的绘制因为Kinect API已经提供了人体骨骼的变换信息, 那自然而然的我们就想在游戏中绑定到一个蒙皮模型上 。最终我们也在UE4中实现了, 但是体验下来非常不满意, 为什么呢?-Kinect中获取的骨骼变换信息会频繁抖动, 如果不进行处理, 会像抽风一样;-如果对骨骼变换数据进行稳定性的过滤处理, 会增加响应延迟, 导致虚拟肢体的动作比实际总是慢半拍;-不同体形的的人的映射到同一模型的效果会有问题, 比如想象一下一个身材高大的人在Oculus中看到自己胳膊变短了是什么感觉. 这会影响基于直觉和经验的空间位置判断。那还有什么别的方法去实现双手肢体的绘制吗? 在使用KinectStudio调试时, 发现3D视图下的深度呈现比较有意思:其实这就是深度数据(DepthBuffer)映射到3D空间里的离散的点, 这里我把这种表示方式称之为 “点云(PointCloud)” 于是突发奇想, 在虚拟空间使用点云表现自己的躯体, 双手手指的动作也可以精确地映射过去. 那么, 这可行吗?延迟: 由于DepthBuffer是硬件采集的原始数据, 是没有经过处理的, 不存在中间的数据处理时间(延迟), 所以在响应速度上肯定是非常理想的, 可以控制在70ms左右(Kinect2硬件固定60ms);数据量: DepthBuffer的分辨率是512x424, 也就是需要映射到21万多个顶点, 虽说有点多, 但也在可接受范围内, 实在不行可以隔行取点, 以最终效果需求为准;UE4点云渲染: 每帧根据DepthBuffer计算出对应的VertexBuffer, 构建DynamicMesh进行绘制, PrimitiveType使用PointList 。然后再根据BodyIndex数据剔除掉周围环境和其它人的点, 就完美的把自己映射到UE4的3D场景中了. 下图加了个简单的材质, 顶点法线使用地形中常用的SlopeBased方法计算 。点云坐标系对齐有了点云的躯体了, 怎么把它 “装”在虚拟世界中的头下面呢? 由于Kinect, Oculus, UE4相当于是三个不同的坐标系, 如果要把点云映射到Oculus视角下身体的位置, 需要一些坐标映射和转换:-UE4已经默认集成了Oculus的支持, 所以这两个坐标系的处理不用我们操心了, 默认Oculus头戴显示器的坐标就是UE4摄像机的位置加上PostionTracking的Offset;-而Oculus头戴显示器的位置来源于Oculus DK2中带的CameraSensor, 这才是Oculus虚拟坐标的基准点, 只不过---UE4做了变换, 把Oculus初始位置映射到了摄像机的位置上;-Kinect中的DepthBuffer映射成顶点后, 全都是CameraSpacePoint, 即Kinect设备本身就是原点. 需要注意的是, Kinect坐标与UE4坐标需要做一下转换, 对应关系为 UE4Vector = FVector(-V.Z * 100, V.X * 100, V.Y * 100)。那找到Oculus和Kinect坐标系中分别固定不动的基准点后, 把它们进行对齐, 两边的坐标系不就可以重合了? 方法很简单, 把Kinect和Oculus的CameraSensor”合体”: 游戏中可以通过CameraComponent位置和Oculus的CameraOrigin计算出Sensor的世界坐标, 然后把点云对齐到这个位置即可, 通过一个可以保存配置的Offset进行偏移校正 。交互设计整个交互灵感其实来源于钢铁侠电影里的全息投影的交互片段, 我们的目标就是把这种科幻片中常常出现的镜头变成现实 。以全息投影的感觉做为美术风格的指导方向, 结合我们日常接触最多的功能, 我们实现了5种交互控件:图片查看器: 只有一个翻页操作 。视频播放器:可以操作播放/暂停, 放大后有电影院看电影的感觉, 这也是目前VR视频应用比较常用的方式。网页浏览器: 我们集成了CEF, 相当于内嵌了一个chrome, 支持HTML5的游戏. 下面的视频中我们选择了一个H5的猜单词小游戏, 支持网页上的点击操作 。打飞机小游戏: 这个是使用体感操作的, 虽然是一个2D平面的游戏, 但是爆炸后的碎片会落到地板上, 视觉效果还不错 。模型查看器: 主要是用于演示在3D空间怎么用双手比较直观地观察一个三维物体, 可以说这才是VR交互的亮点所在, 你可以从各个角度和任意大小去观察一个物体的每一个细节 。每个控件我们还做了统一的Tooltips的弹出动画提示, 这种3D空间的信息显示也是AR应用场景中比较常见的 。为了更好地展示每个控件的功能, 我们把整个全息交互场景分成了前后两”层”:远景: 只能同时存在一个控件, 可以抓住进行拖动和缩放操作, 并进行每个控件特定的功能操作, 如网页的点击, 小游戏的手势移动等等。近景: 摆放各个功能控件, 相当于任务栏图标, 可以通过手势把它”扔”到远景的那一层上去, 相当于窗口最化/Active状态。对远景的控件进行操作时, 双手各加了一根闪电特效, 如同释放魔法一样, 在远处控件上模拟出类似iPad的操作体验。PS: 为了不对第一人称的VR显示产生干扰, 已经把点云的头”砍”掉了 。近景的交互是基于双手的&Touch&操作, 通过Kinect获取双手骨骼位置, 挂了两个碰撞体用于检测与控件之间的Overlap状态 。优化基于VertexBuffer的点云由于要进行顶点坐标计算, 十分消耗CPU, 为了节省时间, 可以把顶点计算转移到GPU, 使用静态VertexBuffer+动态VertexTexture进行Mesh的构建, 而同时带来的好处是点云不再限于Point渲染, 可以做成Particle的样子 。总结在做VR技术预研的过程中, 我们也发现三大VR设备(Oculus, Steam VR, PS VR)的发布的操作设备已经趋于一致: 双持控制器, 每个控制器都可以获取位置和旋转, 并且带有传统的按钮和摇杆. 这虽然不是最自然的交互方式, 但是也是目前在成本和功能之间的一种平衡, 后续的VR游戏开发, 操作上就可以基于这些设备做统一的设计。有了这个VR交互Demo的成功经验, 我们把这种交互方式也带入了正在开发的一个VR游戏Demo, 在Oculus Touch没上市之前, 这是目前我们能在VR中实现的比较好的操作体验. 个人以为, 只是显示方式的变化并不能带来游戏性上的太大变化, 双手控制器才可以让VR游戏玩法产生更多创意, 从根本上推动产生新的游戏类型和全新体验。Gad-GameDev∣腾讯游戏开发者平台长按,识别二维码,加关注免费组件下载丨专业知识学习组队游戏制作丨项目孵化渠道国内业界首家专业独立游戏开发者平台。面向游戏从业者,打造开放、互联、回馈、分享的专业游戏人社区。Gad-腾讯游戏开发者平台(Gad-GameDev) 
 文章为作者独立观点,不代表大不六文章网立场
Gad-GameDev专业的游戏人社区():为游戏开发者提供学习指导、问题解决、队员招募、游戏孵化等服务。免费组件下载、专业知识学习、组队游戏制作、项目孵化渠道。热门文章最新文章Gad-GameDev专业的游戏人社区():为游戏开发者提供学习指导、问题解决、队员招募、游戏孵化等服务。免费组件下载、专业知识学习、组队游戏制作、项目孵化渠道。&&&&违法和不良信息举报电话:183-
举报邮箱:
Copyright(C)2016 大不六文章网
京公网安备781561人阅读
体感游戏开发(6)
Unity3D(153)
POV & &&&&
& & & & 从口语和故事讲述中借用术语来比喻游戏的观察点(Point of View)很常见。第一人称射击类使得你可以以游戏角色的视觉看到屏幕下方自己虚拟的手和武器。第三人称则让你从后面观察你的avatar。我通常使用“第二人称体验”这个名词来表示从正面观察游戏角色,就像对着镜子的视觉。
& & & & 刚开始,使用第三人称来开发我们的体感游戏看起来是个比较容易的方向(尤其是当你考虑上一篇博客提及的“随身物件”这个点子的时候)。但是,如果你的交互包含侧面交互,第三人称POV会带来我起初未意料到的根本性难题。
& & & & 如果你假定骨架跟踪系统是基于前置摄像头(比如Kinect和PrimeSense的摄像头的常用安装方式)的数据采集,这意味着被跟踪得最好的将是那些离电视(译注:当然,也可以是显示器)最近的四肢。远离电视的手臂和腿更容易被遮挡所困。很自然地,对被遮挡的四肢的追踪,其精确度会下降,而且严重依赖于统计姿势模型。
& & & & 让我们回到POV问题 --- 第三人称给玩家呈现的是avatar的背面。当面向侧面的时候,被挡住的四肢是最容易被玩家看见,同时也最吸引玩家注意的。有时候这种根本性的效应会强烈到让玩家认为跟踪算法本身出了问题。
& & & & &在第二人称(镜像视觉)的情况下,未被遮挡的四肢更容易被玩家看见。而被遮挡住的四肢,其不精确性更容易被玩家忽略,因为在渲染avatar的时候,它们也是被挡着的。
& & & & 我不是主张完全避免使用第三人称,只是在指出其所带来的挑战,以及在游戏设计阶段应该意识到的一些注意事项。
以下是第一和第三人称视角的一些示例回顾:
& & & & & & & & & & & & & & & & & & & & & & & 第一人称:3D Monster Maze(1981)
& & & & & & & & & & & & & & & & & & & & & & 第一人称射击:Wolfenstein 3D(1982)
& & & & & & & & & & 第三人称:Tomb Raider 1996
简单游戏场景
& & & & 当人们问到在体感游戏中怎么自然地行走的时候,我通常会提醒玩家,他可能会碰到电视。导航是3D游戏(不只是体感游戏)中最大的挑战之一。抛开已经选定的模式不谈,在3D虚拟世界中行走,并在我们的2D显示器上呈现,这可能是个非常令人沮丧的体验:你很难体会到渲染物体的深度已经在场景中行走的感觉。这也是为什么那么多的3D平台游戏那么烂的原因。想跳到一个更高的平台,而当你掉到熔岩湖的时候才意识到那平台太远了跳不上去,这并不是一个值得享受的体验。最终,只有极其高水平的编辑才设法创造出了有趣的3D平台。在本博客里,让我们这次偷下懒吧,把导航的挑战推迟到后续章节里再谈...
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & 轨道游戏
实际上,即使不去面对导航问题,你也可以创造出很多有趣的体验:
静态照相机射击游戏 --- 敌人从隐藏处冲出,或者走近avatar施展一些武术。轨道射击游戏 --- 照相机的运动已经预先定义好。当遇到敌人或者avatar碰到阻挡的时候,照相机可以停止,通关的时候,照相机又可以继续运动。第二人称武术和格斗游戏第二人称跳舞游戏
下面是一些静态场景和轨道游戏的回顾示例:
& & & & & 静态照相机射击:Prohibition(1987)
& & & 静态照相机射击: Operation Wolf(1987)
& & & & & & & & & & & & & & & & & & & & & & & & & & & & &轨道游戏:Operation Thunderbolt(1988)
& & & & & & 轨道游戏:House Of The Dead
在AngryBotsNI中,我们尝试使用不同的POV:
你从第二人称开始熟悉你的avatar当你学会怎么传送的时候,你可以跳到不同的场景或关卡每一关的POV都是不同的,所以你也有机会体验第三人称视角
----------------------------------------------------------------------------------------------------------------------------------
译注:这是原作者最近在blogspot上的系列文章《》的译文,为方便中文读者而转过来的。可能的话请尽量阅读原文,原文写得比较诙谐。有翻译不当或错误的地方欢迎大家指正,谢谢阅读。
原文链接:/2012/01/part-2-pov-and-basic-scenes.html
关于译者:曾供职于PrimeSense公司,作为应用工程师在Micha的领导下工作。是AngryBotsNI的主要开发者,熟悉体感交互的各种应用。目前在深圳,有时候在广州。
-----------------------------------------------------------------------------------------------------------------------------------
关于作者 Micha Galor
“当被问到怎么定义我自己的时候,我总是很困惑。我的工作包括软件工程,研究,设计和管理创新的投入。某一天我会简单地回答:一个发明家”
Micha Galor是PrimeSense公司(Kinect的3D传感技术提供商)应用和用户体验组的经理。他的团队专注于自然交互研究,包括对一些可实际运行的概念和展示的原型化,定义未来的人机交互语言等令人兴奋的工作。在PrimeSense之前,Micha领导Zoran(多媒体芯片商)的数码摄影团队,开发了应用在几款热销的拍照手机中的数字图像技术。Micha和他的太太以及两个小孩一起生活在以色列的特拉维夫。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1119815次
积分:16103
积分:16103
排名:第477名
原创:386篇
转载:221篇
评论:339条
我叫小未,网名Aladdin,主做U3D游戏程序,某普通本科学校毕业,但不甘于平庸,喜欢尝试,喜欢研究计算机技术,13年9月份开始工作,曾两年就职于巨人网络做游戏客户端程序,闲暇时间做过麦子学院在线讲师,做过独立开发,做过C#游戏服务器和.NET Web服务器,做过IOS原生开发,爱游戏,爱coding!
学习交流群:
**********常用*****************
*********不常用****************
转载或使用本博客原创和翻译文章,请标明出外并附上链接。
阅读:7987
文章:10篇
阅读:15867
文章:12篇
阅读:12899
文章:24篇
阅读:92271
文章:13篇
阅读:20006
文章:31篇
阅读:67761
文章:34篇
阅读:48612
文章:20篇
阅读:39648
(1)(1)(3)(3)(1)(2)(1)(1)(4)(2)(2)(1)(1)(1)(3)(1)(1)(1)(3)(1)(4)(2)(6)(17)(12)(13)(17)(12)(24)(32)(58)(42)(12)(48)(126)(33)(2)(2)(13)(9)(15)(5)(12)(14)(17)(5)(1)(1)(17)(2)(2)Kinect体感游戏技术的应用前景
Kinect体感游戏技术拥有着广阔的应用前景,它可以与不同设备协作并用于多种场景之中,为各行各业创造新型解决方案。
Kinect体感游戏应用案例
应用案例中,例如应用于真人密室逃脱游戏及旅游景区互动娱乐中。另外一个案例是,在澳大利亚一家旗舰店刚刚开张时,店铺老板想在商店中摆放一些可以吸引顾客光顾的东西,他们找到体感游戏技术提供商制作了以下的解决方案:
利用Kinect
V2与一块5米宽的大屏幕组合成一面巨大的交互墙。当人们路过时,Kinect可以扫描到他们同时在“墙”上投射出一个影子,而在这样一面特殊的“墙”上看到自己的影子无疑会吸引人们的好奇心并像一探究竟。当他们靠近时才发现原来这面屏幕墙其实是一大块画布,他们可以抓起屏幕中的虚拟气溶胶喷雾罐肆意涂鸦,而屏幕中的画则隐藏在白色画布的下面,吸引顾客一点点解开“谜底”,进而不知不觉就拐到商店中去了。&
这个创意当然既是为了激发顾客对科技的热情与好奇心同时也可以巧妙的吸引顾客进入商店中。通过在商店门口摆放这么一面有趣的交互性涂鸦墙,我们的顾客更多会亲身参与其中,而不是在一旁拍照。这对他们来说是一次印象深刻的体验。&
微软Kinect
V2体感器可以同时识别并处理多达6位用户的动作,当用户晃动涂鸦油漆罐时还能听到音响效果。自从这面交互涂鸦墙在去年落户这家商店至今,一直都能吸引大批消费者驻足玩耍。具体请看下方视频介绍:
Kinect体感游戏应用前景&
Kinect主要用来进行体感游戏动作捕捉,后来大家发现这个非常有前途有价值,原因在哪?所有动作捕捉和识别都是做在硬件设备里面,但是Kinect其实是个变形的USB接口,所以接换到不同平台非常简单。在这样一个平台之下我们会发现有很多新的应用领域,等待我们去探索。&
微软现在已经有两个SDK,第一个针对Windows,另外一个是针对微软机器人开发组件。以后可能微软会针对其他平台做开发。已经有开发者社区把Kinect往iPhone、Android上移植了,推广速度非常快。&
Kinect最早的CodeName是Project
Natal。从2010年10月份开始上市,到号销售超过一千万部,有史以来销售最快的销售类电子产品。他可以是一个包装套餐,也可以是一个单独外设,国外售价是169美金。在国内的淘宝已经卖到700多人民币。
Kinect最早定位是XBox
360外设,不需要任何道具完成整个动作识别和捕捉。他能够做的是两个,动作识别动作捕捉和3D立体语声识别。这是一个后台,所有的语音识别都是利用这个方式来做的。不过很遗憾,现在对汉语支持相对来说差一点。
我的更多文章:
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 kinect体感 的文章

 

随机推荐