gpt4 book ai didi

ios - ARKit:如何将 UIView 添加到 ARKit 场景?

转载 作者:IT王子 更新时间:2023-10-29 05:40:31 26 4
gpt4 key购买 nike

我正在使用 ARKit 进行 AR 项目。

我想添加一个 UIView 到 ARKit 场景。当我点击一个对象时,我想获取该对象旁边的“弹出窗口”信息。此信息位于 UIView 中。

是否可以将此 UIView 添加到 ARKit 场景中?我将这个 UIView 设置为场景,然后我该怎么办?我可以给它一个节点,然后将它添加到 ARKit Scene 中吗?如果是这样,它是如何工作的?

或者有别的办法吗?

谢谢!

编辑:我的 SecondViewController 代码

class InformationViewController: UIViewController {

@IBOutlet weak var secondView: UIView!

override func viewDidLoad() {
super.viewDidLoad()
self.view = secondView
}
}

编辑 2:firstViewController 中的代码

guard let secondViewController = storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as? SecondViewController else {
print ("No secondController")
return
}

let plane = SCNPlane(width: CGFloat(0.1), height: CGFloat(0.1))
plane.firstMaterial?.diffuse.contents = secondViewController.view

let node = SCNNode(geometry: plane)

我只得到飞机的白屏,而不是 View 。

最佳答案

实现这一点的最简单(尽管未记录)的方法是将 View Controller 支持的 UIView 设置为 SCNPlane(或任何其他确实是几何图形,但出于显而易见的原因,它最适合平面)。

let plane = SCNPlane()
plane.firstMaterial?.diffuse.contents = someViewController.view
let planeNode = SCNNode(geometry: plane)

您必须将 View Controller 保留在某个地方,否则它将被释放并且平面将不可见。仅使用 UIView 而没有任何 UIViewController 将引发错误。

它最好的一点是它保留了所有的手势并且实际上就像一个简单的 View 一样工作。例如,如果您使用 UITableViewController 的 View ,您将能够在场景中直接滚动它。

我还没有在 iOS 10 及更低版本上测试过它,但到目前为止它一直在 iOS 11 上运行。适用于普通 SceneKit 场景和 ARKit。

关于ios - ARKit:如何将 UIView 添加到 ARKit 场景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48700939/

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