Unity의 포커스 포인트

네임스페이스:UnityEngine.XR.WSA
형식: HolographicSettings

포커스 포인트를 사용하여 HoloLens에 현재 표시되는 홀로그램을 가장 잘 안정화하는 방법에 대한 힌트를 제공합니다.

Unity에서 포커스 지점을 설정하려면 HolographicSettings.SetFocusPointForFrame()을 사용하여 모든 프레임을 설정해야 합니다. 프레임에 포커스 지점이 설정되지 않은 경우 기본 안정화 평면이 사용됩니다.

참고

기본적으로 새 Unity 프로젝트에는 "깊이 버퍼 공유 사용" 옵션이 설정되어 있습니다. 이 옵션을 사용하면 몰입형 데스크톱 헤드셋 또는 RS4(Windows 10 2018년 4월 업데이트) 이상을 실행하는 HoloLens에서 실행되는 Unity 앱은 앱에서 포커스 포인트를 지정하지 않고도 홀로그램 안정성을 자동으로 최적화하기 위해 깊이 버퍼를 Windows에 제출합니다.

  • 몰입형 데스크톱 헤드셋에서 픽셀당 깊이 기반 재프로젝션을 사용하도록 설정합니다.
  • 2018년 4월 업데이트 이상의 Windows 10 실행하는 HoloLens에서 깊이 버퍼를 분석하여 최적의 안정화 평면을 자동으로 선택합니다.

두 방법 모두 각 프레임에 대한 포커스 지점을 선택하기 위해 앱에서 명시적으로 작업하지 않고도 더 나은 이미지 품질을 제공해야 합니다. 포커스 지점을 수동으로 제공하는 경우 위에서 설명한 자동 동작을 재정의하고 일반적으로 홀로그램 안정성을 줄입니다. 일반적으로 2018년 4월 업데이트 Windows 10 아직 업데이트되지 않은 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 개발 검사점으로 돌아갈 수 있습니다.

참고 항목