An object that tracks the movement in 3D space of a body that ARKit recognizes in the camera feed.
SDK
- iOS 13.0+
Framework
- ARKit
Declaration
@interface ARBodyAnchor : ARAnchor
Overview
This ARAnchor
subclass tracks the movement of a single person. You enable body tracking by running your session using ARBody
.
When ARKit recognizes a person in the back camera feed, it calls your delegate's session:
function with ARBody
. 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 joint
, 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
}