一种基于游戏引擎的AR模式探讨(上)

作者:Lefland
2018-06-28
5 0 4

前言

因为对 AR 游戏领域的好奇,在网上搜集了一些资料。但是关于 AR 技术在游戏中实际应用的文章较少,而且大多数文章只是简单的介绍高通的 SDK 的使用,没有关于 AR 的核心技术。

简单了解目前的 AR 模式,大多数都是通过对相机中环境的检测,包括使用一些识别图去进行 AR 的检测触发。然后再通过对图像的叠加完成增强现实的效果。后来看到一篇关于 unity 实现 AR 的文章。尽管文章中实现的是一个 APP。但是它这种关于 AR 的想法我认为是完全可行的。在该作者想法的基础上,我构建了一种不同于现在常见 AR 的一种系统架构。由于我暂时没有发现其他人对这种 AR 模式的定义,为了阐述的方便,我在这篇文章中将这种 AR 系统称为 Lefland’s AR,简称“L-AR”。

最初我是以游戏架构为主提出的,但是随着这个想法的成熟,我发现这个模式(L-AR)不仅可以创建出全新的 AR 游戏方式,而且可以应用到未来的实际生活中,作为一种生活中的 AR 技术来使用。

接下来我将分成三部分讲述这种模式(L-AR),第一是现有 AR 的分析,第二是 L-AR 架构方式的整体系统阐述,最后是 L-AR 在未来的应用与发展以及这种模式可能会出现的问题。

第一部分

现有的 AR 技术,以高通的 AR SDK 为模板来阐述一下现在的 AR 模式。先来说一下这种 AR 使用的操作,主要是以识别图为主,将所需要的识别图上传到高通的网站,然后可以生成 unity 的文件,导入到 unity 中,然后对想要显示的模型进行设定,绑好 AR 相机,就可以完成目前很常见的通过图像识别显示出的 AR。

因为其中很多的技术都被封装了,所以也不好说其中比较有技术性的部分。就单独来看最终呈现时的图像层次。后面的一层,就是我们相机拍摄的环境。前面的一层是呈现在识别图上的模型,通过识别图去定位模型的景深。最后通过两层图像的叠加,完成最后呈现给用户的状态。这种模式已经很成熟了,而且操作难度不高,个人开发者也完全可以掌握其使用。

然后我们来看一下这种模式的 AR 的缺点。总体而言,这样的 AR 很难给用户一种类似于 VR 的沉浸式体验,尤其是应用在游戏中的时候。很多时候这个 AR 只是个会动的模型,很难在游戏的模式中有所创新。而且受限于技术的封装,没有办法完成很多底层的修改。其中,识别图定位以及无图定位,都是使用图像识别技术来完成的对图像的质量要求较高,并且容易出现“漂浮感”,让人感觉模型漂浮在空中,让人很难有沉浸式的体验。较为单一的互动模式,还有对背景地点无交互(背景只是单纯的背景,换成任何其它的背景或是纯黑最后的效果也是一样的),这些都是制约了 AR 开拓游戏市场的问题。

第二部分

分析:

一、首先我们来分析一下理想中的 AR 需求,以《剧场版刀剑神域》为例,来看一下我们理想中的 AR 是一个什么样子:男主角参加了一次多人线下的 BOSS 战,然后玩家们戴上了 AR 设备,拿着体感控制器就一起上去打 BOSS 了。这一段中,我们可以看到,游戏的场景是在现实场景的基础上增强得到的,保留了场景中的可以移动的空间的设定,仅仅是在一些建筑的外形加以装饰。这是第一条,对原场景的保留和增强。在游戏中,我们有队员,并且可以实时看到他们在游戏中的样子,并且可以在旁边显示玩家信息。。这是第二条,多名玩家在同一场景中的实时交互。不同玩家可以在不同的位置看着同样的 BOSS 对他们发动攻击,这是第三条,公共 AR 环境的唯一性。

二、从上述几条中,我们就发现了目前 AR 系统中存在的问题。由于使用的是识别图或者是获取相机景深建立空间模型的方式,无法对多人的游戏环境进行实时的同步并且建立唯一的绝对空间。玩家设备间的互相定位和交互的实现也是较为困难的。

新的模式:

在前人的想法的基础上我构想出一种 L-AR,通过游戏引擎内对现实世界的提前构筑并通过画面的叠加来完成一种增强现实的效果。

一、画面层次分析:

最后一层是相机捕获的现实场景,向前一层是引擎中的游戏场景,游戏场景中隐藏所有地形,只保留需要在 L-AR 中出现的游戏内容。再向前一层是游戏的 UI 和玩家的操作面板。将这些叠加在一起达到增强现实的效果。

二、系统结构分析

以 Unity 为例,我们的整体思路是把玩家在现实中的实景和游戏中的场景结合起来,因此,我们需要:

  1. 一个第一人称的相机
  2.  一个按照真实场景的真实尺寸搭建的环境(在游戏中隐藏)
  3.  游戏中应该有的模型(NPC,敌人,BOSS,道具,武器,宝箱)
  4.  一个用来映像相机获得的图像的背景平面(跟随相机)
  5.  玩家的输入控制
    (1)相机的移动通过手机传感器获取的 GPS 坐标的差值进行移动,通过加速度传感对微小的移动进行矫正,并且对相机的旋转和俯仰进行控制。使得外部世界和游戏内世界始终保持同步。
    (2)玩家可以通过手机屏幕上点击虚拟按键来使用物品,打开宝箱,发动技能,和目前的手机游戏相同(以 RPG 游戏为例)
  6. ⑥和正常的同类型游戏别无二致的游戏系统
  7. ⑦针对你想要进行游戏的场地进行实地的考察,并且将所有的游戏元素结合现场的实际情况进行安排和布置,打造一个独一无二的 AR 游戏世界。

三、以 Unity 为例,在构建中的技术难点问题的解决方案

  1. 首先是玩家的移动,我们需要在 unity 中获取手机的 GPS 信息,由于目前的 GPS 定位的误差较大,无法直接用于我们的移动。所以我选择采用 GPS 位置的差值进行位置的定位。玩家需要在现实场景中一个固定的位置开始游戏,然后这时定位玩家的 GPS,作为原点。之后不断刷新玩家 GPS 信息,并且更新相机的位置。
  2. 相机跟随手机角度的旋转:通过手机的加速度传感器获取手机当前的状态信息,通过四元数的方式传递给游戏中的相机。传感器获得的信息可能会因为手机的抖动产生扰动导致偏移,这时我们需要在代码中加入一个低通滤波器来除去高频的杂波。
  3. 游戏中物体与现实世界的真实交互:我们需要整个场景的建模,然后对它们添加碰撞器,将对他们的渲染关掉,让其在相机中不显示。并且调整渲染顺序,使透明的场景可以遮挡游戏中的其他物体。达到一种“真实”的感觉。
  4. 联机游戏的设计:通过 P2P 对等网络进行区域内玩家信息的传输。
  5. 游戏性:单机游戏可以向 Rougelike 冒险发展,以随机物品和战斗为主。联机游戏可以向 MMORPG 发展,以线上线下的社交为主。

本文为用户投稿,不代表 indienova 观点。

近期点赞的会员

 分享这篇文章

您可能还会对这些文章感兴趣

参与此文章的讨论

  1. miles^away 2018-06-28

    学习了,正好对 AR 有兴趣

  2. 761238656276 2018-06-28

    感谢作者!

  3. Xenobird 2018-06-29 新浪微博会员

    不好意思,正好我也是做AR领域游戏的,不得不泼一盆冷水。关于相机定位的问题可以交给ARCORE或者ARKIT这种手机自带的SDK来做,分别对应安卓和IOS平台,完全不需要自己去写什么GPS或者陀螺仪的位移算法,这是极其简单的。你这个方案里面最大的困难在于现实世界物品在虚拟场景种的建模还原,单靠目前的手机相机完全做不到的,没有深度相机,现在ARCORE和ARKIT能做到的只是检测水平面和竖立面而已,离建模还差十万八千里。有可能实现的是谷歌已经废除的tango项目,带深度相机的方案。

    最近由 Xenobird 修改于:2018-06-29 14:17:58
    • Lefland 2018-06-29

      @Xenobird:所以这是我说的这种模式和现在普遍的AR的最主要的区别,就是对真实世界在游戏世界中的提前构筑,尽管目前来看这种模式的弊端很大,玩家没有办法在任意的位置去进行游戏,但是可以以一些公共场合作为试点。不去选择技术上较为困难的深度相机,从一种更为简单直接的角度去看待AR。在未来数据存储技术能够存储所有的信息时,那么它和景深相机所达到的效果将很接近。
      对于里面的程序控制,我只是提出一些理论上的解决方法,前人造好了轮子当然就可以直接去使用。
      我这个文章不是为了讲解AR。而是在思考现在AR发展的另外一种可能性。目前识别AR技术发展的已经很好了,但是却看不到一些游戏上的大作,所以我在思考一种更适合游戏的AR方式,尽管方式有些简单粗暴。但我认为这可以是一个方向。

您需要登录或者注册后才能发表评论

登录/注册