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.

次の開発チェックポイントNext Development Checkpoint

ここまでに説明した Unity 開発チェックポイントの旅に従っている場合は、Mixed Reality プラットフォームの機能と Api の調査が途中で終了しています。If you're following the Unity development checkpoint journey we've laid out, you're in the midst of exploring the Mixed Reality platform capabilities and APIs. ここから、次のトピックに進むことができます。From here, you can proceed to the next topic:

または、デバイスまたはエミュレーターへのアプリの配置操作に直接移動します。Or jump directly to deploying your app on a device or emulator:

いつでも Unity 開発チェックポイントに戻ることができます。You can always go back to the Unity development checkpoints at any time.

関連項目See also