目前,我尝试使用 Apple Vision Pro 测试 ImageTrackingProvider。我从一些基本代码开始:
import Foundation
import RealityKit
import ARKit
@MainActor class ARKitViewModel: ObservableObject{
private let session = ARKitSession()
private let imageTracking = ImageTrackingProvider(referenceImages: ReferenceImage.loadReferenceImages(inGroupNamed: "AR"))
func runSession() async {
do{
try await session.run([imageTracking])
}
catch{
print(error)
}
}
func processUpdates() async {
for await _ in imageTracking.anchorUpdates{
print("test")
}
}
}
我的AR文件夹里只有一张图片。我添加了尺寸,并且 AR 文件夹中没有错误消息。
当我尝试使用 Vision Pro 运行应用程序时,我收到以下错误:
ar_image_tracking_provider_t <0x28398f1e0>: Failed to load reference image <ARReferenceImage: 0x28368f120 name="IMG_1640" physicalSize=(1.350, 2.149)> with error: Failed to add reference image.
它找到了图像,但加载似乎有问题。我尝试了 jpeg 和 png 格式。
我不明白为什么它无法加载ReferenceImage。
我使用 Xcode 版本 15.3 beta 3
我通过沉浸式视图访问 ARKitViewModel 类:
struct ImmersiveView: View {
@StateObject var arKitVM = ARKitViewModel()
var body: some View {
RealityView { content in
}
.task {
await arKitVM.runSession()
}
.task {
await arKitVM.processUpdates()
}
}
}
带
physicalSize=(1.350, 2.149)
的参考图像太小。这比一张邮票还少。选择参考图像,然后在 Xcode Inspector 中指定图像的物理尺寸,就像您期望在用户的真实环境中发现的那样。此外,JPEG 或 PNG 的最小图像尺寸必须至少为 400x400。
此外,由于您正在与图像跟踪提供商运行会话,因此您需要使用
NSWorldSensingUsageDescription
键(在 info.plist 选项卡中设置)来指示您的应用程序需要访问世界感知数据。