共用方式為


Unity 中的焦點

命名空間:UnityEngine.XR.WSA
類型HolographicSettings

使用焦點提供 HoloLens 提示,說明如何最好穩定目前顯示的全像投影。

如果您想要在 Unity 中設定焦點點,則必須使用 HolographicSettings.SetFocusPointForFrame() 來設定每個畫面。 未設定框架的焦點時,會使用預設防震平面。

注意

根據預設,新的 Unity 專案會設定 [啟用深度緩衝區共用] 選項。 使用此選項時,在沉浸式桌面頭戴裝置或執行 Windows 10 2018 年 4 月更新版 (RS4) 或更新版本的 HoloLens 上執行的 Unity 應用程式會將深度緩衝區提交至 Windows,以自動優化全像投影穩定性,而不需要您的應用程式指定焦點:

  • 在沉浸式桌面頭戴式裝置上,這會啟用以每圖元深度為基礎的重現。
  • 在執行 Windows 10 2018 年 4 月更新版或更新版本的 HoloLens 上,這會分析深度緩衝區以自動挑選最佳的穩定平面。

任何一種方法都應該提供更好的影像品質,而不需要您的應用程式明確工作,即可為每個畫面選取焦點點。 請注意,如果您確實手動提供焦點點,將會覆寫上述的自動行為,而且通常會降低全像投影穩定性。 一般而言,當您的應用程式在尚未更新至 Windows 10 2018 年 4 月更新的 HoloLens 上執行時,您應該只指定手動焦點點。

範例

有許多方法可以設定焦點點,如 SetFocusPointForFrame 靜態函式上可用的多載所建議。 以下是將焦點平面設定為每個畫面所提供對象的簡單範例:

public GameObject focusedObject;
void Update()
{
    // Normally the normal is best set to be the opposite of the main camera's
    // forward vector.
    // If the content is actually all on a plane (like text), set the normal to
    // the normal of the plane and ensure the user does not pass through the
    // plane.
    var normal = -Camera.main.transform.forward;     
    var position = focusedObject.transform.position;
    UnityEngine.XR.WSA.HolographicSettings.SetFocusPointForFrame(position, normal);
}

注意

如果焦點對象最終位於使用者後方,上述簡單的程式代碼可能會降低全像投影穩定性。 我們通常建議設定 [ 啟用深度緩衝區共用 ],而不是手動指定焦點。

下一個開發檢查點

如果您遵循我們制定的 Unity 開發旅程,您正在探索混合實境平臺功能和 API。 接下來,您可以繼續進行下一個主題:

或者,直接跳到在裝置或模擬器上部署應用程式的主題:

您可以隨時回到 Unity 開發檢查點

另請參閱