我的想法是获取点云(例如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
?或者,也许有一种基于现有点云的完全更好的对象检测方法。
答案 0 :(得分:2)
不。
根据WWDC18上的Apple工程师的说法,对象扫描不仅仅是功能点。 Resent
公开了一个特征点数组,以便提供可以可视化并进行推理的扫描结果的表示形式,但这只是ARKit保存在参考对象中并用来识别参考数据的一部分。而且,据苹果公司公开表示,该数据及其生成方法仍为专有。
(此外,创建MimeMessage
和创建ARReferenceObject
文件之间没有实际的区别-后者实质上是前者的序列化二进制版本。)