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

本文介绍了如何利用ARFoundation和XRFoundation在Unity中实现低成本点云采集,包括使用ARPointCloudManager管理点云数据,通过粒子系统或Mesh进行可视化,并提供点云数据的保存和加载方法。
摘要由CSDN通过智能技术生成

关联文档

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

使用AR Foundation

现基于AR 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编辑器中导入查看

采集点云

  • 14
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EQ-雪梨蛋花汤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值