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

时间:2019-04-04 10:08:50

标签: opengl-es scenekit augmented-reality arkit metal

我正在尝试添加一个半透明的背景,以覆盖ARKit中的相机视图。 enter image description here

我尝试不同的事情:

  • sceneView.scene 添加背景,但不支持透明性
  • 添加 overlaySKScene ,但场景中的节点也被覆盖。
  • 使用会话> captureImage中的 CIImage ,但速度太慢。
  • 使用这篇文章:Reliable access and modify captured camera frames under SceneKit,可以转换为黑白,但我不知道如何保持颜色并融合灰色。
  • 在OpenGL或Metal上搜索,但我是菜鸟!

那么,您是否有想法在ARKit中实现该操作? 预先感谢。

1 个答案:

答案 0 :(得分:1)

我不清楚您想要什么。也许这段代码就是您想要的:

override func viewDidLoad() {

    super.viewDidLoad()
    sceneView.delegate = self

    let scene = SCNScene(named: "art.scnassets/ship.scn")
    let box = SCNBox(width: 10000, 
                    height: 10000, 
                    length: 0.01, 
             chamferRadius: 0)

    let planeNode = SCNNode(geometry: box)
    planeNode.position = SCNVector3(0, 0, -20)
    planeNode.geometry?.firstMaterial?.diffuse.contents = UIColor(white: 0, 
                                                                  alpha: 0.9)
    scene!.rootNode.addChildNode(planeNode)

    sceneView.scene = scene!

    guard let currentFrame = sceneView.session.currentFrame else {
        return
    }

    var translation = matrix_identity_float4x4
    translation.columns.3.z = -20
    planeNode.simdTransform = matrix_multiply(translation, 
                                              currentFrame.camera.transform)
}

希望这会有所帮助。