簡體   English   中英

使用 MRTK 和 Hololens 1 圍繞一個點捏合和旋轉

[英]Pinch and rotate around a point using MRTK and Hololens 1

當您執行捏合手勢時,我正在嘗試使用 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-events & https://microsoft.github.io/MixedRealityToolkit-Unity/api/Microsoft.MixedReality.Toolkit.Input.IMixedRealityHand.html#Microsoft_MixedReality_Toolkit_Input_IMixedRealityHand_TryGetJoint_ )。

有誰知道如何去做這件事或至少指出我正確的方向(教程/代碼/資產將不勝感激!)

謝謝!

我不確定如何去做,因為文檔似乎表明獲取手/捏坐標的唯一方法僅適用於 Hololens 2

是的,HoloLens1 不支持手部追蹤,例如直接用手觸摸全息圖或用手指向和提交。 建議大家嘗試使用交互模型Gaze 和 commit ,這樣就可以輕松獲取GGVPointer的位置。

通過將 MRTK 中的ManipulationHandler組件添加到您的立方體,可以實現捏合旋轉交互。 該組件可以配置為允許像這樣的兩只手操作。

我不確定如何執行此操作,因為文檔似乎表明獲取手/捏坐標的唯一方法僅適用於 Hololens 2。

有幾種方法可以查詢指針位置。 下面的代碼應該返回全息透鏡的 Right GGVPointer 位置。

    Vector3 pos;
    GGVPointer pointer = PointerUtils.GetPointer<GGVPointer>(Handedness.Right);

    if(pointer != null)
    {
        pos = pointer.Position;
    }

如果您只想圍繞其中心旋轉對象,則可以使用Boundingbox 組件 它創建了可以通過捏合和移動來旋轉對象的手柄。 您可以禁用您不想要的軸。 它甚至適用於 HoloLens 1。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM