swift - 我可以在哪里设置 ARView 的最大标记数?
问题描述
我在一个场景中使用了多个唯一的标记锚点,每个锚点都ModelEntity
显示在它们上面。我单独检测每个标记没有问题,但是一旦跟踪一个并且模型出现,其他标记就不会跟踪。如果被跟踪的标记移出框架,那么突然另一个标记将开始被跟踪。
我的怀疑是存在最大标记数的设置并将其设置为 1。(就像maximumNumberOfTrackedImages
来自 SceneKit 的设置。)我在这里缺少一个设置,这是 RealityKit 的限制,还是我只是搞砸了一些东西当我将锚点添加到场景中时?
我为数组中的每个项目调用以下函数:
class RealityViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let arView = ARView(frame: UIScreen.main.bounds)
view.addSubview(arView)
let targets = ["image1", "image2", "image3"]
for target in targets {
addTarget(target:target,arView:arView)
}
}
func addTarget(target: String, arView: ARView) {
let imageAnchor = AnchorEntity(.image(group: "Markers", name: target))
arView.scene.addAnchor(imageAnchor)
let plane = MeshResource.generatePlane(width: 0.05, height: 0.05, cornerRadius: 0.0)
let material = SimpleMaterial(color: .blue, roughness: 1.0, isMetallic: false)
let model = ModelEntity(mesh: plane, materials: [material])
imageAnchor.addChild(model)
}
}
更新: 虽然@ARGeo 的回答确实在进一步测试期间解决了原始问题,但我发现使用更新后的代码我一次最多只能跟踪 4 个目标。同样,我不确定这是 RealityKit 的硬性限制还是什么,但如果有人有任何见解,请添加到已接受的答案中。
在下面,您只能看到 6 个唯一标记中的 4 个被跟踪:
解决方案
ARKit 和 RealityKit 中没有number of markers being tracked
属性。
因此,要纠正一种情况,您需要使用以下代码在 ARView 中添加锚点:
arView.scene.anchors.append(imageAnchor)
你也可以试试这个for-in
循环代码(因为 Xcode 11 beta 可能会错误地运行循环):
for i in 0..<targets.count {
addTarget(target: targets[i], arView: arView)
}
附言
看看这个帖子。现在 ARKit 5.0 能够一次跟踪超过 4 张图像(目前最多同时跟踪 100 张图像)。
推荐阅读
- c# - UWP 动画重置为 From 状态
- r - 使用 rpivotTable 部署闪亮的应用程序时出错
- r - 将数值分组到R中的类别?
- stored-procedures - 将存储过程用于非数据库相关任务
- asp.net - DropDownList 值作为外键插入数据库
- docker - Bamboo“运行 Docker 容器”插件从“等待服务启动”URL 中删除凭据
- makefile - pyenv:编译模块
- teradata - teradata 有没有办法从另一个表中替换一行中的多个字符串?
- python - ' HTML 编号显示 '
- javascript - 基本代码适用于除 IE 以外的所有浏览器