gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 06:53:27 24 4
gpt4 key购买 nike

我正在尝试添加一个半透明背景来覆盖来自 ARKit 的相机 View 。 enter image description here

我尝试不同的东西:

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

那么,你有没有在 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)
}
}

关于swift - 如何在相机 ARKit 顶部添加半透明背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55513281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com