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

Reality Composer导入RealityKit异常 ARView不显示模型

问题描述

尝试实现3D模型锚定到现实世界图像的效果,本次使用的锚定参考图为二维码。制作的AR场景在Reality Composer内运行完全正常,但将该场景导入RealityKit项目后,ARView中无任何内容显示,控制台也未输出相关有效报错信息。
当前实现代码如下:

struct MainARView: UIViewRepresentable {

    func makeUIView(context: Context) -> ARView {

        let view = ARView()
        let session = view.session
        let config = ARWorldTrackingConfiguration()      
        session.run(config)

        view.debugOptions = [.showFeaturePoints, 
                             .showAnchorOrigins, 
                             .showAnchorGeometry]
           
        guard let anchor = try? TestObj.loadScene() else {
            print("Error loading TestObj")
            return view     
        }       
        view.scene.addAnchor(anchor)
        return view
    }
    func updateUIView(_ view: ARView, context: Context) { }
}
排查思路与解决方案
  • 补全ARSession的图像检测配置
    这是该问题最高发的原因:Reality Composer中配置的图像锚点逻辑不会自动同步到你自定义的ARSession配置中,当前代码仅初始化了基础的世界追踪配置,没有开启图像检测能力,ARSession根本不会主动识别作为锚点参考的二维码,锚点永远不会触发,自然不会显示任何内容。
    需要在运行session前补充如下配置:

    // 替换为你项目中存储的二维码参考图,以及二维码的实际物理宽度(单位:米)
    guard let qrCGImage = UIImage(named: "target_qr_code")?.cgImage else { return }
    let qrReference = ARReferenceImage(qrCGImage, orientation: .up, physicalWidth: 0.05)
    config.detectionImages = [qrReference]
    config.maximumNumberOfTrackedImages = 1
    

    配置完成后重新运行,扫描对应二维码即可触发锚点显示3D内容,你开启的debug选项也会同步显示识别到的锚点原点、几何轮廓。

  • 打印场景加载的具体错误
    当前代码用try?吞掉了场景加载的所有具体错误,无法判断资源是否加载成功。将加载逻辑替换为do-catch写法,拿到具体错误信息排查资源问题:

    do {
        let anchor = try TestObj.loadScene()
        view.scene.addAnchor(anchor)
        print("场景加载成功")
    } catch {
        print("场景加载失败,错误详情:\(error.localizedDescription)")
    }
    

    常见资源问题包括:Reality场景文件未勾选对应Target Membership、文件名拼写错误、场景内引用的素材资源缺失。

  • 检查基础权限与运行线程

    • 确认项目Info.plist中已添加NSCameraUsageDescription字段,填写相机用途描述,否则App无法获取相机权限,ARSession无法正常运行,且部分系统版本下不会抛出明确报错。
    • 所有ARView、ARSession相关操作必须在主线程执行,不要在后台线程调用session.run、添加锚点等方法。
  • 验证锚点触发逻辑
    可以给加载的场景锚点添加触发回调,确认锚点是否被ARSession正常识别激活:

    anchor.actions.onAction = { _ in
        print("二维码锚点已识别,3D内容已挂载")
    }
    

    如果扫描二维码后该回调没有触发,回到第一步检查图像检测配置、参考图的物理尺寸参数是否设置正确。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:57:26