Welcome!
This is the community forum for my apps Pythonista and Editorial.
For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.
AR Quick Look
-
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...