Directx 为什么我的固定全息图不能随着头部的移动而缩放?

Directx 为什么我的固定全息图不能随着头部的移动而缩放?,directx,c++-cx,hololens,Directx,C++ Cx,Hololens,我使用固定的参考系放置一个直接的X球体。当我移动头部时,球体全息图保持在原位。但它不能扩展。当我第一次使用PositionHologramAtGaze()放置它时,它确实会缩放(基于示例代码) 当C++ +直接X?< /P>时,我必须处理缩放吗? //下面的代码基于或与示例代码相同 SpatialPointerPose^ pointerPoseStationary = SpatialPointerPose::TryGetAtTimestamp(m_stationaryReferenceFram

我使用固定的参考系放置一个直接的X球体。当我移动头部时,球体全息图保持在原位。但它不能扩展。当我第一次使用PositionHologramAtGaze()放置它时,它确实会缩放(基于示例代码)

当C++ +直接X?< /P>时,我必须处理缩放吗? //下面的代码基于或与示例代码相同

SpatialPointerPose^ pointerPoseStationary = 
SpatialPointerPose::TryGetAtTimestamp(m_stationaryReferenceFrame- 
>CoordinateSystem, prediction->Timestamp);

m_Sphere->PositionHologramAtGaze(pointerPoseStationary, 2.5f);
球体绘制得很好,并保持在一个固定的世界位置,但随着我将头部/全息镜头移得更远,球体不会缩放

例如,在这张图片中,我们看到一个人在看全息球体

他们看到的是

现在,佩戴全息透镜硬件的用户后退几米:

他们应该看到一个更小的球体:

我在微软的例子中也看到了这一点:

立方体会旋转,但不会随着我向后移动而改变大小。

我找到了自己的答案

全息刻面追踪示例使用相对于眼镜的坐标系。 第281行 空间坐标系统^currentCoordinateSystem=m_referenceFrame-

GetStationAryCoordinationSystemMatTimeStamp(预测->时间戳)

我把这种方法误解为获取“静止”坐标系,即“世界”坐标系。但是“静止”在这种情况下没有这个意思

它没有完全解释为什么立方体不会改变大小,或者具有反向缩放,但是,一旦我切换到使用基本图示例中的代码:

// 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);
切换到使用CreateStationAryFrameOfReferenceAreaCurrentLocation()命令

给我“世界锁定”坐标系

我认为,为我辩护,;>),“静止”一词在整个地方的过度使用有点令人困惑,需要小心。我正在更改自己的代码,以确保使用“世界”和“耳机”来引用坐标帧,以帮助消除混淆


希望我在这里的回答能帮助其他人……

你能添加一些粗略绘制的图像,描述正在发生的事情和你想要发生的事情吗?因为我很难想象这个问题。我在上面添加了图片链接。我的基本问题是,我会“认为”微软会提供一些东西来缩放全息图,但可能不会用于DirectX低水平。如果不是,我们自己缩放对象的最佳方法是什么?你确定你没有误解示例吗?如果它留在原地,当你离开时,你看不到它变小,那就意味着它必须变大。要让样本正常反应,还需要更多的努力。难道你不希望看到比你所看到的更大的差异吗?如果我把一个球体放在5米之外,把同一个球体放在4米之外,当通过全息透镜观察时,它的大小就不同了。然而,如果我把一个球体放在4米远的地方,并后退(大约)1米,它会保持相同的大小。这可能是一个自动缩放的东西,最常用于UI。多维数据集上是否启用了任何功能?有没有提到缩放?