Unity 中的焦點

Namespace:UnityEngine.XR.WSA
類型HolographicSettings

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

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

注意

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

  • 在沉浸式桌面頭戴式裝置上,這會啟用以每圖元深度為基礎的重現。
  • 在執行 2018 年 4 月更新或更新版本的 Windows 10 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 開發旅程,您就正在探索Mixed Reality平臺功能和 API。 接下來,您可以繼續進行下一個主題:

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

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

另請參閱