程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> HoloLens開發手記,hololens手記

HoloLens開發手記,hololens手記

編輯:C#入門知識

HoloLens開發手記,hololens手記


World Anchor空間錨提供了一種能夠將物體保留在特定位置和旋轉狀態上的方法。這保證了全息對象的穩定性,同時提供了後續在真實世界中保持全息對象位置的能力。簡單地說,你可以為全息物體來添加空間錨點,這樣就能在後續步驟中將全息物體准確恢復到它原來的位置。

 

WorldAnchor anchor = gameObject.AddComponent<WorldAnchor>();

 

Removing a World Anchor 移除空間錨


 

如果你不再想將GameObject固定在特定位置,同時在場景中也不想移動它,,那麼可以調用Destroy()方法來銷毀WorldAnchor組件,如下:

 

Destroy(gameObject.GetComponent<WorldAnchor>());

 

如果你想要立刻在場景中移動對象,那麼需要調用DestroyImmediate()來銷毀空間錨組件,如下:

 

DestroyImmediate(gameObject.GetComponent<WorldAnchor>());

 

Moving a World Anchored GameObject 移動錨定的全息對象


 

當全息對象已附加空間錨組件後,它不能被移動。如果你需要一定全息對象的話,那麼你必須這樣做:

DestroyImmediate(gameObject.GetComponent<WorldAnchor>());
gameObject.transform.position = new Vector3(0, 0, 2);
WorldAnchor anchor = gameObject.AddComponent<WorldAnchor>();

 

Handling Locatability Changes 處理可定位能力的變化


 

在某個時間點,空間錨可能不能夠在世界中被定位到。如果這種情況發生,Unity將不能更新錨定對象的位置。在應用運行時,這也肯能會發生變化。不能夠及時處理可定位能力的變化,可能會導致對象不會出現在准確的位置上。

為了追蹤可定位能力的變化,需要采取如下做法:

 

訂閱事件

代碼如下:

 

anchor.OnTrackingChanged += Anchor_OnTrackingChanged;

 

處理OnTrackingChanged事件

代碼如下:

private void Anchor_OnTrackingChanged(WorldAnchor self, bool located)
{
       // 根據定位狀態簡單的顯示或者隱藏對象
    self.gameObject.SetActiveRecursively(located);
}

 

設定明確的初始狀態

有時空間錨能夠立刻被定位到。這時候,給對象添加空間錨後,空間錨組件的isLocated屬性值將會被設為true,這是OnTrackingChanged事件將不會被觸發。因此,在添加空間錨組件後,推薦立刻使用初始的isLocated狀態去調用OnTrackingChanged事件,如下:

 

Anchor_OnTrackingChanged(anchor, anchor.isLocated);

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved