swift - 在 ARImageTrackingConfiguration 中同时跟踪两个对象
问题描述
我想将两个 3D 模型链接到两个不同的跟踪器。我将跟踪器捕捉到参考照片,但我不明白如何同时跟踪两个对象ARImageTrackingConfiguration
guard let trackedImages = ARReferenceImage.referenceImages(inGroupNamed: "Photos2", bundle: Bundle.main) else {
print("No images available")
return
}
我将跟踪器捕捉到参考照片,但我不明白如何同时跟踪两个对象ARImageTrackingConfiguration
解决方案
你需要把它放到 ViewController 中:
class ViewController: UIViewController {
func trackingConfig() {
guard let referenceImages = ARReferenceImage.referenceImages(inGroupNamed: "AR Resources",
bundle: nil)
else {
return
}
let config = ARWorldTrackingConfiguration()
config.detectionImages = referenceImages
let options: ARSession.RunOptions = [.resetTracking,
.removeExistingAnchors]
sceneView.session.run(config, options: options)
}
}
然后创建一个包含渲染器方法的扩展和一个内部函数的开关:
extension ViewController: ARSCNViewDelegate {
func renderer(_ renderer: SCNSceneRenderer,
didAdd node: SCNNode,
for anchor: ARAnchor) {
guard let imageAnchor = anchor as? ARImageAnchor,
let imageName = imageAnchor.referenceImage.name
else {
return
}
let geometryNode = nodeGetter(name: imageName)
node.addChildNode(geometryNode)
}
func nodeGetter(name: String) -> SCNNode {
var node = SCNNode()
switch name {
case "geometry_01": node = geoOne
case "geometry_02": node = geoTwo
default: break
}
return node
}
}
推荐阅读
- flutter - 运行flutter项目时出现堆栈溢出错误,如何知道哪个部分是主要原因?
- html - 如何使图像从右侧 50% 覆盖整个窗口
- angular - 如何使用ngFor在Angular 9中一次只选择一个复选框
- android - 无法从 Firestore 中检索 Date 对象
- php - Symfony 约束集合 - 必须具有多个字段之一
- docusignapi - 在 Docusign 中创建信封/草稿信封时附加 pdf/其他文件
- php - 排序和过滤多维数组
- usb - 通过 Python 控制 USB Thorlabs 相机 - OpenCV
- javascript - 如何使用 JavaScript 获取 HTML 表格的条目?
- mysql - 如何检查用户是否喜欢 React、Node 和 MySQL 中的帖子?