You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift RoomPlan:导出USDZ时用实体块替代家具

问题解决方案:RoomPlan扫描后导出USDZ用实体块替代家具模型

核心修改点

要实现导出的USDZ文件中用实体块替代家具模型,需调整导出配置和模型提供商两个关键部分:

  1. 取消加载真实家具模型提供商,避免系统渲染真实家具
  2. 指定导出选项,强制家具以边界框(实体块)形式输出

修改后的关键代码

调整saveAndViewCapturedRoom()方法

func saveAndViewCapturedRoom() {
    let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
    let exportedRoomsDirectory = documentsDirectory.appendingPathComponent(Constants.exportedRoomsDirectory)
    let usdzURL = exportedRoomsDirectory
        .appendingPathComponent("test.usdz")
    let metadataURL = exportedRoomsDirectory
        .appendingPathComponent("test.plist")
    
    guard let result = finalResult else {
        print("finalResult is nil. Cannot export.")
        return
    }
    
    do {
        // 配置导出选项:将家具替换为边界框实体块
        var exportOptions = CapturedRoom.ExportOptions()
        exportOptions.furnitureRepresentation = .boundingBox
        
        try result.export(
            to: usdzURL,
            metadataURL: metadataURL,
            modelProvider: nil, // 不加载真实家具模型
            exportOptions: exportOptions)
        print("Export successful to \(usdzURL.path)")
    } catch {
        print("Error during export: \(error.localizedDescription)")
    }
}

(可选)调整RoomBuilder初始化

如果不需要系统对物体形状进行美化优化,可以移除.beautifyObjects选项:

private let roomBuilder = RoomBuilder(options: [])

兼容旧版本RoomPlan说明

若你的项目使用的是早期RoomPlan版本(导出选项为枚举类型),可直接使用.boundingBox枚举值替代结构体配置:

try result.export(
    to: usdzURL,
    metadataURL: metadataURL,
    modelProvider: nil,
    exportOptions: .boundingBox)

内容的提问来源于stack exchange,提问作者Abdul91

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 18:41:15