首页 > 其他分享 >Vuforia AR篇(七)— 二维码识别

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

时间:2024-06-09 22:59:46浏览次数:15  
标签:void Barcode behaviour 二维码 AR using Vuforia

目录

前言

在数字化时代,条形码和二维码已成为连接现实世界与数字信息的重要桥梁。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来显示内容

在这里插入图片描述

四、效果

在这里插入图片描述

标签:void,Barcode,behaviour,二维码,AR,using,Vuforia
From: https://blog.csdn.net/qq_34697930/article/details/139451103

相关文章

  • 计算机组成原理 第六章 计算机的运算方法 Part4 浮点数的四则运算、IEEE754标准与ALU
    1.浮点数介绍基本格式首先需要明确的是浮点数的组成,浮点数由阶码和尾数两部分组成其中阶码又分为阶符和数值部分,阶码J和阶码的位数m共同反应浮点数的表示范围以及小数点的实际位置;尾数由数符和数值部分组成,数符代表浮点数的符号,尾数的数值部分反映浮点数的精度例:阶码E反......
  • SpringBoot: 可执行jar的特殊逻辑
    这一篇我们来看看Java代码怎么操作zip文件(jar文件),然后SpringBoot的特殊处理,文章分为2部分ZipAPI解释,看看我们工具箱里有哪些工具能用SpringBoot的特殊处理,看看SpringBootJar和普通Jar的不同1.ZipAPI解释1.ZipFile我们先通过ZipFile来读取jar文件,通过ZipFile#entries......
  • init_array与got劫持——[zer0pts 2020]easy strcmp
    只是在顺思路,wp参考了2位大佬文章列表|NSSCTF[Zer0pts2020]easystrcmp分析与加法-CSDN博客题目Die 虚拟机运行一下 没有输入,直接报错退出了IDA 很奇怪啊,就是一个比较从我们运行直接报错来看,我们运行时a1>1这个条件是不成立的我的最初思路就是调试把a1改了或......
  • Beyond Compare软件下载-详细安装教程视频
    软件简介:  BeyondCompare是一款不可多得的专业级的文件夹和文件对比工具。使用它可以很方便地对比出两个文件夹或者文件的不同之处,相差的每一个字节用颜色加以表示,查看方便,支持多种规则对比。是程序工程师以及上班族必备的有效辅助工具。安装包获取地址:beyond......
  • 如何下载EarMaster Pro软件及详细安装步骤
    根据大数据调查表明软件功能和优势:灵敏的音高识别系统,准确辨认出您演唱或演奏的乐段。我们必须承认来自丹麦皇家歌曲学院的多媒体歌曲教育软件EarMasterPro以问答的交互形式,寓教于乐的视听方法,给专业和非专业歌曲人士以极大的歌曲学习帮助。很明显EarMaster提供了相当多的......
  • 1.安装opencv-python失败的解决办法 2.pip 安装失败 3.WARNING:Ignoring invalid distr
    问题:安装opencv-python失败:用:pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simpleopencv-python安装会被卡在Buildingwheelforopencv-python(pyproject.toml)...之后便安装失败。使用顺序:先使用方法二,再使用方法一(有可能不会解决问题),用方法三查看问题出......
  • Go - Using error variables to differentiate between input types
     packagemainimport("fmt""os""strconv")funcmain(){arguments:=os.Argsiflen(arguments)==1{fmt.Println("Notenougharguments")}vartotal,nInts,nFloatsint......
  • Star-ccm+网格划分技巧之网格类型及适用场合
    大家在进行网格划分时有没有遇到这样的情况:1、画网格时间很长;2、画网格到中途发生错误,这时候就要用到并行网格划分(ParallelMeshing)。并行网格划分(ParallelMeshing)就是使用多个内核数来加速网格生成,同时比单个内核创建更大的网格。在对大型零件进行网格划分时,此功能特别有......
  • 使用 ECharts 绘制3D饼图,立体效果华丽渲染!
    ✈️✈️✈️目录使用ECharts绘制3D饼图首先了解3D饼图的构成准备工作数据定义绘制一个三维饼图合并配置并初始化图表实践结语使用ECharts绘制3D饼图在数据可视化中,饼图是表达数据占比信息的常见方式。ECharts作为一个强大的数据可视化库,除了标准的二维饼图,也支持更......
  • Ten Tips for Smarter Google Searches (十个更聪明使用 Google 搜索的技巧)
    TenTipsforSmarterGoogleSearches十个更聪明使用Google搜索的技巧 Date:Dec1,2006Articleisprovidedcourtesyof Que.Returntothearticle MostpeopleuseGoogleinaveryinefficientandoftenineffectivemanner.Ifallyoudoisenterafew......