次の方法で共有


Holographic Remoting と Windows Mixed Reality API を使用した座標系同期

Windows Mixed Reality API を使用すると、ユーザー座標系は SpatialStationaryFrameOfReference にラップされます。

ヒント

シンプルな例は、Holographic Remoting サンプルの GitHub リポジトリ内の remote と player サンプルで見つけることができます。 SampleRemoteApp.h と SamplePlayerMain.h ファイル内の #define ENABLE_USER_COORDINATE_SYSTEM_SAMPLE のコメントを解除して、このサンプル コードを有効にしてください。

プレーヤー アプリでユーザー座標系を設定および更新する

ユーザー座標系を設定および更新するには、プレーヤー コンテキストで UpdateUserSpatialFrameOfReference を呼び出し、SpatialCoordinateSystem を渡します。 たとえば、SpatialCoordinateSystem は、SpatialStationaryFrameOfReferenceSpatialLocatorAttachedFrameOfReference、または 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 (...)
{
}

Note

サンプルの SpatialStationaryFrameOfReference では、ユーザー座標系が変更されていない場合でも、デバイス追跡が失われた後のドリフトを回避するために、一定の間隔で UpdateUserSpatialFrameOfReference を呼び出す必要があります。

リモート アプリでユーザー座標系を取得する

ユーザー座標系にアクセスするには、リモート コンテキストで GetUserSpatialFrameOfReference を呼び出します。 GetUserSpatialFrameOfReference によって、ユーザー座標系を表す SpatialStationaryFrameOfReference が返されます。

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

参照