【低成本-点云采集】使用XRFoundation实现点云采集

news2024/11/29 10:36:33

使用XR Foundation

现基于XR Foundation的接口实现渲染和采集

关键类

ARPointCloudManager

介绍

ARPointCloudManager:ARTrackedObjects的管理器。使用XRDepthSubsystem来识别和跟踪物理环境中的深度数据。

属性
NameDescription
gameObjectNameThe name to be used for the GameObject whenever a new Object is detected.
pointCloudPrefabGetter or setter for the Point Cloud Prefab.
方法
NameDescription
GetPrefab()The Prefab that will be instantiated for each ARPointCloud. Can be null.
OnAfterSetSessionRelativeData(ARPointCloud, XRPointCloud)Invoked after each point cloud is updated with new data.
OnDisable()Invoked when this MonoBehaviour is disabled. Used to unregister with the ARRaycastManager.
OnEnable()Invoked when this MonoBehaviour is enabled. Used to register with the ARRaycastManager.
OnTrackablesChanged(ListCloud>, ListCloud>, ListCloud>)Invokes the pointCloudsChanged event.
Raycast(Ray, TrackableType, Allocator)Implementation for the IRaycaster interface. Raycasts against every point cloud.
事件
NameDescription
pointCloudsChangedInvoked once per frame with information about the ARTrackedObjects that have changed, that is, been added, updated, or removed. This happens just before ARTrackedObjects are destroyed, so you can set ARTrackedObject.destroyOnRemoval to false from this event to suppress this behavior.

点云渲染

这里介绍如何用XR Foundation的接口渲染点云。

脚本介绍

这里,我已实现两个对点云进行可视化的脚本,一个是通过粒子系统渲染点云,一个是通过Mesh渲染点云,两种都可用。

  • EqPointCloudPointsParticleVisualizer
  • EqPointCloudPointsMeshVisualizer

此外,也可使用XRFoundation提供的Visualizer,如下图。

可视化组件

制作预制件

使用粒子系统可视化:

将挂载EqPointCloudPointsParticleVisualizer的组件制作成预制件(名为”ParticlePointCloudPrefab“)。

EqPointCloudParticleVisualizer包含渲染“CurrentFrame”和“All”两种模式。因此这里可以不使用XRFoundation的ARPointCloudParticleVisualizer组件

粒子

使用Mesh可视化:

将挂载EqPointCloudPointsMeshVisualizer的组件制作成预制件(名为”MeshPointCloudPrefab“)。

网格

使用示例

仅使用XR Foundation的示例脚本即可。

步骤如下:

  • 在“AR Session Origin”对象下添加 “ARPointCloudManager”组件
    • 在“ARPointCloudManager”组件的PointCloudPrefab添加预制件(“…PointCloudPrefab”,这里二选一)

注意:挂载“ARPointCloudManager”组件的对象需要同时有“ARSessionOrigin”组件。

  • 在“AR Session Origin”对象下添加 “EqVisualizationMode”组件

    • 根据需求设置"Mode"值,若为All,则渲染所有已识别到的特征点。

挂载组件

注意事项

在“PointCloudPointsPrefab”预制件所挂载的组件中。

这里需要注意的是:若使用粒子系统可视化组件,粒子系统一定要在自定义的脚本(下图红框所示)的前面。

否则,即使当“Mode”设置为“All”,已经渲染的点云粒子也会在相机移动后消失。

注意顺序

点云采集

实现思路

  • 若通过粒子系统实现可视化,则可通过读取粒子的位置信息从而实现点云数据的保存。
  • 若通过Mesh实现可视化,则可读取mesh的顶点信息从而实现点云数据的保存。

使用示例

这里实现了点云采集器,直接挂载脚本即可

点云采集

在相关Button的OnClick事件中关联方法

事件绑定

采集点云

运行程序 -> 移动设备进行采集 -> 保存点云

数据保存路径:\Android\data\com.xxx.xxx\files\PointCloud\Data_xxx.pts

采集点云

点云加载

在Unity编辑器中导入查看

采集点云

关联文档

【低成本-点云采集】使用深度API实现点云采集

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

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

相关文章

接口自动化入门: Requests请求头设置详解!

在进行接口自动化测试时,设置请求头是非常重要的一步。请求头可以包含各种信息,例如身份验证、内容类型、接受语言等。在实际的测试中,我们使用Python的Requests库来发送HTTP请求,并设置请求头来模拟不同的场景和需求。 下面将通…

【炒股Zero To Hero】MACD金叉死叉到底是否有效,加上这个指标回报率增加197倍

移动平均收敛散度(MACD - Moving Average Convergence Divergence)是一种趋势跟踪动量指标,显示了证券价格的两个移动平均之间的关系。它用于识别趋势的方向和强度,属于技术分析中振荡器的一类。 MACD如何衡量股票及其趋势 有两…

一天300收入打底,​一个适合任何人的创业项目!

共享旅游卡项目,一天300收入打底,一个适合任何人的创业项目! 只要你不懒,生活总过得不会太差。只要你不贪,就算不能大富大贵,至少不会负债累累。 人性最难戒掉的两个字:一个是懒,另…

五、书架开发--1.书架标题组件交互、获取书架数据

添加书架页面,做路由配置 首先添加书架页面,到views中的store中添加一个StoreShelf表示书架 然后到路由中进行注册 然后书城首页的返回键我们是想要点击返回的话就跳转到书架页面,所以如下this.$router.push(/store/shelf) 做书架标题组件 …

python|pandas的loc

159就是一行。 ac就是那两行

20232831 2023-2024-2 《网络攻防实践》第5次作业

目录 20232831 2023-2024-2 《网络攻防实践》第5次作业1.实验内容(1)防火墙配置(具体IP配置参考自己的IP设置)(2)动手实践:Snort(3)分析配置规则 2.实验过程3.学习中遇到…

知了汇智鸿蒙系列讲座进校园,赋能产业数字化升级,助力创新人才培养

随着信创国产化战略的深入推进,以及万物互联时代的加速到来,信息技术产业正迎来前所未有的发展机遇。在这一背景下,成都知了汇智科技有限公司作为产教融合领域的先行者,积极响应国家号召,通过举办鸿蒙系列讲座进校园活…

算法与程序设计(实验2)----分治法求最近点对问题

一.实验目的 掌握分治法思想。学会最近点对问题求解方法。 二、实验内容 1. 对于平面上给定的N个点,给出具有最短距离的两点。 2. 要求随机生成N个点的平面坐标,应用蛮力法编程计算出所有点对的最短距离。 3. 要求随机生成N个点的平面坐…

unity动画的关键帧添加event-同步语音

在iclone中做的语音嘴型动画,因是用下图自带的方式语音生成的动画,而不是用plugin(面捕live会连同语音一起导出),所以导出来到Unity中,之后口型、动作、表情等没有声音。 我需要把原有的语音也重新在unity中加载上,原来…

[lesson19]对象的构造(下)

对象的构造(下) 特殊的构造函数 两个特殊的构造函数 无参构造函数 没有参数的构造函数当类中没有定义构造函数时,编译器默认提供一个无参构造函数,并且其函数体为空 拷贝构造函数 参数为const class_name&的构造函数当类中没有定义拷贝构造函数时&…

React复习全攻略:浅尝Redux的全局滋味

是什么? Redux 是一个使用叫做 “action” 的事件来管理和更新应用状态的模式和工具库 提供全局状态数据的单一仓库(对象树),管理应用的全局状态单一数据源,状态只读,状态修改只由纯函数完成 为什么用(特点…

C语言操作符详解(三)

一、表达式求值 1.1整型提升 C语言中整型算术运算总是至少以缺省整型类型的精度来进行的。 为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升。 如何进行整型提升呢? 1. 有符号整数提升是按…

如何理解Fourier Neural Operator (FNO)

写这篇blog是因为多方参考才读懂这两篇文章,希望能用自己的语言表达出来加深一下理解。因为是刚刚开始学习这部分内容,错误之处敬请指出。 文章目录 前言算子Operator概念理解问题建立Graph Neural Operator的思想证明采样多少个数据点可以用来表示一组a…

五金件外观检测机如何确保产品质量?

五金件是指由金属材料制成的各种零部件或制品,主要用于各种机械设备、工具、建筑结构以及其他领域。五金件通常由金属加工、铸造、锻造等方式制造,具有耐久性、强度高、稳定性强等特点。应用于工业制造、建筑、家具、汽车、电子产品等领域。 本案五金件尺…

Linux使用C语言实现Socket编程

Socket编程 这一个课程的笔记 相关文章 协议 Socket编程 高并发服务器实现 线程池 网络套接字 socket: (电源)插座(电器上的)插口,插孔,管座 在通信过程中, 套接字是成对存在的, 一个客户端的套接字, 一个…

佛山市人工智能产业生态交流会:实在智能Agent引领“智造浪潮”

制造业,实体经济的核心,技术创新的先锋,供给侧结构性改革的关键。在新一轮产业竞争中,数字化转型成为制造业升级的必由之路,是引领未来的重要抓手。 为促进数字经济赋能实体经济,加快人工智能技术的推广应用…

Object类里面的clone方法与接口cloneable的理解

文章目录 前言一、Object类二、Cloneable接口 前言 今天在进行使用clone方法时产生了一个疑问,为什么Object类明明有clone()方法,但为什么还要加上cloneable这个接口呢,下面我们就来解答一下为什么要重写clone()方法非要加上cloneable接口&a…

Ant Design 表单基础用法综合示例

Ant Design 的表单组件设计得非常出色,极大地简化了表单开发的复杂度,让开发者能够快速构建出功能丰富、交互友好的表单界面。 接下来总结一下 Ant Design 中表单的基本用法。 Form 组件 用于定义整个表单,可以设置表单的布局方式、提交行为等。通常会将表单字段组件嵌套在 F…

Meta宣布全新训推一体加速器:完全集成PyTorch 2,性能3倍提升

ChatGPT狂飙160天,世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 Meta 疯狂砸入数十亿美元,一部分招揽人才,一部分造芯片。 Meta 正在不…

用户状态保持机制-Session

0、业务需求 会话:web应用中的会话是指一个客户端浏览器和服务器之间连续发生的一系列请求和响应的过程。 会话状态:web应用中的会话状态是指web服务器与浏览器在会话过程中产生的状态信息,借助会话状态,服务器能够把属于同一会话…