Partager via


Synchronisation du système de coordonnées avec la communication à distance holographique et l’API Windows Mixed Reality

Avec l’API Windows Mixed Reality, le système de coordonnées utilisateur est encapsulé dans un SpatialStationaryFrameOfReference.

Conseil

Vous trouverez un exemple simple dans les exemples de lecteur et à distance à l’intérieur du référentiel github d’exemples de communication à distance holographiques. Supprimez #define ENABLE_USER_COORDINATE_SYSTEM_SAMPLE les marques de commentaire dans les fichiers SampleRemoteApp.h et SamplePlayerMain.h pour activer l’exemple de code.

Définir et mettre à jour le système de coordonnées utilisateur dans l’application Lecteur

Pour définir et mettre à jour le système de coordonnées utilisateur, appelez UpdateUserSpatialFrameOfReference le contexte du joueur et transmettez-y un SpatialCoordinateSystem . Un SpatialCoordinateSystem peut, par exemple, être un SpatialStationaryFrameOfReference, SpatialLocatorAttachedFrameOfReference ou un 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 (...)
{
}

Notes

Avec l’exemple SpatialStationaryFrameOfReference, UpdateUserSpatialFrameOfReference doit être appelé à intervalles réguliers pour éviter la dérive après la perte du suivi des appareils, même si le système de coordonnées utilisateur n’a pas changé !

Obtenir le système de coordonnées utilisateur dans l’application distante

Pour accéder au système de coordonnées utilisateur, appelez GetUserSpatialFrameOfReference sur le contexte distant. GetUserSpatialFrameOfReference retourne un SpatialStationaryFrameOfReference, qui représente le système de coordonnées utilisateur.

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

Voir aussi