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:

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 0.

  • 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 0.

  • 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 0.

  • indices is an array of triangle indices.

  • See the <<buffer-size-parameters> section for a detailed description of retrieving the required 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

  • jointBindPoses must be a pointer to an array of jointCapacityInput XrPosef structures

  • jointRadii must be a pointer to an array of jointCapacityInput float values

  • jointParents must be a pointer to an array of jointCapacityInput XrHandJointEXT values

  • vertexPositions must be a pointer to an array of vertexCapacityInput XrVector3f structures

  • vertexNormals must be a pointer to an array of vertexCapacityInput XrVector3f structures

  • vertexUVs must be a pointer to an array of vertexCapacityInput XrVector2f structures

  • vertexBlendIndices must be a pointer to an array of vertexCapacityInput XrVector4sFB structures

  • vertexBlendWeights must be a pointer to an array of vertexCapacityInput XrVector4f structures

  • indices must be a pointer to an array of indexCapacityInput int16_t values

  • The jointCapacityInput parameter must be greater than 0

  • The vertexCapacityInput parameter must be greater than 0

  • The indexCapacityInput parameter must be greater than 0

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 (c) 2014-2021, The Khronos Group Inc.