Unity のフォーカスポイントFocus point in Unity

名前空間: UNITYENGINE. XRNamespace: UnityEngine.XR.WSA
: HolographicSettingsType: HolographicSettings

フォーカスポイントは、現在表示されているホログラムに対して安定化を最適に実行する方法について、HoloLens にヒントを提供するように設定できます。The focus point can be set to provide HoloLens a hint about how to best perform stabilization on the holograms currently being displayed.

Unity でフォーカスポイントを設定する場合は、 HolographicSettings. SetFocusPointForFrame () を使用してすべてのフレームを設定する必要があります。If you want to set the Focus Point in Unity, it needs to be set every frame using HolographicSettings.SetFocusPointForFrame(). フレームにフォーカスポイントが設定されていない場合は、既定の安定化平面が使用されます。If the Focus Point is not set for a frame, the default stabilization plane will be used.


既定では、新しい Unity プロジェクトの [深度バッファーの共有を有効にする] オプションが設定されています。By default, new Unity projects have the "Enable Depth Buffer Sharing" option set. このオプションを使用すると、イマーシブデスクトップヘッドセットまたは Windows 10 April 2018 更新プログラム (RS4) 以降を実行する HoloLens で実行されている Unity アプリは、Windows に深度バッファーを送信して、アプリでを指定することなく、ホログラムの安定性を自動的に最適化します。フォーカスポイント:With this option, a Unity app running on either an immersive desktop headset or a HoloLens running the Windows 10 April 2018 Update (RS4) or later will submit your depth buffer to Windows to optimize hologram stability automatically, without your app specifying a focus point:

  • イマーシブデスクトップヘッドセットでは、これにより、ピクセルごとの深度ベースの再プロジェクションが有効になります。On an immersive desktop headset, this will enable per-pixel depth-based reprojection.
  • Windows 10 April 2018 Update 以降を実行している HoloLens では、これにより深度バッファーが分析され、最適な安定化平面が自動的に選択されます。On a HoloLens running the Windows 10 April 2018 Update or later, this will analyze the depth buffer to pick an optimal stabilization plane automatically.

どちらの方法も、各フレームのフォーカスポイントを選択するために、アプリによる明示的な作業を行わずに、より優れたイメージ品質を提供する必要があります。Either approach should provide even better image quality without explicit work by your app to select a focus point for each frame. フォーカスポイントを手動で指定すると、上記の自動動作がオーバーライドされ、通常はホログラムの安定性が低下します。Note that if you do provide a focus point manually, that will override the automatic behavior described above, and will usually reduce hologram stability. 一般に、アプリが HoloLens で実行されている場合は、Windows 10 April 2018 更新プログラムにまだ更新されていない場合にのみ、手動のフォーカスポイントを指定することをお勧めします。Generally, you should only specify a manual focus point when your app is running on a HoloLens that has not yet been updated to the Windows 10 April 2018 Update.


SetFocusPointForFrame静的関数で使用できるオーバーロードによって提案されているように、フォーカスポイントを設定するにはさまざまな方法があります。There are many ways to set the Focus Point, as suggested by the overloads available on the SetFocusPointForFrame static function. 次に示すのは、各フレームに対して指定されたオブジェクトにフォーカス平面を設定する簡単な例です。Presented below is a simple example to set the focus plane to the provided object for each frame:

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);

上の単純なコードでは、フォーカスがあるオブジェクトがユーザーの背後にある場合に、ホログラムの安定性が低下する可能性があることに注意してください。Note that the simple code above may end up reducing hologram stability if the focused object ends up behind the user. このため、通常は、フォーカスポイントを手動で指定するのではなく、"深度バッファーの共有を有効にする" を設定する必要があります。This is why you should generally set "Enable Depth Buffer Sharing" instead of manually specifying a focus point.

See also