当前位置:网站首页>ARFoundation从零开始5-AR图像跟踪
ARFoundation从零开始5-AR图像跟踪
2022-07-29 05:07:00 【suelee_hm】
以现实世界中的某物体、某介质为参照物,将AR内容固定到该参照物的相对位置,伴随参照物的移动而发生相对位置的改变,即所谓的AR跟踪。
2D图像追踪(ARKit和ARCore),通过检测环境中的特定2D图像,Tracked Image Manager可以自动创建表示所有已识别图像的GameObject,让你可以根据特定图像改动AR体验。
本项目示例源代码:
https://github.com/sueleeyu/ar-augment
一、创建项目工程
1.新建项目

2.重命名为ImagesScene,选择Window-Package Manager- Unity Register,依次下载:
XR Plugin Management 4.0.7
AR Foundation 4.1.10
ARCore XR Plugin 4.1.10
ARKit XR Plugin 4.1.10

3.如下:

二、添加AR组件
1.删除原有摄像机, 点击“+”,添加Session Origin,AR Session:

2.选择 AR Session Origin,Inspector中点击添加组件,搜索框输入art,选择AR Tracked Image Manager添加。

三、添加界面UI和模型
1.log Text,用来显示日志信息:Hierarchy-‘+’- UI –Text,新建Text组件,命名Log,设置:

2.添加Button,Hierarchy-Canvas右键,UI-Button,设置:

Button-Text设置:

四、创建参考图库
1.Project –Assets 右键,Create-Folder,新建文件夹,命名Images:

2.创建参考图库,Project –Assets –Images 右键,Create-XR-Reference Image Library:

3.复制多张图片到Images目录下:

4.添加参考图,选择ReferenceImageLibrary,点击右侧Inspector的Add Image

5.拖动图片到右侧贴图,依次完成参考图的添加:

添加如下:

参考图中属性的含义:
Name:每一个参考图有一个唯一的guid和一个name,Name可以用来实时匹配检测到的图片和参考图
Specify Size:指定图片的大小,一些平台下需要指定才能识别,所有最好选中。
Keep Texture at Runtime:是否使用纹理,如果要修改Prefab外观可以选中。
6. AR Tracked Image Manager添加Reference Library属性:选择Hierarchy-AR Session Origin,选择右侧Inspector的AR Tracked Image Manager项的Serialized Library右侧圆点,点击列表对应项添加:

五、需要的图片和预制件
1.Hierarchy下新建Cube,命名One(对应参考库中图片Name),拖动Images下One.png到场景中的Cube:

2.Assets下新建Resources/Prefabs文件夹,把立方体One拖动到Prefabs下,删除场景中的One,其他依次制作。

六、编写脚本
1. Project-Assets右键,新建Scripts文件夹,新建Logger.cs,用于查看log日志

2.Logger挂载

做关联:

3.新建MultiImageTracking.cs,编写代码。
加载预制件,在Strat中:
voidStart()
{
//加载预制件
GameObject one = Resources.Load<GameObject>("Prefabs/One");
prefabs.Add("One", one);
GameObject two= Resources.Load<GameObject>("Prefabs/Two");
prefabs.Add("Two", two);
GameObject qrcode = Resources.Load<GameObject>("Prefabs/QRCode");
prefabs.Add("QRCode", qrcode);
Logger.Log("MultiImageTracking-Start");
}
4.注册ARTrackedImagesChangedEventArgs事件:
privatevoidOnEnable()
{
ImgTrackedManager.trackedImagesChanged += OnTrackedImagesChanged;
}
OnTrackedImagesChanged中实现加载:
void OnTrackedImagesChanged(ARTrackedImagesChangedEventArgs eventArgs)
{
foreach (var trackedImage in eventArgs.added)
{
// Give the initial image a reasonable default scale
var minLocalScalar = Mathf.Min(trackedImage.size.x, trackedImage.size.y) / 2;
trackedImage.transform.localScale = new Vector3(minLocalScalar, minLocalScalar, minLocalScalar);//对模型缩放
Instantiate(prefabs[trackedImage.referenceImage.name], trackedImage.transform);//实例化预制件
//OnImagesChanged(trackedImage);
}
}
5.挂载MultiImageTracking.cs到AR Session Origin,选择AR Session Origin,Inspector中点击Add Component,输入并选择MultiImageTracking.cs,将Button-Text组件拖到MultiImageTracking的Toggle Text属性栏:

七、android打包
1.运行:

八、常见问题
1.ARFoundration打包会报错:“Failded to generated ARCore reference image library”
报错原因应该是图像质量不符合要求。

九、参考文献
1. Unity api:
Unity - Manual: Unity User Manual 2021.3 (LTS)
2.ARFoundation示例:
3.ARCore 文档
为图像添加维度 | ARCore | Google Developers
4.本项目示例源代码:
边栏推荐
- Unity metaverse (III), protobuf & socket realize multi person online
- P2181 diagonal
- DataSourceClosedException: dataSource already closed at Mon Oct 25 16:55:48 CST 2021
- 传奇服务端如何添加地图
- Excel怎么筛选出自己想要的内容?excel表格筛选内容教程
- 基于注解的三层项目的改造及添加包扫描的方式
- 2021-10-23
- How does WPS use smart fill to quickly fill data? WPS method of quickly filling data
- AttributeError: ‘module‘ object has no attribute ‘create_connection‘
- Operator operation list of spark
猜你喜欢

输入的查询SQL语句,是如何执行的?

TCP三次握手四次挥手

Open source Huizhi creates the future | the openeuler sub forum of 2022 open atom global open source summit was successfully held

Self join and joint query of MySQL

How to add a map to the legendary server

Big silent event Google browser has no title

Force deduction ----- sort odd and even subscripts respectively

How to set row height and column width in excel? The method of setting row height and column width in Excel

Unity Metaverse(三)、Protobuf & Socket 实现多人在线

Opencv learning 1 (environment configuration)
随机推荐
Simple user-defined authentication interface rules
Deadlock analysis using jstack, jconsole, and jvisualvm
传奇开区网站如何添加流量统计代码
< El table column> place multiple pictures
Deep learning brush a bunch of tricks of SOTA
Activity workflow table structure learning
Let you understand several common traffic exposure schemes in kubernetes cluster
一文带你搞懂环绕通知@Around与最终通知@After的实现
Youxuan database failed to start and reported network error
JS (foreach) return cannot end the function solution
NumPy基础
office2010每次打开都要配置进度怎么解决?
P5714 [deep foundation 3. Case 7] obesity
Network Security Learning - Intranet Security 1
WPS如何进行快速截屏?WPS快速截屏的方法
Opencv learning 1 (environment configuration)
Functions in MySQL statements
如何让照片中的人物笑起来?HMS Core视频编辑服务一键微笑功能,让人物笑容更自然
那个准时上下班,从不愿意加班加点的人,在我前面升职了...
Wechat picture identification