Thanks for being a part of WWDC25!

How did we do? We’d love to know your thoughts on this year’s conference. Take the survey here

How to obtain video streams from the digital space included in VisionPro after applying for the "Enterprise API"?

After implementing the method of obtaining video streams discussed at WWDC in the program, I found that the obtained video stream does not include digital models in the digital space or related videos such as the program UI. I would like to ask how to obtain a video stream or frame that contains only the physical world?

 let formats = CameraVideoFormat.supportedVideoFormats(for: .main, cameraPositions:[.left])
    let cameraFrameProvider = CameraFrameProvider()
    
    var arKitSession = ARKitSession()
    var pixelBuffer: CVPixelBuffer?
    var cameraAccessStatus = ARKitSession.AuthorizationStatus.notDetermined
    let worldTracking = WorldTrackingProvider()
    
    func requestWorldSensingCameraAccess() async {
        let authorizationResult = await arKitSession.requestAuthorization(for: [.cameraAccess])
        cameraAccessStatus = authorizationResult[.cameraAccess]!
    }
    
    
    func queryAuthorizationCameraAccess() async{
        let authorizationResult = await arKitSession.queryAuthorization(for: [.cameraAccess])
        cameraAccessStatus = authorizationResult[.cameraAccess]!
    }
    
    func monitorSessionEvents() async {
        for await event in arKitSession.events {
            switch event {
            case .dataProviderStateChanged(_, let newState, let error):
                switch newState {
                case .initialized:
                    break
                case .running:
                    break
                case .paused:
                    break
                case .stopped:
                    if let error {
                        print("An error occurred: \(error)")
                    }
                @unknown default:
                    break
                }
            case .authorizationChanged(let type, let status):
                print("Authorization type \(type) changed to \(status)")
                
            default:
                print("An unknown event occured \(event)")
            }
        }
    }
    @MainActor
    func processWorldAnchorUpdates() async {
        for await anchorUpdate in worldTracking.anchorUpdates {
            switch anchorUpdate.event {
            case .added:
                //检查是否有持久化对象附加到此添加的锚点-
                //它可能是该应用程序之前运行的一个世界锚。
                //ARKit显示与此应用程序相关的所有世界锚点
                //当世界跟踪提供程序启动时。
              
                fallthrough
            case .updated:
                //使放置的对象的位置与其对应的对象保持同步
                //世界锚点,如果未跟踪锚点,则隐藏对象。
                break
            case .removed:
                //如果删除了相应的世界定位点,则删除已放置的对象。
                break
            }
        }
    }
    
    
    
    
    func arkitRun() async{
        do {
            try await arKitSession.run([cameraFrameProvider,worldTracking])
        } catch {
            return
        }
    }
    
    
    @MainActor
    func processDeviceAnchorUpdates() async {
        await run(function: self.cameraFrameUpdatesBuffer, withFrequency: 90)
    }
    @MainActor
    func cameraFrameUpdatesBuffer() async{
        guard let cameraFrameUpdates =
            cameraFrameProvider.cameraFrameUpdates(for: formats[0]),let cameraFrameUpdates1 =
                cameraFrameProvider.cameraFrameUpdates(for: formats[1]) else {
            return
        }

        for await cameraFrame in cameraFrameUpdates {
            guard let mainCameraSample = cameraFrame.sample(for: .left) else {
                continue
            }
            self.pixelBuffer = mainCameraSample.pixelBuffer
        }
        for await cameraFrame in cameraFrameUpdates1 {
           
            guard let mainCameraSample = cameraFrame.sample(for: .left) else {
                continue
            }
            
            if self.pixelBuffer != nil {
                
                self.pixelBuffer = mergeTwoFrames(frame1:  self.pixelBuffer!, frame2: mainCameraSample.pixelBuffer, outputSize: CGSize(width: 1920, height: 1080))
            }
            
        }
    }
How to obtain video streams from the digital space included in VisionPro after applying for the "Enterprise API"?
 
 
Q