Rendszerszinkronizálás koordinálása Holographic Remoting és a Windows Mixed Reality API használatával

A Windows Mixed Reality API-val a felhasználókoordináta-rendszer egy SpatialStationaryFrameOfReference-be van csomagolva.

Tipp

A holografikus remoting minták github-adattárában található egy egyszerű példa a távoli és a lejátszómintákban. A mintakód engedélyezéséhez törölje a jelölést #define ENABLE_USER_COORDINATE_SYSTEM_SAMPLE a SampleRemoteApp.h és a SamplePlayerMain.h fájlokból.

A felhasználókoordináta-rendszer beállítása és frissítése a Player alkalmazásban

A felhasználói koordinátarendszer beállításához és frissítéséhez hívja meg UpdateUserSpatialFrameOfReference a lejátszókörnyezetet, és adjon hozzá egy SpatialCoordinateSystem-et . A SpatialCoordinateSystem lehet például a SpatialStationaryFrameOfReference, a SpatialLocatorAttachedFrameOfReference vagy a 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 (...)
{
}

Megjegyzés

A SpatialStationaryFrameOfReference mintával rendszeres időközönként kell meghívni, UpdateUserSpatialFrameOfReference hogy elkerülje az eszközkövetés elvesztése utáni sodródást, még akkor is, ha a felhasználó koordinátarendszere nem változott!

A felhasználókoordináta-rendszer lekérése a távoli alkalmazásban

A felhasználó koordinátarendszerének eléréséhez hívja GetUserSpatialFrameOfReference meg a távoli környezetet. GetUserSpatialFrameOfReferenceEgy SpatialStationaryFrameOfReference értéket ad vissza, amely a felhasználó koordinátarendszerét jelöli.

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

Lásd még: