структура 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 |