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 in den 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 ein 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 regelmäßigen Abständen aufgerufen werden, UpdateUserSpatialFrameOfReference um Abweichungen nach verlust der Geräteverfolgung zu vermeiden, auch wenn sich das Benutzerkoordinatensystem nicht geändert hat!

Abrufen des Benutzerkoordinatensystems in der Remote-App

Rufen GetUserSpatialFrameOfReference Sie für den Remotekontext auf, um auf das Benutzerkoordinatensystem zuzugreifen. GetUserSpatialFrameOfReference gibt ein SpatialStationaryFrameOfReference zurück, das das Benutzerkoordinatensystem darstellt.

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

Weitere Informationen