Unity Vuforia(高通)AR全流程

2023-10-31

Unity Vuforia播放视频全过程(从Unity的安装到打包)

一、安装Unity
(1)点击安装地址下载Unity Hub
在这里插入图片描述
下载好之后点击安装。
(2)从Unity Hub进去安装Unity(要先注册登陆账号)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安装完后是这样的
在这里插入图片描述
二、新建项目
在这里插入图片描述
在这里插入图片描述
项目创建完成打开如下:
在这里插入图片描述
目标平台为安卓平台,选择菜单file—>buildsetting
在这里插入图片描述

三、项目制作
(1)在Unity内导入vuforia engine
在这里插入图片描述
window—>package manager
在这里插入图片描述
(2)前往Vuforia注册登录账号
点击Vuforia前往官网
在这里插入图片描述
注册登陆之后:
在这里插入图片描述
创建应用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)上传识别图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(4)下载到Unity
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(5)将下载好的文件放置进入Unity(手动拖就好)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(6)按想法(识别图片播放视频)制作工程
在此窗口点击鼠标右键
在这里插入图片描述
依次点击Vuforia Engine—>AR Camera
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在此窗口继续鼠标右键
依次点击Vuforia Engine—>Image
在这里插入图片描述
(7)配置密钥
回到AR Camera,点击open vuforia engine configuration
在这里插入图片描述
在这里插入图片描述
回到Vuforia官网
在这里插入图片描述

将框内密钥复制进入Unity
在这里插入图片描述
在这里插入图片描述
将AR Camera的下图脚本移除(remove component)
在这里插入图片描述

返回至ImageTarget,将下图脚本移除:
在这里插入图片描述
创建脚本:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
脚本代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/*==============================================================================
Copyright (c) 2017 PTC Inc. All Rights Reserved.

Copyright (c) 2010-2014 Qualcomm Connected Experiences, Inc.
All Rights Reserved.
Confidential and Proprietary - Protected under copyright and other laws.
==============================================================================*/
using Vuforia;

/// <summary>
/// A custom handler that implements the ITrackableEventHandler interface.
///
/// Changes made to this file could be overwritten when upgrading the Vuforia version.
/// When implementing custom event handler behavior, consider inheriting from this class instead.
/// </summary>
public class TestAR : MonoBehaviour, ITrackableEventHandler
{
    #region PROTECTED_MEMBER_VARIABLES

    protected TrackableBehaviour mTrackableBehaviour;
    protected TrackableBehaviour.Status m_PreviousStatus;
    protected TrackableBehaviour.Status m_NewStatus;

    #endregion // PROTECTED_MEMBER_VARIABLES

    #region UNITY_MONOBEHAVIOUR_METHODS

    protected virtual void Start()
    {
        mTrackableBehaviour = GetComponent<TrackableBehaviour>();
        if (mTrackableBehaviour)
            mTrackableBehaviour.RegisterTrackableEventHandler(this);
    }

    protected virtual void OnDestroy()
    {
        if (mTrackableBehaviour)
            mTrackableBehaviour.UnregisterTrackableEventHandler(this);
    }

    #endregion // UNITY_MONOBEHAVIOUR_METHODS

    #region PUBLIC_METHODS

    /// <summary>
    ///     Implementation of the ITrackableEventHandler function called when the
    ///     tracking state changes.
    /// </summary>
    public void OnTrackableStateChanged(
        TrackableBehaviour.Status previousStatus,
        TrackableBehaviour.Status newStatus)
    {
        m_PreviousStatus = previousStatus;
        m_NewStatus = newStatus;

        if (newStatus == TrackableBehaviour.Status.DETECTED ||
            newStatus == TrackableBehaviour.Status.TRACKED ||
            newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
        {
            Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " found");
            OnTrackingFound();
        }
        else if (previousStatus == TrackableBehaviour.Status.TRACKED &&
                 newStatus == TrackableBehaviour.Status.NO_POSE)
        {
            Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " lost");
            OnTrackingLost();
        }
        else
        {
            OnTrackingLost();
        }
    }


    public GameObject panel;
    #endregion // PUBLIC_METHODS

    #region PROTECTED_METHODS

    protected virtual void OnTrackingFound()
    {
        var rendererComponents = GetComponentsInChildren<Renderer>(true);
        var colliderComponents = GetComponentsInChildren<Collider>(true);
        var canvasComponents = GetComponentsInChildren<Canvas>(true);

        // Enable rendering:
        foreach (var component in rendererComponents)
            component.enabled = true;

        // Enable colliders:
        foreach (var component in colliderComponents)
            component.enabled = true;

        // Enable canvas':
        foreach (var component in canvasComponents)
            component.enabled = true;
        panel.SetActive(true);
    }


    protected virtual void OnTrackingLost()
    {
        var rendererComponents = GetComponentsInChildren<Renderer>(true);
        var colliderComponents = GetComponentsInChildren<Collider>(true);
        var canvasComponents = GetComponentsInChildren<Canvas>(true);
        // Disable rendering:
        foreach (var component in rendererComponents)
            component.enabled = false;

        // Disable colliders:
        foreach (var component in colliderComponents)
            component.enabled = false;

        // Disable canvas':
        foreach (var component in canvasComponents)
            component.enabled = false;

        panel.SetActive(false);
    }
    #endregion // PROTECTED_METHODS
}

(8)编辑设置页面(使用VideoPlayer播放视频)
选中ImageTarget,鼠标右键—>UI—>Canvas
在这里插入图片描述
选中Canvas,鼠标右键—>Video—>VideoPlayer
在这里插入图片描述
选中VideoPlayer,更改分辨率大小,并添加RawImage
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

创建Render Texture
右键Asset—>Greate—>Render Texture
在这里插入图片描述
选中Render Texture,更改分辨率
在这里插入图片描述
赋值给VideoPlayer和RawImage
在这里插入图片描述
在这里插入图片描述
(9)将要播放的视频放入工程(手动拖拽就好)
在这里插入图片描述

将Canvas隐藏,并将Canvas赋值给脚本TestAR(手动拖拽)
在这里插入图片描述
在这里插入图片描述
Ctrl+S保存项目,点击如下按钮运行:
在这里插入图片描述
将识别图放入摄像头识别区内即可播放视频
在这里插入图片描述

四、项目打包
菜单栏file—>buildsetting在这里插入图片描述在这里插入图片描述
将场景添加(手动拖拽)
在这里插入图片描述
点击build
在这里插入图片描述
至此打包完成。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity Vuforia(高通)AR全流程 的相关文章

  • 蒙特卡洛积分、重要性采样、低差异序列

    渲染公式 渲染的目标在于计算周围环境的光线有多少从表面像素点反射到相机视口中 要计算总的反射光 每个入射方向的贡献 必须将他们在半球上相加 为入射光线 与法线 的夹角 为方便计算可以使用法线向量和入射向量 单位化 的乘积表示 对于基于图像的
  • Unity 粒子特效、材质发光 HDR ShaderGraph图文教程[完成lit发光设置]

    效果如图 准备工作 在hdr模式下 关闭Directional Light 相机设置 移动球挂一个点光源作为子节点 设置自行调节 0 创建移动球的材质及shader shader gt 在Project Create Shader Grap
  • FBX导入Unity中模型没有材质的处理

    一 3dMax导出FBX时的注意事项 导出时 确保maps文件存在 里面放着fbx用到的image 二 在Unity中的设置 1 文件拖入Unity的Assets文件夹中 2 查看模型的材质是否存在 如下所示 材质为None 此时拖入sce
  • Unity中实现倒计时的几种方式

    1 Time time using UnityEngine public class TimeTest MonoBehaviour public float secound 10 void Update Timing private flo
  • Unity3d 插件 系列——DoTweenPro介绍(图文详细+案例)

    Unity3d 插件 系列 DoTweenPro介绍 图文详细 案例 前言 一 DoTweenPro简介 二 DoTweenPro安装 三 DoTweenPro主要组件 1 DoTweenAnimation 2 DoTweenPath 3
  • Unity与Android的Back键冲突解决

    Unity与Android的Back键冲突解决 上一篇的最后留下了两个问题 Unity视图下横屏闪退 Unity视图下Android无法响应back返回上一activity 对于第一个问题 应该是Unity横屏下视图的某些设置跟Androi
  • unity中创建询问弹出窗口

    在开发过程中进程会遇到需要弹出一个窗口询问用户是否进行的操作 今天就来制作一个这样弹出窗口 然后根据弹出窗口的选择内容不同进行不同的操作 本例中主要是为了删除一个数据 而在删除数据操作前需要得到用户的一个确认操作 这里面主要用到了Notif
  • VRRP和DHCP配置

    1 VRRP术语 2 VRRP工作过程 3 DHCP的优势 4 DHCP的工作原理 1 VRRP术语 VRRP 也即虚拟路由器冗余协议 利用VRRP 一组路由器 同一个LAN中的接口 协同工作 但只有一个处于Master状态 处于该状态的路
  • Unity学习笔记(一)—— 基础知识

    一 基础知识 1 开发团队组成 2 unity特点 图形界面 所见即所得 入门简单 支持C 比OC C 更友好 js 国内外资源丰富 因为使用的人多 跨平台性好 PC端 移动端等 对VR AR的支持最完善 3 成功案例 游戏 炉石传说 神庙
  • unity3d大型互动照片墙

    1 本次应客户需求 制作一个大型照片墙互动 输出分辨率为9600 4320 注 unity3d官方推荐最大分辨率为8192 3686 4 经过现场长达24小时暴力测试中途未发生问题 姑且判定可以达到正常标准 废话不多说 先上效果 unity
  • unity: C#的Action Event Delegate的异同

    目录 一 Action 二 Event 三 Action和Event区别 四 Delegate 总结 Action Event Delegate的异同 前言 Action Event和Delegate都是C 语言中的重要概念 分别用于管理函
  • VLC for unity 插件如何使用

    VLC for unity 插件如何使用 先去下载一个VLC播放器 安装完成后 然后导入插件链接https download csdn net my 这个插件我的另一个上传资源里有 或者到商店去下载 这个插件链接下载完是一个txt文档 里面
  • Unity保存图片到相册

    Unity保存图片到Android相册 Java 纯文本查看 复制代码 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
  • unity3d 自定义的图片无法放入source image中

    须将图片的texture type改为 sprite
  • 【原神游戏开发日志1】缘起

    原神游戏开发日志1 缘起 版权声明 本文为 优梦创客 原创文章 您可以自由转载 但必须加入完整的版权声明 文章内容不得删减 修改 演绎 相关学习资源见文末 大家好 最近看到原神在TGA上频频获奖 作为一个14年经验的游戏开发行业的老兵 我就
  • unity小球跟随音乐节奏放大缩小和改变颜色

    放在小球身上 设置对应组件即可 using System Collections using System Collections Generic using Unity VisualScripting using UnityEngine
  • 解读 | VR体验式教育的优势 让教育触手可及

    大家好 我是极智视界 欢迎关注我的公众号 获取我的更多前沿科技分享 邀您加入我的知识星球 极智视界 星球内有超多好玩的项目实战源码和资源下载 链接 https t zsxq com 0aiNxERDq 很多孩子过多地沉浸在所谓的 传统教育
  • 游戏开发常见操作梳理系列之——玩家信息的显示系统

    在游戏中 有不少游戏在左上角会出现玩家的头像和等级以及血量 这就是玩家的信息显示系统 那么这些是如何制作的呢 接下来我将讲讲代码的操作 其它操作我会在其它笔记中一一说明 敬请期待 信息的显示相当简单就是控制一些UI 然后在其它系统里面填写相
  • 游戏开发之常见操作梳理——武器装备商店系统(NGUI版)

    游戏开发中经常出现武器商店 接下来为你们带来武器装备商店系统的具体解决办法 后续出UGUI Json版本 敬请期待 武器道具的具体逻辑 using System Collections using System Collections Ge
  • 游戏开发常用实践操作之按动任意键触发

    接下来一些笔记会对于一些大大小小的实践操作进行记录 希望对你有所帮助 在游戏中 我们经常会遇到一些按动任意键触发的操作 接下来展示核心代码 以下是对于Unity中的操作 使用的UI是NGUI 对于核心操作没有影响 你可以自己置换 void

随机推荐

  • SpringBoot入门教程

    作者简介 哪吒 CSDN2021博客之星亚军 新星计划导师 博客专家 哪吒多年工作总结 Java学习路线总结 搬砖工逆袭Java架构师 关注公众号 哪吒编程 回复1024 获取Java学习路线思维导图 大厂面试真题 加入万粉计划交流群 一起
  • 修改Xcode生成的版权信息 Copyright © 2016年 xxx. All rights reserved.

    修改Xcode生成的版权信息 Copyright 2016年 xxx All rights reserved 选中 xcodeproj工程文件 显示包含内容 打开project pbxproj文件 全文搜索ORGANIZATIONNAME
  • Linux操作系统管理-LVM

    1 物理卷管理 常用管理命令如下 root linux8 pvcreate dev nvme0n2 dev nvme0n3 Physical volume dev nvme0n2 successfully created Physical
  • VMware虚拟机上如何设置windows7虚拟系统与主机时间不同?

    每次打开虚拟机时 windows虚拟机的时间老是与主机时间相同 就很烦 如下设置虚拟机与主机时间不同步 在搜索栏输入 管理工具 2 打开管理工具 gt 服务 3 找到VMware Tools做如下设置 4 找到Windows Time做如下
  • AIX 软件安装与维护

    1 AIX 软件产品 2 软件包的构成 由一个或者多个package构成一个完整的LPP 一个LPP是一个完整的软件产品 这个软件包含与这个LPP相关的所有Package 一个软件包是由一组具有共同功能的文件集而组成的一个可单独安装的镜像
  • 异常的深入研究与分析(2)

    本文主要是关于异常的面试题目 出自前几年的迅雷 支付宝等名企的笔试题目 内容由金丝燕网原创编辑 转载请注明链接 题目一 考察异常类的继承结构 那个类是所有异常的基础类 A String B Error C Throwable D Runti
  • 铝电解电容的寿命计算(纹波电流法)手把手教你

    本文教你通过纹波电流预测铝电解电容的寿命 计算方法来自Nichicon 所以以Nichicon的电解电容为例 不同厂家的计算公式可能稍有不同 首先选一款铝电解电容为例 这里选择常见的LGN系列3000h 105 420V 470uF的电容
  • matlab找出二维矩阵中最大值的位置或者最小值的位置

    matlab寻找最大值或者最小值是通过max和min命令 对应二维矩阵寻找最大元素就是max max A 注意二维矩阵要写两个max 找对应位置用find函数 举个例子 gt gt A 1 2 3 4 5 6 A 1 2 3 4 5 6 g
  • android 为什么使用dp单位,它的真正优势在哪里?

    一些新手开发人员 不是很明白dp的真正好处 只是知道这样用 那么今天我用我的理解来解释下 有不对之处 欢迎指正 什么是dp dp是一种与像素密度无关的单位 那什么是像素密度呢 先来解释下像素密度 像素密度 就是所谓的dpi 每英寸像素的数量
  • 零基础入门语义分割-Task1 赛题理解

    1 3 数据标签 赛题为语义分割任务 因此具体的标签为图像像素类别 在赛题数据中像素属于2类 无建筑物和有建筑物 因此标签为有建筑物的像素 赛题原始图片为jpg格式 标签为RLE编码的字符串 RLE全称 run length encodin
  • Chrome OS 初体验

    今天Google放出了Chrome OS的源码 很快网上有人把它编译成功在虚拟机上跑了起来 有朋友第一时间把虚拟镜像下载了 于是搞来一份 立刻开始体验 安装过程就不多说了 可以参考谷奥上的Chromium OS 安装教程 我用的是VMWar
  • Vue中replace的用法

    Vue js V 啥也不说了 就是这么牛逼
  • ps 2019安装破解以及添加CUR和ICO插件

    下载最新版 2019版 的PS后 只能使用和登陆 挺麻烦的 就想着破解来着 在网上搜索了一大圈 终于解决了 使用之前的替换amtlib dll的方式不适用了 需要替换ps的启动程序 ps 64位的安装路径为C Program Files A
  • <van-field>使用方案

    1 官方示例
  • js += 含义(小知识)

    是连接复值 s 5 表示把s的值 5后复值给s若s是字符串 则是连接后赋值 s 5 就是将s字符串的值连接上字符串5后赋值给s s 5 若s为字符串 则同s 5 因为JS是弱变量 会自动转5为 5 与s s 5 语句同意 转载于 https
  • 《数据库系统内 幕》分布式系统

    分布式部分 章8 分布式系统抽象 章9 故障 无超时的故障检测器 phi增量故障检测器 章10 领导者选举 选举过程 选举规则 章11 以数据为中心的一致性模型 单操作一致性模型 客户为中心的一致性 会话模型 复制协议 基于主备份协议的复制
  • Linux国内环境下安装kubeadm、kubelet、kubectl

    因为项目需要用Kubernetes来改版底层的Docker 所以一边写完成现在的任务一边继续学习Kubernetes 现有的一些文档和Kubernetes中文社区的中文文档都没有很详细的初期安装部署环境的教程 所以建议直接去官网看文档 当然
  • 优秀网站源码、编程源码下载网站大集中

    1 51源码 http www 51aspx com 2 源码之家 http www codejia com 3 源码网 http www codepub com 4 虾客源码 http www xkxz com 5 多多源码 http w
  • 牛客SQL练习三

    21查找所有员工自入职以来的薪水涨幅情况 题目描述 查找所有员工自入职以来的薪水涨幅情况 给出员工编号emp no以及其对应的薪水涨幅growth 并按照growth进行升序 CREATE TABLE employees emp no in
  • Unity Vuforia(高通)AR全流程

    Unity Vuforia播放视频全过程 从Unity的安装到打包 一 安装Unity 1 点击安装地址下载Unity Hub 下载好之后点击安装 2 从Unity Hub进去安装Unity 要先注册登陆账号 安装完后是这样的 二 新建项目