Partilhar via


Coordenar a Sincronização do Sistema com a Remoting Holográfica e a API de Windows Mixed Reality

Com a API Windows Mixed Reality, o sistema de coordenadas do utilizador é encapsulado numa SpatialStationaryFrameOfReference.

Dica

Pode encontrar um exemplo simples nos exemplos remoto e de leitor no repositório github de exemplos De Remoting Holográfico. Anule o #define ENABLE_USER_COORDINATE_SYSTEM_SAMPLE comentário dentro dos ficheiros SampleRemoteApp.h e SamplePlayerMain.h para ativar o código de exemplo.

Definir e Atualizar o Sistema de Coordenadas de Utilizador na Aplicação player

Para definir e atualizar o sistema de coordenadas do utilizador, chame UpdateUserSpatialFrameOfReference o contexto do leitor e transmita um SpatialCoordinateSystem para o mesmo. Um SpatialCoordinateSystem pode, por exemplo, ser um SpatialStationaryFrameOfReference, SpatialLocatorAttachedFrameOfReference ou um 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 (...)
{
}

Nota

Com o exemplo SpatialStationaryFrameOfReference, UpdateUserSpatialFrameOfReference tem de ser chamado num intervalo regular para evitar desvios após a perda de controlo de dispositivos, mesmo que o sistema de coordenadas do utilizador não tenha sido alterado!

Obter o Sistema de Coordenadas de Utilizador na Aplicação Remota

Para aceder ao sistema de coordenadas do utilizador, chame GetUserSpatialFrameOfReference o contexto remoto. GetUserSpatialFrameOfReference devolve um SpatialStationaryFrameOfReference, que representa o sistema de coordenadas do utilizador.

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

Consulte também