Pokémon GO国内玩不了?腾讯AR专家教你自己做!

2024-05-05上海AR开发专家

  • Pokémon Go一出,新鲜的玩法、经典的IP效应让这款使用了Unity以及
    AR技术
    的手游火遍了“大洋”南北。可惜的是这款新鲜的游戏还没有惠及中国市场的玩家们。腾讯内部的AR专家秉持着“一言不合就自己开发”的原则,自发对
    AR游戏
    进行了预研,本文将通过在Unity中对OpenCV及
    Vuforia
    库的使用,简单介绍制作AR游戏的一系列流程。
    如果你在街头巷尾 看到这样拿着手机到处晃悠的景象 他们一定是在抓小精灵! 
     《Pokémon Go》采用AR技术 只需一台自带GPS功能的智能手机 就可以满世界地找小精灵 然后扔精灵球以捕获精灵 那么问题就来了 AR技术是什么?
    增强现实
    (Augmented Reality,简称AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。简单的说,在Pokémon Go这款AR游戏中,精灵是虚拟的, 地图是真实的,虚拟的精灵出现在了真实的地图之中,给了玩家十分新鲜的体验。
    于是 
    Pokemon
    Go拯救了无数的死宅们 大家上街抓 
    上厕所也抓 
    不过,Pokémon Go现在还拯救不了国内的死宅们 目前Pokémon Go在国内已被锁区 而解锁的时间还不确定。。。
    然而!腾讯的技术大牛在遇到新鲜事物的时候是拦不住的!秉持着“一言不合就自己开发”的原则,大牛决定,自己做一个AR游戏!! Pokémon Go的游戏引擎用到了Unity技术,在腾讯大牛预研的AR游戏中,分别用到了OpenCV及Vuforia库,下面将简单分享下两个库的使用。  想收服小萝莉吗?
    一、OpenCV篇
    OpenCV是英特尔发起并参与开发的计算机视觉库,在图像处理、模式识别及计算机视觉领域被广泛使用,这里就不做过多介绍了。
    1.1 OpenCVForUnity
    Unity有现成的OpenCV库,使用起来很方便。 具体使用方法: 1.导入OpenCV for Unity.unitypackage 2.将导入后OpenCVForUnity目录下的Plugins和StreamingAssets文件夹移到Assets目录下 OpenCVForUnity目录下的Samples里有很多写好的示例,比如阈值分割、霍夫变换检测直线、人脸检测等,如果想运行需要在Build Settings里添加好对应场景,其中有的需要用到摄像头。 
    1.2 OpenCV在Unity中的应用
    背景是组里基于Unity做的一个AR小游戏——打飞碟,其中使用OpenCV实现了红外效果及人脸检测: 红外模式:  
    当场景中出现了半透明的敌机时,可开启红外模式看清隐形敌机的位置。 这里主要用OpenCV对摄像头获取的图像做了颜色变换:首先将图像转为灰度图(cvtColor),然后基于某个色谱,根据不同的灰度值映射为不同的颜色(applyColorMap)。 对于此类滤镜也可以通过Unity的Shader来做(如下图),相比OpenCV性能要好些,但OpenCV做图像处理更灵活,也可以尽量去优化: 1.限制图像的更新频率; 2.降低图像的分辨率(OpenCV可以用resize); 3.对于必要的Mat可以在类初始化时申请好空间,不用每次处理图像都申请再释放; 4.利用多线程(主要用在了人脸检测模块)。 
    好友助战: 
     遇到强大Boss时,可将摄像头对准好友(人脸),当检测到人脸时,会出现好友助战剧情,协助攻击Boss。
    面具怪: 
     同好友助战模式也利用了人脸检测,当在图像中检测到人脸时,会出现附着在人脸上的面具怪,并跟随其移动。 首先,简单区分下人脸检测和人脸识别这两个概念:人脸检测是找到图像中人脸的位置、大小,而人脸识别不仅要检测出人脸,还要知道这人是谁。 OpenCVForUnity中的人脸检测示例用到了基于Haar特征及LBP特征的两种分类器来检测人脸(已经训练好的分类器,想自己训练或者自己实现性能更优的算法可以去咨询优图~),同时也用到了多线程来异步计算,对于在性能较差的移动设备上来实现人脸检测具有较好的参考性。 对于移动设备,人脸检测计算量较大(Unity本身开销已经不小了),所以不能对每帧图像都进行检测,可以利用多线程进行异步计算: 
    好友助战模式是检测到人脸后,在人脸上添加一些装饰物(copyTo用装饰物的PNG图片做掩膜)作为剧情的一部分;而面具怪则是根据检测到人脸的位置和大小来改变怪物的位置和大小。此外,如果进一步需要进行人脸识别,那不建议在移动设备上做,性能肯定吃不消了,可以用云,将计算放在服务器上。
    二、Vuforia篇
    Vuforia是高通的增强现实库,对unity支持好,使用起来简单方便,如下图所示为组内使用Unity+Vuforia开发的坦克大战AR版:通过识别预先设定的标志物(此处为lena头像),从而确定游戏世界所在的平面及大小,和实景结合展现出坦克大战游戏场景。 
    简要介绍下Vuforia在Unity中的使用:
    1.在官网注册账号后,首先注册一个License,并记下License Key;
    2.下载Vuforia库导入到Unity中;3.选取一张待识别图片上传到Target Manager,如下图所示
    创建Database: 
     添加待识别图片: 
    4.生成库后,注意Rating的星级,越高越好(识别度越高);将库下载下来导入到Unity中。
    5.在Unity中搜索ARCamera和ImageTarget,并拖到场景中,ARCamera中的App License Key填入刚才申请的License Key,Database Load Behaviour(Script)中勾选”Load QQ Database”(这里根据Database的名字有所不同)和”Activate”,在ImageTarget中的Database选择刚才申请的识别图片Database的名字(QQ),此时场景中会出现识别图片
    6.根据识别图片(ImageTarget)的相对位置将游戏物体或场景作为ImageTarget的子物体进行摆放。
    7.按照上述步骤即可在Unity中简单使用Vuforia库,如果有更多需求可以去了解下它的其他功能及API;例如,为了增强识别效果,可以加入摄像头的对焦:
    Vuforia.CameraDevice.Instance.SetFocusMode(Vuforia.CameraDevice.FocusMode.FOCUS_MODE_TRIGGERAUTO); 在实际使用中,Vufroia库简单易用,识别准确度较高,对手机性能消耗适中,但构建的虚拟场景容易因环境干扰发生一定抖动,影响玩家游戏体验;可同时识别多个物体,但准确度有所降低;长时间游戏会导致摄像头发烫。
    为了避免以上手游性能方面对游戏的负面影响,可以利用一些现成的测试工具进行深度的检测,腾讯WeTest平台下的Cube工具可以帮助开发者发现游戏内分类资源的一个占用情况,尤其是对游戏场景中的FPS、CPU、PSS的变化趋势重点关注,帮助在游戏开发过程中不断改善玩家的体验。目前功能还在免费开放中。
    体验地址:https://wetest.qq.com/cube
    关于测试报告的问题:https://wetest.qq.com/guide/view/?id=267 
    使用帮助:https://wetest.qq.com/guide/view/?id=266 
    常见问题:https://wetest.qq.com/guide/view/?id=268

关于AR

卓越的技术,一流的团队,为您打造专家级AR产品。
Test your infrastructure

什么是AR?

AR(Augmented Reality),即增强现实技术能将虚拟信息(图片,视频, 音频等)融入现实世界,让现实世界更加多元、丰富,为人们带来更加生动有 趣的感官体验。简单来说AR技术给人们带来的是一种信息的增强体验,它也 将成为一种“更新奇、更易传播”的新型信息传递方式。

AR的趋势

在信息技术化的时代趋势下,AR将以一种新型娱乐及信息交互方式融入人们 的生活,而对于企业来说,AR产品的广泛推广及运用也将是一项不可错失的 绝佳商机。

Test your infrastructure

AR运用的困惑

AR技术备受瞩目,然后实际运用上却让人望而止步。
成本上 往往单制作一个AR形式的内容就得花费上万元, 只有高预算的大企业或广告商才能出手
技术上 AR技术总给人一种触不可及的印象,导入AR技术 是否需要高度技术支持。
企划上 AR充满娱乐性,但是好玩之外,如何将AR良性结 合商务是难题。

选择迅速AR的八大优势

迅速AR始终以满足顾客为己任,成就AR领先品牌。

经典案例展示

我们是AR应用的领军者,专注AR技术研究与开发。

新闻动态 · 与日俱进

我们诚心邀您分享我们的成长历程。
更多动态 >

合作伙伴

整合全球产业链资源,服务超过7亿用户