Vuforia AR篇(七)— 二维码识别

目录

  • 前言
  • 一、什么是Barcode ?
  • 二、使用步骤
  • 三、点击二维码显示信息
  • 四、效果

前言

在数字化时代,条形码和二维码已成为连接现实世界与数字信息的重要桥梁。Vuforia作为领先的AR开发平台,提供了Barcode Scanner功能,使得在Unity中实现条形码和二维码的识别变得简单而高效。本文将详细介绍如何在Unity中利用Vuforia的Barcode Scanner功能,创建一个能够识别和响应条形码和二维码的AR体验。


一、什么是Barcode ?

Vuforia的Barcode Scanner是一个强大的功能,它支持广泛的条形码和二维码类型。开发者可以通过简单的设置,在Unity中实现对这些码的扫描和识别,从而触发不同的数字内容展示或交互。

二、使用步骤

  1. 设置相机:在 Unity 场景中添加一个 Vuforia AR 相机。可以在 GameObject -> Vuforia Engine -> AR Camera 中找到。

  2. 创建Barcode

​ 在 AR Camera 的 Inspector 面板中,确保 Vuforia Behaviour 启用。

​ 添加一个 Barcode。可以在 GameObject -> Vuforia Engine -> Barcode` 中找到。
在这里插入图片描述

三、点击二维码显示信息

  1. 创建TestCollider脚本给显示的二维码添加碰撞体
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Vuforia;public class TestCollider : MonoBehaviour
{private BarcodeBehaviour _behaviour; // 声明一个BarcodeBehaviour类型的私有变量private MeshCollider _collider; // 声明一个MeshCollider类型的私有变量void Awake(){_behaviour = GetComponent<BarcodeBehaviour>(); // 获取当前物体的BarcodeBehaviour组件}void Start(){if (_behaviour != null) // 如果BarcodeBehaviour组件不为空{_behaviour.OnBarcodeOutlineChanged += ChangeTest; // 订阅OnBarcodeOutlineChanged事件,指定事件处理函数为ChangeTest}}private void ChangeTest(Vector3[] v3){UpdateMeshCollider(v3); // 调用UpdateMeshCollider函数并传递v3参数}void UpdateMeshCollider(Vector3[] v3){if (!_collider) // 如果MeshCollider组件为空{_collider = gameObject.AddComponent<MeshCollider>(); // 给当前物体添加一个MeshCollider组件_collider.cookingOptions = MeshColliderCookingOptions.None; // 设置MeshCollider的cookingOptions属性}Mesh mesh = new Mesh // 创建一个新的Mesh对象{vertices = v3, // 设置Mesh对象的顶点数组为传入的v3triangles = new[] { 0, 1, 2, 0, 2, 3 } // 设置Mesh对象的三角形数组};_collider.sharedMesh = mesh; // 将创建的Mesh对象赋值给MeshCollider的sharedMesh属性}void Update(){}
}
  1. 创建TestShoot脚本用于射线检测
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Vuforia;public class TestShoot : MonoBehaviour
{public Text tex; // 公共的Text组件变量,用于显示射线检测结果void Awake(){}void Start(){}void Update(){// 从摄像机的屏幕坐标向场景中发射一条射线Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);// 如果射线检测到碰撞if (Physics.Raycast(ray.origin, ray.direction, out RaycastHit hit)){// 获取碰撞到的物体上的BarcodeBehaviour组件var behaviour = hit.transform.GetComponent<BarcodeBehaviour>();// 将BarcodeBehaviour组件的InstanceData.Text赋值给tex的文本属性tex.text = behaviour.InstanceData.Text;}else{// 如果射线没有检测到任何碰撞,将tex的文本属性设为空tex.text = "";}}
}

3.创建一个Panel和Text来显示内容

在这里插入图片描述

四、效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/848320.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ros常用环境变量

RMW层DDS实现 rti dds export RMW_IMPLEMENTATIONrmw_connextdds //rti dds 或者 RMW_IMPLEMENTATIONrmw_connextdds ros2 run ... export NDDS_QOS_PROFILES/qos.xml //配置qos文件fastdds export RMW_IMPLEMENTATIONrmw_fastrtps_cpp 或者 RMW_IMPLEMENTATIONrmw_fas…

提供全面的网络监控和管理功能,帮助客户实时了解网络状态和优化网络性能

联通IP Transit产品依托中国联通在全球范围内的AS4837/AS10099网络平台&#xff0c;采用BGP对接技术&#xff0c;为客户自有的IP地址段提供全球互联网络穿透服务。通过这一产品&#xff0c;客户可以享受到专属带宽带来的优质访问体验&#xff0c;快速、高效地将网络数据内容接入…

力扣1438.绝对差不超过限制的最长连续子数组

力扣1438.绝对差不超过限制的最长连续子数组 难点&#xff1a;保存数组缩小后的最大最小值 用两个单调队列分别处理最大值和最小值 class Solution {public:int longestSubarray(vector<int>& nums, int limit) {deque<int> quemax,quemin;int n nums.size…

Http和Socks的区别?

HTTP和SOCKS都是用于网络通信的协议&#xff0c;但它们在设计目标和应用场景上有显著的区别。 一、HTTP (HyperText Transfer Protocol) HTTP是用于分布式、协作和超媒体信息系统的应用层协议。主要特点包括&#xff1a; 用途&#xff1a;HTTP主要用于万维网&#xff0c;通过…

json和axion结合

目录 java中使用JSON对象 在pom.xml中导入依赖 使用 public static String toJSONString(Object object)把自定义对象变成JSON对象 json和axios综合案例 使用的过滤器 前端代码 响应和请求都是普通字符串 和 请求时普通字符串&#xff0c;响应是json字符串 响应的数据是…

MySQL换路径(文件夹)

#MySQL作为免费数据库很受欢迎&#xff0c;即使公司没有使用&#xff0c;自己也可以用。它是一个服务&#xff0c;在点击CtrlAltDelete选择任务管理器后&#xff0c;它在服务那个归类里。 经常整理计算机磁盘分类的小伙伴&#xff0c;如果你们安装了MySQL&#xff0c;并且想移…

[Vue3] 滚动条自动滚动到底部

需求 在一个区域会依次打印log&#xff0c;随着log的加长&#xff0c;出现滚动条&#xff0c;而滚动条应该始终保持在最下方。 点击回到顶部按钮&#xff0c;可以使滚动条回到最上方 方案 在滚动区域添加reflog为一个数组&#xff0c;对其添加watch在watch函数中&#xff0c…

actuator/env;.js 漏洞修复

该问题是指Spring Boot Actuator中的一个漏洞&#xff0c;它涉及到暴露了Spring Boot应用的环境信息。Spring Boot Actuator是一个用于监控和管理Spring Boot应用的组件&#xff0c;它提供了多个端点&#xff08;endpoints&#xff09;&#xff0c;如健康检查、度量收集、环境信…

插件:Plugins

一、安装网格插件

重大变化,2024软考!

根据官方发布的2024年度计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试安排&#xff0c;2024年软考上、下半年开考科目有着巨大变化&#xff0c;我为大家整理了相关信息&#xff0c;大家可以看看&#xff01; &#x1f3af;2024年上半年&#xff1a;5月25日&am…

业务安全蓝军测评标准解读—业务安全体系化

目录 1.前言 2.业务蓝军测评标准 2.1 业务安全脆弱性评分(ISVS) 2.2 ISVS评分的参考意义<

高并发短视频系统设计:架构、存储与性能优化全解

1. 系统概况与需求分析 1.1 短视频系统简介 当前短视频行业的快速发展&#xff0c;加上用户对高清、流畅观看体验的需求不断提升&#xff0c;对系统的并发处理能力、视频处理速度、存储效率等多方面都提出了极高的要求。那么&#xff0c;我们首先需要了解一个完整的短视频系统…

msvcp140.dll是什么dll文件?msvcp140.dll文件的丢失要怎么去修复?

msvcp140.dll是什么dll文件&#xff1f;一般会问出这种问题的人&#xff0c;都是遇到了msvcp140.dll丢失的情况了&#xff0c;这时候你的一些程序是打不开的&#xff0c;你需要修复好msvcp140.dll文件才可以正常的打开程序&#xff0c;今天我们就来了解一下msvcp140.dll这文件&…

hcia datacom学习(11):vlan基础配置

1.vlan作用 &#xff08;1&#xff09;限制广播域&#xff1a;广播被限制在vlan内&#xff0c;不会在vlan间转发 &#xff08;2&#xff09;提高安全性&#xff1a;不同vlan的报文在传输时是相互隔离的 &#xff08;3&#xff09;灵活构建&#xff1a;交换机可以把不同终端分…

【实物+仿真设计】基于单片机的物流皮带传输监控系统设计

《基于单片机的物流皮带传输监控系统设计 实物仿真》 整体功能&#xff1a; 本设计采用以单片机为核心控制器&#xff0c;以及传感器检测部分作为输入部分&#xff0c;以报警、显示、洒水、排烟、电机停止模块作为输出部分&#xff0c;构成整个物流皮带传输监控系统。 本设计…

【Linux】信号(一)

信号我们将从信号产生&#xff0c;信号的保存&#xff0c;信号处理分别进行讲解~ 至少大思路是这样。开始之前还要进行一些基础知识的铺垫。 目录 从生活中提炼一些结论&#xff1a;信号概念的一些储备&#xff1a;信号产生&#xff1a;一、kill指令&#xff1a;二、键盘组合键…

win11右键二级菜单恢复成win10一级菜单

winr输入“cmd”回车&#xff0c;打开cmd窗口&#xff0c;输入如下命令&#xff0c;并回车。reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve提示cuccessfully&#xff0c;表示操作成功。重启电脑即可。 如下…

Qt信号槽与函数直接调用性能对比

1. 测试方法 定义一个类Recv&#xff0c;其中包含一个成员变量num和一个成员函数add()&#xff0c;add()实现num的递增。 另一个类Send通过信号槽或直接调用的方法调用Recv的add函数。 单独开一个线程Watcher&#xff0c;每秒计算num变量的增长数值&#xff0c;作为add函数被调…

element联级别选择器回显数据

需求&#xff1a;联级选择器获取的是一个数组&#xff0c;但是后端一般只存最后一级id&#xff0c;回显时需要自己处理数据 思路&#xff1a;利用最后一级id反查出上级id /***回显多级** param {key} 后端拿到的id* param {treeData} options绑定数据* returns*/changeDetSel…

4.2 索引及其操作

对数据库中的表进行查询操作时有两种搜索扫描方式&#xff0c;一种是全表扫描&#xff0c;另一种就是使用表上建立的索引进行扫描。 全表扫描要查找某个特定的行&#xff0c;必须从头开始一一查看表中的每一行&#xff0c;与查询条件做对比&#xff0c;返回满足条件的记录&…