靠谱 的软件外包伙伴

您的位置:首页 > 新闻动态 > 未来VR游戏软件开发必须知道的黑科技

未来VR游戏软件开发必须知道的黑科技

2016-08-10 11:49:22

VR游戏相关的技术主要有三块,分别是空间定位、动作扑捉和游戏展示。几乎每个人都玩过游戏,可能是休闲游戏、重度游戏,以及一些VR游戏。那么VR游戏有什么特点?

  • 传统游戏更多的输入输出设备是鼠标、键盘、显示器。
  • VR游戏首先输出设备就是头盔。玩普通游戏的时候,人盯着显示器看,代入感比较差,正如看电视剧,电视剧里面的剧情跟现实格格不入,而戴上这个头盔会有沉浸感,好比模拟视网膜的原理,人之所以看到东西是因为通过反射能投到视网膜上,头盔上有两个镜片可以模拟人的视网膜,真实感比较强,沉浸感在体验过程中也可以感受到。
  • 输入设备,平常玩游戏都是鼠标、键盘。打游戏有很重要的参数叫 APM ,玩竞技类游戏, APM 不超过 200 属于菜鸟级,但是在 VR 游戏里面,输入设备不再是鼠标和键盘,你能看到许多人在玩游戏的时候,可能做一些比较夸张的动作,甚至于做一些让人不可思议的东西,有点群魔乱舞的感觉,这样的输入设备是手柄,未来随着技术的发展,输入设备可能会有更大的改变。

空间定位

空间定位技术目前国内有很多公司做,之前接触到一家名为上海青瞳的公司,他们做空间定位技术还不错。所谓无线电波空间定位技术,网上的分类主要为 GPS 和外激光,这些技术实现原理都是差不多,只是实现方式或者系统布置的时候会不一样,或载体不一样,例如用 GPS 的电磁波和红外、激光不一样,所以此处将空间定位技术分成两块,第一个是可见光,也是电磁波的一种,但是实现方式跟上面两个是完全不同的两套架构;第二个就是无线电波。

可见光空间定位技术

可见光空间定位技术的简单实现方式有:

  • 安装好高速摄像头,对着场景快速拍照。
  • 定位物体必须要有marker。
  • 通过图像处理技术,轻易得到marker在图像中的位置。
  • 根据安装摄像头的位置和方向信息,根据透视投影原理,marker能得到一条空间射线。
  • 如果同时有两个(或者多个)摄像头同时照到这个marker,那么可以同时得到两条空间射线,两条空间射线的交点那就是marker在空间中的位置。

依照简单的实现方式步骤,将代码写好,随便布置一下会有初步的DEMO,但是这不意味着简单做一下就能做到很好的效果,这是不可能的。

可见光的空间定位技术通俗原理就是在上面布一个摄像头,下面有一个人在里面走,现在如何知道这个人在走?很简单的道理,如下图所示,有几个球,在专业里面叫 marker ,即标记点,目前这项技术没有得到大规模的推广应用。假设一个人头上带着发光的球,上面有一个摄像头在走,在不断的照着,运动时候拍一张照片,能拍到这个球,用图象处理接口可以比较轻易获得球的轮廓,根据颜色的色差。你用一个摄像头拍的时候,拍到了这个东西,能算出来这个球在图片中的像素位置,得到像素位置之后可以做一个很简单的透视投影(3D渲染中的一个投影方式,你看着一个位置,当位置投影在视网膜上)反转。反转就是得到图片上的任何一个像素,根据摄像机的位置、宽高比,很容易算出空间的射线,就可以知道在哪个点做透视投影可以投到什么位置,所以可以得到一个空间的射线。

 

图片描述

 

如果同时有两个(或者多个)摄像头同时照到这个标记点,那么可以同时得到两条空间射线,两条空间射线的交点那就是标记点在空间中的位置。但为什么现在没有得到大规模的应用呢?笔者的理解是:这种方式首先看起来较傻,而且这样的实现方式有些不足,marker容易被遮挡。若多人同时在一个地方跑,蹲下来,甚至于趴下,这样的需求看起来比较少,但是在 VR 游戏里面这种需求比较多,假定以后玩一个 VR 游戏,随时需要蹲下来,甚至于趴在地上,甚至于手舞足蹈跟人家打一些格斗游戏,最终我们所设想的 VR 游戏,在场景中真实的走动及动作能反映到游戏里面,所以才有动作扑捉。因此具有较好的沉浸感,但是假设你蹲在墙角,或者蹲在一个偏远的地方,或者旁边有人,都是可能有遮挡的,此时遮挡会成为该技术比较致命的伤,没有拍到的话,这个技术就会出现问题,这是不可避免的。

可见光空间定位的优势就是技术成熟,这个技术发展了 20 年, 90 年代就有,以前做一些电影的特效,或者是动作扑捉,基本都是用的类似技术。

 

图片描述

 

同时缺陷非常明显:

  • 过度依赖于环境,一旦环境光源发生变化,可能出现错误;
  • marker容易被遮挡,所以需要多摄像头,尽量无死角;
  • 价格高昂。一个高速摄像头普遍在人民币2w左右。 
    用普通的摄像头其实也能做,但是会有问题,首先是角度,普通摄像头开的角度比较小,照的范围很小。另外是延迟,做 VR ,延迟非常关键,假定每秒钟 60 帧,每秒钟能拍 60 张图片,按 1000 毫秒算,就是十几毫秒读一张图片,得到一张图片需要处理,需要计算标记点,计算之后还要跟整个环境中的其他摄像头做统计、做别的处理,一整套下来至少需要 20 ,甚至于 30 毫秒以上的延迟。如果按照 20、30 毫秒的延迟,目前在 VR 游戏里面是很难达到的,而且还要考虑其他的处理效率,和其他可能出现的意外。目前我们希望的摄像头至少要达到 240 帧以上,效果才是比较理想的, 120 帧不够。基于这几个因素来考虑,这样的技术我认为短期内没有太大的可行性,没有太大的推广价值,目前国内也有一些在做,但是无论是设备的价格,还是可操作性,还有别的东西,并没有达到太好的效果,所以我们目前并没有很倾向于这个技术。

无线电波空间技术

我们常见的GPS空间定位技术,此外还有红外空间定位技术、激光空间定位技术。无线电波空间技术简单的实现方式:

  • 空间中放置N个无线电波接收器,固定好位置。
  • 一个无线电发射器发射无线电波出去,加上时间戳或者是通过其他一些办法能计算到时间戳。
  • 每一个接收器接收到电波的时间是不一样的,根据时间差,能计算到发射器到接收器的距离。
  • 根据到不同发射器的距离,甚至不需要角度,N个球的交点,就是发射器的坐标。

我们做空间定位大多数是使用电磁波,按照目前的物理学理论,光速是宇宙的第一速度,目前来说,电磁波是宇宙中我们所知的最快速度,所以我们用它,因为我们需要很低的延迟,做一个空间定位是做实时定位,如果延迟没有达到 20 毫秒,甚至更低,这个技术是不能做 VR 应用的,可以做 GPS 定位。我们所说的 VR 行业要求,这块是非常高的,所谓 HTC 定义的标准,渲染的时候要达到 90 帧,这意味着现在所有的游戏,魔兽、LOL等,一般最高定义是 60 帧。所以说 VR 游戏的要求相对来说是比其他要高的,目前的 VR 游戏都是非常烧显卡的游戏, HTC 最低的显卡配置是 GTX970 ,其他的游戏再大型其实要求都没有这么高,所以帧率要求,刷新率、频率要求太高的话,必须要用最好的技术或者最快的速度。

目前定位技术很多,但是我们所知道的比较主流的,红外也好、激光也好,还有其他的, HTC 这一套也是基于激光的技术,国外还有一些用红外,主要是红外和激光为主,我们所谓的 GPS 定位,首先会发很多的同步卫星,同步卫星在上面会不断广播一些消息,广播消息会加上时间轴,精确到毫秒下来,用户的手机收到这个时间,就知道用户收到了一个多久之前发来的信号,根据时间、光速,可以算出来发射信号的卫星距离用户多远,卫星都是有编号的,收到的时候用户知道是哪个卫星发过来的,卫星在轨道上运行的位置是已知的,用户已经知道它的位置、跟用户的距离,可以很轻松的理解为就是一个围绕着它的球,用户就在这个球面上。

假定同时你收到两个卫星发来的信号,同样知道跟它们的距离,等于你基本上是两个球的相交,这个还是比较好理解的。假定是三个卫星,基本上能确定你的位置,所有空间定位实现原理都差不多,区别在于整个场地的布置方式,还有要考虑的设备成本和设备的方向。

什么叫做设备的方向?假定这里有一个镜头,有一个激光发射器,它是垂直于地面,往前发激光,如果像一盏灯一样往周围发,这个不讲方向,只知道距离,但是如果平面是固定的,这样是知道方向的。通过增加方向这个信息,会导致整个程序的计算复杂度提高,但是可以更有效。这是把 GPS 定位的原理进行理解,比如 HTC 那套,一般你能看到两个设备,两个黑黑的东西挂在那里,其实这两个东西是不断发射一些激光上去的,你头上的头盔、手上的手柄有很多个光的传感器,说白了就是个接受器,它不断接受那两个发射器发射出来的激光,其实实现原理是差不多的,差别只在于处理的方式。

原理大家看起来都是比较简单的,或者看起来实现方式都是差不多的,为什么市面上没有特别成熟的产品呢?或者说目前市面上没有像GPS那么流行,随便手机上装一个东西就可以很好的定位呢? VR 游戏最重要的是三点:头显、空间定位、动作扑捉。打格斗游戏就是用拳头、脚,不会用鼠标、键盘,打 FPS 可能就是拿把枪,目前行业认为就是这么干的,所以空间定位技术特别重要,但是市面上目前没有特别好的解决方案,让大家可以很容易的体验到游戏。

主要原因:

(1)成本。若一个产品不能进入民用级别,或者客户量没有达到一定的基数,这个行业的发展是会受到非常大制约的。。

(2)有一些技术制约。目前所谓的 GPS 定位是有误差的,一般误差范围是 10 米, 10 米对于 VR 设备来说是完全不能接受的。为什么会有误差?因为它用了电磁波的定位,利用了电磁波的原理,电磁波的速度非常快,非常快就有好有坏,最明显的一点,它的速度并不是稳定恒定不变的,我们所说的电磁波首先在真空中的速度可以理解为不变,但是穿透地球上的大气层或者穿透一些电解质,速度都会发生一定的偏差,这个偏差对人的视觉来说其实是无关紧要的,但是在 VR 计算上就是不可接受的硬伤,所以这个东西目前并没有特别好的解决方案。

(3)精度问题。从数学上或者从工程学上来说,世界上其实没有 100% 的东西,其实都有一个误差,在一个允许的误差范围之内,由于光速速度太快,所谓的时间计算要求就非常高。

光速的速度太快,比如一个卫星开始发电磁波信号过来,计算到现在的时间,现在的时间精确到毫秒甚至微秒,设备接收的时候也得到一个时间,这个时间可能得到毫秒甚至微秒,但是要知道光速 30 万公里/秒,就算是精确到微秒也是不够的,原子钟的技术说白了就是能让时间越精确,能得到的数据就越高。这两个也是制约技术发展的最重要的原因。不提 GPS ,就提现实中用到的 VR 技术空间定位,假如我们用红外或者激光做空间定位, HTC 那一套首先范围有限制,我们常见的 HTC 一套设备两个发射器,一般范围是 4×5 ,做一套室外是不够的,室内大家看起来觉得效果很好,很震撼,很火爆,这个东西如果只能用于室内,不能用于室外,对于技术的发展是制约很大的,我们看到国外用的室外定位的视频,看起来效果很好,不管是用什么技术、算法来做各种各样的优化,我说的这两个原理,从根本上没有技术进步是不可能解决的,算法只能做优化处理,有时候很有用,但是并不是能从根本上解决这个问题,说白了这个问题是存在的,只是通过算法掩盖住了,仅此而已。

目前无线电波空间定位,红外、激光或者其他的一些东西,在全世界来说没有一套特别好的解决方案,能解决室内、室外定位同时价格还合适,所以笔者认为这个在未来的两三年之内会是一个比较大的方向,会有很多的公司不断的做这一块。

若以上问题尚未解决,VR 游戏的体验会受到影响。

动作捕捉技术

早期的动作捕捉是上世纪七八十年代中的电影,其中难以接受的奇葩造型让人觉得诡异。图片中的点都是标记,做一些比较细致的动作捕捉的时候,甚至需要做到手指关节的时候,会看到手指上都是白白的珠在绑着,整个人看起来很怪异,例如飞车飞跃,很多手指上绑着珠子,手腕上绑着珠子,该技术用到两块技术:光学动作捕捉技术和惯性动作捕捉技术。

 

图片描述

 

光学动作捕捉技术

光学动作捕捉技术跟光学空间定位原理大同小异:

  • 在身上合适的关节点做上maker;
  • 多摄像头通过图像处理技术时刻得到任意marker的空间坐标;
  • 空间坐标串连起来得到完整骨骼的运动轨迹。

如要捕捉手指的动作,要在手指上做标记,只需要在需要捕捉的地方做标记,标记的时候周边都布满各种各样的高速摄像头。高速摄像头通过图像处理技术快速得到任意时间的空间坐标,比如手指上有一个标记,手指在不断的运动,做一套标准动作的时候,手指上一秒钟弄 240 帧的摄像头,一秒钟处理好多的图片,就会得到它时刻的空间位置,即一个轨迹,将轨迹集合到之前做好的骨骼里面,做 3D 游戏的都知道骨骼动画,骨骼点足够多,每个点的坐标时刻记录下来,保存下来,得到的就是骨骼动画。

 

图片描述

 

光学动作捕捉技术也发展了十几年,目前全世界来说,该技术的设备比较流行,也算是比较成熟了,但是问题也比较明显。目前虚拟现实领域这套方案是不可能选择的方案。主要原因有:

  • 体积巨大,臃肿;
  • 光学动作捕捉一套设备很多,使用不方便;
  • 价格昂贵;
  • 怕遮挡,一些动作(例如扭打)捕捉可能有问题。

 

图片描述

 

惯性动作捕捉系统

惯性动作捕捉系统简单实现原理:

  • 任意曲线可以细分为无限多个线段;
  • 传感器获得角度,角速度,加速度;
  • 根据位移公式 S = V * t + 1/2 * a *t^2。或者直接两次积分。

 

图片描述

 

惯性动作捕捉设备相对来说价格便宜,国内诺亦腾的整套设备预售价1.8w人民币。它的实现原理其实蛮简单的,上个月有一家以色列的公司推其传感器,是一块非常小的芯片,大概是手指这么小,可以拿着一个芯片装 APP ,芯片绑定在凳子上,凳子移动的同时 APP 里有一把枪也移动。运动的方向和空间、位置都是可以定位得到的。我们所用的手机,只要手机不是太差,都有陀螺仪,你可以在里面旋转,它时刻知道方向, VR 全景视频或者一些游戏,把手机反过来拿,就会把视频调过来看。实现的基础原理是陀螺仪。

原理是在一个芯片上至少要植上一个加速度传感器、角速度传感器,一个传感器在运动的过程中,要时刻知道加速度,还有角速度,还有方向,只要知道这几个参数是很好理解的。首先任意曲线都可以细分为无限多个线段,这个是比较好理解的。即一个点在运动的时候,假定对它的测量间隔非常短,比如一秒钟去到 100 帧,而运动速度并没有特别快,做 100 次测量,运动的每一次位移都可以近似理解为线段。

这个是高中物理里面非常简单的公式,把这里一分两次也是得到加速度。理论上假定用户身上布的好几个传感器,空间中的绝对坐标知道,或者说以用户的身体某一个点建立一个坐标系,然后任意一个传感器相对这个点的相对坐标是知道的。已经知道的时候,运动的时候会有方向并且有速度,有加速度,根据这个加速度和方向其实能算出来任意值,比如 1 秒钟算 100 次, 1 秒钟内任意时刻的位移,是可以得到的,所以通过这种方式也能够得到所有的骨骼点的运动轨迹,知道运动轨迹之后也能得到一条骨骼动画。我们在网上可以任意搜一下诺亦腾的设备,用一个东西类似穿衣服一样,衣服上串了很多标记点,然后做一套动作,在屏幕上会有一个机器人,机器人是跟着你一起动的,你往前走他也往前走,你做什么动作他也做什么动作,体验看起来特别好,在视频上看起来基本上没有什么问题。目前在整个 VR 行业里面可以预见的未来一两年,这样一套设备应该是比较主力的东西。

扑捉仪的不足有误差累计问题,一个物体从 A 点移到 B 点,再移到 C 点,再移到 D点,一个一个点移动下去,很明显会有问题的。原因是从 A 点移到 B 点计算的时候肯定是有误差的,误差很小,可能是 0.000001 ,不可能绝对正确。所有的计算一定是存在精度问题的, A 点的坐标你可以认为是正确的, B 点的坐标已经有了一定的偏差,可能偏差很小,再到 C 点、 D 点、 E 点、 F 点,不断移动过程中,误差不断的累计,前面可能只是误差 0.0001 ,后面的 0.0002 ,因为误差是相对坐标,不是绝对坐标,惯性捕捉全部都是计算相对坐标,误差就是相对误差,相对误差不断累计的时候,最终会出现非常大的问题,也就是没法用。据说早期这样的设备,一开始的时候动作很准,慢慢的越来越不准,越来越不准,到最后变得没法用,这就是所谓的误差累计问题。行业内目前有各种各样的办法来补救,用得最多的就是通过算法上来弥补,我听说诺亦腾这块有一定的办法解决,但是我听说他们是过一段时间做一次绝对坐标的矫正,配合其他的第三方工具是有可能的。

最终怎么实现?笔者倾向于过一段时间做一次绝对坐标的矫正,因为算法不可能做到绝对正确,顶多做到 90% 的正确,已经很厉害了,要长期使用的话肯定是有问题的,所以这个不足应该是会制约技术的发展,我预计未来一两年,诺亦腾这样的设备,或者大量创业公司做的类似惯性捕捉的设备,在线下体验店会得到大量的使用。

VR游戏展示

 

图片描述

 

 

HTC 的推广视频截图

 

 

图片描述

 

从中可以的得出大家所看到的背景是虚的,它是一个游戏场景,但是人是在真实的环境里面玩,绿色场景图我们称之为“绿抠”。背景是纯绿搭建的环境,一个人带着 HTC 的眼镜,拿着手柄在里面玩游戏。为什么看到的是在真实的游戏场景中呢?技术实现原理是:

  • 用一个摄像头对着人拍照,得到实时视频;
  • 视频传到游戏端,硬解;
  • 在后处理中写一个shader,把视频图片做一个mask,一个简单的色差计算即可;
  • 把图片混合到游戏场景中。

目前的游戏直播在直播行业里面占比较大的比重,可能会超过 30% ,所谓的英雄联盟直播、 DOTA 直播,各种各样的游戏直播,但是有一个问题,假设在玩一个 VR 游戏,怎么直播比较合适呢?这就是很明显要处理的问题,假定做VR直播或游戏,去掉人,做一个机器人在这里合适吗?其实这些都不是什么太合适的解决方案。从一个观察者的角度,可能大多数人会觉得这样的直播对于我们或者看直播的人来说,效果未必会很好。因为这样的直播,失去了身临其境的感觉。目前在行业内,很多人都在挖空心思的在想往哪个方向来做。未来我们会考虑绿幕和上帝视角这两种方式解决VR直播存在的问题。

关于:中科研拓
深圳市中科研拓科技有限公司专注提供软件外包、app开发、智能硬件开发、O2O电商平台、手机应用程序、大数据系统、物联网项目等开发外包服务,十年研发经验,上百成功案例,中科院软件外包合作企业。通过IT技术实现创造客户和社会的价值,致力于为用户提供最佳的软件解决方案。联系电话400-0316-532,邮箱sales@zhongkerd.com,网址www.zhongkerd.com


  上一篇   [返回首页] [打印] [返回上页]   下一篇