ARKit中渲染器和会话方法之间的差异

问题描述 投票:1回答:1

我检查了以下两个示例代码:https://developer.apple.com/documentation/arkit/capturing_body_motion_in_3d

func session(_ session: ARSession, didUpdate anchors: [ARAnchor])
{  
    for anchor in anchors        
    {            
        guard let bodyAnchor = anchor as? ARBodyAnchor else { continue }
        let skeleton = bodyAnchor.skeleton
    }
}

和:https://developer.apple.com/documentation/arkit/tracking_and_visualizing_faces

func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor)
{
    guard let faceAnchor = anchor as? ARFaceAnchor else { return }
    let blendShapes = faceAnchor.blendShapes    
}

提取人脸的BlendShape的代码使用“渲染器”来获取BlendShape的值。

但是,检测身体运动的代码使用“会话”来获取值。

这两个代码似乎都用于获取从ARAnchor更新的值。

“渲染器”和“会话”之间有什么区别?

如何在不同时间使用两个代码?

swift augmented-reality scenekit arkit realitykit
1个回答
0
投票
renderer(_:didUpdate:for:)session(_:didUpdate:)实例方法均以60 fps更新AR内容(相机或模型位置)。它们的工作原理几乎相同,但目的却不同。对于五个renderer()实例方法,您必须实现ARSCNViewDelegate协议的委托。对于四个session()实例方法,您必须实现ARSessionDelegate协议的委托。
© www.soinside.com 2019 - 2024. All rights reserved.