Contents

ARBodyAnchor

An anchor that tracks the position and movement of a human body in the rear-facing camera.

Declaration

class ARBodyAnchor

Overview

This ARAnchor subclass tracks the movement of a single person. You enable body tracking by running your session using ARBodyTrackingConfiguration.

When ARKit recognizes a person in the back camera feed, it calls your delegate’s session(_:didAdd:) function with ARBodyAnchor. A body anchor’s transform position defines the world position of the body’s hip joint.

You can also check within the frame’s anchors for a body that ARKit is tracking.

Place a Skeleton on a Surface

Because a body anchor’s origin maps to the hip joint, you calculate the current offset of the feet to the hip to place the body’s skeleton on a surface. By passing the foot joint index to jointModelTransforms, you get the foot’s offset from skeleton’s origin.

static var hipToFootOffset: Float {
    // Get an index for a foot. 
    let footIndex = ARSkeletonDefinition.defaultBody3D.index(forJointName: .leftFoot)
    // Get the foot's world-space offset from the hip. 
    let footTransform = ARSkeletonDefinition.defaultBody3D.neutralBodySkeleton3D!.jointModelTransforms[footIndex]
    // Return the height by getting just the y-value. 
    let distanceFromHipOnY = abs(footTransform.columns.3.y) 
    return distanceFromHipOnY
}

Topics

Interpreting 3D Motion

Getting Scale Information

See Also

Body Position Tracking