AR Quick Look to display USDZ files of virtual objects in 3D or AR.
Download an example usdz file from f.i. here and run this quick and dirty script using a QLPreviewController.


from   objc_util import *
import os
import ui

# create delegate for QLPreviewController
def previewControllerDidDismiss_(_self, _cmd, _controller):
    global uiview
    #print('previewControllerDidDismiss_')
    uiview.close()

methods = [previewControllerDidDismiss_,]
protocols = ['QLPreviewControllerDelegate']
try:
    MyQLPreviewControllerDelegate = ObjCClass('MyQLPreviewControllerDelegate')
except:
    MyQLPreviewControllerDelegate = create_objc_class('MyQLPreviewControllerDelegate', methods=methods, protocols=protocols)

# create datasource for QLPreviewController
def numberOfPreviewItemsInPreviewController_(_self, _cmd, _controller):
    #print('numberOfPreviewItemsInPreviewController_ called')
    return 1

def previewController_previewItemAtIndex_( _self, _cmd, _controller, index):
    #print('previewController_previewItemAtIndex_ called, index=',index)
    global uiview
    return uiview.nsurl.ptr

methods = [numberOfPreviewItemsInPreviewController_, previewController_previewItemAtIndex_]
protocols = ['QLPreviewControllerDataSource']
try:
    MyQLPreviewControllerDataSource = ObjCClass('MyQLPreviewControllerDataSource')
except:
    MyQLPreviewControllerDataSource = create_objc_class('MyQLPreviewControllerDataSource', methods=methods, protocols=protocols)

@on_main_thread 
def MyQLPreviewController(ns_url, w, h, mode='sheet', popover_location=None):
    global uiview
    uiview = ui.View()
    uiview.frame = (0,0,w,h)
    uiview.background_color = 'white'
    if mode == 'sheet':
        uiview.present('sheet',hide_title_bar=False)
    elif mode == 'popover':
        if popover_location:
            uiview.present('popover', hide_title_bar=True, popover_location=popover_location)
        else:
            return
    else:
        return

    QLPreviewController = ObjCClass('QLPreviewController').new()
    #print(dir(QLPreviewController))

    # Use new delegate class:
    delegate = MyQLPreviewControllerDelegate.alloc().init()
    QLPreviewController.delegate = delegate     

    # Use new datasource class:
    datasource = MyQLPreviewControllerDataSource.alloc().init()
    QLPreviewController.dataSource = datasource

    QLPreviewController.setModalPresentationStyle_(3)

    objc_uiview = ObjCInstance(uiview)
    SUIViewController = ObjCClass('SUIViewController')
    vc = SUIViewController.viewControllerForView_(objc_uiview)  

    uiview.nsurl = ns_url   # used in datasource to display url

    vc.presentViewController_animated_completion_(QLPreviewController, True, None)

def main():
    # demo code 
    ns_url = nsurl(os.path.expanduser('~/Documents/wheelbarrow.usdz'))
    MyQLPreviewController(ns_url,600,500)

if __name__ == '__main__':
    main()

You can pinch and rotate...