Unity의 포커스 포인트Focus point in Unity

네임 스페이스: unityengine. XR. WSANamespace: UnityEngine.XR.WSA
유형: HolographicSettingsType: HolographicSettings

현재 표시 되는 holograms를 가장 잘 안정화 하는 방법에 대 한 힌트를 사용 하 여 HoloLens를 제공 합니다.Use the focus point to provide HoloLens with a hint about how to best stabilize 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(). 프레임에 대 한 포커스 지점이 설정 되지 않은 경우 기본 안정화 평면이 사용 됩니다.When the Focus Point isn't set for a frame, the default stabilization plane is used.


기본적으로 새 Unity 프로젝트에는 "깊이 버퍼 공유 사용" 옵션이 설정 되어 있습니다.By default, new Unity projects have the "Enable Depth Buffer Sharing" option set. 이 옵션을 사용 하는 경우 Windows 10 4 월 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 4 월 2018 업데이트 이상을 실행 하는 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. 일반적으로 Windows 10 4 월 2018 업데이트로 아직 업데이트 되지 않은 HoloLens에서 앱이 실행 되는 경우에만 수동 포커스 지점을 지정 해야 합니다.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);


위의 간단한 코드는 포커스가 있는 개체가 사용자 뒤에서 종료 되는 경우 홀로그램의 안정성을 낮출 수 있습니다.The simple code above may reduce hologram stability if the focused object ends up behind the user. 일반적으로 포커스 지점을 수동으로 지정 하는 대신 깊이 버퍼 공유 사용 을 설정 하는 것이 좋습니다.We generally recommend setting Enable Depth Buffer Sharing instead of manually specifying a focus point.

다음 개발 검사점Next Development Checkpoint

앞서 소개한 Unity 개발 경험을 팔로 사용할 경우 혼합 현실 플랫폼 기능과 Api를 탐색 하는 것이 좋습니다.If you're following the Unity development journey we've laid out, you're in the midst of exploring the Mixed Reality platform capabilities and APIs. 여기에서 다음 항목으로 진행할 수 있습니다.From here, you can continue 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