Unity의 카메라Camera in Unity

혼합 현실 헤드셋을 착용 하면 holographic 세계의 중심이 됩니다.When you wear a mixed reality headset, it becomes the center of your holographic world. Unity 카메라 구성 요소는 stereoscopic 렌더링을 자동으로 처리 하 고 헤드 이동 및 회전을 따릅니다.The Unity Camera component will automatically handle stereoscopic rendering and follow your head movement and rotation. 그러나 시각적 품질 및 홀로그램 안정성을 완벽 하 게 최적화 하려면 아래에서 설명 하는 카메라 설정을 설정 해야 합니다.However, to fully optimize visual quality and hologram stability, you should set the camera settings described below.

설치 프로그램Setup

  1. Windows 스토어 플레이어 설정기타 설정 섹션으로 이동 합니다.Go to Other Settings section of the Windows Store Player Settings
  2. Windows Mixed Reality 를 장치로 선택 합니다 .이는 이전 버전의 Unity에서 windows Holographic 으로 나열 될 수 있습니다.Choose Windows Mixed Reality as the device, which may be listed as Windows Holographic in older versions of Unity
  3. 지원 되는 가상 현실 선택Select Virtual Reality Supported

참고

이러한 설정은 앱의 각 장면에서 카메라에 적용 해야 합니다.These settings need to be applied to the Camera in each scene of your app.

기본적으로 Unity에서 새 장면을 만들 때 카메라 구성 요소를 포함 하는 계층의 기본 카메라 GameObject가 포함 되지만, 아래에는 설정이 제대로 적용 되지 않습니다.By default, when you create a new scene in Unity, it will contain a Main Camera GameObject in the Hierarchy which includes the Camera component, but does not have the settings below properly applied.

Holographic 및 몰입 형 헤드셋Holographic vs. immersive headsets

Unity 카메라 구성 요소의 기본 설정은 일반적인 3D 응용 프로그램을 위한 것 이며 실제 세계에 있지 않기 때문에 skybox 같은 배경을 필요로 합니다.The default settings on the Unity Camera component are for traditional 3D applications, which need a skybox-like background as they don't have a real world.

  • 몰입 형 헤드셋 에서 실행 하는 경우 사용자에 게 표시 되는 모든 항목을 렌더링 하 게 되므로 skybox를 유지할 수 있습니다.When running on an immersive headset, you're rendering everything the user sees, and so you'll likely want to keep the skybox.
  • 그러나 HoloLens와 같은 holographic 헤드셋 에서 실행 하는 경우 실제 세계는 카메라에서 렌더링 하는 모든 항목 뒤에 표시 되어야 합니다.However, when running on a holographic headset like HoloLens, the real world should appear behind everything the camera renders. Skybox 질감이 아닌 카메라 배경을 투명 하 게 설정 합니다 (HoloLens에서 검정색 렌더링 투명).Set the camera background to be transparent (in HoloLens, black renders as transparent) instead of a Skybox texture:
    1. 계층 패널에서 주 카메라를 선택 합니다.Select the Main Camera in the Hierarchy panel
    2. 검사기 패널에서 카메라 구성 요소를 찾아 Clear Flags dropdown을 Skybox에서 Solid Color로 변경 합니다.In the Inspector panel, find the Camera component and change the Clear Flags dropdown from Skybox to Solid Color
    3. 배경색 선택을 선택 하 고 RGBA 값을 (0, 0, 0, 0)으로 변경 합니다.Select the Background color picker and change the RGBA values to (0, 0, 0, 0)

스크립트 코드를 사용 하 여 HolographicSettings를 확인 하 여 헤드셋이 몰입 또는 holographic 인지 여부를 런타임에 확인할 수 있습니다.You can use script code to determine at runtime whether the headset is immersive or holographic by checking HolographicSettings.IsDisplayOpaque.

카메라 위치 지정Positioning the Camera

사용자의 시작 위치 (X: 0, Y: 0, Z: 0)를 사용 하는 경우 앱을 레이아웃 하는 것이 더 쉽습니다.It will be easier to lay out your app if you imagine the starting position of the user as (X: 0, Y: 0, Z: 0). 주 카메라가 사용자 헤드의 이동을 추적 하므로 기본 카메라의 시작 위치를 설정 하 여 사용자의 시작 위치를 설정할 수 있습니다.Since the Main Camera is tracking movement of the user's head, the starting position of the user can be set by setting the starting position of the Main Camera.

  1. 계층 패널에서 주 카메라를 선택 합니다.Select Main Camera in the Hierarchy panel

  2. 검사기 패널에서 변형 구성 요소를 찾아 위치를 (X: 0, Y: 1, Z:-10)에서 (X: 0, Y: 0, Z: 0)로 변경 합니다.In the Inspector panel, find the Transform component and change the Position from (X: 0, Y: 1, Z: -10) to (X: 0, Y: 0, Z: 0)

    Unity의 검사기 창에 있는 카메라Camera in the Inspector pane in Unity
    Unity의 검사기 창에 있는 카메라Camera in the Inspector pane in Unity

클립 평면Clip planes

사용자에 게 너무 가까운 렌더링 콘텐츠는 혼합 현실에서 불편을 수 있습니다.Rendering content too close to the user can be uncomfortable in mixed reality. 카메라 구성 요소에서 근거리 및 원거리 클립 평면 을 조정할 수 있습니다.You can adjust the near and far clip planes on the Camera component.

  1. 계층 패널에서 주 카메라를 선택 합니다.Select the Main Camera in the Hierarchy panel
  2. 검사기 패널에서 평면 클리핑 카메라 구성 요소를 찾아 가까운 텍스트 상자를 0.3에서 0.85으로 변경 합니다.In the Inspector panel, find the Camera component Clipping Planes and change the Near textbox from 0.3 to 0.85. 더 가까이 렌더링 된 콘텐츠는 사용자 discomfort 발생할 수 있으므로 렌더링 거리 지침에 따라 피해 야 합니다.Content rendered even closer can lead to user discomfort and should be avoided per the render distance guidelines.

여러 카메라Multiple Cameras

장면에 여러 카메라 구성 요소가 있는 경우 Unity는 MainCamera 태그가 있는 GameObject을 기준으로 stereoscopic 렌더링 및 헤드 추적에 사용할 카메라를 알고 있습니다.When there are multiple Camera components in the scene, Unity knows which camera to use for stereoscopic rendering and head tracking based on which GameObject has the MainCamera tag.

장착 된 환경 입력Recentering a seated experience

통합 된 환경을구축 하는 경우 XR를 호출 하 여 사용자의 현재 헤드 위치에서 Unity의 세계 원본을 recenter 수 있습니다 . Recenter 메서드입니다.If you're building a seated-scale experience, you can recenter Unity's world origin at the user's current head position by calling the XR.InputTracking.Recenter method.

재 투영 모드Reprojection modes

HoloLens 및 몰입 형 헤드셋은 모두 앱이 렌더링 하는 각 프레임을 다시 프로젝션 하 여 photons를 내보낼 때 사용자의 실제 헤드 위치 misprediction 조정 합니다.Both HoloLens and immersive headsets will reproject each frame your app renders to adjust for any misprediction of the user's actual head position when photons are emitted.

기본적으로 다음과 같습니다.By default:

  • 앱이 지정 된 프레임에 대 한 깊이 버퍼를 제공 하는 경우 몰입 형 헤드셋 은 위치 다시 프로젝션을 처리 합니다.Immersive headsets will take care of positional reprojection if the app provides a depth buffer for a given frame. 또한 몰입 형 헤드셋은 위치와 방향 모두에서 misprediction에 대 한 holograms을 조정 합니다.Immersive headsets will also adjust your holograms for misprediction in both position and orientation. 깊이 버퍼가 제공 되지 않은 경우 시스템은 방향 으로만 mispredictions을 수정 합니다.If a depth buffer isn't provided, the system will only correct mispredictions in orientation.
  • Holographic 헤드셋 과 같은 헤드셋은 앱이 깊이 버퍼를 제공 하는지 여부에 관계 없이 위치를 다시 프로젝션 합니다.Holographic headsets like HoloLens will take care of positional reprojection whether the app provides its depth buffer or not. 렌더링은 실제 세계에서 제공 하는 안정적인 배경을 사용 하는 스파스 인 경우가 많기 때문에 HoloLens의 깊이 버퍼 없이 위치 다시 프로젝션이 가능 합니다.Positional reprojection is possible without depth buffers on HoloLens as rendering is often sparse with a stable background provided by the real world.

엄격 본문 잠긴 콘텐츠 (예: 360도 비디오 콘텐츠)를 사용 하 여 방향 전용 환경을 빌드하는 경우 ReprojectionModeHolographicReprojectionMode로 설정 하 여 reprojection 모드를 방향 으로만 명시적으로 설정할 수 있습니다.If you know that you're building an orientation-only experience with rigidly body-locked content (for example, 360-degree video content), you can explicitly set the reprojection mode to orientation only by setting HolographicSettings.ReprojectionMode to HolographicReprojectionMode.OrientationOnly.

Windows와 깊이 버퍼 공유Sharing your depth buffers with Windows

Windows에 앱의 깊이 버퍼를 공유 하면 각 프레임에서 렌더링 하는 헤드셋의 유형에 따라 홀로그램 안정성의 두 가지 향상 된 기능 중 하나를 앱에 제공 합니다.Sharing your app's depth buffer to Windows each frame will give your app one of two boosts in hologram stability, based on the type of headset you're rendering for:

  • 몰입 형 헤드셋 은 깊이 버퍼가 제공 될 때 위치를 다시 프로젝션 하 여 위치와 방향 모두에서 misprediction에 대 한 holograms를 조정할 수 있습니다.Immersive headsets can take care of positional reprojection when a depth buffer is provided, adjusting your holograms for misprediction in both position and orientation.
  • Holographic 헤드셋 에는 몇 가지 방법이 있습니다.Holographic headsets have a few different methods. HoloLens 1은 깊이 버퍼가 제공 될 때 포커스 지점을 자동으로 선택 하 여 대부분의 콘텐츠와 교차 하는 평면을 따라 홀로그램의 안정성을 최적화 합니다.HoloLens 1 will automatically select a focus point when a depth buffer is provided, optimizing hologram stability along the plane that intersects the most content. HoloLens 2는 깊이 LSR (설명 참조)을 사용 하 여 콘텐츠를 안정화 합니다.HoloLens 2 will stabilize content using Depth LSR (see Remarks).

Unity 앱이 Windows에 깊이 버퍼를 제공할지 여부를 설정 하려면 다음을 수행 합니다.To set whether your Unity app will provide a depth buffer to Windows:

  1. 편집 > 프로젝트 설정 > 플레이어 > 유니버설 Windows 플랫폼 탭 > XR 설정 으로 이동 합니다.Go to Edit > Project Settings > Player > Universal Windows Platform tab > XR Settings.
  2. Windows Mixed REALITY SDK 항목을 확장 합니다.Expand the Windows Mixed Reality SDK item.
  3. 깊이 버퍼 공유 사용 확인란을 선택 하거나 선택 취소 합니다.Check or uncheck the Enable Depth Buffer Sharing check box. 새 프로젝트에서는이 기능이 Unity에 추가 되었으며 업그레이드 된 이전 프로젝트에 대해서는 기본적으로 선택 취소 되기 때문에 깊이 버퍼 공유 사용은 새 프로젝트에서 기본적으로 선택 되어 있습니다.Enable Depth Buffer Sharing is checked by default in new projects, since this feature was added to Unity and will be unchecked by default for older projects that were upgraded.

깊이 버퍼를 사용 하면 Windows에서 기본 카메라의 Unity에 설정 된 근처 및 far 비행기를 사용 하 여 깊이 버퍼의 정규화 된 픽셀 당 깊이 값을 측정 단위로 다시 정확히 매핑할 수 있으므로 시각적 품질을 향상 시킬 수 있습니다.A depth buffer can improve visual quality so long as Windows can accurately map the normalized per-pixel depth values in your depth buffer back to distances in meters, using the near and far planes you've set in Unity on the main camera. 렌더링 과정에서 일반적인 방법으로 깊이 값이 처리 되는 경우에는 일반적으로 여기에 자세히 설명 해야 합니다 .이는 기존 색 픽셀을 통해 표시 되는 동안 깊이 버퍼에 쓰는 반투명 렌더링 패스가 다시 프로젝션을 혼동 하는 것입니다.If your render passes handle depth values in typical ways, you should generally be fine here, though translucent render passes that write to the depth buffer while showing through to existing color pixels can confuse the reprojection. 렌더링 패스에서 깊이 값이 정확 하지 않은 최종 깊이 픽셀을 많이 사용 하는 경우 "깊이 버퍼 공유 사용"을 선택을 취소 하면 시각적 품질이 향상 될 가능성이 높습니다.If you know that your render passes will leave many of your final depth pixels with inaccurate depth values, you are likely to get better visual quality by unchecking "Enable Depth Buffer Sharing".

혼합 현실 도구 키트를 사용 하 여 자동 장면 및 카메라 설정Automatic Scene and Camera Setup with Mixed Reality Toolkit

단계별 가이드에 따라 Unity 프로젝트에 Mixed Reality Toolkit을 추가 하면 프로젝트가 자동으로 구성 됩니다.Follow the step-by-step guide to add Mixed Reality Toolkit to your Unity project and it will configure your project automatically. 아래 섹션의 가이드를 사용 하 여 MRTK 없이 프로젝트를 수동으로 구성할 수도 있습니다.You can also manually configure the project without MRTK with the guide in the section below.

다음 개발 검사점Next Development Checkpoint

앞서 소개한 Unity 개발 경험을 팔로 사용할 경우 MRTK 핵심 빌딩 블록을 탐색 하는 것이 좋습니다.If you're following the Unity development journey we've laid out, you're in the midst of exploring the MRTK core building blocks. 여기에서 다음 구성 요소로 진행할 수 있습니다.From here, you can continue to the next building block:

또는 Mixed Reality 플랫폼 기능 및 API로 이동합니다.Or jump to Mixed Reality platform capabilities and APIs:

언제든지 Unity 개발 검사점으로 돌아갈 수 있습니다.You can always go back to the Unity development checkpoints at any time.

참조See also