Unity 에디터의 파노라마 비디오 기능을 통해 다음 작업을 수행할 수 있습니다.
Unity 에디터는 정방형 레이아웃(위도 및 경도) 또는 큐브맵 레이아웃(6 프레임)에서 180도 및 360도 비디오를 지원합니다.
정방형 2D 비디오의 종횡비는 360도 콘텐츠의 경우 정확히 2:1이고 180도 콘텐츠의 경우 정확히 1:1이어야 합니다.
큐브맵 2D 비디오의 종횡비는 면 레이아웃에 따라 1:6, 3:4, 4:3, 또는 6:1이어야 합니다.
Unity 에디터에서 파노라마 비디오 기능을 사용하려면 파노라마 비디오 클립에 액세스할 권한이 있거나 이런 클립을 작성할 줄 알아야 합니다.
이 페이지에서는 에디터에 파노라마 비디오를 표시하는 절차에 대해 설명합니다.
참고: 이 기능에는 리소스가 많이 사용됩니다. 최선의 시각적인 결과를 얻으려면 해상도가 최대한 높은 (종종 4K 또는 8K) 파노라마 비디오를 사용하십시오. 비디오가 클수록 디코딩에 컴퓨팅 성능과 리소스가 더 많이 필요합니다. 대부분의 시스템에는 최대 비디오 디코딩 해상도에 관한 구체적인 제한이 있습니다. 예를 들어 여러 모바일 시스템은 HD 또는 2K로 제한되고 구형 데스크톱 시스템은 2K 또는 4K로 제한될 수 있습니다.
비디오를 Unity에 에셋으로 임포트합니다. 비디오 플레이어를 생성하려면 비디오 에셋을 프로젝트 뷰에서 Unity 계층 구조 뷰의 빈 영역으로 드래그합니다. 이렇게 하면 기본 카메라의 비디오를 전체 화면으로 재생하도록 컴포넌트가 기본적으로 설정됩니다. Play 를 눌러 이 비디오를 재생합니다.
비디오가 렌더 텍스처에 렌더링되도록 이 동작을 변경해야 합니다. 그러면 비디오가 표시되는 방법을 정확하게 제어할 수 있습니다. 이렇게 하려면 Assets > Create > Render Texture 로 이동합니다.
렌더 텍스처의 Size 를 비디오와 정확히 일치되게 설정합니다. 비디오 크기를 확인하려면 Assets 폴더에서 비디오를 선택하고 인스펙터 창에서 확인합니다. Unity 에디터가 비디오를 미리보기하는 섹션으로 스크롤한 후 미리보기 창에서 비디오 이름을 선택하여 Source Info 로 변경합니다.
다음으로, 렌더 텍스처의 Depth Buffer 옵션을 No depth buffer 로 설정합니다.
이제 Video Player 인스펙터를 열고 Render Mode 를 Render Texture 로 전환합니다. 새 렌더 텍스처를 에셋 뷰에서 Target Texture 슬롯으로 드래그합니다.
재생 모드로 전환하여 올바로 작동하는지 확인합니다.
비디오는 Game 창에서 렌더링되지 않지만, 렌더 텍스처 에셋을 선택하여 각 비디오 프레임마다 콘텐츠가 업데이트되는 것을 확인할 수 있습니다.
기본 스카이박스를 비디오 콘텐츠로 대체하여 파노라마 비디오를 씬의 배경으로 렌더링해야 합니다.
이렇게 하려면 새 머티리얼(Assets > Create > Material)을 생성합니다. 새 머티리얼의 인스펙터로 이동하여 머티리얼의 셰이더를 스카이박스/파노라마(Shader > Skybox > Panoramic 으로 이동)로 설정합니다.
렌더 텍스처를 에셋 뷰에서 새 머티리얼의 인스펙터에 있는 텍스처 슬롯으로 드래그합니다.
파노라마 비디오가 제대로 표시되려면 비디오의 콘텐츠 타입(큐브맵 또는 정방형)을 올바르게 식별해야 합니다. 큐브맵 콘텐츠(정적 스카이박스 텍스처에 일반적인 스트립 및 크로스 레이아웃 등)의 경우 Mapping 을 6 Frames Layout 으로 설정합니다.
정방형 콘텐츠의 경우 Mapping 을 Latitude Longitude Layout 으로 설정한 다음 360 degree 또는 180 degree 하위 옵션으로 설정합니다. 비디오가 전체 360도 뷰를 포함하는 경우 360 degree 옵션을 선택합니다. 비디오가 전면 180도 뷰인 경우 180 degree 를 선택합니다.
머티리얼 인스펙터 하단에 있는 Preview 를 확인합니다. 이리저리 이동하여 콘텐츠가 올바르게 표시되는지 확인합니다.
마지막으로, 새 스카이박스 머티리얼을 씬에 연결해야 합니다.
Lighting 창(메뉴: Window > General > Lighting Settings)을 엽니다.
새 스카이박스 머티리얼 에셋을 드래그하여 Environment 아래의 첫 슬롯에 내려 놓습니다.
Play를 눌러 비디오를 스카이박스에 씬 배경으로 표시합니다.
씬 카메라 방향을 변경하여 스카이박스의 다른 부분을 표시합니다. (따라서 파노라마 비디오의 다른 부분을 표시합니다.)
특히 소스 비디오에 스테레오 콘텐츠가 있는 경우 플레이어 설정에서 가상 현실 지원(메뉴: Edit > Project Settings > Player >XR Settings)을 켭니다. 이렇게 하면 스카이박스/파노라마 머티리얼의 3D Layout 옵션이 사용 가능한 상태로 변경됩니다. 3D 레아아웃에는 Side by Side, Over Under, None(기본값) 등 세 가지 옵션이 있습니다.
비디오가 왼쪽에 왼쪽 눈 콘텐츠를, 오른쪽에 오른쪽 눈 콘텐츠를 포함하고 있다면 Side by Side 설정을 사용합니다. 왼쪽 및 오른쪽 콘텐츠가 비디오에서 위 아래에 표시되는 경우 Over Under 를 선택합니다. Unity 에디터는 현재 어느 쪽 눈이 렌더링되고 있는지 인식하고 싱글 패스 스테레오 렌더링을 사용하여 이 정보를 스카이박스/파노라마 셰이더로 보냅니다. 셰이더에는 Unity 에디터가 VR에서 각 눈의 콘텐츠를 렌더링할 때 이 정보에 따라 비디오의 올바른 절반을 선택하는 로직이 포함되어 있습니다.
(스카이박스 머티리얼을 사용하지 않아야 하는) 360도가 아닌 3D 비디오의 경우 전방/후방 절단면 렌더링 모드 사용 시에 동일한 3D Layout 을 Video Player 컴포넌트에 직접 사용할 수 있습니다.
큐브맵 비디오를 사용하여 작업하는 경우 비디오 플레이어가 2D 렌더 텍스처에 렌더링하고 정확한 큐브 맵 레이아웃을 유지하도록 하지 않고 그 대신 비디오 플레이어를 렌더 텍스처 큐브에 직접 렌더링할 수 있습니다.
이렇게 하려면 렌더 텍스처 에셋의 Dimension 을 2D 에서 Cube 로 변경하고 렌더 텍스처의 Size 를 소스 비디오의 개별 면 크기와 정확히 같게 설정합니다.
예를 들어 크기가 4096x3072인 4x3 가로 교차 큐브맵 레이아웃 비디오가 있는 경우 렌더 텍스처의 Size 를 1024x1024(4096 / 4 및 3072 / 3)로 설정합니다.
큐브 타겟 텍스처로 렌더링하는 동안 비디오 플레이어는 소스 비디오에 교차 또는 스트립 레이아웃(비디오 종횡비를 사용하여 결정됨) 큐브맵이 포함되어 있다고 가정합니다. 다음, 비디오 플레이어가 렌더 텍스처의 면을 올바른 큐브 면으로 채웁니다.
그 결과로 생성되는 렌더 텍스처 큐브를 스카이박스로 사용합니다. 이렇게 하려면 머티리얼을 생성하고 위에서 설명한 스카이박스/파노라마 머티리얼 대신 Skybox/Cubemap 을 Shader(Shader > Skybox > Cubemap)로 할당합니다.
3D 콘텐츠를 포함시키려면 (Side-by-Side 또는 Over-Under 레이아웃에 따라) 비디오 너비 또는 높이의 두 배가 필요합니다.
여러 데스크톱 하드웨어 비디오 디코더는 4K 해상도로 제한되고 모바일 하드웨어 비디오 디코더는 종종 2K 이하로 제한되므로 해당 플랫폼에서 실시간으로 재생할 수 있는 해상도가 제한됩니다.
비디오 트랜스코딩을 사용하여 파노라마 비디오의 저해상도 버전을 만들 수 있지만, 왼쪽과 오른쪽 3D 콘텐츠 사이나 큐브맵 면과 인접한 검은색 영역 사이에 블리딩이 발생하지 않도록 주의하십시오. 일반적으로 비디오를 2의 제곱수 크기로 만들고 다른 2의 제곱수 크기로 트랜스코딩하여 시각적 결함을 줄여야 합니다.