如何在不使用相机的情况下使用带有自定义背景视图的 ARKit iOS 11 放置 3D 模型?

How to place 3D model using ARKit iOS 11 with some custom background view without using camera?

我正在开发一个增强现实 iOS 应用程序,我正在为此使用 iOS 11 beta 的 ARKIT。我正在使用 ARSCNView(SceneKit) 渲染我的 .scn 对象。我按照苹果给出的示例创建了一个 ARSession(https://developer.apple.com/sample-code/wwdc/2017/PlacingObjects.zip)。是否可以放置带有自定义背景而不是相机的 3D 模型?

喜欢的用户可以select背景颜色或者可以提供自定义2D照片作为背景吗?

您的视图有一个 scene 属性,您可以在其中将 background 设置为颜色或图像:

 view.scene.background.contents = UIColor.red

 let myImage: UIImage = ... 
 view.scene.background.contents = myImage

我使用 UIKit 的摇动回调来更改背景内容。正如@yaali 所说, CameraContents 用于存储相机内容。请注意,如果相机尚未启动,例如在 viewWillAppear 上,我们将无法获得 background.contents。我想 ARKitAVCaptureVideoPreviewLayer 设置为 ARSCNView.scene.background.cocntents

    override func motionBegan(_ motion: UIEventSubtype, with event: UIEvent?) {
        if CameraContents == nil {
            CameraContents = sceneView.scene.background.contents;
            return
        }
        if cameraBackGround == true {
            sceneView.scene.background.contents = "Background_sky.png"
        }else{
            sceneView.scene.background.contents = CameraContents
        }
        cameraBackGround = !cameraBackGround

    }