使用Unity开发AR游戏的基础配置与操作可以参考老师的博客,里面写的非常详细,很适合入门。
但是老师的博客里面介绍的是旧版本的unity配置,现在到官网下载安装 Vuforia 插件时步骤有些不同,所以在这里简单介绍新版本Unity(我的是Unity2.19.3.f1,按照官网介绍大于2017的版本应该都类似)下的配置过程。
新版本Unity安装Vuforia扩展包
打开你做AR的unity项目,点击页面左上角的file --> Build Settings
选择上图左下角的"Player Settings"。
此时这里的Vuforia Augmented Reality Supported
应该没有被选上,将这一项打上勾(如下图),然后等待扩展包被引入。
现在在unity中使用create时,就出现了Vuforia的相关组件
可能遇到的问题
- 新版本unity的Vuforia组件中没有虚拟按钮(virtual button)
大多数网上的教程里都是prefabs里带有virtual button的预制体,但查看vuforia官网就可以发现,2017年起unity就已经集成了vuforia插件,而且virtualbutton的功能被集成进了ImageTarget的Inspector里
- AR 模型抖动问题
模型的抖动和硬件的性能有关系,在不改变vuforia识别算法和追踪算法的前提下,我们能做就是优化自己的项目。-
让相机离模型远一些
实际操作时可以发现相机镜头距离模型越近,模型就抖动的越厉害,这有可能是因为镜头对image target中识别点边少了导致的不稳定,所以在实操的时候可以使模型和target image离镜头稍远。 -
优化美术,减少模型面数
使用较简单的模型能够减小渲染的难度,会在一定程度上减轻抖动的发生。 -
提高 image target 的星级,使用更容易识别的 image target
在添加image target到数据库后网页上会显示该图片的星级,比如下面这张图就是4⭐。这里的⭐表示图片的识别度,理论上来说图片越复杂,那么他的识别度就越高。而识别度高的图片对于识别速度和防抖动都有很好的帮助。
-
AR 游戏实现
在开始制作AR游戏时我本想做成交互性比较强的,并且还做成了一个设计为主角突破守卫取得宝箱的半成品AR游戏。但是很遗憾的是,有可能是我的电脑摄像头比较差,或者我摆放target image的动作不到位,我在图上设计的虚拟按钮很难使用,要点好几次才能点到那个按键,所以该方案不得不pass。
由于这个原因,接下来设计游戏时我主要选择观赏性较强的。在之前的作业中我们曾实现过一个只有太阳、地球、以及月亮的简单太阳系。我把之前的小练习扩展了一下,变成了整个太阳系(太阳系加上八大行星),每个星球都有自转以及公转。最终用AR实现后效果看起来还不错。
接下来以太阳系游戏为例简单介绍一下制作AR游戏时该如何编程。
-
游戏对象创建
要让太阳系出现AR的效果,那么游戏对象必须被创建在image target下。所以第一步是在image target下面依次创建太阳以及八大行星,并将位置、大小以及贴图调整好。
-
添加脚本
星球有自转和公转的能力,所以对每个星球添加两个对应的脚本
using System.Collections;
using System.Collections