Search code examples
swiftarkitarbodyanchor

What is the order of joints in jointsLocalTransforms / jointsModelTransforms of ARBodyAnchor in ARKit3?


I'm working on capturing 3D motion using ARKit3 in which I get transforms of all the Joints by using jointsModelTransforms or jointsLocalTransforms in session:didUpdate: delegate method of ARSessionDelegate like below

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

First index of bodyTransforms array is the root joint. Would like to know the order of joints in which the array is represented?


Solution

  • Here is a documentation about the ARSkeletonDefinition, the class containing the hierarchy of joints and their names.

    In your case, names and order of the joints can be easily obtained via calling bodyAnchor.skeleton.definition.jointNames.