模型识别入门教程
Note
支持:Android / iOS
注意:模型识别暂时不支持PC端直接运行,请打包至移动端体验。
一、简介
对现实世界中的特定对象进行精准识别和稳定跟踪,进而使用AR内容增强和扩展。
通过模型识别技术,可以将虚拟内容放置在各类物品上(如设备仪器、车辆、电器、玩具、展品),用于工业、营销、医疗、培训、展览展示等领域。
- 视频教程
跟随我们的视频教程,了解在Unity中开发模型识别的详细步骤。
二、阅读指南
本教程演示了如何在Unity3D中,使用VOID AR Model Tracking SDK实现模型识别功能。
默认读者您拥有一定的软件使用、应用开发经验。
教程中只会对Unity的基础使用进行简要说明,有关Unity使用的更多信息,请访问Unity官网查看。
三、搭建环境
在进行具体操作前,您需要安装下列软件,准备如下环境:
操作系统
:Windows 7 或更高版本(推荐使用Windows 10)Unity3D
:Unity 2017.1 或更高版本Note
推荐使用教程中的版本:
Unity 2018.4.0f1 LTS
太虚AR SDK
:下载太虚AR模型识别SDK示例的3D模型
:下载Car.zip,完成后请解压文件纸模型资源
:您可以在此处下载,打印并参考说明制作纸质模型移动设备
:准备1台Android或iOS设备(Android为骁龙820及以上机型,iOS为iPhone5s及以上机型)
四、实现流程
实现流程大体分为四步:
- 第一步、创建项目;
- 第二步、使用工具,生成模型的初始化轮廓及数据;
- 第三步、制作应用,绑定轮廓图/初始化数据/模型;
- 第四步、打包至移动端,即可识别跟踪预设的3D物体。
第一步、创建项目
1.1 新建Unity工程
打开Unity,新建工程。填写Project name为“ModelTracking
”、选择保存的位置,点击[ Create project ]
。
1.2 导入SDK
选中[ Assets ] -> [ Import Package ] -> [ Custom Package... ]
,导入模型识别SDK。
选择下载好的SDK文件(.unitypackage),点击[ 打开 ]
按钮。
弹出界面,点击[ Import ]
,导入过程需要耐心等待一段时间。
如果弹出“API Update Required”界面,请点击[ I Made a Backup, Go Ahead! ]
。
第二步、使用工具生成初始化数据
Note
工具需在Windows环境下使用,暂时不支持OSX平台。
2.1 打开工具
选中[ Assets ] -> [ VoidAR ] -> [ Tool ]
,打开ModelTargetCreator场景。
2.2 导入3D模型
请选中一个目录,导入3D模型。
Important
有关3D模型详细要求,具体细节请查阅模型对象的要求与限制
例如右键选中Assets,点击[ Import New Asset... ]
,弹出界面选中Car.obj
并导入。
Note
导入完成后,选中模型,并且确认“Read/Write Enabled”属性是打开的
。
2.3 添加模型对象到场景
选中模型
,将其拖至场景中。
选中“Car
”,将其坐标调整为(0,0,0)。
2.4 调整模型大小
Important
模型的大小,需要与识别的目标物体一致或接近。
首先,需要调整模型的大小。
Car.obj对应的纸模型汽车长度为10cm
,创建一个Cube作为参照(Unity中新建Cube的x,y,z初始值都为1m)。
右键点击场景,列表中选中“3D Object
”,点击[ Cube ]
。
选中“Cube
”,将其坐标调整为(0,0,0)。
选中“Car
”,将其大小调整至Cube的1/10(X , Y , Z = 0.008 , 0.008 , 0.008)。
Note
调整完成后,右键选中“Cube
”,点击[ Delete ]
,删除参照物。
2.5 调整模型位置
Important
1)请调整模型,不要调整Camera;
2)建议调整后,模型为“俯视”或“平视”,不要“仰视”。
选中Car模型,调整模型的“位置”和“旋转”
。
调整时,请确保Camera能看到模型,调整中您可以通过Game窗口直接预览效果。
调整后参考如下:
2.6 设置模型材质
展开[ Car ],选中default
,查看右侧的“Inspector
”栏,打开"Materials
"设置模型材质。
设置Element 0,选择材质为“RimMat
”。
设置完成后,显示如下。
2.7 设置输出路径
先选中“Main Camera
”,然后再鼠标左键点击“Car
”,按住不放,将其拖入“Model 3D
”变量中。
接着,在“Main Camera
”中设置输出路径。
Important
1)为方便后续调用,路径推荐设置在“Unity工程中的Assets目录下”;
2)为避免出现异常,请不要选择带中文的路径,并手动在目标目录下先创建好文件夹。
设置Output Path
= "D:\unity\ModelTracking\Assets\InitData"
设置完成后,显示如下。
2.8 生成轮廓及数据
选中[ File] -> [ Save ]
,进行场景保存。
将Game窗口的分辨率设置为“640×360
”(如果没有该分辨率,请先手动添加)
先点击[ 运行 ]
按钮,随后点击[ CreateInitData ]
,生成模型的轮廓及初始化数据。
创建成功后,取消运行。目录下会生成“模型的轮廓图(模型名字.png)
”和“初始化数据(模型名字.bytes)
”。
第三步、制作应用
3.1 新建场景
选中[ File ] -> [ New Scene ]
,新建场景。
3.2 删除Main Camera
右键选中场景中自带的“Main Camera
”,点击[ Delete ]
删除。
3.3 拖入预制件
展开[ Assets ] -> [ VoidAR ] -> [ Prefabs ]
目录,将预制件“ARCamera
”和“ModelTarget
”分别拖至场景中。
操作成功后显示如下:
3.4 添加模型对象到场景
选中之前导入的模型
,将其拖至场景中。
Note
这里是拖入原始的,未调整过大小、位置、旋转的模型
3.5 绑定数据
绑定轮廓图
展开[ ModelTarget ],选中InitContour
,右侧的“Inspector”栏中打开Shader设置,点击[ Select ]
。
弹出界面,选择生成好的Car.png
,完成设置。
绑定模型
先选中“ModelTarget
”,然后再鼠标左键点击“Car
”,按住不放,将其拖入“Virtual Object
”变量中。
用于显示叠加的虚拟模型,绑定完成。
绑定初始化数据
选中ModelTarget
,右侧的“Inspector”栏中打开Initial Data设置。弹出界面,选择生成好的Car.bytes
,完成初始化数据绑定。
3.6 设置ARCamera
选中“ARCamera
”,然后再鼠标左键点击“ModelTarget
”,按住不放,将其拖入“ModelTarget
”变量中。
操作成功后显示如下:
3.7 设置App License Key
打开云平台网址,注册账号并登录
。
进入云平台,左侧点击[ 创建模型识别应用 ]
。
点击[ 创建应用 ]
。
弹出界面填写AppId,填写完成后点击[ 保存 ]
。
Note
因AppId属于唯一值,所以此处请您自行设置AppId,比如 "com.VOIDAR.ModelTracking"
Warning
打包时设置的Bundle Identifier,必须与此处设置的AppId相同,否则后续当您需要移除水印时,将无法正常进行。
完成后,获得“AppKey
”。
返回Unity,选中ARCamera,查看右侧的Inspector栏,完成“App License Key
”的设置。
3.8 设置启动按钮及方法
Note
添加“启动按钮
”,点击后即可触发识别。
右键点击场景,列表中选中“UI
”,点击[ Button ]
。
操作成功后显示如下:
选中Button,查看右侧的“Inspector
”栏,在On Click()事件下点击“+
”。
选中“Button”,然后再鼠标左键点击“ModelTarget
”,按住不放,将其拖入“Object
”变量中。
点击“No Function”,列表中选中“ModelTargetBehaviour
”,点击[ StartTracking () ]
。
操作成功后显示如下:
选中“Button”,设置按钮、锚点的大小和位置。根据需要进行调整即可,参考设置如下。
展开[ Button ],选中Text
,调整按钮文案和字号。
3.9 保存场景
选中[ File ] -> [ Save ]
,进行场景保存。
设置文件名为“ModelTracking
”,点击[ 保存 ]
按钮。
第四步、打包发布
Note
模型识别暂时不支持PC端直接运行,请打包至移动端体验。
打包流程分为“Android
”、“iOS
”。
4.1 Android
打包Android,需要将Unity切换至Android平台,点击[ File ] -> [ Build Settings... ]
。
选中Android标签,如果左下的[ Switch Platform ]按钮为灰色,需要下载Unity Android Support
,请点击右侧的[ Open Download Page ]
按钮,下载并安装。
点击[ Switch Platform ]
按钮,完成Android平台的切换。
切换完成后,先关闭Build Settings界面,继续搭建打包环境。
选中[ Edit ] -> [ Preferences... ]
,设置参数。
弹出界面选中“External Tools
”选项,设置Android SDK。
Note
如果本地没有SDK,可以点击后方的[ Download ]
,在弹出的网页上进行下载即可。
也可以用链接下载安装:
SDK
(要科学上网才能打开):https://developer.android.com/studio/index.html
安装完成后,设置好SDK的路径就可以了。
选中[ File ] -> [ Build Settings... ]
,点击[ Add Open Scenes ]
,添加当前的场景。
添加完成后,如下所示:
设置属性参数
点击[ Player Settings... ]
按钮,查看右侧的“Inspector
”栏,设置属性参数,您可以自定义。
设置Company
= "VOIDAR"设置Product Name
= "ModelTracking"设置Bundle Identifier
= "com.VOIDAR.ModelTracking"(必须与3.7设置的AppId相同,否则后续当您需要移除水印时,将无法正常进行)-
Important
取消“Multithreaded Rendering”的勾选!
设置屏幕方向
设置Orientation
= "Portrait"或者"Landscape Left"
完成设置后,点击[ Build ]
按钮。
设置文件名为“ModelTracking
”,点击[ 保存 ]
按钮,开始打包。
打包过程需要耐心等待一段时间。完成后,将生成一个“ModelTracking.apk
”文件,安卓打包完成。
4.2 iOS
iOS打包需要在Mac OS系统中完成,需要准备Mac设备(如MacBook Pro、MacBook、iMac、Mac mini等)。
在Unity中,将开发平台切换至iOS,然后Build生成Xcode工程。
Warning
推荐使用Mac设备的Unity软件来生成Xcode工程。如果之前是在Windows环境下编辑的,可以将Unity工程输出成unitypackage,或拷贝至Mac电脑中进行编辑处理。
启动Unity,打开
之前保存的、或者拷贝过来的项目工程文件
(工程已经打开的,跳过这步)
将Unity切换至iOS平台,点击[ File ] -> [ Build Settings... ]
。
选中iOS标签,如果左下的[ Switch Platform ]按钮为灰色,需要下载Unity iOS Support
,请点击右侧的[ Open Download Page ]
按钮,下载并安装。
点击[ Switch Platform ]
按钮,完成iOS平台的切换。
切换完成后,点击[ Player Settings... ]
按钮。
Important
取消“Multithreaded Rendering”的勾选!
设置屏幕方向
设置Orientation
= "Portrait"或者"Landscape Left"
选中[ File ] -> [ Build Settings... ]
,点击[ Add Open Scenes ]
,添加当前的场景。
添加完成后,如下所示:
完成设置后,点击[ Build ]
按钮。
准备生成Xcode工程,命名为“Output
”,点击[ Save ]
。
打开
生成的Xcode文件。
设置属性参数
填写配置,将自己的证书、iOS适应版本都正确选上:
左侧点击[ Unity-iPhone ]
,配置参数,您可以自定义。
设置Display Name
= "VOIDAR_Test"设置Bundle Identifier
= "com.VOIDAR.ModelTracking"(必须与3.7设置的AppId相同,否则后续当您需要移除水印时,将无法正常进行)设置Version
= "1.0"设置Build
= “1.0”设置Team
= “您自己的证书”
添加Accelerate.framework
General页面往下拉,在Linked Frameworks and Libraries中,点击“+
”。
弹出界面,选中“Accelerate.framework,点击[ Add ]
。
添加完成,Linked Frameworks and Libraries下方出现“Accelerate.framework”。
添加摄像机权限
选中“Info”标签,点击Supported interface orientations后面的“+”。在弹出列表中选中“Privacy - Camera Usage Description
”。
设置Enable Bitcode = “No”
选中”Build Settings”标签,设置Enable Bitcode = “No
”。
打包取消armv7
选中“Build Settings”标签,展开Architectures,选择 “Other...
”。
弹出界面,选中“armv7”后点击“-
”。
取消后显示如下即可。
数据线连接iphone或者ipad,点击[ 运行 ]
,即可打包。
完成后,iphone或者ipad上,将生成一个“VOIDAR_Test
”的APP,iOS打包完成。
五、应用操作
打包完成后,即可在移动设备上运行。
1)启动应用,界面如下所示。
2)以预设角度对准3D物体,识别成功。
至此,模型识别制作完成。