Я нашел свой ответ.
Пример HolographicFaceTracking использует систему координат относительно очков.
Линия 281
SpatialCoordinateSystem ^ currentCoordinateSystem = m_referenceFrame-
GetStationaryCoordinateSystemAtTimestamp (prediction-> Отметка);
Я неправильно понял этот метод как получение "Стационарного", то есть системы координат "Мир". Но «Стационарный» не имеет этого значения в этом контексте.
Это не совсем объясняет, почему куб не будет изменять размер или иметь обратное масштабирование, но, как только я переключился на использование этого кода из примера BasicHologram:
// The simplest way to render world-locked holograms is to create a
stationary reference frame
// based on a SpatialLocator. This is roughly analogous to creating a "world"
coordinate system
// with the origin placed at the device's position as the app is launched.
m_stationaryReferenceFrame = m_spatialLocator-
>CreateStationaryFrameOfReferenceAtCurrentLocation();
, а затем
pose = SpatialPointerPose::TryGetAtTimestamp(m_stationaryReferenceFrame-
>CoordinateSystem, prediction->Timestamp);
переключение на использование CreateStationaryFrameOfReferenceAtCurrentLocation ()
дает мне "заблокированную по миру" систему координат.
Я думаю, в свою защиту;>) перегрузка слова «стационарный» повсюду немного сбивает с толку, и нужно быть осторожным. Я изменяю свой собственный код, чтобы использовать «мир» и «гарнитуру» для обращения к координатным кадрам, чтобы избежать путаницы ...
Надеюсь, мой ответ здесь поможет кому-то еще ...