所有文章 >
如何集成API >
使用 RoomPlan API 在 iOS 中构建房间扫描应用
使用 RoomPlan API 在 iOS 中构建房间扫描应用
在 iOS 平台上,RoomPlan API 提供了一种强大的工具,用于创建房间扫描应用程序。本文将详细介绍如何使用 RoomPlan API 构建一个功能完善的房间扫描应用,包括所需工具、设备支持以及具体实现步骤。
必备条件
-
Xcode 12.5 或更高版本
RoomPlan API 需要 Xcode 12.5 或更高版本支持,该版本包含构建 AR 应用程序所需的工具和框架。
-
支持的设备
仅支持配备 LiDAR 传感器的 iOS 设备,例如:
- iPhone 12 Pro、iPhone 12 Pro Max
- iPhone 13 Pro、iPhone 13 Pro Max
- iPad Pro(2020 年或更高版本)
RoomPlan API 的基本工作流程
RoomPlan API 的实现主要分为以下三个部分:
- 扫描:设置并启动扫描会话,同时向用户显示进度和指令。
- 处理:处理扫描数据并生成模型。
- 导出:将生成的模型导出为 USD/USDZ 文件。
在应用中实现 RoomPlan API 有两种方式:
- 使用 RoomCaptureSession
- 使用 RoomCaptureView
接下来,我们将分别介绍这两种实现方式。
使用 RoomCaptureSession 实现房间扫描
第一步:设置房间捕捉会话
- 在应用中添加一个 ARView。
- 实例化一个 RoomCaptureSession 对象,并将当前的 ViewController 扩展为 RoomCaptureSessionDelegate。
- 将
self
分配为会话的委托属性。
- 创建自定义可视化工具,用于向用户实时更新扫描进度。
第二步:实现 RoomCaptureSession 的委托方法
RoomCaptureSession 提供了多个委托方法,用于处理扫描过程中的不同事件:
- didUpdate:每次扫描时,当检测到或更新表面或物体时调用。
- didProvide:提供扫描过程的说明,包括距离、速度、光线调节和低纹理等警告信息。
此外,还有以下方法可供使用:
- didAdd、didChange、didRemove
- didStartWith、didEndWith
这些方法主要用于处理扫描过程中的动态变化。
第三步:捕获并导出最终模型
当会话停止时,RoomCaptureSessionDelegate 的 didEndWith 方法会被调用。此方法会返回捕获的房间数据或错误信息。通过此方法,我们可以处理扫描数据并导出最终的 3D 模型。
CapturedRoom 的属性
CapturedRoom 包含以下属性,用于描述扫描结果:
- 曲线:包括半径、起始角和终止角。
- 边缘:包括左、右、上、下边缘。
- 类别:例如墙壁、开口、窗户和门。
对象的独特属性
曲面和对象的共同属性
- 尺寸:包括高度、宽度和长度。
- 置信度:扫描表面或对象的三个置信度级别。
- 变换:三维变换矩阵。
- 标识符:唯一标识符。
- 导出(to: URL):将生成的 3D 模型导出到指定的 URL。
通过导出功能,我们可以将 CapturedRoom 转换为 USD/USDZ 文件格式,并将其保存或分享。
使用 RoomCaptureView 实现房间扫描
RoomCaptureView 是一个 UIView 子类,能够简化房间扫描的实现。它提供了以下功能:
- 实时勾勒出检测到的表面和物体的动画线条。
- 在视图底部生成交互式 3D 模型,显示扫描进度。
- 提供指导说明,帮助用户获得最佳扫描效果。
第一步:设置房间捕捉视图
- 在 ViewController 中创建一个 RoomCaptureView 引用。
- 将其添加到视图层次结构中。
第二步:开始房间捕捉会话
创建一个 RoomCaptureSession.Configuration 实例,用于启动扫描会话。通过该实例,可以启用或禁用扫描指导功能。
第三步:捕获并导出最终模型
实现 RoomCaptureViewDelegate 的方法,以处理扫描结果并导出模型:
- shouldPresent:返回一个布尔值,指示是否需要后处理并呈现扫描结果。
- didPresent:扫描完成后,提供后处理的扫描结果。
通过扩展 ViewController 为 RoomCaptureViewDelegate,并将 self
分配为 RoomCaptureView 的委托属性,即可完成实现。
扫描结果示例
以下是使用 RoomPlan API 扫描房间的示例结果:
检测到 6 把椅子、1 张桌子、1 台电视、1 扇门、1 扇窗户以及周围的墙壁。
原文链接: https://medium.com/simform-engineering/building-a-room-scanning-app-with-the-roomplan-api-in-ios-a5e9f66cfaaf
我们有何不同?
API服务商零注册
多API并行试用
数据驱动选型,提升决策效率
查看全部API→