首页 > 解决方案 > 从点云手动创建 ARReferenceObject

问题描述

我的想法是获取点云(例如 xyz 文件)并从中创建一个ARReferenceObject并使用它来进行对象检测。因此,与其先扫描对象并使用创建的对象引用,不如使用我自己的点云来使用 ARKit 2.0 进行对象检测。

Apple 文档中有一些rawFeaturePoints内容是ARPointCloud. 我看到ARPointCloud有一个名为的属性points,它是一个vector_float3数组,不幸的是它是只读的。我找不到手动创建的方法,所以我尝试了示例Scanning and Detecting 3D ObjectsARReferenceObject中的源代码。

我扫描了一个 3D 对象并导出了生成的.arobject文件,它是一个 zip 存档。打开包装后,我修补了trackingData.cv3dmap但放弃了。看起来像一种专有文件格式,我不太喜欢对格式进行逆向工程。

现在我的问题是是否有另一种解决方案来创建.arobject文件或ARReferenceObject从我自己的点云?或者也许有一种更好的方法来基于已经可用的点云进行对象检测。

标签: iosswiftobject-detectionarkitpoint-clouds

解决方案


没有。

根据 WWDC18 的 Apple 工程师的说法,对象扫描不仅仅是特征点。ARReferenceObject公开一个特征点数组,以提供您可以可视化和推理的扫描结果的表示,但这只是 ARKit 保存在参考对象中并用于识别的数据的一部分。据苹果公开表示,这些数据和生成它的方法仍然是专有的。

ARReferenceObject(此外,创建文件和创建文件之间没有实际区别.arobject——后者本质上是前者的序列化二进制版本。)


推荐阅读