华为HarmonyOS借助AR引擎帮助应用实现虚拟与现实交互的能力4-检测环境中的平面

news/2024/11/7 19:56:29/
<article class="baidu_pl">
article_content" class="article_content clearfix">

本章节介绍如何通过AR Engine进行平面检测。通过学习本章节,您可以检测当前环境中的平面,并在您的应用中处理这些平面

创建ARSession

您可以参考管理AR会话创建ARSession。

创建平面对象列表

  1. 创建一个平面对象列表planeList,用于存放AR Engine运行过程中检测到的所有平面
     
    1. AREngine_ARTrackableList *planeList = nullptr;
    2. HMS_AREngine_ARTrackableList_Create(arSession, &planeList);
  2. 设置可跟踪对象类型为ARENGINE_TRACKABLE_PLANE。
     
    1. AREngine_ARTrackableType planeTrackedType = ARENGINE_TRACKABLE_PLANE;

识别当前环境中的平面

调用HMS_AREngine_ARSession_GetAllTrackables函数,检测当前环境中的所有平面,并将结果存放在planeList中。

 
  1. HMS_AREngine_ARSession_GetAllTrackables(arSession, planeTrackedType, planeList);

获取平面数量

调用HMS_AREngine_ARTrackableList_GetSize函数获取平面数量,结果存放在planeListSize中。

 
  1. int32_t planeListSize = 0;
  2. HMS_AREngine_ARTrackableList_GetSize(arSession, planeList, &planeListSize);

在您的应用环境中,可能存在0个、1个或多个平面

当planeListSize等于0时,表示当前环境中不存在平面

当planeListSize等于1时,表示当前环境中仅存在1个平面

当planeListSize大于1时,表示当前环境中存在多个平面

获取平面实例

当存在1个或多个平面时,您可以依次遍历planeList获取所有平面对象。

 
  1. for (int i = 0; i < planeListSize; ++i) {
  2. // 遍历所有平面对象,根据您的应用进行处理。
  3. }

对于第i个平面,创建并获取可跟踪对象,并将其转化为平面对象AREngine_ARPlane。

 
  1. AREngine_ARTrackable *arTrackable = nullptr;
  2. HMS_AREngine_ARTrackableList_AcquireItem(arSession, planeList, i, &arTrackable);
  3. AREngine_ARPlane *arPlane = reinterpret_cast<AREngine_ARPlane*>(arTrackable);

说明

AR Engine中,任何物体都被定义为可跟踪对象AREngine_ARTrackable。平面也是一种可跟踪对象,您可以通过类型转换reinterpret_cast将可跟踪对象AREngine_ARTrackable转化为平面对象AREngine_ARPlane。

销毁平面对象列表

 
  1. HMS_AREngine_ARTrackableList_Destroy(planeList);

http://www.ppmy.cn/news/1545151.html

相关文章

Scala访问控制权限详解与应用实践 #Scala #scala

Scala访问控制权限 默认访问权限&#xff1a; 描述&#xff1a;Scala中的默认访问权限相当于Java中的public。如果一个变量或方法没有任何修饰符&#xff0c;就代表默认访问权限。作用域&#xff1a;全局&#xff0c;可以在任何地方访问。 protected访问权限&#xff1a; 描述&…

OKHTTP断点续传

OKHTTP断点续传 文章目录 OKHTTP断点续传HTTP断点续传知识点RangeContent RangeEtag&If-Range&#xff08;文件唯一标志&#xff09; OKHTTP断点下载OKHTTP 简单短断点下载代码示例 Android 断点续传一直是面试的高频问点&#xff0c;这里从HTTP断点续传知识和Android续传思…

[零基础学python]系列,第四章:遨游变量的海洋(3)!

Hello&#xff01;我是撞走不开心的龙跃&#xff01;今天我们还是请来了可爱可爱D皮卡丘来陪同我们讲课哦&#xff01; 废话不多说&#xff01;咱们直接开干&#xff01;今天这节课词汇可能有点多&#xff01;肝酱们保护好自己的肝哦&#xff01; 请阅读目录&#xff1a; 输…

软件测试学习笔记丨Flask操作数据库-对象与数据模型

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/23440 对象与数据模型 数据模型&#xff1a;是数据特征的抽象&#xff0c;抽象层次上描述了系统的静态特征、动态行为和约束条件&#xff0c;为数据库系统的信息表示与操作提供一个抽象的框架…

Scala 中的Set

Set &#xff1a;集合。表示没有重复元素的集合&#xff0c; 特点&#xff1a; 唯一&#xff0c;无序。 1. Set 有可变 (mutable) 和不可变 (immutable) 两种类型。不可变 Set 创建后元素不能修改&#xff1b; 可变 Set 可对元素进行添加、删除等操作&#xff0c;这两种类型…

spring-data-jpa 一对多,多对一,多对多

spring-data-jpa 一对多&#xff0c;多对一&#xff0c;多对多 首先介绍几个主要用到的注解 ManyToOne 多对一ManyToMany 多对多OneToMany 一对多JoinColumn 两表之间的关联JsonIgnoreProperties 忽略属性&#xff08;避免Jason套娃&#xff09; 比如我有两张表&#xff1a;…

Apache POI(java操作Miscrosoft Office)

Apache POI 1.1 介绍 Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是&#xff0c;我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。 一般情况下&#xff0c;POI 都是用于操作 Excel 文件。 Apache POI 的应用场景&a…

5分钟科普:AI网关是什么?应用场景是什么?有没有开源的选择?

AI网关的功能及其定义 AI网关位于企业应用与内外部大模型调用的交汇点&#xff0c;能够灵活地将请求转发给内部自建模型或外部大模型服务提供商&#xff0c;甚至海外的服务商。它管理着企业所有的AI出口流量&#xff0c;为企业内的不同团队提供了多方面的优势。 对于开发团队…