структура MFCameraExtrinsic_CalibratedTransform (mfapi.h)

Преобразование, описывающее расположение камеры относительно других камер или установленную внешнюю ссылку.

Синтаксис

typedef struct _MFCameraExtrinsic_CalibratedTransform {
  GUID          CalibrationId;
  MF_FLOAT3     Position;
  MF_QUATERNION Orientation;
} MFCameraExtrinsic_CalibratedTransform;

Члены

CalibrationId

Эталонный GUID, определяющий процесс калибровки данных, позволяющий разным потребителям определять данные калибровки из одного процесса.

Position

Позиция преобразования.

Orientation

Поворот преобразования.

Комментарии

Значение Position должно быть выражено в реальных координатах в единицах измерения. Система координат положения и ориентации должна быть правой декартовой, как показано на следующей схеме.

Правша декартовая система координат
Важно

Положение и ориентация имеют разные интерпретации для автономных групп датчиков и для Windows Mixed Reality устройств.

### Автономные группы датчиков

Для автономных групп датчиков положение и ориентация выражают расположение начала группы в системе координат датчика. Например, значение Положения {-5, 0, 0} означает, что источник находится в 5 метрах слева от датчика, и, следовательно, датчик находится в 5 метрах справа от источника. Датчик, расположенный на 2 метра выше источника, должен указывать положение {0, -2, 0}, так как это положение источника относительно датчика.

Если датчик выровнен по источнику, поворот является кватернионом идентификатора, а передний вектор находится вдоль оси -Z {0, 0, -1}. Если датчик поворачивается на +30 градусов вокруг оси Y от начала (т. е. влево), значение ориентации должно быть поворотом на -30 градусов вокруг оси Y, так как оно представляет ориентацию источника относительно датчика.

устройства Windows Mixed Reality

Датчики, подключенные к Windows Mixed Reality устройству (например, HoloLens), выражают калибровку с помощью противоположного соглашения, поэтому положение и ориентация указывают расположение датчика в системе координат устройства. Например, датчик, расположенный в 5 см справа от источника устройства, будет иметь положение {0,05, 0, 0}, так как это положение датчика относительно устройства. Аналогичным образом, если датчик поворачивается на +10 градусов вокруг оси Y от устройства (т. е. влево), то значением ориентации будет поворот на +10 градусов относительно оси Y, так как он представляет ориентацию датчика относительно устройства. Кроме того, идентификатор calibrationId можно передать в SpatialGraphInteropPreview.CreateLocatorForNode для создания Объекта SpatialLocator, представляющего Windows Mixed Reality устройство. Его можно использовать для вычисления расположения датчика в пространстве для заданного кадра путем запроса расположения SpatialLocator на момент захвата кадра и объединения его с положением и ориентациейMFCameraExtrinsic_CalibratedTransform. Чтобы запросить расположение устройства для кадра, передайте метку времени кадра, заданную IMFSample::GetSampleTime , в PerceptionTimestampHelper.FromSystemRelativeTargetTime, а результирующую метку PerceptionTime — в SpatialLocator.TryLocateAtTimestamp.

Чтобы определить, поступило ли приложение IMFSample с датчика, подключенного к Windows Mixed Reality устройству, найдите следующее свойство, присоединенное к рамке, и задайте для значение MFCameraExtrinsicsCalibrationType_SpatialGraphDynamicNode:

typedef enum _MFCameraExtrinsicsCalibrationType
{
    MFCameraExtrinsicsCalibrationType_Unknown = 0,
    MFCameraExtrinsicsCalibrationType_SpatialGraphDynamicNode = 1
} MFCameraExtrinsicsCalibrationType;

DEFINE_GUID(MFSampleExtension_CameraExtrinsicsCalibrationType, 0x3524e3b0, 0xc355, 0x49f1, 0xb8, 0xb0, 0xd0, 0xdd, 0x62, 0xde, 0x37, 0xa7);
 

Требования

Требование Значение
Минимальная версия клиента Windows 10 [только классические приложения]
Минимальная версия сервера Windows Server 2016 [только классические приложения]
Верхняя часть mfapi.h

См. также раздел

Структуры Media Foundation