首页 > 解决方案 > 移动时在设备屏幕中心附加球体

问题描述

我正在尝试在设备屏幕的中心附加一个球体,当我围绕球体移动设备时,它应该保持在屏幕的中心(如十字准线)

我在makeUIView函数 sphere_anchor.addChild(modelEntity)中附加了一个球体实体并将其添加到sphere_anchor

但是当我移动我的设备时,球体只是在我移动设备时实体连接到的初始帧中移动。希望有人能指出我这样做的正确方法

//Implement ARSession didUpdate session delegate method
public func session(_ session: ARSession, didUpdate frame: ARFrame) {
    
    let trasnform =  frame.camera.transform

    if ((self.scene.findEntity(named: "sphere")) != nil) {
        let position = simd_make_float3(trasnform.columns.3)
             //print(position)
         sphere_anchor.position = position
         sphere_anchor.orientation = Transform(matrix: trasnform).rotation
    }
}

标签: swiftaugmented-realityarkitrealitykitreality-composer

解决方案


试试AnchorEntity(.camera)。如果您实现它,则不需要session(_:didUpdate:)实例方法,因为 RealityKit 的锚点会自动跟踪 ARCamera 位置。

@IBOutlet var arView: ARView!

override func viewDidLoad() {
    super.viewDidLoad()
    
    let mesh = MeshResource.generateSphere(radius: 0.1)
    let sphere = ModelEntity(mesh: mesh)

    let anchor = AnchorEntity(.camera)

    sphere.setParent(anchor)
    arView.scene.addAnchor(anchor)
    
    sphere.transform.translation.z = -0.75
}

AnchorEntity(.camera)仅在Active Scheme选择了真正的 iOS 设备时才有效。

在此处输入图像描述


推荐阅读