Show / Hide Table of Contents

    VOID SLAM (Markerless)

    Note

    支持:Android / iOS

    说明:VOID SLAM是太虚AR自主研发的多元融合的技术,需使用惯性测量单元(简称IMU)。因PC端没有IMU,故无法进行调试,需要打包至手机端(Android或iOS)才能体验到实际效果。


    导言 (★★★非常重要★★★)

    Important

    VOID SLAM技术应用时,一定要将“模型的底面贴着地面”,获得更好的贴地效果,以达到更好的体验。

    请仔细阅读并参照本教程中[ 第八步、模型底面贴着地面,获得更好的贴地感 ]

    对比图效果示意:

    101

    动态图效果示意:

    SLAM01_cn

    SLAM02_cn

    一、简介

    VOID SLAM技术,不需要Marker图像,就能在现实环境中自由放置虚拟内容,创造身临其境的AR体验。

    二、阅读指南

    本教程主要介绍如何在Unity环境下进行操作。

    默认读者您拥有一定的软件使用、应用开发经验。

    教程中只会对Unity的基础使用进行简要说明,有关Unity使用的更多信息,请访问Unity官网查看。

    三、搭建环境

    在进行具体操作前,您需要安装下列软件,准备如下环境:

    操作系统

    • Windows 7 或更高版本
    • OS X 10.10 或更高版本

    Unity版本支持

    Unity 3D版本 太虚AR SDK功能
    5.6.x 全部支持
    2017.x 全部支持
    2018.x 全部支持
    2019.1.x 全部支持
    2019.2.0 全部支持
    Note

    本教程中使用的Unity版本为:Unity 2017.4.13

    Unity 3D下载地址:https://unity3d.com/cn/get-unity/download/archive

    四、实现流程

    第一步、新建Unity工程

    打开Unity,新建一个工程。填写Project name为“VOID SLAM”、选择保存的位置,点击[ Create project ]。

    1

    第二步、导入太虚AR SDK

    选中[ Assets ] -> [ Import Package ] -> [ Custom Package... ],导入太虚AR SDK。

    2

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

    3

    弹出界面,点击[ Import ],导入过程需要耐心等待一段时间。

    104

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

    5

    第三步、删除Main Camera

    Note

    Unity3D打开时默认是新的Scene,新的Scene自带一个Main Camera和Directional Light对象,我们需要用SDK的ARCamera,故将默认的Camera删除。

    右键选中场景中自带的“Main Camera”,点击[ Delete ]删除。

    6

    第四步、拖入预制件“ARCamera”

    展开[ Assets ] -> [ VoidAR ] -> [ Prefabs ]目录,

    将预制件“ARCamera”拖至场景中。

    7

    操作成功后显示如下。

    8

    第五步、设置ARCamera

    选中ARCamera,查看右侧的“Inspector”栏,设置“Void AR Behaviour (Script)”组件属性。

    • 设置MarkerType = "Markerless"

    105

    第六步、设置App License Key

    打开云平台网址,注册账号并登录。

    网站地址:https://cloud.voidar.net

    10

    进入云平台,左侧点击[ 创建SLAM应用 ]。

    107

    点击[ 创建应用 ]。

    108

    弹出界面填写AppId,填写完成后点击[ 保存 ]。

    Note

    因AppId属于唯一值,所以此处请您自行设置AppId,比如 "com.VOIDAR.SLAM"

    Warning

    打包时设置的Bundle Identifier,必须与此处设置的AppId相同,否则后续当您需要移除水印时,将无法正常进行。

    133

    完成后,获得“AppKey”。

    134

    返回Unity,选中ARCamera,查看右侧的Inspector栏,继续完成“App License Key”的设置。

    111

    第七步、添加模型

    右键点击场景,弹出列表中点击[ Create Empty ]。

    50

    创建了一个“GameObject”。

    51

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

    52

    右键点击“GameObject”,列表中选中“3D Object”,点击[ Sphere ]。

    53

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

    54

    为了生成模型的时候,模型大小及位置比较合适,需要进行调整。

    • 调整位置

      选中“Sphere”,将Position设置为(X , Y , Z = 0 , 0 , 0)

      55

    • 调整大小

      调整的方式有2种:

      1. 单独调整:选中模型直接调整大小。适用于模型较少、或者需要针对性调整的情况。

        选中“Sphere”,将Scale设置为(X , Y , Z = 0.1 , 0.1 , 0.1)

        131

      2. 整体调整:从整体上对AR内容的大小进行调整。适用于模型较多,场景较复杂的情况。

        选中“ARCamera”,调整SceneScale属性。

        Note

        本教程采用第1种方式进行调整,故此处设置保持默认值=1。

        132

    第八步、模型底面贴着地面,获得更好的贴地感

    Important

    VOID SLAM技术应用时,一定要将模型的底面贴着地面,获得更好的贴地效果,以达到更好的体验。

    Warning

    要使得模型的底面贴着地面,有2种方法:

    1. 调整模型的中心点:

      使用3d Max等软件,将3D模型的中心点,调整至“模型底部中心”。

      本教程不详细介绍,具体的操作可以参考:改变模型轴心点的方法

    2. 添加参照平面,Unity中直接调整模型坐标位置

      Unity中新建的模型,中心会默认在模型正中。通过添加一个Plane平面做参照,将模型底面贴着Plane平面即可。

    下文将按照方法2进行设置。

    新建的“Sphere”模型,中心默认在模型正中。

    创建一个Plane作为参照,右键点击场景,列表中选中“3D Object”,点击[ Plane ]。

    56

    选中“Plane”,将其坐标调整为(0,0,0)。

    57

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

    58

    底面紧贴Plane,模型的坐标位置就调整完成了。

    右键选中“Plane”,点击[ Delete ],删除参照物,调整完成。

    59

    第九步、设置触发事件

    先选中“ARCamera”,然后再鼠标左键点击“GameObject”,按住不放,将其拖入“MakerlessNode”变量中。

    116

    设置完成后,显示如下。

    117

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

    125

    脚本绑定成功后,显示如下。

    118

    第十步、保存场景

    选中[ File] -> [ Save Scenes ],进行场景保存。

    14

    设置文件名为“VOID SLAM”,点击[ 保存 ]按钮。

    121

    第十一步、打包发布

    打包流程分为“Android”、“iOS”。

    Android

    打包Android,需要将Unity切换至Android平台,点击[ File ] -> [ Build Settings... ]。

    18

    选中Android标签,如果左下的[ Switch Platform ]按钮为灰色,需要下载Unity Android Support,请点击右侧的[ Open Download Page ]按钮,下载并安装。

    19

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

    20

    切换完成后,先关闭Build Settings界面,继续搭建打包环境。

    选中[ Edit ] -> [ Preferences... ],设置参数。

    47

    弹出界面选中“External Tools”选项,设置Android SDK和JDK。

    Note

    如果本地没有SDK和JDK,可以点击后方的[ Download ],在弹出的网页上进行下载即可。

    也可以用链接下载安装:

    SDK(要科学上网才能打开):https://developer.android.com/studio/index.html

    JDK:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

    安装完成后,设置好SDK和JDK的路径就可以了。

    48

    选中ARCamera,查看右侧的“Inspector”栏,设置“Void AR Behaviour (Script)”组件属性。

    • 设置Camera = "后置摄像头"

    122

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

    21

    添加完成后,如下所示。

    22

    设置属性参数

    点击[ Player Settings... ]按钮,查看右侧的“Inspector”栏,设置属性参数,您可以自定义。

    • 设置Company = "VOIDAR"

    • 设置Product Name = "VOID SLAM"

    • Important

      取消“Multithreaded Rendering”的勾选!

    • Important

      设置Bundle Identifier= "com.VOIDAR.SLAM"(必须与第六步设置的AppId相同,否则后续当您需要移除水印时,将无法正常进行)

    23

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

    24

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

    25

    打包过程需要耐心等待一段时间。

    26

    完成后,将生成一个“VOID SLAM.apk”文件,安卓打包完成。

    iOS

    iOS打包需要在Mac OS系统中完成,需要准备Mac设备(如MacBook Pro、MacBook、iMac、Mac mini等)。

    在Unity中,将开发平台切换至iOS,然后Build生成Xcode工程。

    Warning

    推荐使用Mac设备的Unity软件来生成Xcode工程。如果之前是在Windows环境下编辑的,可以将Unity工程输出成unitypackage,或拷贝至Mac电脑中进行编辑处理。

    启动Unity,打开之前保存的、或者拷贝过来的VOID SLAM工程文件(工程已经打开的,跳过这步)

    28

    点击[ Open ]按钮打开工程。

    29

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

    30

    选中iOS标签,如果左下的[ Switch Platform ]按钮为灰色,需要下载Unity iOS Support,请点击右侧的[ Open Download Page ]按钮,下载并安装。

    31

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

    32

    切换完成后,点击[ Player Settings... ]按钮。

    340

    Important

    取消“Multithreaded Rendering”的勾选!

    51

    关闭Build Settings界面,选中ARCamera,查看右侧的“Inspector”栏,设置“Void AR Behaviour (Script)”组件属性。

    • 设置Camera = "后置摄像头"

    123

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

    34

    添加完成后,如下所示。

    35

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

    36

    准备生成Xcode工程,命名为“Output”,点击[ Save ]。

    37

    打开生成的Xcode文件。

    38

    设置属性参数

    填写配置,将自己的证书、iOS适应版本都正确选上:

    左侧点击[ Unity-iPhone ],配置参数,您可以自定义。

    • 设置Display Name = "VOIDAR_Test"

    • Important

      设置Bundle Identifier= "com.VOIDAR.SLAM"(必须与第六步设置的AppId相同,否则后续当您需要移除水印时,将无法正常进行)

    • 设置Version = "1.0"

    • 设置Build = “1.0”

    • 设置Team = “您自己的证书”

    • 设置Deployment Target = “8.1”

    124

    添加Accelerate.framework

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

    40

    弹出界面,选中“Accelerate.framework”,点击[ Add ]。

    41

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

    42

    添加摄像机权限

    选中“Info”标签,点击Supported interface orientations后面的“+”。在弹出列表中选中“Privacy - Camera Usage Description”。

    43

    44

    设置Enable Bitcode = “No”

    选中”Build Settings”标签,设置Enable Bitcode = “No”。

    45

    打包取消armv7

    选中“Build Settings”标签,展开Architectures,选择 “Other...”。

    52

    弹出界面,选中“armv7”后点击“-”。

    53

    取消后显示如下即可。

    54

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

    46

    完成后,iphone或者ipad上,将生成一个“VOIDAR_Test”的APP,iOS打包完成。

    五、操作说明

    打包完成后,即可在移动设备上运行。

    • 对准平面:为了得到更好的体验效果,点击[ Start ]前,请先将摄像头对准一个平面
    • 点击[ Start ]:启动VOID SLAM (Markerless),初始化虚拟物体。如果需要切换环境,请将摄像头对准新平面后,再次点击[ Start ]进行初始化。

    至此,VOID SLAM制作完成。

    Back to top Generated by DocFX