Перейти к основному содержимому

XR_PICO_body_tracking

Doesn't require any Android permissions for now.

Functions

xrSetBodyTrackerStaticCalibStatePICO

XrResult xrSetBodyTrackerStaticCalibStatePICO(
XrInstance instance,
XrBool32 isCalibrated);

I assume it is for mocking testing.

xrSetBodyTrackerModePICO

XrResult xrSetBodyTrackerModePICO(
XrInstance instance,
XrBodyTrackingModePICO mode);

xrGetBodyTrackerPosePICO

XrResult xrGetBodyTrackerPosePICO(
XrInstance instance,
XrTime time,
XrBodyTrackingResultPICO* data);

xrGetBodyTrackerImuDataPICO

XrResult xrGetBodyTrackerImuDataPICO(
XrInstance instance,
int32_t trackerId,
XrBodyTrackingImuPICO* data);

xrGetBodyTrackerConnectStatePICO

XrResult xrGetBodyTrackerConnectStatePICO(
XrInstance instance,
XrBodyTrackerConnectStatePICO* state);

xrGetBodyTrackerBatteryPICO

XrResult xrGetBodyTrackerBatteryPICO(
XrInstance instance,
int32_t trackerId,
int32_t* batteryLevel);

xrGetBodyTrackerCalibStatePICO

XrResult xrGetBodyTrackerCalibStatePICO(
XrInstance instance,
XrBool32* isCalibrated);

xrSetBodyTrackingAlgParamPICO

XrResult xrSetBodyTrackingAlgParamPICO(
XrInstance instance,
XrBodyTrackingAlgParamTypePICO paramType,
const XrBodyTrackingAlgParamPICO* param);

Types

XrBodyTrackingAlgParamTypePICO

typedef enum XrBodyTrackingAlgParamTypePICO {
XR_ALG_PARAM_HUMAN_HEIGHT_PICO = 0,
XR_ALG_PARAM_SWIFT_MODE_PICO = 1,
XR_ALG_PARAM_BONE_PARAM_PICO = 2
} XrBodyTrackingAlgParamTypePICO;

XrBodyTrackingAlgParamPICO

typedef struct XrBodyTrackingAlgParamPICO {
XrBodyJointSetBD jointSet;
float headLength;
float neckLength;
float torsoLength;
float hipLength;
float upperLegLength;
float lowerLegLength;
float footLength;
float shoulderLength;
float upperArmLength;
float lowerArmLength;
float handLength;
} XrBodyTrackingAlgParamPICO;

Could jointSet be a human height in centimeters if paramType is XR_ALG_PARAM_HUMAN_HEIGHT_PICO?

XrBodyTrackingImuPICO

typedef struct XrBodyTrackingImuPICO {
XrTime time;
double temperature;
double gyroscopeData[3];
double accelerometerData[3];
double magnetometerData[3];
} XrBodyTrackingImuPICO;

XrBodyTrackingPosePICO

typedef struct XrBodyTrackingPosePICO {
XrTime time;
double positionX;
double positionY;
double positionZ;
double orienationX;
double orienationY;
double orienationZ;
double orienationW;
} XrBodyTrackingPosePICO;

XrBodyTrackingTransformPICO

typedef struct XrBodyTrackingTransformPICO {
XrBodyTrackerRoleBD bone;
XrBodyTrackingPosePICO localPose;
XrBodyTrackingPosePICO globalPose;
double linearVelocity[3];
double linearAcceleration[3];
double angularVelocity[3];
double angularAcceleration[3];
XrBodyJointActionBD bodyAction;
} XrBodyTrackingTransformPICO;

XrBodyTrackingResultPICO

typedef struct XrBodyTrackingResultPICO {
XrBodyTrackingTransformPICO trackingdata[24];
} XrBodyTrackingResultPICO;

XrBodyTrackerConnectStatePICO

typedef XrBodyTrackerConnectStatePICO {
uint8_t trackerCount;
uint8_t trackerId[12];
} XrBodyTrackerConnectStatePICO;

XrBodyTrackingModePICO

typedef enum XrBodyTrackingModePICO {
XR_BTM_DISABLE_PICO = 0,
XR_BTM_WITH_SWIFT_PICO = 1, //Default mode
XR_BTM_WITHOUT_SWIFT_PICO = 2,
XR_BTM_MAX_ENUM_PICO = 0x7FFFFFFF,
} XrBodyTrackingModePICO;