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

是否有方法将RealityKit场景导出为USDZ格式文件?

RealityKit场景导出USDZ实现方案

RealityKit 没有提供和SceneKit完全对等的、直接对整个Scene对象一键导出的公开方法,但可以通过以下可行路径实现USDZ格式导出,按推荐优先级排序:

  • 原生API导出(优先选,系统版本要求iOS 15+ / macOS 12+)
    苹果在RealityKit 2.0中加入了USDZExportRequest接口,支持直接导出实体层级结构为USDZ文件,不需要依赖SceneKit桥接。你只需要把场景内需要导出的根实体(通常是所有AnchorEntity的公共父节点,或者你自定义的场景根Entity)传入即可,导出过程会自动保留模型网格、PBR材质、变换层级、内置动画、碰撞体基础信息。
    基础调用代码示例:

    import RealityKit
    import UniformTypeIdentifiers
    
    func exportScene(rootEntity: Entity, saveTo url: URL) async throws {
        let exportRequest = USDZExportRequest(
            entities: [rootEntity],
            exportURL: url
        )
        try await exportRequest.export()
    }
    

    注意:自定义实现的Component、RealityKit特有的PhysicsBody自定义参数、AudioFileResource这类非USDZ标准支持的内容,不会被写入导出文件。

  • SceneKit桥接导出(兼容更低系统版本)
    如果需要适配iOS 15以下的系统版本,可以手动遍历RealityKit场景的Entity层级树,将每个ModelEntity的网格资源、PBR材质参数、位姿信息转换为对应的SCNNode,组装成完整的SCNScene实例后,调用SceneKit自带的导出方法生成USDZ:

    // 组装完成SCNScene后调用导出
    let scene = SCNScene()
    // ... 填充转换后的SCNNode节点
    try scene.write(to: exportURL, options: [.upAxis: "Y"])
    

    这个方案的灵活度最高,可以自定义需要导出的内容范围,但需要自己实现MeshResource到SCNGeometry、RealityKit材质到SCNMaterial的映射逻辑,开发量稍大。

  • 工具侧导出(无代码方案)
    如果你的场景是通过Reality Composer/Reality Composer Pro搭建的,可以直接在编辑器中选中整个场景的根节点,通过菜单栏的导出功能直接生成USDZ文件,导出的资源兼容性最好,不需要额外写代码处理。

注意:不要使用RealityKit的未公开私有API实现导出,这类实现会触发App Store审核拒审,且跨系统版本兼容性没有保障。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 17:57:16