Поделиться через


Синхронизация системы координат с голографическим удаленным взаимодействием и API Windows Mixed Reality

С помощью API Windows Mixed Reality система координат пользователя упаковывается в SpatialStationaryFrameOfReference.

Совет

Простой пример можно найти в примерах удаленного и проигрывателя в репозитории Github с примерами голографического удаленного взаимодействия. Раскомментируйте #define ENABLE_USER_COORDINATE_SYSTEM_SAMPLE файлы SampleRemoteApp.h и SamplePlayerMain.h, чтобы включить пример кода.

Установка и обновление системы координат пользователей в приложении проигрывателя

Чтобы задать и обновить систему координат пользователя, вызовите UpdateUserSpatialFrameOfReference контекст проигрывателя и передайте в него SpatialCoordinateSystem . SpatialCoordinateSystem может, например, быть SpatialStationaryFrameOfReference, SpatialLocatorAttachedFrameOfReference или SpatialAnchor.

// In the Player app:

// Create a stationary frame of reference
winrt::Windows::Perception::Spatial::SpatialStationaryFrameOfReference spatialFrameOfReference = nullptr;
winrt::Windows::Perception::Spatial::SpatialLocator spatialLocator = winrt::Windows::Perception::Spatial::SpatialLocator::GetDefault();
if (spatialLocator != nullptr)
{
    spatialFrameOfReference = spatialLocator.CreateStationaryFrameOfReferenceAtCurrentLocation(float3(0.0f, 0.0f, 0.0f), quaternion(0, 0, 0, 1), 0.0);
}

...

// Update the user coordinate system with the coordinate system of the spatial frame of reference
try
{
    SpatialCoordinateSystem userCoordinateSystem = spatialFrameOfReference.CoordinateSystem();
    m_playerContext.UpdateUserSpatialFrameOfReference(userCoordinateSystem);
}
catch (...)
{
}

Примечание

При использовании примера SpatialStationaryFrameOfReference необходимо вызывать через регулярный интервал, UpdateUserSpatialFrameOfReference чтобы избежать смещения после потери отслеживания устройства, даже если система координат пользователя не изменилась!

Получение пользовательской системы координат в удаленном приложении

Чтобы получить доступ к системе координат пользователя, вызовите GetUserSpatialFrameOfReference удаленный контекст. GetUserSpatialFrameOfReference возвращает объект SpatialStationaryFrameOfReference, представляющий систему координат пользователя.

// In the Remote app:
winrt::Windows::Perception::Spatial::SpatialStationaryFrameOfReference spatialUserFrameOfReference = m_remoteContext.GetUserSpatialFrameOfReference();

См. также: