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对象的顶点数组为传入的v3
            triangles = 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来显示内容

在这里插入图片描述

四、效果

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Web API DOM10】日期(时间)对象

一&#xff1a;实例化 1 获取系统当前时间即创建日期对象 const date new Date() console.log(date) 2024年6月5日周三 2 获取指定的时间 以获取2025年6月29日为例 const date new Date(2025-6-29) console.log(date) 二&#xff1a;日期对象方法 1 使用场景&#xf…

QT安装与使用

QT安装与使用 Windows QT安装 1.下载windowsQT安装包 本教程使用的QT版本是&#xff1a;https://download.qt.io/archive/qt/5.12/5.12.9/ 本教程的安装包放在阿里云盘供大家获取。 2.QT安装 如果没有梯子&#xff0c;大家登录QT官网可能会失败&#xff0c;这里可以不需要Q…

Qt 的 d_ptr (d-pointer) 和 q_ptr (q-pointer)解析;Q_D和Q_Q指针

篇一&#xff1a; Qt之q指针&#xff08;Q_Q&#xff09;d指针&#xff08;Q_D&#xff09;源码剖析---源码面前了无秘密_qtq指针-CSDN博客 通常情况下&#xff0c;与一个类密切相关的数据会被作为数据成员直接定义在该类中。然而&#xff0c;在某些场合下&#xff0c;我们会…

文件编码概念

文件的读取 open()函数&#xff1a; 打开一个已存在的文件&#xff0c;或者创建一个新文件 open(name,mode,encoding) name:是要打开的目标文件名的字符串&#xff08;可以包含文件所在的具体路径&#xff09; mode:设置打开文件的模式&#xff08;访问模式&#xff09;&am…

关于信号翻转模块(sig_flag_mod)的实现

关于信号翻转模块(sig_flag_mod)的实现 语言 &#xff1a;Verilg HDL 、VHDL EDA工具&#xff1a;ISE、Vivado、Quartus II 关于信号翻转模块(sig_flag_mod)的实现一、引言二、实现信号翻转模块的方法&#xff08;1&#xff09;输入接口&#xff08;2&#xff09;输出接口&…

MySQL换路径(文件夹)

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

【相关概念】经济金融中的Momentum

张张张三丰de思考与总结&#xff1a; 最近做的期货价格泡沫中&#xff0c;一直在说&#xff0c;momentum&#xff0c;momentum&#xff0c;momentum&#xff0c;那么究竟什么是momentum呢&#xff1f; 目前&#xff0c;在有关期货价格泡沫的研究文献中&#xff0c;一般都是研究…

小熊家务帮day13-day14 门户管理(ES搜索,Canal+MQ同步,索引同步)

目录 1 服务搜索1.1 需求分析1.2 技术方案1.2.1 使用Elasticsearch进行全文检索&#xff08;为什么数据没有那么多还要用ES&#xff1f;&#xff09;1.2.2 索引同步方案1.2.2.1 Canal介绍1.2.2.1 Canal工作原理 1 服务搜索 1.1 需求分析 服务搜索的入口有两处&#xff1a; 在…

【iOS】UI学习——UITableView

UI学习&#xff08;四&#xff09; UITableView基础UITableView协议UITableView高级协议和单元格 UITableView基础 dateSource:数据代理对象 delegate:普通代理对象 numberOfSectionInTableView:获得组数协议 numberOfRowsInSection:获得行数协议 cellForRowAtIndexPath:创建单…

自然语言处理(NLP)—— C-value方法

自然语言处理&#xff08;NLP&#xff09;和文本挖掘是计算机科学与语言学的交叉领域&#xff0c;旨在通过计算机程序来理解、解析和生成人类语言&#xff0c;以及从大量文本数据中提取有用的信息和知识。这些技术在现代数据驱动的世界中扮演着关键角色&#xff0c;帮助我们从海…

【启明智显分享】Model3A 7寸彩屏应用于美容仪器及应用框图

一、应用背景 随着科技的不断发展&#xff0c;美容仪器也逐渐向智能化、信息化方向发展。工业级芯片Model3A方案的 7寸彩屏以其高性能、高稳定性、高清晰度的特点&#xff0c;成为美容仪器领域的一个理想选择。本方案重点在探讨Model3A 7寸彩屏在美容仪器中的应用及相应的解决…

如何在强数据一致性要求下设计数据库的高可用架构

在高可用的三大架构设计(基于数据层的高可用、基于业务层的高可用,以及融合的高可用架构设计)中。仅仅解决了业务连续性的问题:也就是当服务器因为各种原因,发生宕机,导致MySQL 数据库不可用之后,快速恢复业务。但对有状态的数据库服务来说,在一些核心业务系统中,比如…

如何快速分析并将一个简单的前后端分离项目跑起来

一、前言 主要是前一段时间有小伙伴问我说自己刚入坑学后端不久&#xff0c;在开源网站上找了个简单的前后端分离项目&#xff0c;但是自己不会跑起来&#xff0c;让我给他说说&#xff0c;介于这玩意三两句话不是很好说清楚&#xff0c;而且不清楚那个小伙伴的知识到何种地步…

【云岚家政】-day00-开发环境配置

文章目录 1 开发工具版本2 IDEA环境配置2.1 编码配置2.2 自动导包设置2.3 提示忽略大小写2.4 设置 Java 编译级别 3 Maven环境3.1 安装Maven3.2 配置仓库3.3 IDEA中配置maven 4 配置虚拟机4.1 导入虚拟机4.2 问题 5 配置数据库环境5.1 启动mysql容器5.2 使用MySQL客户端连接数据…

AIGC实战!7个超热门的 Midjourney 关键词教程

一、剪纸风格 核心词&#xff1a; paper art&#xff08;剪纸艺术&#xff09; 关键技巧&#xff1a; 主体物&#xff1a;可以换成任意主角&#xff0c;Chinese illustration &#xff08;中国风插画&#xff09;&#xff1b;艺术风格&#xff1a;paper art &#xff08;剪纸…

文件夹如何加密码?这4个文件夹加密方法值得一试!

文件夹如何加密码&#xff1f;在与朋友、家人和同事共享同一电脑计算机时&#xff0c;您可能有一些不希望他们查看的重要或机密文件。那么如何避免这种情况呢&#xff1f;使用密码保护锁定文件和文件夹可以提高你的数字隐私和安全性&#xff0c;因为这意味着你需要输入密码才能…

【简单讲解TalkingData的数据统计】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

【因果推断python】16_工具变量2

目录 出生季度和教育对工资的影响 第一阶段 出生季度和教育对工资的影响 到目前为止&#xff0c;我们一直将这些工具视为一些神奇的变量 Z&#xff0c;它们具有仅通过干预变量影响结果的神奇特性。老实说&#xff0c;好的工具变量来之不易&#xff0c;我们不妨将它们视为奇迹…

ChatGPT-4o抢先体验

速度很快&#xff0c;结果很智能&#xff0c;支持多模态输入输出&#xff0c;感兴趣联系作者

Springboot框架开发与实用篇之热部署 2024详解

开发与实用 手动启动热部署 热部署&#xff08;Hot Deployment&#xff09;指的是在应用程序正在运行的情况下&#xff0c;对其进行更新或修改并将这些变更应用到正在运行的应用程序中的过程。通常情况下&#xff0c;传统的部署方式需要停止应用程序、部署更新&#xff0c;然…