我使用 Xcode 15 和 Reality Composer 创建了一个增强现实应用程序,允许人们在购买眼镜之前使用 iPhone 虚拟试戴眼镜。该项目的关键是使用 Reality Composer 定义面部锚点并通过 .usdz 文件定位 3D 对象,然后 iPhone 的面部跟踪完成剩下的工作。然而,在 Xcode 16 中,该项目不再编译,Reality Composer Pro 甚至不允许设置除 Vision Pro 之外的目标设备。
显然,Reality Composer Pro 是为了促进 Vision Pro 的销量而制作的,但在不久的将来,它很可能会拥有已弃用的 Reality Composer 应用程序中的所有功能。由于最新版本的 RCP 仍然只有用户的头部跟踪(又名 AnchorEntity(.head) 锚点)并且没有面部跟踪(又名 AnchorEntity(.face) 锚点),因此您可以通过编程方式实现面部跟踪功能。
以下代码可让您在 iOS 18 SwiftUI 应用程序中的跟踪脸部上试戴虚拟眼镜:
import SwiftUI
import RealityKit
import ARKit
struct ContentView : View {
var body: some View {
ARFaceView()
}
}
struct ARFaceView: UIViewRepresentable {
let anchor = AnchorEntity(.face)
let glasses = try! Entity.loadModel(named: "glasses")
let arView = ARView(frame: .zero)
init() {
// Activating the selfie camera
arView.automaticallyConfigureSession = false
let config = ARFaceTrackingConfiguration()
arView.session.run(config)
}
func makeUIView(context: Context) -> ARView {
glasses.scale /= 1.1
glasses.position.y = -0.05
anchor.addChild(glasses)
arView.scene.anchors.append(anchor)
return arView
}
func updateUIView(_ view: ARView, context: Context) { }
}