从点云手动创建 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
文件之间没有实际区别——后者本质上是前者的序列化二进制版本。)
我的想法是获取点云(例如 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
文件之间没有实际区别——后者本质上是前者的序列化二进制版本。)