从点云手动创建 ARReferenceObject

Create ARReferenceObject manually from a point cloud

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

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

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

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

没有。

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

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