Ios 在ARKit应用程序中显示SwiftUI视图
我有一个应用程序,我检测到一个图像,并在检测到的图像上方的平面上显示UI。 以前,我曾在SceneKit ARKit应用程序中成功地在飞机上显示UIViewController。我试图在检测到的图像上显示飞机上的快捷视图 这是我的密码Ios 在ARKit应用程序中显示SwiftUI视图,ios,swift,swiftui,scenekit,arkit,Ios,Swift,Swiftui,Scenekit,Arkit,我有一个应用程序,我检测到一个图像,并在检测到的图像上方的平面上显示UI。 以前,我曾在SceneKit ARKit应用程序中成功地在飞机上显示UIViewController。我试图在检测到的图像上显示飞机上的快捷视图 这是我的密码 func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? { // After detecting the image marker
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
// After detecting the image marker
let node = SCNNode()
guard let imageAnchor = anchor as? ARImageAnchor else { return nil }
guard let imageName = imageAnchor.name else { return nil }
let plane = SCNPlane(width: imageAnchor.referenceImage.physicalSize.width,
height: imageAnchor.referenceImage.physicalSize.height)
let planeNode = SCNNode(geometry: plane)
planeNode.eulerAngles.x = -.pi / 2
arViewController = createARController(node: planeNode)
node.addChildNode(planeNode)
return node
}
func createARController(node: SCNNode) -> ARViewController {
let arVC = UIStoryboard(name: "ARStoryboard", bundle: nil).instantiateInitialViewController() as! ARViewController
DispatchQueue.main.async {
arVC.planeNode = node
arVC.willMove(toParent: self)
self.addChild(arVC)
arVC.view.frame = CGRect(x: 0, y: 0, width: 500, height: 500)
self.view.addSubview(arVC.view)
}
self.show(viewController: arVC, on: node)
return arVC
}
private func show(viewController: ARViewController, on node: SCNNode) {
let material = SCNMaterial()
material.diffuse.contents = viewController.view
node.geometry?.materials = [material]
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1)) {
// add child vc with swiftui view here.
viewController.addARView()
}
}
class ARViewController: UIViewController {
var planeNode: SCNNode?
@IBOutlet weak var containerView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
print("ARViewController loaded")
// Do any additional setup after loading the view.
}
func addARView() {
let controller = UIHostingController(rootView: SwiftUIARView())
self.addChild(controller)
controller.view.frame = self.view.frame
view.addSubview(controller.view)
controller.didMove(toParent: self)
}
}
如果我在ARViewController上有一个UIKit按钮,我可以看到该按钮,但是当调用addARView()函数初始化UIHostingController时,我只看到渲染的黑色视图。实际视图永远不会被渲染。我做错什么了吗?还是现在不可能
有人有幸在ARKit SceneKit应用程序中呈现SwiftUI视图吗?我忘了提到我有一个单独的故事板,其中ARViewController作为其初始视图控制器。我忘了提到我有一个单独的故事板,其中ARViewController作为其初始视图控制器。