RealityKit 和 SceneKit 可以一起使用吗?
Can RealityKit and and SceneKit be used together?
我想用RealityKit的ARView
中的物体检测,只能在SceneKit的ARSCNView
中找到实现它的文档。
有办法解决这个问题吗?
ARKit 的 ARSCNView
class 是 SceneKit SCNView
class 的后代,所以如果你已经导入了 ARKit 模块,你甚至不需要导入 SceneKit。尽管您可以轻松地将 ARKit 和 RealityKit 一起使用。
对于 RealityKit 的对象检测,请使用以下代码:
import ARKit
import RealityKit
extension ViewController: ARSessionDelegate {
func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) {
guard let objectAnchor = anchors.first as? ARObjectAnchor,
let _ = objectAnchor.referenceObject.name
else { return }
let anchor = AnchorEntity(anchor: objectAnchor)
anchor.addChild(model)
arView.scene.anchors.append(anchor)
}
}
并将相应内容放入.arresourcegroup
文件夹!
class ViewController: UIViewController {
@IBOutlet var arView: ARView!
override func viewDidLoad() {
super.viewDidLoad()
arView.session.delegate = self
guard let obj = ARReferenceObject.referenceObjects(inGroupNamed: "Objs",
bundle: nil)
else { return }
let config = ARWorldTrackingConfiguration()
config.detectionObjects = obj
arView.session.run(config)
}
}
我想用RealityKit的ARView
中的物体检测,只能在SceneKit的ARSCNView
中找到实现它的文档。
有办法解决这个问题吗?
ARKit 的 ARSCNView
class 是 SceneKit SCNView
class 的后代,所以如果你已经导入了 ARKit 模块,你甚至不需要导入 SceneKit。尽管您可以轻松地将 ARKit 和 RealityKit 一起使用。
对于 RealityKit 的对象检测,请使用以下代码:
import ARKit
import RealityKit
extension ViewController: ARSessionDelegate {
func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) {
guard let objectAnchor = anchors.first as? ARObjectAnchor,
let _ = objectAnchor.referenceObject.name
else { return }
let anchor = AnchorEntity(anchor: objectAnchor)
anchor.addChild(model)
arView.scene.anchors.append(anchor)
}
}
并将相应内容放入.arresourcegroup
文件夹!
class ViewController: UIViewController {
@IBOutlet var arView: ARView!
override func viewDidLoad() {
super.viewDidLoad()
arView.session.delegate = self
guard let obj = ARReferenceObject.referenceObjects(inGroupNamed: "Objs",
bundle: nil)
else { return }
let config = ARWorldTrackingConfiguration()
config.detectionObjects = obj
arView.session.run(config)
}
}