我在哪里可以设置 ARView 的最大标记数?
Where can I set the maximum number of markers for an ARView?
我在一个场景中使用了多个独特的标记锚点,每个锚点上都显示了 ModelEntity
。我可以单独检测每个标记没有问题,但是一旦跟踪到一个并且模型出现,其他的就不会跟踪。如果被跟踪的标记移出框架,那么另一个标记将突然开始被跟踪。
我怀疑存在最大标记数的设置,并将其设置为 1。(如 SceneKit 中的 maximumNumberOfTrackedImages
。)这里是否缺少我的设置,这是一个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
属性
So, to correct a situation, you need to use this code for adding anchors in ARView:
arView.scene.anchors.append(imageAnchor)
您也可以尝试使用此代码进行 for-in
循环(因为 Xcode 11 beta 可能会错误地 运行 循环):
for i in 0..<targets.count {
addTarget(target: targets[i], arView: arView)
}
P.S.
看。现在 ARKit 5.0 可以同时跟踪 4 张以上的图像(目前最多同时跟踪 100 张图像)。
我在一个场景中使用了多个独特的标记锚点,每个锚点上都显示了 ModelEntity
。我可以单独检测每个标记没有问题,但是一旦跟踪到一个并且模型出现,其他的就不会跟踪。如果被跟踪的标记移出框架,那么另一个标记将突然开始被跟踪。
我怀疑存在最大标记数的设置,并将其设置为 1。(如 SceneKit 中的 maximumNumberOfTrackedImages
。)这里是否缺少我的设置,这是一个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
属性
So, to correct a situation, you need to use this code for adding anchors in ARView:
arView.scene.anchors.append(imageAnchor)
您也可以尝试使用此代码进行 for-in
循环(因为 Xcode 11 beta 可能会错误地 运行 循环):
for i in 0..<targets.count {
addTarget(target: targets[i], arView: arView)
}
P.S.
看