【问题标题】:Pinch and rotate around a point using MRTK and Hololens 1使用 MRTK 和 Hololens 1 围绕一个点捏合和旋转
【发布时间】:2020-05-22 19:09:31
【问题描述】:

当您执行捏合手势时,我正在尝试使用 MRTK、Unity 和 Hololens 1 围绕枢轴旋转光束/长方体。松开夹点后,横梁应保持在原位。

我最初的想法是获取夹点的笛卡尔坐标,并根据它们相对于枢轴的位置,让光束旋转所需的度数。例如。捏合时手的位置是(1,1,0),枢轴位置是(0,0,0)。因此,光束应在 XY 平面内旋转 45 度(我们忽略 z 分量)。我不确定如何执行此操作,因为文档似乎表明获取手/捏坐标的唯一方法仅适用于 Hololens 2。(https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/Input/HandTracking.html#hand-tracking-eventshttps://microsoft.github.io/MixedRealityToolkit-Unity/api/Microsoft.MixedReality.Toolkit.Input.IMixedRealityHand.html#Microsoft_MixedReality_Toolkit_Input_IMixedRealityHand_TryGetJoint_)。

有谁知道如何去做,或者至少给我指出正确的方向(教程/代码/资产将不胜感激!)

谢谢!

【问题讨论】:

    标签: c# unity3d hololens mrtk


    【解决方案1】:

    我不确定如何执行此操作,因为文档似乎表明获取手/捏坐标的唯一方法仅适用于 Hololens 2

    是的,HoloLens1 不支持hand tracking,例如直接用手触摸全息图或用手指向和提交。建议大家尝试使用Gaze and commit的交互模型,这样可以轻松获取GGVPointer的位置。

    【讨论】:

      【解决方案2】:

      可以通过将 MRTK 中的 ManipulationHandler 组件添加到您的多维数据集来实现捏合旋转交互。该组件可以配置为允许像this 这样的两只手操作。

      我不确定如何执行此操作,因为文档似乎表明获取手/捏坐标的唯一方法仅适用于 Hololens 2。

      有几种方法可以查询指针位置。下面的代码应该返回 hololens 的 Right GGVPointer 位置。

          Vector3 pos;
          GGVPointer pointer = PointerUtils.GetPointer<GGVPointer>(Handedness.Right);
      
          if(pointer != null)
          {
              pos = pointer.Position;
          }
      

      【讨论】:

        【解决方案3】:

        如果您只想围绕其中心旋转对象,您可以使用Boundingbox Component。它创建可以捏合和移动以旋转对象的手柄。你可以禁用你不想要的轴。它甚至可以在 HoloLens 1 上使用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-12-18
          • 1970-01-01
          • 2023-04-03
          • 2017-03-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多