C Specification

The XrHandTrackingMeshFB structure contains three sets of parallel, application-allocated arrays: one with per-joint data, one with vertex data, and one with index data.

The XrHandTrackingMeshFB structure is defined as:

// Provided by XR_FB_hand_tracking_mesh
typedef struct XrHandTrackingMeshFB {
    XrStructureType    type;
    void*              next;
    uint32_t           jointCapacityInput;
    uint32_t           jointCountOutput;
    XrPosef*           jointBindPoses;
    float*             jointRadii;
    XrHandJointEXT*    jointParents;
    uint32_t           vertexCapacityInput;
    uint32_t           vertexCountOutput;
    XrVector3f*        vertexPositions;
    XrVector3f*        vertexNormals;
    XrVector2f*        vertexUVs;
    XrVector4sFB*      vertexBlendIndices;
    XrVector4f*        vertexBlendWeights;
    uint32_t           indexCapacityInput;
    uint32_t           indexCountOutput;
    int16_t*           indices;
} XrHandTrackingMeshFB;

Members

Member Descriptions
  • type is the XrStructureType of this structure.

  • next is NULL or a pointer to the next structure in a structure chain. No such structures are defined in core OpenXR or this extension.

  • jointCapacityInput is the capacity of the joint data arrays in this structure, or 0 to indicate a request to retrieve the required capacity.

  • jointCountOutput is filled in by the runtime with the count of joint data elements written, or the required capacity in the case that any of jointCapacityInput, vertexCapacityInput, or indexCapacityInput is insufficient.

  • jointBindPoses is an array of poses that matches what is returned by xrLocateHandJointsEXT which describes the hand skeleton’s bind pose.

  • jointRadii is an array of joint radii at bind pose.

  • jointParents is an array of joint parents to define a bone hierarchy for the hand skeleton.

  • vertexCapacityInput is the capacity of the vertex data arrays in this structure, or 0 to indicate a request to retrieve the required capacity.

  • vertexCountOutput is filled in by the runtime with the count of vertex data elements written, or the required capacity in the case that any of jointCapacityInput, vertexCapacityInput, or indexCapacityInput is insufficient.

  • vertexPositions is an array of 3D vertex positions.

  • vertexNormals is an array of 3D vertex normals.

  • vertexUVs is an array of texture coordinates for this vertex.

  • vertexBlendIndices is an array of bone blend indices.

  • vertexBlendWeights is an array of bone blend weights.

  • indexCapacityInput is the capacity of the index data arrays in this structure, or 0 to indicate a request to retrieve the required capacity.

  • indexCountOutput is filled in by the runtime with the count of index data elements written, or the required capacity in the case that any of jointCapacityInput, vertexCapacityInput, or indexCapacityInput is insufficient.

  • indices is an array of triangle indices.

  • See the https://registry.khronos.org/OpenXR/specs/1.0/html/xrspec.html#buffer-size-parameters section for a detailed description of retrieving the array sizes in the "struct form" as used here.

Description

All arrays are application-allocated, and all may be NULL if any of jointCapacityInput, vertexCapacityInput, or indexCapacityInput is 0.

The data in a fully-populated XrHandTrackingMeshFB is immutable during the lifetime of the corresponding XrInstance, and is intended to be retrieved once then used in combination with data changing per-frame retrieved from xrLocateHandJointsEXT.

Valid Usage (Implicit)
  • The XR_FB_hand_tracking_mesh extension must be enabled prior to using XrHandTrackingMeshFB

  • type must be XR_TYPE_HAND_TRACKING_MESH_FB

  • next must be NULL or a valid pointer to the next structure in a structure chain

  • If jointCapacityInput is not 0, jointBindPoses must be a pointer to an array of jointCapacityInput XrPosef structures

  • If jointCapacityInput is not 0, jointRadii must be a pointer to an array of jointCapacityInput float values

  • If jointCapacityInput is not 0, jointParents must be a pointer to an array of jointCapacityInput XrHandJointEXT values

  • If vertexCapacityInput is not 0, vertexPositions must be a pointer to an array of vertexCapacityInput XrVector3f structures

  • If vertexCapacityInput is not 0, vertexNormals must be a pointer to an array of vertexCapacityInput XrVector3f structures

  • If vertexCapacityInput is not 0, vertexUVs must be a pointer to an array of vertexCapacityInput XrVector2f structures

  • If vertexCapacityInput is not 0, vertexBlendIndices must be a pointer to an array of vertexCapacityInput XrVector4sFB structures

  • If vertexCapacityInput is not 0, vertexBlendWeights must be a pointer to an array of vertexCapacityInput XrVector4f structures

  • If indexCapacityInput is not 0, indices must be a pointer to an array of indexCapacityInput int16_t values

See Also

Document Notes

For more information, see the OpenXR Specification

This page is extracted from the OpenXR Specification. Fixes and changes should be made to the Specification, not directly.

Copyright 2014-2024, The Khronos Group Inc.