3D作业 AR/MR技术
3D游戏作业 AR/MR游戏设计
本次作业我们学习了利用Vuforia
制造属于我们自己的AR
小游戏,所以我们本周的作业是:
-
图片识别与建模
-
虚拟按键小游戏
下面介绍我们的具体开发流程,其实最主要的是配置:
文章目录
一、前期配置
因为本次作业使用Vuforia
进行AR
开发,所以我们首先需要使unity
可以使用这一功能:
-
前往
Vuforia
官网,进行注册登录一条龙服务,这个就不用我们多说了。 -
点击菜单栏上面的
downloads
,把上面跟unity
相关的两个包全部下载下来。 -
创建我们的
unity AR
项目,将我们下载好的第一个包导入进来,具体的方法是:assets -> import package -> custom packages
-
第二个包解压下来是一个
exe
文件,我们直接将其下载,下载的目录需要和unity
放在同一个目录下面: -
一切弄完以后,我们应该可以在菜单栏上面的
GameObject
里面看见多出了一个Vuforia
的选项。 -
删去我们的主摄像机,添加
Vufoia
中的AR camera
,使用会提示我们需要下载一些东西,点击确认,可以看见在assets
中多出了几个文件夹:例如editor
、Vuforia
等等。
至此,我们的前期准备工作正式完成。
二、正式实验
1. 绑定key
-
首先我们需要**
AR
功能,具体的设置方法是:edit -> project settings -> player -> XR settings -> Vuforia Augmented Realit
-
然后我们首先需要在
Vuforia
的官网中的develop
中申请一个license key
,直接在license manager
中新建一个license
就好,我们直接选择是个人用途,建造好后,点击开,就能看到它对应的key
。 -
将其复制下来,再进入
unity
中,点击我们之前前期准备工作中添加的ARCamera
,绑定这个key
,方法是:inspector -> Vuforia Behaviour -> Open Vuforia Configuration -> 将复制的key粘贴进app license key
2. 绑定识别卡
-
我们首先进入到上面说的
Vuforia
官网,点击上面的developer
中的traget manager
,创建一个新的target
,并且导入我们的识别图片(图片没有要求,色彩差异大的最好,我们这里面直接用新一小兰的哈哈哈,直接五星) -
我们将上面的这个识别卡
target
包下载下来,并且导入我们的unity
项目中: -
导入后,你会发现
assets
中多出了一个奇奇怪怪的StreamingAssets
文件夹。 -
通过组件添加一个
ImageTarget
,并且将它的数据库和我们导入的数据库绑定,具体的方法是:imspector -> Image Target Behaviour -> Database设置为我们的PaKaQiu
3. 导入模型
导入我们需要的模型,我的是皮卡丘模型,将其拖动到ImageTarget
下面,成为它的一个子级。
4. 运行项目识别
盯,你的小可爱已经上线,由于配置的过程及其麻烦,而且和版本有关,所以当我的小皮卡丘真的出来的时候,我有种不太真实的强烈幸福感。
三、虚拟按钮功能实现
1. 添加虚拟按钮
版本问题害死人,之前的有些版本的教程的VirtualButton
是直接从Vuforia
的文件夹中拖出来的,我找了半天也没找到,emmm……当前版本事实上ImageTarget
中自带了这个玩意儿。具体的添加方法是:
Inspector -> ImageTargetBehaviour(script) -> Advanced -> Add Virtual Button
添加完后,你的Hierarchy
里面应该是这个亚子的:
2. 绑定脚本
调节按钮的位置、大小等使它易于被我们点击,因为我们要制作一个简单的小游戏,仿照潘老师的课件,在按下虚拟按钮的时候让皮卡丘模型扩大,释放的时候输出“释放按钮”,仿照课件我们可以写下代码。
public void OnButtonPressed(VirtualButtonBehaviour vb)
{
print("按下放大"+vb.VirtualButton.Area.leftTopX);
Vector3 v3 = transform.localScale;
transform.localScale = new Vector3(v3.x*1.2f, v3.y*1.2f, v3.z*1.2f);
}
public void OnButtonReleased(VirtualButtonBehaviour vb)
{
print("释放按钮"+vb.VirtualButton.Area.leftTopX);
}
至于注册环节直接按照潘老师的来写就好。
为了方便我们进行标记,我们在虚拟按钮处放置了一个cube。
谢谢TA师姐,圣诞快乐!