Unity学习4:如何实现2D图像跟踪(涂色类AR项目实践1)

跟踪图像管理器是一种可跟踪管理器,执行二维图像跟踪。

image-20220118101626044

跟踪图像管理器为环境中检测到的每个图像创建游戏对象。在可以检测到图像之前,必须指示管理器查找编译到参考图像库中的一组参考图像。

何为参考图像库(Reference Image library)?

参考图像库用来存储一系列的参考图像用于对比,每一个图像跟踪程序都必须有一个参考图 像库,但需要注意的是,参考图像库中存储的实际是参考图像的特征值信息而不是原始图 像,这有助于提高对比速度与鲁棒性。参考图像库越大,图像对比就会越慢,建议参考图像 库的图像不要超过 1000 张。

参考图片库可以在运行时设置,但只要启用了跟踪图片管理器组件,参考图片库必须为非空。

您可以将参考图像库设置为 XRReferenceImageLibraryRuntimeReferenceImageLibrary。只能在 Editor 中创建 XRReferenceImageLibrary,不能在运行时修改。

准备:创建项目


在资源管理面板新建几个文件夹,用于存放和管理资源文件,在Assets面板单击鼠标右键选择“create-》Floder",更改文件名

Scenes:系统默认生成,用于存放场景文件

Scripts:存放脚本文件

Fbxes:存放Fbx格式的模型文件

Materials:存放材质文件

Textures:存放贴图纹理文件

Shaders:存放shader脚本

ImageLib:存放参考图像库

第一步:创建参考图像库


在 Unity 中新建一个工程,第一步建立一个参考图像库,首先在 Project 窗口中的 ImageLib 文件夹下点击鼠标右键并依次选择 Create->XR->Reference Image Library 新建一个参考图 像库,并命名为 RefImageLib,如下图所示。

image-20220118103656919

在 Project 窗口中的 Fbxes(没有就创建一个)文件夹下拖进两个.fbx格式的模型Earth和Frame

网盘链接获取模型和图片

链接:https://pan.baidu.com/s/1-zC4vNAs7UU9pzj2-WueLw

提取码:lixu

在 Project 窗口中的 TexTures(没有就创建一个)文件夹下拖进两张.png格式图片

这里我们用到的参考识别图像是Card_02(有轮廓)

  • 20
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Unity项目实现按一个按钮浏览本地文件并上传,你可以使用Unity的文件浏览器窗口和上述提到的文件上传代码结合起来。以下是一个示例代码: ```csharp using UnityEngine; using UnityEngine.UI; using UnityEngine.Networking; using System.IO; public class BrowseAndUpload : MonoBehaviour { public string uploadURL = "http://www.example.com/upload"; // 上传文件的URL public Button browseButton; // 浏览按钮 private string filePath; // 选择的文件路径 void Start() { browseButton.onClick.AddListener(BrowseFile); } void BrowseFile() { // 打开文件浏览器窗口 string startingPath = Application.persistentDataPath; // 默认起始路径为应用程序的持久数据路径 string extensionFilter = "MAT files (*.mat)|*.mat"; // 文件类型过滤器 filePath = UnityEditor.EditorUtility.OpenFilePanel("选择文件", startingPath, extensionFilter); if (!string.IsNullOrEmpty(filePath)) { StartCoroutine(UploadFile(filePath)); } } IEnumerator UploadFile(string filePath) { // 读取本地文件数据 byte[] fileData = File.ReadAllBytes(filePath); // 创建UnityWebRequest对象,并设置为上传文件类型 UnityWebRequest request = UnityWebRequest.Put(uploadURL, fileData); request.method = UnityWebRequest.kHttpVerbPUT; request.SetRequestHeader("Content-Type", "application/octet-stream"); // 发送请求 yield return request.SendWebRequest(); // 检查是否有错误 if (request.result != UnityWebRequest.Result.Success) { Debug.Log("上传文件失败: " + request.error); } else { Debug.Log("上传文件成功!"); } } } ``` 在上述代码中,我们首先将浏览按钮的点击事件与`BrowseFile()`方法关联起来。当用户点击浏览按钮时,`BrowseFile()`方法会打开文件浏览器窗口,并获取用户选择的文件路径。然后,我们将选择的文件路径传递给`UploadFile()`方法来执行文件上传操作。 请注意,上述代码在Unity编辑器中使用了`UnityEditor.EditorUtility.OpenFilePanel()`方法来打开文件浏览器窗口。这意味着该代码只能在编辑器中运行,如果你需要在构建后的应用程序中运行,你需要使用Unity的`WWW`或`UnityWebRequest`类的其他方法来实现文件浏览和上传功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值