如何在相机 ARKit 顶部添加半透明背景

How to add a semi-transparent background on top of camera ARKit

我正在尝试添加一个半透明背景来覆盖我在 ARKit 中的相机视图。

我尝试了不同的东西:

那么,你有没有想过在 ARKit 中实现这个操作? 提前致谢。

你可以这样做:

import ARKit

class ViewController: UIViewController,
                      ARSCNViewDelegate {

    @IBOutlet var sceneView: ARSCNView!

    override func viewDidLoad() {
        super.viewDidLoad()
        sceneView.delegate = self
        sceneView.session.delegate = self
        let scene = SCNScene()
        sceneView.scene = scene

        let planeNode = SCNNode()

        planeNode.geometry = SCNPlane(width: 100, 
                                     height: 100)

        planeNode.geometry?.firstMaterial?.diffuse.contents = UIColor(white: 0,
                                                                      alpha: 0.9)
        planeNode.position.z = -5     // 5 meters away

        sceneView.pointOfView?.addChildNode(planeNode)      // PINNING TO CAMERA
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        let configuration = ARWorldTrackingConfiguration()
        sceneView.session.run(configuration)
    }
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        sceneView.session.pause()
    }
}

... 或扩展:

extension ViewController: ARSessionDelegate {

    func session(_ session: ARSession,
           didUpdate frame: ARFrame) {

        let planeNode = SCNNode()

        planeNode.geometry = SCNPlane(width: 100, 
                                     height: 100)

        planeNode.position.z = -5

        planeNode.geometry?.firstMaterial?.diffuse.contents = UIColor(white: 0, 
                                                                      alpha: 0.9)

        // var translation = matrix_identity_float4x4
        // translation.columns.3.z = -5
        // planeNode.simdTransform = matrix_multiply(translation,
        //                                           frame.camera.transform)

        sceneView.pointOfView?.addChildNode(planeNode)
    }
}