目录
前言
这是虚拟现实课的大作业,也是我第一次学习unity的AR开发。因为老师给的参考教材比较老,很多教程中的方法都没办法使用,我在摸索的过程中也出现了很多问题,所以特地在这里记录一下第一次学习AR的过程。
一、下载工具
1. Unity Editor下载
1)首先要下载unity hub,在这里面对所有的unity编辑器进行管理;
2)打开unity hub后,点击“安装编辑器”:
3) 选择一个unity编辑器进行安装,最好选择长期支持版LTS:
4) 点击安装按钮后,在添加模块界面里面选择需要的模块:
1)Microsoft Visual Studio Community 2019:unity中编写C#脚本需要使用,如果你的电脑中已经有vs了,就可以取消勾选;
2)Android Build Support:必须要选,下面的两个SDK&NDK和JDK都要选上,因为开发的程序最终会打包成apk在安卓手机运行,需要Android的支持;
3)下面的语言包随意。
5) 点击“继续”后等待安装完成即可。
2. Vuforia下载
1)打开vuforia官网,选择上方的Downloads进入下载界面:
2) 在SDK子栏目下,可以切换不同版本,我这里选择了最新的10.6版本,选择好后点击下面第一行Add Vuforia Engine to a Unity Project:
注意:虽然最后是在Android手机上运行,但是不需要选Download for Android
3) 下载完成后是这样的:
因为vuforia官网现在已经更新到10.7版本了,使用10.7可能会报错说sdk版本不匹配,所以我把10.6版本的上传到这个链接了,需要的可以去下载:
传输链接:https://cowtransfer.com/s/a3dfd196eb6e47 或 打开【奶牛快传】cowtransfer.com 使用传输口令:hr3eog 提取;
二、项目构建
1. 新建Unity工程并导入Vuforia包
1)新建一个项目,选择3D模板,点击“创建项目”:
1)因为我们要使用的是导入的vuforia工具,所以不需要unity自身的AR模板
2)工程路径必须是全英的,否则后面build的时候会报错
2)工程打开之后,直接把下好的vuforia包拖到下方Project栏下面的Packages文件夹里面,直接拖进去就可以:
3)拖进去后,就会出现导入的窗口,虽然看起来就4条(我搜到的教程里面有很多条,可能是版本原因),但是导入之后确实是可以用的,如果有弹出的窗口,点update就可以:
4)如果导入成功,在GameObject中是能够找到Vuforia Engine组件的:
2. 使用Vuforia组件搭建AR场景
1)目前工程中只有一个Main Camera和Directional Light,在GameObject选项中找到Vuforia Engine,选择AR Camera,然后把原来的Main Camera删掉:
2)在左侧的hierarchy面板中选中刚刚创建的ARCamera,然后在右侧inspector面板中找到Vuforia Behavior,单击下方的Open Vuforia Engine configuration进行配置:
3)然后在右侧的inspector面板中点击Add License,需要添加Vuforia的许可证:
4)点击后会跳转到官网,先注册一个账号然后登录:
5)登录成功后在License Manager选项卡下面点Get Basic(其他的应该都是要花钱的):
6)然后输入许可证的名字,勾选下面的选项,点击Confirm,就可以获得许可证了,将获得的许可证粘贴到工程的App License Key里面即可:
7)在Inspector面板中往下滑,找到Play Mode,把PlayMode Type修改为WEBCAM,即调用自己的摄像头,下面的Camera Device可以不用管,出现的警告也可以忽视,不影响后面的运行:
8)ARCamera创建好之后,在Vuforia Engine中选择Image Target,创建一个要识别的底图,选中创建好的Image Target,在右侧的Inspector面板中找到Image Target Behaviour,修改Type为From Database:
注意:新建的Image Target不能修改Transform中的值,我第一次改了之后识别没有结果,原因我也不太懂
9)可以使用自己创建的数据库(创建许可证的那个页面中选择Target Manager-Add Database即可创建),也可以直接使用Vuforia默认的数据库,我这里使用的是默认的:
10)选择图片之后就可以在场景中看到了,因为尺寸比较小,需要放大才能看到:
11)在Image Target下创建一个要显示的物体模型,我这里选择的是3D Object-Cube:
12)最后一步,这个Cube相对Image来说是很大的,我们需要调整Cube的大小和位置,让它正确合理地显示在Image Target中间,也就是最后识别出来后Cube显示的位置和大小,可以参照我的设置:
三、打包运行
1. 编译设置
1)选择File-Build Settings设置:
2)选择Android,如果上方的Scenes In Build窗口中没有你搭建的场景,就先点击Add Open Scenes将当前场景加进来,然后点击Switch Platform:
3)点击左下角的Palyer Settings,在弹出的窗口中找到Player选项,选择右边的安卓小机器人,可以看到下面一共有5个设置:
4)首先打开Other Settings,在Identification中找到Minimun API Level,选择API Level 24及以上的,不然可能会有警告:
5)然后打开Publishing Settings,选择Custom Keystore,如果没有就点击Keystore Manager创建一个并保存在本地,创建完成后点击Select-Browse,在本地找到刚刚保存的keystore,然后在下方选择Path和Alias,并输入刚刚创建时设置的Password:
6)所有设置完成后,点击Build选择存放apk的路径,最后将生成的apk文件直接发送到手机安装即可,生成的另一个文件夹可以不用管:
2. 运行效果
1)在手机上打开刚刚生成的apk程序,然后对准刚刚设置的识别图Image Target,可以看到,一个正方体模型出现在手机屏幕上,而且还可以左右移动手机屏幕对这个正方体进行多角度的观察,正方体和图片之间的相对位置是不变的:
2)也可以直接在电脑上运行,点击unity工程中的运行按钮就可以,不过电脑只能使用前置摄像头。
四、问题及解决方法
问题1
问题:在Publishing Settings中选择Custom后出现警告:
解决方法:在Other Settings中找到Configuration,将下面的Scripting Backend改为IL2CPP,然后将ARM64打上勾
我在学习的过程中其实遇到了很多问题,最后才形成了我上述写出来的步骤,有很多问题我在上述步骤中已经提到了,所以这里不再赘述,如果还有什么忘记写的问题,我会再补上。