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 開發檢查點。