Share via


Coordenar a sincronização do sistema com a comunicação remota holográfica e a API de Windows Mixed Reality

Com a API Windows Mixed Reality, o sistema de coordenadas do usuário é encapsulado em um SpatialStationaryFrameOfReference.

Dica

Um exemplo simples pode ser encontrado nos exemplos remoto e de player dentro do repositório github de exemplos de Comunicação Remota Holográfica. Remova o comentário #define ENABLE_USER_COORDINATE_SYSTEM_SAMPLE dentro dos arquivos SampleRemoteApp.h e SamplePlayerMain.h para habilitar o código de exemplo.

Definir e atualizar o sistema de coordenadas do usuário no aplicativo Player

Para definir e atualizar o sistema de coordenadas do usuário, chame UpdateUserSpatialFrameOfReference no contexto do player e passe um SpatialCoordinateSystem para ele. Um SpatialCoordinateSystem pode, por exemplo, ser um SpatialStationaryFrameOfReference, SpatialLocatorAttachedFrameOfReference ou 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 (...)
{
}

Observação

Com o exemplo SpatialStationaryFrameOfReference, UpdateUserSpatialFrameOfReference deve ser chamado em um intervalo regular para evitar descompasso após a perda de rastreamento de dispositivos, mesmo que o sistema de coordenadas do usuário não tenha sido alterado!

Obter o sistema de coordenadas do usuário no aplicativo remoto

Para acessar o sistema de coordenadas do usuário, chame GetUserSpatialFrameOfReference no contexto remoto. GetUserSpatialFrameOfReference retorna um SpatialStationaryFrameOfReference, que representa o sistema de coordenadas do usuário.

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

Consulte Também