VOID SLAM技术,不需要Marker图像,就能在现实环境中自由放置虚拟内容,创造身临其境的AR体验。
一、导言[ ★★★非常重要★★★ ]
1、VOID SLAM技术应用时,一定要将“模型的底面贴着地面”,获得更好的贴地效果,以达到更好的体验。请仔细阅读并参照本教程中[ 四、实现流程 ] ->稆糨孝汶; [ 第八步、模型底面贴着地面,获得更好的贴地感 ]
2、对比图效果示意:

二、阅读指南
1、本教程主要介绍如何在Unity环境下进行操作。默认读者您拥有一定的软件使用、应用开发经验。本教程只会对Unity的基础使用进行简要说明,如果希望更深入的了解,您可以访问Unity官网查看更加详细的教程。
三、搭建环境
1、在进行具体操作前,您需要安装下列软件,准备如下环境:操作系统- Windows 7 或更高版本- OS X 10.10 或更高版本Unity版本支持Unity 3肛舀辨乔D版本为:5.2.x - 5.6.x(32位或者64位),推荐使用5.4以后的版本(渲染效果提升)本教程中使用的Unity版本为:5.5.2(64位)
四、实现流程
1、第一步、新建Unity工程打开Unity,新建一个工程。填写Project name为“VOID SLAM”、选择保存的位置,点击[ Create project ]。

3、选择下载好的SDK文件(.unitypackage),点击[ 打开 ]按钮。

5、如果弹出“API Update Required”界面,请点击[ I Made a Backup, Go Ahead! ]。

7、第四步、拖入预制件“ARCamera”展开[ Assets ] -> [ VoidAR ] -> [ Prefabs ]目录,将预制件“ARCamera”拖至场景中。

9、第五步、设置ARCamera选中ARCamera,查看右侧的“Inspector”栏,设置“Void AR Behaviour (Script)”组件属性。- 设置MarkerType = "Markerless"

11、进入云平台,新注册用户需要先创建数据库,创建开发者自己的识别库以后,才能管理识别资源。点击[ 创建数据库 ],每个账号只允许创建1个数据库。

13、完成后,即可获得“Accsess Key”和“Secret Key”。

15、第七步、添加模型右键点击场景,弹出列表中点击[ Create Empty ]。

17、选中“GameObject”,并将其坐标调整为(0,0,0)。

19、在GameObject下方,创建了一个3D模型“Cube”。

21、第八步、模型底面贴着地面,获得更好的贴地感[ ★★★非常重要★★★ ]VOID SLAM技术应用时,一定要将模型的底面贴着地面,获得更好的贴地效果,以达到更好的体验。
22、要使得模型的底面贴着地面,有2种方法:1. 调整模型的中心点: 使用3d Max等软件,将3D模型的中心点,调整至“模型底部中心”。本教程不详细介绍,具体的操作可以参考:改变模型轴心点的方法
23、 藜局腑载添加参照平面,Unity中直接调整模型坐标位置 Unity中新建的模型,中心会默认在模型正中。通过添加一个Plane平面做参照,将模型底面贴着Plane平面即可。 下文将按照该方法进行设置。
24、新建的“Cube”模型,中心默认在模型正中。创建一个Plane作为参照,右键点击场景,列表中选中“3D Object”,点击[ Plane ]。

26、选中3D模型“Cube”,拖动坐标轴调整其位置,让其底面贴着Plane。(X , Y , Z = 0 , 0.15 , 0)

28、第九步、设置触发事件先选中“ARCamera”,然后再鼠标左键点击“GameObject”,按住不放,将其拖入“MakerlessNode”变量中。

30、选中“GameObject”,点击[ Add Compoent ],添加“Markerless Tracking“脚本组件。

32、接着,需要创建一个脚本,实现Markerless跟踪功能。在Assets目录下,创建一个“Folder”。

34、右键选中“Scripts”文件夹,创建一个新的C#脚本。

36、双击“SLAM”脚本,复制粘贴如下代码,并保存脚本。 using System.Collections; using System.Collections.Generic; using UnityEngine; public class SLAM : MonoBehaviour { void OnGUI() { var btnHeight = Screen.height * 0.1f; var btnWidth = btnHeight * 3.0f; var gap = 20; GUI.skin.button.fontSize = 36; if (GUI.Button(new Rect(Screen.width - btnWidth, gap, btnWidth, btnHeight), "Start")) { VoidAR.GetInstance().startMarkerlessTracking();//开始跟踪 } if (GUI.Button(new Rect(Screen.width - btnWidth, gap * 2 + btnHeight, btnWidth, btnHeight), "Reset")) { VoidAR.GetInstance().resetMarkerless();//重置 } } }
37、选中“ARCamera”,点击[ Add Compoent ],添加“SLAM”脚本。

39、第十步、保存场景选中[ File] -> [ Save Scenes ] ,进行场景保存。

41、第十一步、打包Android或iOSVOID SLAM需使用惯性测量单元(简称IMU)。因PC端没有IMU,故无法进行调试,需要打包至手机端(Android或iOS)才能体验到实际效果。打包流程分为“Android打包”、“iOS打包”。
42、- Android打包打包Android,需要将Unity切换至Android平台,点击[ File ] -> [ Build Settings... ]。

44、点击[ Switch Platform ]按钮,完成Android平台的切换。

46、弹出界面选中“External Tools”选项,设置Android SDK和JDK。如果本地没有SD憬悸原蠼K和JDK,可以点击后方的[ Download ],在弹出的网页上进行下载即可。安装完成后,设置好SDK和JDK的路径就可以了。

48、选中[ File ] -> [ Build Settings... ],取消默认场景前方的勾选。然后点击[ Add Open Scenes ],添加当前的场景。

50、点击[ Player Settings... ]按钮,查看右侧的“Inspector”栏,设置属性参数,您可以自定义。- 设置Company = "VO朐袁噙岿IDAR"- 设置Product Name = "VOID SLAM"- 设置Bundle Identifier= "com.VOIDAR.SLAM"注:Bundle Identifier不能使用默认值,否则无法打包。

52、设置文件名为“VOID SLAM”,点击[ 保存 ]按钮,开始打包。

54、完成后,将生成一个“VOID SLAM.apk”文件,安卓打包完成。
55、- iOS打包iOS打包需要在Mac OS系统中完成,需要准备Mac设备(如MacBook Pro、MacBook、iMac、Mac mini等)。在Unity中,将开发平台切换至iOS,然后Build生成Xcode工程。注:推荐使用Mac设备的Unity软件来生成Xcode工程。如果之前是在Windows环境下编辑的,可以将Unity目录下的整个工程文件,拷贝至Mac电脑中进行编辑处理。
56、启动Unity,打开之前保存的、或者拷贝过来的VOID SLAM工程文件(工程已经打开的,跳过这步)

58、将Unity切换至iOS平台,点击[ File ] -> [ Build Settings... ]。

60、点击[ Switch Platform ]按钮,完成iOS平台的切换。

62、选中[ File ] -> [ Build Settings... ],取消默认场景前方的勾选。然后点击[ Add Open Scenes ],添加当前的VOID SLAM场景。

64、完成设置后,点击[ Build ]按钮。

66、打开生成的Xcode文件。

68、General页面往下拉,在Linked Frameworks and Libraries中,点击“+”。

70、添加完成,Linked Frameworks and Libraries下方出现“Accelerate.framework”。


73、数据线连接iphone或者ipad,点击[ 运行 ],即可打包。

4、至此,VOID SLAM制作完成。