从实物扫描并生成三维网格模型

12

ARKit应用程序允许我们创建 ARReferenceObject ,并使用它,我们可以可靠地识别现实世界对象的位置和方向。但是我们也可以保存完成的 .arobject 文件。

输入图像描述

然而, ARReferenceObject 仅包含ARKit识别现实世界对象所需的空间特征信息,并不是该对象的可显示3D重建。

func createReferenceObject(transform: simd_float4x4, 
                              center: simd_float3, 
                              extent: simd_float3, 
                   completionHandler: (ARReferenceObject?, Error?) -> Void)

我的问题:

是否有一种方法可以使用Poisson面重建摄影测量法.arobject文件中重构数字3D几何(低细节或高细节)?

2个回答

9

RealityKit 2.0 | Object Capture API

Object Capture API是在2021年WWDC上宣布的,为您提供了期待已久的摄影测量工具。输出结果是带有高分辨率纹理的USDZ模型。

这里阅读有关摄影测量的内容。

ARKit | Mesh Reconstruction

使用带有LiDAR和ARKit 3.5/4.0/5.0的iOS设备,您可以轻松重建周围环境的拓扑地图。场景重建功能会在启动当前ARSession后立即开始工作。

Apple LiDAR的工作范围在5米之内。扫描仪可以帮助您提高ZDepth通道的质量,并增强人/真实世界物体遮挡、运动跟踪、立即物理接触体和射线投射等功能。

LiDAR扫描仪的其他出色特点包括:

  • 您可以在光线较暗的房间中使用设备
  • 您可以跟踪没有任何特征的纯白墙壁
  • 您几乎可以立即检测到平面

请注意,当您使用LiDAR时,扫描对象的质量可能不如您所期望的那样好。小细节未被扫描。这是因为Apple LiDAR的分辨率不够高。


1
你能用前置的TrueDepth相机来做这件事吗?(没有LIDAR,但有深度数据)你使用了ARKit 3.5中哪些API来重建网格? - Luther
1
有没有可用的示例或代码示例,可以使用LiDAR和ARKit 4.0从扫描真实物体创建3D网格? - yaali
@AndyFedoroff,你说过可以将扫描的物体导出为.obj格式。有没有相关示例或链接? - grantespo
1
嗨@grantespo。https://dev59.com/iFIH5IYBdhLWcg3wIJeB#61104855 - Andy Jazz
@AndyFedoroff,我注意到你的问题(这篇帖子)使用了“扫描现实世界对象”示例应用程序,但你链接的答案使用了“可视化场景语义示例应用程序”。那个答案中的概念是否仍然适用于“扫描现实世界对象”示例应用程序?例如:从帧中的第一个锚点检索ARMeshGeometry对象。 - grantespo
显示剩余2条评论

7
您引用了苹果文档中的一条评论:(链接)中提到:“ARReferenceObject 只包含 ARKit 识别真实世界物体所需的空间特征信息,并不是该物体可显示的三维重建。”如果您运行该示例代码,您可以亲自查看它在扫描期间和测试识别后创建的参考对象的可视化效果——只是稀疏的 3D 点云。苹果 API 并没有提供摄影测量,因此很难恢复网格中逼真的结构。这并不是说这种努力是不可能的——有一些第三方进行了演示,并基于 ARKit 进行了Here 摄影测量实验。但是:

1. 那并不是使用 ARKit 2 对象扫描的功能,而只是使用 ARFrame 的原始像素缓冲区和特征点。

2. 在这些演示中,需要进行非微不足道的原始研究和开发,因为它远远超出了 ARKit 本身提供的信息范围。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接