Freigeben über


Koordinatensystemsynchronisierung mit Holographic Remoting und der Windows Mixed Reality-API

Mit der Windows Mixed Reality-API wird das Benutzerkoordinatensystem in einen SpatialStationaryFrameOfReference umschlossen.

Tipp

Ein einfaches Beispiel finden Sie in den Remote- und Playerbeispielen im GitHub-Repository für Holographic Remoting-Beispiele. Heben Sie die Auskommentierung #define ENABLE_USER_COORDINATE_SYSTEM_SAMPLE innerhalb der Dateien SampleRemoteApp.h und SamplePlayerMain.h auf, um den Beispielcode zu aktivieren.

Festlegen und Aktualisieren des Benutzerkoordinatensystems in der Player-App

Um das Benutzerkoordinatensystem festzulegen und zu aktualisieren, rufen Sie UpdateUserSpatialFrameOfReference im Playerkontext auf, und übergeben Sie ein SpatialCoordinateSystem an diesen. Ein SpatialCoordinateSystem kann z. B. ein SpatialStationaryFrameOfReference, SpatialLocatorAttachedFrameOfReference oder SpatialAnchor sein.

// 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 (...)
{
}

Hinweis

Mit dem Beispiel SpatialStationaryFrameOfReference muss in einem regelmäßigen Intervall aufgerufen werden, UpdateUserSpatialFrameOfReference um Verschiebungen nach verlust der Gerätenachverfolgung zu vermeiden, auch wenn das Benutzerkoordinatensystem nicht geändert wurde!

Abrufen des Benutzerkoordinatensystems in der Remote-App

Um auf das Benutzerkoordinatensystem zuzugreifen, rufen Sie GetUserSpatialFrameOfReference im Remotekontext auf. GetUserSpatialFrameOfReference gibt einen SpatialStationaryFrameOfReference zurück, der das Benutzerkoordinatensystem darstellt.

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

Siehe auch