Vuforia AR篇(五)— 地平面检测

目录

  • 前言
  • 一、什么是地平面识别?
  • 二、使用步骤
  • 三、示例代码
  • 四、效果
  • 五、总结

前言

在增强现实(AR)应用程序的开发中,地平面识别是一项关键技术,它允许虚拟对象与现实世界的地面进行互动。Vuforia 是一个功能强大的 AR 开发平台,提供了高效的地平面识别功能,使开发者能够创建沉浸式的 AR 体验。在这篇博客中,我们将介绍如何使用 Vuforia 进行地平面识别。


一、什么是地平面识别?

地平面识别(Ground Plane Detection)是 AR 技术的一部分,它可以识别和跟踪现实世界中的平面,特别是地面。这项技术使得虚拟对象能够放置在地面上,并与用户和环境进行互动。通过地平面识别,AR 应用可以提供更加自然和真实的用户体验。

二、使用步骤

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

  2. 添加地平面识别功能:在 AR Camera 的 Inspector 面板中,确保 Vuforia Behaviour 启用。

​ 添加一个 Ground Plane Stage。可以在 GameObject -> Vuforia Engine -> Ground Plane -> Ground Plane Stage 中找到。

​ Ground Plane Stage 是虚拟对象放置的地方。可以在其下添加任何 3D 对象。

在这里插入图片描述

  1. 配置 Plane Finder

​ 添加一个 Plane Finder(GameObject -> Vuforia Engine -> Ground Plane -> Plane Finder)。

​ Plane Finder 会自动检测地面并生成锚点。在 Plane Finder 的 Inspector 中,确保设置正确的 Ground Plane Stage。在这里插入图片描述

  1. 创建显示模型

​ 添加一个 Cube(Ground Plane Stage -> Cube)。

​ 并把尺寸设置为0.1

在这里插入图片描述

  1. 打印或者在手机上全屏显示测试图片,直到出现识别窗口UI

    点击然后就会在创建中创建Cube

    在这里插入图片描述

三、示例代码

using UnityEngine;
using Vuforia;public class GroundPlaneHandler : MonoBehaviour
{public GameObject objectToPlace;void Start(){VuforiaBehaviour.Instance.DevicePoseBehaviour.OnTargetStatusChanged += OnTargetStatusChanged;}void OnTargetStatusChanged(ObserverBehaviour behaviour, TargetStatus targetStatus){if (targetStatus.Status == Status.TRACKED){Vector3 position = behaviour.transform.position;Quaternion rotation = behaviour.transform.rotation;Instantiate(objectToPlace, position, rotation);}}
}

四、效果

在这里插入图片描述

五、总结

Vuforia 提供了强大且易于使用的地平面识别功能,能够显著增强 AR 应用的用户体验。通过本文的介绍,您可以开始在自己的项目中实现地平面识别,创建更加真实和互动的 AR 体验。希望这篇博客对您的 AR 开发之旅有所帮助!

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

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

相关文章

Centos7安装Docker和DockerCompose

1.CentOS安装Docker Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10, CentOS 7 满足最低内核的要求,所以我们在CentOS 7安装Docker。 1.1.卸载(可选) 如果之前安装过旧版本的Docker,可以…

python项目中requirements.txt文件使用

由于之前用的技术栈是java,后续项目中需要逐渐用起python,但是很多地方只会用,没太了解过本质作用是什么,这里总结下 requirements.txt 一.作用 requirements.txt 文件是 Python 项目中常见的文件,用于列出项目所需…

【Linux】深入理解进程的优先级(Linux 2.6版本O(1)调度算法)

进程的优先级 【前置知识】一、进程的优先级(一)为什么要有优先级?(二)进程的优先级的范围 二、操作系统是如何实现进程的优先级?(Linux内核2.6版本O(1)调度算法) 【前置知识】 首先我们要了解…

FFmpeg 中 Filters 使用文档介绍

描述 这份文档描述了由libavfilter库提供的过滤器Filters、源sources和接收器sinks。 滤镜介绍 FFmpeg通过libavfilter库启用过滤功能。在libavfilter中,一个过滤器可以有多个输入和多个输出。为了说明可能的类型,我们考虑以下过滤器图: 这个过滤器图将输入流分成两个流,然…

补上缺失的一环----一种数据库系统主动对外推送表的增删改实时变动数据的实践

在实践中,一些应用程序或模块需要实时获取某些数据库表的增删改变动数据。 对此需求,常见的方案有: 1、应用程序通过轮循查询数据库方式获取数据库表的增删改变动数据. 2、应用程序在把数据写入数据库表之前,通过事件方式向外通知数据库表的增…

OZON的选品工具,OZON选品工具推荐

在电商领域,选品一直是决定卖家成功与否的关键因素之一。随着OZON平台的崛起,越来越多的卖家开始关注并寻求有效的选品工具,以帮助他们在这个竞争激烈的市场中脱颖而出。本文将详细介绍OZON的选品工具,并推荐几款实用的辅助工具&a…

redis之发布与订阅

华子目录 什么是发布与订阅?常用命令psubscribe pattern1 [pattern2...]subscribe channel1 [channel2...]publish channel messagepunsubscribe pattern1 [pattern2...]unsubscribe [channel1 [channel2...]]pubsub subcommand argument1 [argument2...] 示例1示例…

ESP使用巴法云远程OTA(VScode + Platform io)

ESP使用巴法云远程OTA(Platform) 什么是OTA: OTA(Over-the-AirTechnology)即空中下载技术,是通过移动通信的空中接口实现对移动终端设备及SIM卡数据进行远程管理的技术。OTA升级是物联网(IOT&am…

如何使用前端表格控件实现多数据源整合?

前言 作为表格产品的典型应用场景之一,几乎所有的行业都会存在类 Excel 报表开发这样的应用场景,而在这些应用场景中,经常会遇见下面的这些痛点: 报表数据往往来自多个不同的数据源,需要报表系统能够同时连接多个数据源…

AI的制作思维导图

AI(人工智能)的实现通常涉及以下几个步骤: 1.问题定义:首先确定你想要解决的问题是什么,这将决定你需要设计什么样的系统。 2.数据收集:根据你的需求,收集相关的数据集来训练你的AI模型。数据的…

x264 编码器中 PTS 与 DTS 原理分析

DTS和PTS 解释 DTS:Decoding Time Stamp,这通常指的是解码时间戳,是视频帧或音频样本在解码器中解码的时间点。DTS用于确保视频帧或音频样本在正确的时间被解码,以保持视频和音频的同步。PTS:Presentation Time Stamp,是指显示时间戳,是视频帧或音频样本应该被显示给观众…

Unity有限状态机实现怪物AI(代码框架思路)

目录 状态的枚举 状态基类 接口(规范不同对象的同一行为) 状态机类(作为媒介用于管理各个状态之间的转换) 附带一个攻击状态的子类脚本作为示例: 状态的枚举 首先最容易想到的是状态的枚举,比如说攻击状态、巡逻状态、追击状态等等,用枚举进行表示 public enum E_AI_State…

前端工程化工具系列

所有和前端工程化工具的系列合集,快速提升开发效率。文档持续更新中,敬请期待~感兴趣的可收藏 前端工程化 这个专栏 已完成 前端工程化工具系列(一)—— ESLint(v9.4.0):代码质量守护者 基础篇 前端工程化…

AI技术从起源到革命性的未来

在科技日新月异的今天,huizerc.com人工智能(AI)技术已成为推动社会进步的重要力量。从最初的概念提出,到如今的广泛应用,AI技术经历了漫长而曲折的发展历程。本文将深入探讨AI技术的起源、发展历程、当前应用以及未来展…

Vue——模板引用(不建议使用,了解)

文章目录 前言测试案例 前言 模板引用,在官方文档中也有很详细的描述。 虽然 Vue 的声明性渲染模型为你抽象了大部分对 DOM 的直接操作,但在某些情况下,我们仍然需要直接访问底层 DOM 元素。 个人理解为: 在vue中,依据…

【数据库系统概论】程序题

“学生管理数据库”包含以下三个表,即学生表Student、课程表Course和选课表SC,结构如下: Student(Sno,Sname,Ssex,Sage,Sdept)Course (Cno,Cname,Cpno,Ccredit)SC(Sno,Cno,Grade)其中,Sno为学号,Sname为学生姓名,Ssex为性别,Sage为年龄 系别:Cno为课程号…

Milvus 基本操作

1、maven 依赖 <dependency><groupId>io.milvus</groupId><artifactId>milvus-sdk-java</artifactId><version>2.3.3</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>sl…

STL容器--list

1. list的介绍及使用 1.1 list的介绍 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 2. list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指其前…

面试官:对于MQ中的消息丢失你是如何理解的?

相信很多的小伙伴在面试的时候&#xff0c;涉及到MQ的面试题&#xff0c;消息丢失是必问面试题之一。那么对于消息丢失你又是如何理解的呢&#xff1f; 下面我们一起来看一下。 本文以 Kafka 举例说明 一、什么是消息丢失&#xff1f; 消息丢失的定义是&#xff1a;在消息传递…

ActivityRecord、TaskRecord、ActivityStack以及Activity详解

adb shell dumpsys activity activities 输出涉及到了解 Android 活动管理器&#xff08;Activity Manager&#xff09;的当前状态&#xff0c;以及系统中运行的活动和任务的详细信息。这是系统中活动&#xff08;Activities&#xff09;、任务&#xff08;Tasks&#xff09;、…