Unity 권장 설정
Unity는 일반적으로 모든 플랫폼의 평균 사례인 기본 옵션 집합을 제공합니다. 그러나 Unity는 프로젝트 설정을 통해 전환할 수 있는 혼합 현실과 관련된 몇 가지 동작을 제공합니다.
성능 환경 설정
저품질 설정
특히 HoloLens 개발을 위해 애플리케이션이 적절한 프레임 속도에서 실행되고 잘 수행되도록 Unity 품질 설정을 매우 낮게 수정하는 것이 중요합니다. 몰입형 헤드셋 개발의 경우, VR 환경을 구동하는 데스크톱의 사양에 따라 가장 낮은 품질 매개 변수 없이도 프레임 속도를 달성할 수 있습니다.
Unity 2019 LTS+에서는 프로젝트 편집>설정>Quality로 이동하고 아래쪽 화살표를 클릭하여 **매우 낮은 품질 수준으로 기본값을 설정하여 프로젝트의 품질 수준을 설정할 수 있습니다.
조명 설정
품질 장면 설정과 마찬가지로 Mixed Reality 애플리케이션에 대한 최적의 조명 설정을 지정해야 합니다. Unity에서 일반적으로 장면에 가장 큰 성능 영향을 주는 조명 설정은 Realtime Global Illumination입니다. 창>렌더링>조명> 설정Realtime Global Illumination으로 이동하여 전역 조명을 끌 수 있습니다.
또 다른 조명 설정인 구운 글로벌 조명이 있습니다. 이 설정은 몰입형 헤드셋에서 성능과 시각적으로 눈에 띄는 결과를 제공할 수 있지만 HoloLens 개발에는 적용되지 않습니다. 구운 글로벌 조명 은 알 수 없고 변화하는 환경의 특성 때문에 HoloLens 장면에서 찾을 수 없는 정적 GameObjects에 대해서만 계산됩니다.
자세한 내용은 Unity의 글로벌 조명을 참조하세요 .
참고 항목
실시간 글로벌 조명은 장면별로 설정되므로 개발자는 프로젝트의 모든 Unity 장면에 대해 이 속성을 저장해야 합니다.
단일 패스 인스턴스화 렌더링 경로
Mixed Reality 애플리케이션에서 장면은 각 눈에 대해 한 번씩 두 번 렌더링됩니다. 기존 3D 개발에 비해 계산해야 하는 작업의 양이 효과적으로 두 배가 됩니다. CPU 및 GPU 시간을 모두 절약하려면 Unity에서 가장 효율적인 렌더링 경로를 선택하는 것이 중요합니다. 단일 패스 인스턴스 렌더링은 혼합 현실 앱에 대한 Unity 렌더링 파이프라인을 최적화합니다. 모든 프로젝트에 대해 기본적으로 이 설정을 사용하도록 설정하는 것이 좋습니다.
Unity 프로젝트에서 이 기능을 사용하도록 설정하려면 다음을 수행합니다.
- OpenXR 설정 엽니다(프로젝트 편집>설정>XR 플러그 인 관리>OpenXR).
- 렌더링 모드 드롭다운 메뉴에서 단일 패스 인스턴스를 선택합니다.
이 렌더링 방법을 사용하여 자세한 내용은 Unity에서 다음 문서를 참조하세요.
참고 항목
인스턴스화된 단일 패스 렌더링의 일반적인 문제 중 하나는 개발자에게 인스턴스화에 맞게 작성되지 않은 기존 사용자 지정 셰이더가 이미 있는 경우에 발생합니다. 이 기능을 사용하도록 설정하면 개발자가 일부 GameObject를 한쪽 눈에만 렌더링한다는 것을 알 수 있습니다. 이는 인스턴스화에 적절한 속성이 연결된 사용자 지정 셰이더에 없기 때문입니다.
깊이 버퍼 공유 사용
사용자의 인식에서 홀로그램 안정성을 향상하려면 Unity에서 깊이 버퍼 공유 속성을 사용하도록 설정하는 것이 좋습니다. 이를 켜면 Unity는 애플리케이션에서 생성한 깊이 맵을 Windows Mixed Reality 플랫폼과 공유합니다. 그런 다음 플랫폼은 애플리케이션에서 렌더링되는 지정된 프레임에 대해 장면에 맞게 홀로그램 안정성을 더 잘 최적화할 수 있습니다.
Unity 프로젝트에서 이 기능을 사용하도록 설정하려면 다음을 수행합니다.
- OpenXR 설정 엽니다(프로젝트 편집>설정>XR 플러그 인 관리>OpenXR).
- 깊이 제출 모드 드롭다운 메뉴에서 깊이 16비 트 선택
16비트 깊이 버퍼 설정은 HoloLens 개발에 특히 권장됩니다. 24비트와 비교하여 16비트 선택 시 이동/처리해야 하는 데이터가 적기 때문에 대역폭 요구 사항이 크게 줄어듭니다. 즉, 최적화에는 특정 비용이 발생합니다. 아래의 중요 상자에 멘션 의미를 이해해야 합니다.
Windows Mixed Reality 플랫폼이 홀로그램 안정성을 최적화하기 위해 깊이 버퍼를 사용하여 정확하고 렌더링된 홀로그램을 화면에 일치시킬 수 있습니다. 따라서 깊이 버퍼 공유를 사용하면 깊이를 렌더링하기 위해 색을 렌더링할 때도 중요합니다. Unity에서 대부분의 불투명 또는 TransparentCutout 재질은 기본적으로 깊이를 렌더링하지만 투명하며 텍스트 개체는 셰이더 및 기타 요인에 따라 달라지지만 깊이를 렌더링하지 않습니다.
Mixed Reality Toolkit 표준 셰이더를 사용하는 경우 투명 개체의 깊이를 렌더링합니다.
- MRTK 표준 셰이더를 사용하는 투명 재질을 선택하고 검사기 편집기 창을 엽니다.
- 깊이 버퍼 공유 경고 내에서 지금 수정 단추를 선택합니다. 렌더링 모드를 사용자 지정으로 설정한 다음 모드를 투명으로 설정하고 마지막으로 깊이 쓰기 를 켜기로 설정 하여 수동으로 수행할 수도 있습니다.
Important
개발자는 카메라의 근거리/먼 평면 설정과 함께 이러한 값을 변경할 때 Z-fighting을 조심해야 합니다. Z-Fighting은 두 게임 개체가 동일한 픽셀로 렌더링하려고 할 때 발생하며 깊이 버퍼(예: z 깊이)의 충실도 제한으로 인해 Unity에서 다른 개체 앞에 있는 개체를 식별할 수 없습니다. 개발자는 동일한 z 깊이 값을 위해 싸울 때 두 게임 개체 사이에 깜박임이 있음을 알 수 있습니다. 카메라에서 z 깊이에 대해 계산할 각 개체에 대해 더 큰 범위의 값이 있으므로 24비트 깊이 형식으로 전환하여 이 문제를 해결할 수 있습니다.
그러나 특히 HoloLens 개발의 경우 카메라의 근거리 및 원거리 평면을 더 작은 범위로 수정하고 16비트 깊이 형식을 유지하는 것이 좋습니다. z 깊이는 근거리 및 원거리 카메라 평면을 따라 값 범위에 비선형으로 매핑됩니다. 장면 및 검사기에서 Main 카메라 선택하여 범위를 줄이기 위해 근거리 및 원거리 클리핑 평면 값을 변경하여 수정할 수 있습니다(예: 1000m에서 100m 또는 기타 x 값 등).
Important
Unity는 16비트 깊이 형식을 사용하는 경우 스텐실 버퍼 를 만들지 않습니다. 따라서 8비트 스텐실 버퍼를 만드는 24비트 깊이 형식을 선택하지 않으면 일부 Unity UI 효과 및 기타 스텐실 필수 효과가 작동하지 않습니다.
IL2CPP용 빌드
Unity는 .NET 스크립팅 백 엔드에 대한 지원이 더 이상 사용되지 않으므로 개발자는 UWP Visual Studio 빌드에 IL2CPP를 사용하는 것이 좋습니다. 이는 다양한 이점을 제공하지만 IL2CPP용 Unity에서 Visual Studio 솔루션을 빌드하는 것이 이전 .NET 메서드보다 느릴 수 있습니다. 따라서 개발 반복 시간을 절약하기 위해 IL2CPP를 빌드하기 위한 모범 사례를 따르는 것이 좋습니다.
- 매번 동일한 디렉터리에 프로젝트를 빌드하고 미리 빌드된 파일을 다시 사용하여 증분 빌드를 활용합니다.
- 프로젝트 및 빌드 폴더에 대한 맬웨어 방지 소프트웨어 검색 사용 안 함
- Windows 10 설정 앱에서 바이러스 및 위협 방지 열기
- 바이러스 및 위협 방지 설정에서 설정 관리 선택
- 제외 섹션에서 제외 추가 또는 제거 선택
- 제외 추가를 선택하고 Unity 프로젝트 코드 및 빌드 출력이 포함된 폴더를 선택합니다.
- 빌드에 SSD 사용
자세한 내용은 IL2CPP 에 대한 빌드 시간 최적화를 참조하세요.
참고 항목
또한 대용량 자산(스크립트 파일 제외) 또는 지속적으로 변화하는 장면/자산을 포함하는 Unity 프로젝트에 맞게 캐시 서버를 설정하는 것도 유용할 수 있습니다. 프로젝트를 열 때 Unity는 정식 자산을 개발자 컴퓨터에 내부 캐시 형식으로 저장합니다. 따라서 항목이 수정되면 다시 가져온 후 다시 처리해야 합니다. 모든 개발자가 새 변경 내용을 로컬로 다시 가져오지 않고, 이 프로세스를 한 번 수행한 후 캐시 서버에 저장하고, 이후에 다른 개발자와 공유할 수 있으므로 시간을 절약할 수 있습니다.
게시 속성
홀로그램 시작 화면
HoloLens에는 모바일 클래스 CPU 및 GPU가 있으므로 앱을 로드하는 데 시간이 좀 더 오래 걸릴 수 있습니다. 앱이 로드되는 동안 사용자는 검은색으로 표시되므로 무슨 일이 일어나고 있는지 궁금할 수 있습니다. 로드하는 동안 안심하기 위해 홀로그램 시작 화면을 추가할 수 있습니다.
홀로그램 시작 화면을 토글하려면 다음을 수행합니다.
- 프로젝트 편집>설정> 플레이어 페이지로 이동
- Windows 스토어 탭을 선택하고 시작 이미지 섹션을 엽니다.
- Windows Holographic Holographic > Splash Image 속성 아래에 이미지를 적용합니다.
- Unity 시작 화면 표시 옵션을 전환하면 Unity 브랜드 시작 화면을 사용하거나 사용하지 않도록 설정합니다. Unity Pro 라이선스가 없는 경우 Unity 브랜드 시작 화면이 항상 표시됩니다.
- 홀로그램 시작 이미지가 적용되는 경우 Unity 시작 화면 표시 검사 상자가 활성화되어 있는지 여부를 항상 표시합니다. 사용자 지정 홀로그램 시작 이미지 지정은 Unity Pro 라이선스가 있는 개발자만 사용할 수 있습니다.
Unity 시작 화면 표시 | 홀로그램 시작 이미지 | 동작 |
---|---|---|
설정 | None | 기본 Unity 시작 화면을 5초 동안 또는 앱이 로드될 때까지(더 긴) 표시합니다. |
설정 | 사용자 지정 | 5초 동안 또는 앱이 로드될 때까지 더 긴 사용자 지정 시작 화면을 표시합니다. |
끄기 | None | 앱이 로드될 때까지 투명한 검은색(아무것도 없음)을 표시합니다. |
끄기 | 사용자 지정 | 5초 동안 또는 앱이 로드될 때까지 더 긴 사용자 지정 시작 화면을 표시합니다. |
자세한 내용은 Unity의 시작 화면 설명서를 참조하세요.
추적 손실
혼합 현실 헤드셋은 홀로그램이 위치로 다시 기본 수 있는 세계로 잠긴 좌표계를 구성하기 위해 주변 환경을 보는 데 달려 있습니다. 헤드셋이 세계에서 자신을 찾을 수 없을 때, 헤드셋은 추적을 잃었다고합니다. 이러한 경우 공간 단계, 공간 앵커 및 공간 매핑과 같은 세계 잠금 좌표계에 종속된 기능은 작동하지 않습니다.
추적 손실이 발생하는 경우 Unity의 기본 동작은 홀로그램 렌더링을 중지하고, 게임 루프를 일시 중지하고, 사용자의 시선을 편안하게 따르는 추적 손실 알림을 표시하는 것입니다. 사용자 지정 알림은 추적 손실 이미지 형식으로 제공할 수도 있습니다. 전체 환경에 대한 추적에 의존하는 앱의 경우 추적이 다시 시작될 때까지 Unity에서 이 작업을 완전히 처리할 수 있습니다. 개발자는 추적 손실 중에 표시할 사용자 지정 이미지를 제공할 수 있습니다.
손실된 추적 이미지를 사용자 지정하려면 다음을 수행합니다.
- 프로젝트 편집>설정> 플레이어 페이지로 이동
- Windows 스토어 탭을 선택하고 시작 이미지 섹션을 엽니다.
- Windows Holographic > 추적 손실 이미지 속성 아래에 이미지를 적용합니다.
자동 일시 중지 옵트아웃
일부 앱은 추적이 필요하지 않거나(예: 360도 비디오 뷰어와 같은 방향 전용 앱 ) 추적이 손실되는 동안 중단 없이 처리를 계속해야 할 수 있습니다. 추적 동작의 기본 손실을 옵트아웃할 수 있지만 추적 손실 시나리오에서 제대로 렌더링되지 않는 개체를 숨기거나 사용하지 않도록 설정할 책임이 있습니다. 대부분의 경우 이 경우 렌더링하는 것이 권장되는 유일한 콘텐츠는 기본 카메라를 중심으로 하는 본문 잠금 콘텐츠입니다.
자동 일시 중지 동작을 옵트아웃하려면:
- 프로젝트 편집>설정> 플레이어 페이지로 이동합니다.
- Windows 스토어 탭을 선택하고 시작 이미지 섹션을 엽니다.
- Windows Holographic > On 추적 손실 일시 중지를 수정하고 이미지 검사box를 표시합니다.
손실 이벤트 추적
추적이 손실된 경우 사용자 지정 동작을 정의하려면 전역 추적 손실 이벤트를 처리합니다.
기능
앱이 특정 기능을 활용하려면 해당 매니페스트에서 적절한 기능을 선언해야 합니다. 매니페스트 선언은 Unity에서 만들 수 있으므로 이후의 모든 프로젝트 내보내기에서 포함됩니다.
다음을 통해 Mixed Reality 애플리케이션에 기능을 사용하도록 설정할 수 있습니다.
- 프로젝트 편집>설정> 플레이어 페이지로 이동
- Windows 스토어 탭을 선택하고 게시 설정 섹션을 열고 기능 목록을 찾습니다.
Holographic 앱에 일반적으로 사용되는 API를 사용하도록 설정하기 위한 적용 가능한 기능은 다음과 같습니다.
기능 | 기능이 필요한 API |
---|---|
SpatialPerception | SurfaceObserver |
WebCam | PhotoCapture 및 VideoCapture |
PicturesLibrary / VideosLibrary | PhotoCapture 또는 VideoCapture 각각(캡처된 콘텐츠를 저장할 때) |
마이크 | VideoCapture(오디오 캡처 시), DictationRecognizer, GrammarRecognizer 및 KeywordRecognizer |
InternetClient | DictationRecognizer(Unity Profiler 사용) |