随着Unity版本的不断更新,越来越多的优秀的插件被Unity官方集成,于是我试着体验了一下Unity内部继承的Vuforia的AR系统。
新建一个工程。
在默认场景内添加一个AR Camera,此时会弹出
询问你是否添加VuforiaAssets,这里选择添加。
删除掉原有的摄像机。
在PlayerSetting下勾选Vuforia Augmented Realit选项,此时工程已经可以运行,并且调用设备的摄像头进行图片识别。
在ARCamera下添加一个Image
该组件将会作为ImageTarget出现在场景内
接下来该去自定义识别的图案了,选中ImageTarget
点击AddTarget按钮,会自动跳转到Vuforia开发者账户,没有就注册一个
点击GetDevelopmentKey,注册一个APP,注册完成之后,按照提示复制lisencekey。
找到Rescources/VuforiaConfiguration ,将刚才复制好的lisencekey复制到下图位置
回到开发者官网,是时候注册我们自己的识别图像database了,点击TargetManager,Add database,然后上传自己的图片。
图片上传完成之后,需要我们自行下载database,点击如下图右下角,Download Database。
下载下来之后,我们把DataBase文件解压到Editor/Vuforia/ImageTargetTextures下面,
选中ImageTarget,此时进入ImageTargetBehaviour
将Type设置为RreDefined,我们可以选择本地已下载好的Database,内部的图片也已经可以自由选择。
将模型拖拽到场景中,放在ImageTarget子项中。
这样模型显示的步骤就算是初步完成了。
下面该轮到脱卡功能的制作了。
选中ImageTarget,进入其身上挂载的脚本TrackableEventHandler,我们可以看到,这里写着一切关于目标丢失,目标找到的回调方法。
那么接下来,我们需要改写这些方法,新建一个脚本,重命名我这边命名为M_TrackableEventHandler,将原TrackableEventHandler的代码复制进来,然后我们开始改写。
由于我选择的是在模型卡片丢失的时候将模型放在ARCamera下,所以我这里储存了ARCamera的位置
也可以根据自己的喜好来修改位置。
我们点开 PROTECTED_METHODS,会发现下图两个方法
这两个方法就是控制识别目标匹配/不匹配时的两个方法,可以看到,found的时候是显示模型,打开触发器,打开canvas等,而lost与之相反,此时我们需要改写Lost方法。
因为脱卡的目的就是,模型的识别目标丢失之后,模型依旧可以显示,那么我们首先假设这个lost内的所有语句都可以注释。
注释,然后运行工程,可以发现模型从一开始就显示在了场景中,很显然,这个lost在工程运行没发现目标的时候是会去执行一遍,用于隐藏我们的模型的。
于是,我将这段代码放在了Start方法内,在脚本执行的时候隐藏我们的模型。
运行工程,将目标图片置于摄像机前。这次与我们的目的是一样的,在工程运行的时候未发现目标的时候模型是不显示的,一旦发现目标,模型将持续显示下去。