인카메라 VFX 프로덕션 테스트

인카메라 VFX 프로덕션 테스트 샘플의 구성 방법을 알아보고, 프로덕션에서 쓰이는 각 기능과 프로젝트 구조 및 세팅을 살펴봅니다.

Windows
MacOS
Linux

인카메라 VFX 프로덕션 테스트는 언리얼 엔진과 LED 볼륨을 사용하여 이동식 촬영과 멀티 카메라 구성, 테이크 간에 빠르게 변경 가능한 멀티 유저 구성 등을 갖춘 버추얼 프로덕션 샘플입니다. 이 샘플은 영화 제작자 단체인 불릿(Bullitt)과 협력하여 제작되었습니다. 해당 팀은 로스앤젤레스에 위치한 난트 스튜디오(Nant Studios)의 LED 스테이지에서 인카메라 최종 픽셀 이미지를 만들어 냈습니다.

이 프로젝트에서 제작된 단편 영상입니다.

이 샘플을 살펴보고 수정해 보면서 다음 내용을 배울 수 있습니다.

  • 여러 아티스트가 프로덕션 중에 씬에서 동시에 협업하여 버추얼 프로덕션 프로젝트를 구성하는 방법

  • 컴퓨터 한 대에서 GPU 라이트매스와 멀티 유저기능을 함께 사용하여 라이팅을 굽고, 세션 내 다른 컴퓨터들과 공유하여 더 빠르게 라이팅을 변경하는 방법

  • 멀티스크린 nDisplay 클러스터에서 mGPU를 사용한 내부 프러스텀 렌더링

  • 색 보정 및 OCIO 프로필을 nDisplay 렌더링에 적용하여 각 씬에서 원하는 모습을 완성하는 방법

  • 리모트 컨트롤 웹 애플리케이션 UI를 빌드하여 프로덕션의 필요 사항을 충족하고 태블릿에서 세트를 빠르게 변경하는 방법

  • 프로젝트 퍼포먼스 향상을 위한 CVar 적용 방법

이번 가이드에서는 프로덕션 팀이 언리얼 엔진 기능을 프로젝트에 활용하여 최종 결과물을 만든 방식에 대해 다룹니다. 이 프로젝트를 샘플로 활용하여 자신만의 프로덕션 디자인을 만들어보세요. 인카메라 VFX의 기본 학습은 인카메라 VFX 퀵스타트 문서를 참고하세요. 이번 프로덕션의 씬 영상 제작에 대해서는 언리얼 엔진 스포트라이트를 참고하세요.

스테이지 구성 및 하드웨어

이미지를 클릭하면 확대됩니다.

다음 볼륨의 렌더링에는 LED 패널이 각각 2개씩 할당된 nDisplay 노드 네 개가 쓰였습니다.

  • 벽: 총 해상도 15312 x 2112 , LED 패널 5 개 이상.

  • 천정: 총 해상도 4160 x 5280 , LED 패널 3 개 이상.

이 실제 프로덕션 샘플은 CPU및 GPU 모두 제대로된 성능을 낼 수 있도록 구성되어 큰 규모의 LED볼륨에서도 카메라에 담기에 충분한 해상도로 렌더가 가능합니다. 아래 다이어그램은 프로덕션에 기여하는 각 디바이스와 스테이지 상의 디바이스 간 연결을 보여줍니다. 촬영에 쓰인 각 디바이스의 역할에 대해 자세히 알아보려면 인카메라 VFX 개요 문서를 참고하세요. 인카메라 VFX 촬영에 권장하는 하드웨어에 대해서는 인카메라 VFX 추천 하드웨어 문서를 참고하세요.

스테이지에서 사용된 디바이스와 각 디바이스가 어떻게 통신하는지 보여주는 다이어그램입니다. 이미지를 클릭하면 확대됩니다.

시작하기

프로젝트에는 프로덕션에서 사용된 실제 토폴로지를 나타내는 nDisplay 환경설정 뿐만 아니라, 간단한 nDisplay 환경설정 하나가 포함되어 있어 단일 컴퓨터에서 LED 볼륨 없이 씬을 확인할 수 있습니다. 이 섹션에서는 단일 컴퓨터에서 간단한 nDisplay 환경설정을 사용하여 씬을 렌더링하고 멀티 유저 세션을 통해 변경하는 방법에 대해 알아봅니다.

다음 단계를 따라 자신의 컴퓨터에서 언리얼 에디터 인스턴스를 실행하고, 멀티 유저 세션의 nDisplay 렌더러로 언리얼 엔진 인스턴스를 하나 더 실행합니다.

  1. 에픽게임즈 런처 학습 탭에서 인카메라 VFX 프로덕션 테스트 샘플 프로젝트를 다운로드합니다.

  2. 컴퓨터의 언리얼 엔진 폴더로 이동하여 Engine\Binaries\Win64\SwitchboardListener.exe를 실행하여 스위치보드 리스너 를 실행합니다. 리스너는 창을 자동으로 최소화시켜 nDisplay 디바이스와의 문제를 회피합니다. 이 애플리케이션은 OS의 작업 표시줄에서 확인할 수 있습니다.

    전체 경로 예시: C:\Program Files\Epic Games\UE_4.27\Engine\Binaries\Win64\SwitchboardListener.exe

  3. 언리얼 엔진 폴더에서 Engine\Plugins\VirtualProduction\Switchboard\Source\Switchboard\Switchboard.bat를 실행하여 스위치보드 를 실행합니다. 스위치보드를 처음 실행하는 경우, 애플리케이션 창을 열기 전에 필요한 모든 종속성을 설치합니다.

    전체 경로 예시: C:\Program Files\Epic Games\UE_4.27\Engine\Plugins\VirtualProduction\Switchboard\Source\Switchboard\Switchboard.bat

  4. 스위치보드 환경설정 을 생성합니다.

    • 스위치보드를 처음 실행하는 경우, 스위치보드가 실행될 때 새 스위치보드 환경설정 추가 창이 표시됩니다.

    • 이전에 스위치보드를 실행한 적이 있는 경우, 창 왼쪽 상단 구석의 환경설정(Configs) > 새 환경설정(New Config) 을 클릭하여 새 스위치보드 환경설정 추가(Add New Switchboard Configuration) 창을 엽니다.

      새 스위치보드 환경설정 추가

  5. 새 스위치보드 환경설정 추가 창에서 다음 단계를 따릅니다.

    1. 스위치보드 환경설정 파일을 저장하고 싶은 이름과 위치에 환경설정 경로(Config Path) 를 추가합니다.

    2. uProject 를 인카메라 VFX 프로덕션 테스트 샘플 프로젝트 파일 `TheOrigin.uproject`의 위치에 설정합니다.

    3. 엔진 디렉터리(Engine Dir) 를 사용자의 언리얼 엔진 Engine 폴더로 지정합니다.

    4. 확인(OK) 을 클릭하여 스위치보드 환경설정을 생성합니다.

      새 스위치보드 환경설정 경로

  6. 레벨(Level)CaveEntrance_NantStudiosSimple 로 설정합니다.

    스위치보드에서 레벨 설정

  7. nDisplay 디바이스를 스위치보드에 추가합니다.

    1. 디바이스 추가(Add Device) 를 클릭하여 드롭다운에서 nDisplay 를 선택합니다.

      nDisplay 디바이스 추가

    2. nDisplay 디바이스 추가(Add nDisplay Device) 창 에서 탐색(Browse) 을 클릭한 후 샘플 프로젝트 폴더의 Content\TheOrigin\Content\Stages\NantStudiosSimple\Config\NDC_NantStudiosSimple.uasset 경로로 갑니다.

      nDisplay 디바이스 .uasset 파일 탐색

    3. 확인 을 클릭하여 nDisplay 디바이스가 스위치보드에 추가되었는지 확인합니다.

      스위치보드에 추가된 nDisplay 디바이스

  8. 언리얼 디바이스를 스위치보드에 추가합니다.

    1. 디바이스 추가 를 다시 클릭하여 드롭다운에서 언리얼(Unreal) 을 선택합니다.

      언리얼 디바이스 추가

    2. 언리얼 디바이스 추가(Add Unreal Device) 창에서 IP 주소(IP Address) 를 다음과 같이 로컬 컴퓨터로 설정합니다. 127.0.0.1.

      언리얼 디바이스 로컬 IP 주소 설정

    3. 확인 을 클릭하여 언리얼 디바이스가 스위치보드에 추가되었는지 확인합니다.

      스위치보드에 추가된 언리얼 디바이스

  9. nDisplay Render_2 디바이스의 리스너에 연결(Connect to Listener) 버튼을 클릭하여 스위치보드 리스너에 연결합니다.

    스위치보드에서 nDisplay 디바이스의 리스너에 연결 버튼 클릭

  10. nDisplay Render_2 디바이스의 언리얼 시작(Start Unreal) 버튼을 클릭하여 멀티 유저 세션에서 nDisplay 렌더러로 언리얼 엔진을 실행합니다.

    스위치보드의 nDisplay 디바이스 언리얼 시작 버튼

  11. 모든 창이 자동으로 최소화되고 nDisplay 렌더가 전체 화면으로 표시됩니다. 만약 전체 화면이 어둡게 보인다면 다음 단계에서 수정할 수 있습니다.

  12. 최소화된 스위치보드 창을 열고 언리얼 디바이스의 리스너에 연결 버튼을 클릭하여 스위치보드 리스너에 연결합니다.

    스위치보드에서 언리얼 디바이스의 리스너에 연결 버튼 클릭

  13. 언리얼 디바이스의 언리얼 시작 버튼을 클릭하여 멀티 유저 세션에서 언리얼 에디터 인스턴스를 실행합니다.

    스위치보드의 언리얼 디바이스 언리얼 시작 버튼

  14. 에디터의 툴바에서 레벨 스냅샷 에디터 열기(Open Level Snapshots Editor) 를 클릭합니다.

    레벨 스냅샷 에디터 열기

  15. 레벨 스냅샷 에디터에서 CaveEntrance_NantStudiosSimple_SetupA 레벨 스냅샷을 더블클릭하고 레벨 스냅샷 복원(Restore Level Snapshot) 을 클릭합니다.

    레벨 스냅샷 구성 복원

  16. 언리얼 에디터의 월드 아웃라이너(World Outliner) 패널 에서 nDisplay 루트 액터 NDC_NantStudios_Simple 을 선택하여 업데이트된 위치를 봅니다.

    레벨 스냅샷 복원 전

    레벨 스냅샷 복원 후

  17. nDisplay 뷰는 언리얼 에디터 인스턴스에서 생긴 변경 사항을 업데이트합니다.

    nDisplay 뷰 업데이트

  18. nDisplay 루트 액터 아래에 있는 InnerCamera_A 를 선택하고 씬으로 옮겨서 nDisplay 뷰에서 내부 프러스텀의 움직임을 확인합니다.

    InnerCamera A를 씬으로 이동

이 단계는 단일 컴퓨터에서 프로젝트를 실행하는 방법에 대해 보여줍니다. 유사한 단계를 통해 실제 스테이지를 나타내는 nDisplay 환경설정을 수정하여 자신의 LED 볼륨을 테스트할 수 있습니다.

mGPU 및 멀티 스크린 클러스터

인카메라 VFX 프로덕션 테스트 촬영 진행 중

이 프로덕션은 멀티 GPU를 활용하여 촬영 중 퍼포먼스를 개선합니다. 단일 GPU에 의존하여 모든 뷰포트를 렌더링하는 대신 보조 GPU가 인카메라만 따로 렌더링하여 충실도를 필요한 만큼 최대한 표현할 수 있습니다. mGPU를 프로젝트에서 활용하는 방법에 대해서는 nDisplay 개요 문서를 참고하세요.

언리얼 엔진은 스테이지 모니터 툴을 포함하고 있어 애플리케이션 내 모든 nDisplay 클러스터 노드로부터 특정 관련 이벤트의 보고를 받아볼 수 있습니다. 촬영 중에 이 툴에 크리티컬 스테이트를 입력하여 샷에 영향을 줄 수 있는 이벤트를 쉽게 보낼 수 있습니다. 이 툴의 자세한 사용법에 대해서는 스테이지 모니터 문서를 참고하세요.

리모트 컨트롤

프로덕션 팀은 세트 위에서 리모트 컨트롤을 통해, 태블릿에서 실행되는 웹 애플리케이션으로 디스플레이와 버추얼 환경을 실시간으로 제어할 수 있습니다. 프로젝트에서 노출되는 컨트롤에는 라이팅, 디스플레이의 컬러 그레이딩, 버추얼 환경 속 스테이지의 위치 및 회전의 변경 등이 있습니다.

리모트 컨트롤을 활용한 스테이지 제어

리모트 컨트롤 사용

시작하기 섹션에서 이미 언리얼 에디터 인스턴스를 사용하여 씬을 변경하고 nDisplay 렌더에서 즉각 업데이트가 이루어지는 것을 확인했을 것입니다. 이번 섹션에서는 프로젝트용으로 디자인된 리모트 컨트롤 웹 애플리케이션을 사용하여 동일한 작업을 하는 방법에 대해 알아보겠습니다.

다음 단계를 따라 이 프로젝트용으로 디자인된 리모트 컨트롤 웹 애플리케이션을 확인하고 nDisplay 루트 액터를 원격으로 움직여 봅니다.

  1. 콘텐츠 브라우저(Content Browser) 에서 TheOrigin > Content > Tools > RemoteControl 경로로 이동하여 RCP_NantStudios 를 더블클릭하고 리모트 컨트롤(Remote Control) 에서 '리모트 컨트롤 프리셋(Remote Control Preset)'을 엽니다.

    콘텐츠 브라우저에서 리모트 컨트롤 프리셋 열기

  2. 리모트 컨트롤 패널(Remote Control Panel)에서는 리모트 컨트롤 프리셋에서 노출된 모든 파라미터가 표시됩니다. 패널 우측 상단의 사선 화살표 아이콘을 클릭하여 웹 애플리케이션을 실행합니다.

    리모트 컨트롤에서 웹 애플리케이션 실행

    '리모트 컨트롤' 패널에서 웹 애플리케이션을 실행하는 옵션이 없는 경우 웹 애플리케이션이 제대로 빌드되었는지 확인합니다. 컴퓨터에서 빌드하려면 '프로젝트 세팅(Project Settings)'의 '리모트 컨트롤' 섹션을 수정해야 할 수도 있습니다. 언리얼 에디터의 출력 로그를 스캔하여 오류를 확인합니다.

  3. 자신이 실행한 레벨 및 스테이지에서 작업하려면 프로퍼티를 리바인딩해야 할 수도 있습니다.

    리모트 컨트롤 패널에서의 프로퍼티 리바인딩

  4. 리모트 컨트롤 웹 애플리케이션의 스테이지(Stage) 탭으로 변경합니다.

  5. 조이스틱을 움직여 nDisplay 루트 액터의 위치를 변경합니다.

    조이스틱을 움직여 nDisplay 루트 액터의 위치 변경

웹 애플리케이션 디자인

리모트 컨트롤 웹 인터페이스는 리모트 컨트롤에 동반 웹 애플리케이션을 제공하는 플러그인입니다. 이 웹 애플리케이션은 UI 빌더를 포함하고 있어 코딩 없이 자신만의 웹 애플리케이션을 생성하고 커스터마이징할 수 있습니다.

리모트 컨트롤 웹 애플리케이션의 UI 빌더로 변경하려면 컨트롤(Control) 버튼을 디자인(Design) 으로 변경하고, UI를 프로젝트용으로 수정합니다. 리모트 컨트롤 프리셋 에셋(Remote Control Preset Asset) 을 저장하여 리모트 컨트롤 웹 애플리케이션의 UI 디자인 변경 사항을 저장합니다.

UI를 수정하는 리모트 컨트롤 디자인 모드

다음 목록은 이 프로덕션용으로 디자인된 리모트 컨트롤 웹 애플리케이션의 각 탭에 있는 컨트롤을 설명합니다.

  • 스테이지: 레벨 내 스테이지의 위치 및 회전 컨트롤을 결합합니다.

    스테이지 컨트롤

  • 뷰포트 세팅: 글로벌 뷰포트 스크린 퍼센티지 및 뷰포트별 스크린 퍼센티지 파라미터에 대한 컨트롤을 결합합니다.

    뷰포트 세팅 컨트롤

  • 색 보정: 글로벌 색 보정 및 뷰포트별 색 보정 파라미터에 대한 컨트롤을 결합합니다.

    색 보정 컨트롤

  • 라이트 카드: 라이트 카드의 컨트롤을 결합합니다.

    라이트 카드 컨트롤

  • 스냅샷: 프로젝트의 레벨 스냅샷을 모두 표시하고, 레벨 스냅샷을 취하고 적용하는 컨트롤을 결합합니다. 자세한 내용은 레벨 스냅샷 문서를 참고하세요.

    레벨 스냅샷 컨트롤

컬러 그레이딩 및 OCIO

파이프라인 내내 정확하고 일관적인 컬러를 유지하고자, 아트 및 스테이지 팀은 오픈컬러IO(OCIO) 컬러 스페이스 변환을 표준화하였습니다. 이 컬러 스페이스 변환은 모니터, LED 패널, 프로덕션 카메라 등 디스플레이 간의 차이를 처리합니다.

샘플 OCIO 환경설정과 룩업 테이블(LUT)은 OCIO 플러그인에 포함됩니다. 이 프로젝트에는 해당 OCIO 환경설정을 레퍼런스하는 샘플 OCIO 환경설정 에셋이 있으며, 두 nDisplay 환경설정 에셋에 모두 적용되어 있습니다. OCIO 환경설정 에셋은 TheOrigin/Content/OCIO 에서 찾을 수 있습니다.

디스플레이의 OCIO 환경설정 및 컬러 스페이스 변환의 자세한 내용에 대해서는 인카메라 VFX 카메라 보정 문서를 참고하세요.

다음 단계를 통해 자신만의 OCIO 환경설정을 프로젝트에서 사용할 수 있습니다.

  1. 콘텐츠 브라우저 에서 우클릭 후 기타(Miscellaneous) > 오픈컬러 OCIO 환경설정(OpenColorIOConfiguration) 을 선택하여 OpenColorIO 환경설정 에셋(OpenColorIO Configuration Asset) 을 새로 생성합니다.

    OCIO 환경설정 에셋 추가

  2. 새 에셋을 더블클릭하여 에디터에서 실행합니다.

  3. 에셋 에디터의 환경설정 섹션에서 환경설정 파일(Configuration File) 영역을 디스크의 OCIO 환경설정 파일 경로로 설정합니다.

    OCIO 환경설정 파일의 경로 설정

  4. 리로드 및 리빌드(Reload and Rebuild) 를 클릭하여 OCIO 환경설정을 로드합니다.

  5. OCIO 환경설정이 로드되면 컬러 스페이스(Color Space) 섹션을 펼칩니다.

  6. 사용하고 싶은 소스와 대상 컬러 스페이스를 추가합니다. 여기서 사용할 수 있는 옵션은 자신이 지정한 OCIO 환경설정에 따라 결정됩니다.

    사용하고 싶은 소스 및 대상 컬러 스페이스 추가

  7. 이 환경설정을 nDisplay 뷰포트에 적용하려면 사용자의 nDisplay 환경설정 에셋 을 포함하고 있는 레벨을 열고 액터의 디테일(Details) 패널 에서 OCIO 를 찾습니다. 뷰포트 OCIO 활성화(Enable Viewport OCIO) 가 true로 설정되었는지 확인합니다.

  8. 모든 뷰포트 컬러 환경설정(All Viewports Color Configuration) 을 펼칩니다.

    1. 사용하려는 환경설정 에셋을 지정합니다.

    2. 소스 및 대상 컬러 스페이스를 설정합니다.

      소스 및 대상 컬러 스페이스 설정

이 과정은 자신의 OCIO 환경설정을 프로젝트에 추가하는 방법을 보여줍니다. 또한 OCIO 환경설정은 뷰포트별로, 또 내부 프러스텀에 개별적으로 설정할 수 있습니다. 자세한 내용은 nDisplay에서의 색 관리 문서를 참고하세요.

GPU 라이트매스 및 멀티 유저

프로덕션 팀은 새 GPU 라이트매스 기능을 사용하여 씬의 라이팅을 굽고, 이를 통해 프로덕션 과정에서 멀티 GPU 및 멀티 유저 환경에서의 라이팅이 적용되는 대기 시간을 최소화하였습니다. 라이트 굽기는 단일 멀티 GPU 워크스테이션에서 진행되며, 그런 다음 멀티 유저 세션을 통해 네트워크로 배포됩니다. 즉, 클러스터를 닫았다가 재실행할 필요 없이 씬이 빠르게 구워진 후 LED 월에 리로드될 수 있다는 것입니다.

다음 단계를 따라 GPU 라이트매스를 활용하여 씬의 라이팅을 굽습니다.

  1. 툴바 에서 빌드(Build) 옆 화살표를 클릭하여 드롭다운에서 GPU 라이트매스(GPU Lightmass) 를 선택합니다.

    빌드 드롭다운 메뉴에서 GPU 라이트매스 선택

  2. GPU 라이트매스 창에서 라이팅 빌드(Build Lighting) 를 클릭하여 굽기를 시작합니다.

    GPU 라이트매스를 사용한 라이팅 빌드

  3. 라이팅 빌드가 끝나면 메인 메뉴에서 파일(File) > 모두 저장(Save All) 을 선택하여 멀티 유저 세션의 다른 컴퓨터로 변경 사항을 전송합니다.

    모두 저장하여 구운 라이팅 전송

멀티 유저 세션의 다른 컴퓨터들과 변경 사항을 전부 공유하는 대신, 전송할 변경사항을 직접 선택할 수도 있습니다.

  1. 메인 메뉴에서 파일 > 저장할 파일 선택(Choose Files to Save…) 을 선택합니다.

    저장할 파일 선택

  2. 저장 및 전송하고 싶은 레벨과 빌드 데이터만 선택합니다.

    저장 및 전송할 구운 라이팅 파일 선택

  3. 파일 > 모두 저장 을 클릭하여 멀티 유저 세션의 다른 컴퓨터로 변경 사항을 전송합니다.

라이트매스 굽기에서 변경할 수 있는 세팅에 대해서는 GPU 라이트매스 문서를 참고하세요.

멀티 유저 세션을 통한 GPU 라이트매스 굽기 전송은 실험단계 기능입니다. 대형 BuildData 파일을 생성하는 씬은 전송 시 문제가 생길 수 있습니다. 그럴 경우 다음처럼 대처할 수 있습니다.

  1. 업데이트된 레벨과 빌드 데이터를 소스 컨트롤에 체크인합니다.

  2. 소스 컨트롤을 통해 렌더 노드에 대한 변경 사항을 동기화하여 업데이트된 라이트맵에 배포합니다.

레벨 스냅샷

프로덕션 팀에서는 레벨 스냅샷을 사용하여 각 씬의 레벨에 액터의 환경설정을 저장하고, 레벨 스냅샷을 생성한 후에는 특정 샷에 대해 구성된 방식 그대로 정확하게 씬을 복원할 수 있었습니다. 레벨 스냅샷은 nDisplay 루트 액터에 대한 변경 사항도 트래킹하므로 내부 프러스텀과 컬러 그레이딩에 대한 수정 사항 또한 nDisplay 렌더에 언제든 저장 및 적용될 수 있습니다.

다음 섹션에서는 프로젝트에 포함된 필터 및 프리셋의 사용 방법에 대해 설명합니다. 툴에서 필터 및 기타 기능을 직접 만드는 방법에 대해 알아보려면 레벨 스냅샷 문서를 참고하세요.

레벨 스냅샷으로 필터링

이 프로젝트에는 레벨 스냅샷 내 액터의 변경 사항을 클래스별로 필터링할 수 있는 블루프린트 레벨 스냅샷 필터(Blueprint Level Snapshot Filter) 샘플이 포함되어 있습니다. LSF_FilterByClass 필터는 TheOrigin > Content > Tools > LevelSnapshotFilters 경로에서 찾을 수 있습니다. 이 섹션에서는 프로젝트에서 이 필터를 사용하는 방법을 살펴봅니다.

스테이지에서 사용된 디바이스와 각 디바이스가 어떻게 커뮤니케이션하는지 보여주는 다이어그램입니다. 이미지를 클릭하면 확대됩니다.

다음 단계를 따라 레벨 스냅샷의 변경 사항을 필터링하고 사용자의 프로젝트에 적용할 수 있습니다.

  1. 언리얼 에디터의 콘텐츠 브라우저 에서 TheOrigin > Content > StageLevels > NantStudiosSimple > StageLevels 경로로 이동한 후 CaveEntrance_NantStudiosSimple 을 더블클릭하여 레벨을 엽니다.

  2. 툴바 에서 레벨 스냅샷(Level Snapshots) 버튼 옆의 화살표를 클릭하여 드롭다운에서 레벨 스냅샷 에디터 열기 를 선택합니다.

    레벨 스냅샷 에디터 열기

  3. 'CaveEntrance_NantStudiosSimple' 레벨에 이미 레벨 스냅샷이 두 개 생성되어 있습니다. CaveEntrance_NantStudiosSimple_SetupA 를 더블클릭하여 레벨 스냅샷에 저장된 액터가 레벨의 현재 상태와 어떻게 다른지 확인합니다.

    인카메라 VFX 프로덕션 테스트 레벨 스냅샷

  4. 필터 그룹(Filter Group) 을 클릭합니다.

    선택된 레벨 스냅샷 구성

  5. 필터 추가(Add Filter) 를 클릭하고 드롭다운에서 블루프린트 필터(Blueprint Filters) > 클래스별 LSF 필터(LSF Filter by Class) 를 선택합니다.

    클래스별 LDF 필터 블루프린트 필터 추가

  6. 필터 그룹(Filter Group)에서 클래스별 LSF 필터 를 클릭합니다.

    필터 클릭

  7. 클래스(Class) 옆의 디폴트(Default) 섹션에서 드롭다운을 클릭하여 라이트 카드(Light Card) 를 검색합니다.

    라이트 카드 검색

  8. 결과 새로고침(Refresh Results) 버튼을 클릭하여 필터 변경 사항을 적용합니다.

    결과를 새로 고쳐 필터 적용

  9. 이제 라이트 카드 액터에 대한 변경 사항만 표시됩니다. 필터를 끄려면 필터를 우클릭하고 필터 무시(Ignore Filter) 를 선택합니다.

    라이트 카드 액터에 대한 변경 사항만 표시

  10. 결과 새로고침 을 클릭하면 nDisplay 루트 액터가 목록에 다시 표시됩니다.

    필터가 비활성화되어 있으면 모든 액터가 표시됨

레벨 스냅샷과 함께 프리셋 사용

레벨 스냅샷 프리셋을 사용하면 블루프린트 및 C++를 사용하여 로직을 구성하고 이를 프리셋으로 저장할 수 있으며, 나중에 프리셋을 불러와서 로직을 다시 사용할 수 있습니다. 이 프로젝트에는 TheOrigin > Content > Tools > LevelSnapshotPresets 경로에 샘플 스냅샷 프리셋이 포함되어 있습니다.

이 프리셋은 클래스별 필터(Filter by Class) 블루프린트 필터의 여러 인스턴스를 OR 부울과 함께 묶어 해당 클래스와 일치하는 액터만 표시합니다. 이 프리셋에는 LightCards, Stages, Cameras, SyncTestBall, ColorCorrectRegion 및 PostProcessVolume이 사용됩니다.

다음 단계를 따라 프로젝트에서 레벨 스냅샷 프리셋을 사용할 수 있습니다.

  1. 콘텐츠 브라우저 에서 TheOrigin > Content > StageLevels > NantStudiosSimple > StageLevels 경로로 이동한 후 CaveEntrance_NantStudiosSimple 을 더블클릭하여 레벨을 엽니다.

  2. 툴바 에서 레벨 스냅샷 버튼 옆의 화살표를 클릭하여 드롭다운에서 레벨 스냅샷 에디터 열기 를 선택합니다.

    레벨 스냅샷 에디터 열기

  3. 'CaveEntrance_NantStudiosSimple' 레벨에 이미 레벨 스냅샷이 두 개 생성되어 있습니다. 필터 로드/저장(Load/Save Filter) 을 클릭하여 ExampleStagePreset 을 선택합니다.

    샘플 스테이지 프리셋 필터 로드

  4. CaveEntrance_NantStudiosSimple_SetupA 를 더블클릭하여 레벨 스냅샷에 저장된 액터가 레벨의 현재 상태와 어떻게 다른지 확인합니다.

    로드된 프리셋 필터

  5. 레벨 스냅샷이 열려 있는 상태에서는 프리셋에서 로드된 필터에 맞는 액터만 표시됩니다.

    프리셋으로 필터링된 레벨 스냅샷 구성

프로젝트 구조

인카메라 VFX 프로덕션 테스트는 버추얼 프로덕션용 언리얼 프로젝트의 구성을 살펴볼 수 있는 좋은 샘플입니다. 다음 폴더는 프로젝트 콘텐츠의 전반적인 구조를 정의하며 관련 카테고리로 구분됩니다.

에셋

다음 폴더에는 보통 캐릭터, 환경 및 FX 생성에 필요한 모든 에셋이 저장되어 있습니다. 레벨 에셋은 여기에 포함되지 않습니다. 다음 목록은 이 샘플 프로젝트에서 에셋이 카테고리별로 분류된 방식을 보여줍니다.

  • Atlases

  • Decals

  • FX

  • IES

  • Landscape

  • Materials

  • MS_Presets

  • Props

  • Rocks

  • Scatter

  • Sky

  • Textures

  • Vegetation

환경

프로젝트에는 촬영에 사용된 환경 세 개가 포함되어 있습니다.

  • CaveEntrance

    동굴 입구 환경

  • CavePath

    동굴 통로 환경

  • SpaceJunkyard

    우주 쓰레기장 환경

환경 구조

소스 컨트롤에서는 .umap 파일 같은 바이너리 에셋만 확인할 수 있으므로 환경에서 동시에 작업하는 아티스트는 각자 자신의 레벨에서 작업해야 합니다. 이에 대한 해결책은 각 액터별 유형을 바탕으로 환경을 다수의 서브레벨로 나누는 것입니다.

예를 들어 라이팅 아티스트는 라이팅 서브레벨에서, FX 아티스트는 FX 서브레벨에서 작업하는 방식입니다. 또한 환경을 여러 영역으로 나누는 GEO 레벨을 다수 갖추고 아티스트들이 이러한 영역을 각각 맡아서 작업을 진행하는 것이 일반적입니다. 여기서 사용되는 서브레벨의 유형과 수는 프로덕션의 필요에 따라 달라집니다.

다음은 이 프로젝트의 각 환경에서 사용된 폴더입니다.

  • LevelSnapshots: 레벨과 관련된 레벨 스냅샷 에셋입니다.

  • SubLevels: 이 프로젝트에서 각 레벨은 Caustics, FX, Geo, 및 Lighting 서브레벨로 구분되어 있습니다.

  • Level Asset: 'Level Asset'은 {LevelName}_{Descriptor} 구조를 따릅니다. '_P' 접미사는 서브레벨의 컨테이너 역할을 하는 퍼시스턴트 레벨에 지정됩니다. 이 'Level Asset'을 열어 모든 서브레벨로 구성된 전체 환경을 확인할 수 있습니다.

OCIO

이 폴더에는 OpenColorIO 환경설정 에셋이 포함되어 있습니다. 여기에는 이 프로젝트를 위한 에셋이 하나 있는데 바로 ExampleOCIO입니다. 이 프로젝트에서 OCIO가 어떻게 사용되었는지에 대한 자세한 내용은 이 페이지의 컬러 그레이딩 및 OCIO 섹션을 참고하세요.

샘플 OCIO 에셋

Stage Levels

이 폴더는 환경 및 스테이지 액터(Stage Actor)를 모두 갖춘 전체 레벨 에셋(Level Asset)을 포함합니다. nDisplay를 사용하여 렌더링하려면 이 에셋을 여세요. '스테이지 레벨'은 '레벨 에셋'에서 사용된 스테이지별로 카테고리가 분류되어 있습니다. 이 샘플 프로젝트는 스테이지와 일치하는 다음과 같은 구조를 사용합니다.

  • NantStudios

    • CaveEntrance_NantStudios

    • CavePath_NantStudios

    • SpaceJunkyard_NantStudios

  • NantStudiosSimple

    • CaveEntrance_NantStudiosSimple

    • CavePath_NantStudiosSimple

    • SpaceJunkyard_NantStudiosSimple

Stages

이 폴더는 LED 볼륨의 토폴로지를 설명하는 nDisplay 환경설정을 포함합니다. 프로덕션에서는 모든 샷에 NantStudios만 사용했습니다. 이 스테이지의 간소화된 버전도 함께 제공되므로 단일 데스크톱에서 전면 벽 일부를 렌더링할 수 있습니다.

이미지를 클릭하면 확대됩니다.

NantStudios

  • Config: LED 볼륨의 토폴로지 및 렌더링 방식을 정의하는 스테이지용 nDisplay 환경설정 에셋입니다.

    NantStudios nDisplay Config 에셋

  • LEDMeshes: nDisplay Config 에셋 에서 사용된 LED 패널 해상도를 갖춘 스태틱 메시 및 머티리얼입니다.

    NantStudios LEDMeshes

  • LiveLinkPresets: 이전에 라이브 링크용으로 생성된 환경설정으로, 실행 시 nDisplay 노드에 라이브 링크 소스를 로드하는 데 필요합니다. 디폴트 프리셋은 프로젝트 세팅 > 라이브 링크(Live Link) > 디폴트 라이브 링크 프리셋(Default Live Link Preset) 에 지정되어 있습니다. 또한 에디터 환경에서 다른 소스를 빠르게 리로드하는 데 사용될 수도 있습니다.

  • NantStudios_Stage: nDisplay 루트 액터, ICVFX 카메라라이트 카드 같은 스테이지를 나타내는 액터만 포함하는 레벨 에셋입니다.

Simple Nant Studios

  • Config: LED 볼륨의 토폴로지 및 렌더링 방식을 정의하는 스테이지용 nDisplay 환경설정 에셋입니다. 이 토폴로지는 NantStudios 환경설정과 같아 보이지만, 전면 벽 중 두 개만 렌더링하도록 구성되어 있습니다.

  • NantStudiosSimple_Stage: nDisplay 루트 액터, ICVFX 카메라라이트 카드 같은 스테이지를 나타내는 액터만 포함하는 레벨 에셋입니다.

Tools

이 폴더에는 커스텀 블루프린트 컨트롤, 레벨 스냅샷 필터, 프리셋, 리모트 컨트롤 프리셋이 포함되어 있습니다. 다음 목록에는 각 툴이 설명되어 있습니다.

  • CaveMaterialControl: 씬의 오브젝트에서 사용되는 다양한 머티리얼 파라미터 컬렉션에 대한 블루프린트 컨트롤러로, 바위에 대한 굴절 반사 속도, 라이트 섀프트 강도 및 글로벌 컬러 시프트 같은 컨트롤을 포함합니다.

  • HierarchicalInstanceConverter

  • HolePunch: 동굴 지오메트리에 구멍을 만드는 데 사용된 구체 액터입니다. 촬영 당일에 추가 라이트 섀프트를 생성하는 데 사용되었습니다.

  • InnerFrustumCamera: LiveLinkComponent를 갖춘 CineCameraActor입니다. 이 블루프린트는 사용자가 씬 액터에 인스턴스드 LiveLinkComponent를 수동으로 추가하지 않아도 되도록 하므로 카메라 트래킹이 간소화됩니다.

  • LevelSnapshotFilters: 레벨 스냅샷용 커스텀 블루프린트 필터입니다.

  • LevelSnapshotPresets: 레벨 스냅샷용 필터의 그룹 프리셋입니다.

  • RemoteControl: 리모트 컨트롤 프리셋입니다.

  • SyncTestBall: 동기화 테스트에 사용되는 통통 튀는 빨간 공을 만듭니다. 씬에 공을 배치하면 두 벽의 경계 사이에 나타납니다. 동기화가 적절히 작동하지 않을 경우 해당 경계에서 공에 눈에 띄는 찢어짐이 나타납니다.

Cvars

스테이지에서 nDisplay로 렌더링하는 동안 퍼포먼스를 개선하기 위해 프로덕션 팀에서는 아래 표의 Cvar를 사용하여 세팅을 미세조정했습니다. Cvar는 nDisplay 세션 중에 스위치보드에서 설정하고 클러스터에 적용할 수 있습니다.

스위치보드에서 CVar를 설정하려면 다음 단계를 따릅니다.

  1. 스위치보드를 엽니다.

  2. nDisplay 모니터(nDisplay Monitor) 탭의 콘솔(Console) 텍스트 박스에서 Cvar와 원하는 값을 입력합니다(가능한 경우).

  3. 실행(Exec) 을 클릭합니다.

nDisplay 모니터 콘솔

다음 값은 인카메라 VFX 프로덕션 테스트에서 사용된 값입니다. 사용자의 프로젝트 콘텐츠와 달성하려는 외형에 따라 다른 값을 사용해야 할 수 있습니다.

Cvar

설명

r.ExrReadAndProcessOnGPU

해당 없음

CPU와 GPU 간의 EXR 재생을 전환합니다. GPU에 대해 활성화된 경우, 언리얼 엔진 4는 압축되지 않은 대용량 EXR 파일을 구조화된 버퍼에 직접 로드하여 GPU에서 처리할 수 있습니다.

레이 트레이싱

r.RayTracing.ForceAllRayTracingEffects

0

모든 레이 트레이싱 이펙트를 강제로 켜거나 끕니다. 값 옵션은 다음과 같습니다.

  • -1: 강제하지 않음(디폴트)

  • 0: 모든 레이 트레이싱 이펙트 비활성화

  • 1: 모든 레이 트레이싱 이펙트 활성화

이 Cvar를 0으로 설정하면 기본적으로 활성화된 모든 레이 트레이싱 기능이 꺼집니다. 레이 트레이싱에 필요한 GPU 라이트매스를 사용하는 경우에도 여전히 GPU 가속 라이트 굽기를 사용할 수 있습니다. 이 Cvar는 활성화된 레이 트레이싱에 퍼포먼스가 얼마나 더 필요한지 파악하는 데도 유용합니다.

r.RayTracing.Reflections.MaxRoughness

0.2

표시되는 레이 트레이싱 리플렉션에 대한 최대 러프니스를 설정합니다(디폴트 = -1(최대 러프니스는 포스트 프로세싱 볼륨에 따라 달라짐)). 이를 통해 러프니스 값이 0.2보다 낮은 머티리얼에 대해서만 레이 트레이싱 리플렉션이 적용되도록 보장할 수 있습니다.

r.RayTracing.Reflections.MaxRayDistance

500

레이 트레이싱된 리플렉션 레이의 최대 광선 거리를 설정합니다. 레이 단축(ray shortening)이 사용된 경우 스카이박스는 레이 트레이싱 리플렉션 패스에서 샘플링되지 않고 나중에 로컬 리플렉션 캡처로 합성됩니다. 음수값은 이 최적화를 끕니다(디폴트 = -1(무한 레이)). -1 외의 값을 사용하면 씬에 표시되는 레이 트레이싱의 양을 줄이는 데 도움이 됩니다.

r.RayTracing.Reflections.SortMaterials

0

반사된 머티리얼이 셰이딩 전에 정렬될지 여부를 결정합니다. 옵션:

  • 0: 비활성화

  • 1: 활성화, 트레이스 > 정렬 > 트레이스(디폴트) 사용

r.DiffuseIndirect.Denoiser

2

디노이징 옵션(디폴트 = 1)

r.RayTracing.Reflections

0

레벨의 레이 트레이싱 리플렉션만 끕니다. 레이 트레이싱된 리플렉션 비용 없이 레이 트레이싱된 섀도 또는 다른 레이 트레이싱 기능을 사용하고 싶은 경우 유용합니다. 옵션:

  • -1: 포스트 프로세스 볼륨에 따른 값(디폴트)

  • 0: 기존의 래스터화된 SSR을 사용합니다.

  • 1: 레이 트레이싱된 리플렉션을 사용합니다.

r.RayTracing.Geometry.Landscape

0

레이 트레이싱 이펙트에 랜드스케이프를 포함합니다(디폴트 = 1(랜드스케이프가 레이 트레이싱에서 활성화됨)) 레이 트레이싱된 리플렉션이 필요한 레벨을 최적화하기 위해 최종 결과물에서 굳이 추가할 필요가 없는 랜드스케이프 레이 트레이싱을 비활성화함으로써 퍼포먼스를 다소 개선할 수 있었습니다.

r.RayTracing.Reflections.ScreenPercentage

50

리플렉션이 레이 트레이싱되어야 하는 스크린 퍼센티지입니다(디폴트 = 100). 씬에 아주 반짝이고 깨끗한 리플렉션이 없는 경우 이 값을 낮춰서 퍼포먼스를 어느 정도 향상시킬 수 있습니다.

업스케일 해상도

r.ScreenPercentage

75

더 낮은 해상도와 업스케일로 렌더링하여 퍼포먼스를 향상시킵니다(블렌더블 포스트 프로세스 세팅과 함께 사용). 낮은 에일리어싱과 퍼포먼스에는 75가 적당하며, 'show TestImage'로 검증할 수 있습니다.

백분율로 0보다 크고 100보다 작거나 같은 숫자를 사용합니다. 더 큰 숫자를 사용할 수 있지만(슈퍼 샘플링) 다운샘플링 퀄리티를 향상시킬 수 있습니다. 0보다 작은 숫자는 100과 동일하게 처리됩니다.

r.TemporalAA.Algorithm

1

템포럴 AA에 사용하는 알고리즘 옵션:

  • 0: Gen 4 TAAU(디폴트)

  • 1: Gen 5 TAAU(실험단계) 해상도 업스케일이 필요한 경우 새로운 Gen5 TAAU를 켭니다.

r.TemporalAA.Upsampling

1

템포럴 AA를 사용하여 프라이머리 스크린 퍼센티지를 수행할지 여부입니다. 옵션:

  • 0: 템포럴 AA와는 별개로 스페이셜 업스케일 패스를 수행합니다(디폴트).

  • 1: 템포럴 AA는 스크린 퍼센티지를 사용하여 스페이셜 및 템포럴 업스케일을 수행합니다.

SSGI

r.SSGI.Enable

0

스크린 스페이스 GI 활성화 여부입니다. 옵션:

  • 0: 비활성화

  • 1: 활성화 스크린 스페이스 GI를 끕니다.

r.SSGI.HalfRes

1

절반 해상도에서 SSGI를 수행할지 여부입니다. 옵션:

  • 0: 비활성화(디폴트)

  • 1: 활성화

r.SSGI.Quality

1

SSGI를 사용한 레이 샷의 수를 1~4 사이의 수치로 제어하는 퀄리티 세팅입니다(디폴트 = 4).

볼류메트릭 포그

r.VolumetricFog.GridPixelSize

6

복셀 그리드에서 셀의 XY 크기(픽셀 단위)입니다. 값이 낮을수록 볼류메트릭 포그 퀄리티가 향상되지만 퍼포먼스에 나쁜 영향을 줍니다.

r.VolumetricFog.GridSizeZ

96

Z축에서 사용할 볼류메트릭 포그 셀의 수입니다. 값이 높을수록 정확도는 높아지고 노이즈는 줄어들지만 퍼포먼스에 영향을 줄 수 있습니다.

r.VolumetricFog

0

볼류메트릭 포그 기능의 활성화 여부입니다. 옵션

  • 0: 비활성화

  • 1: 활성화 볼류메트릭 포그를 빠르게 끄고 여기에서 사용하는 퍼포먼스의 양을 빠르게 결정할 수 있습니다.

렌더링

ShowFlag.DirectLighting

0

이 Cvar는 직사광을 빠르게 비활성화하여 무엇이 구워지고 구워지지 않았는지, 퍼포먼스의 영향은 어떤지 파악하는 데 유용합니다. 옵션:

  • 0: ShowFlag를 비활성화합니다.

  • 1: ShowFlag를 활성화합니다.

  • 2: 이 ShowFlag를 오버라이드하지 않습니다(디폴트).

r.SetNearClipPlane

150

근거리 클립 평면을 설정합니다(cm 단위). 이 Cvar를 사용하면 렌더 카메라 앞에 있는 지오메트리를 빠르게 제거하려는 경우 근거리 클립 평면을 수정할 수 있습니다.

r.TextureStreaming

0

런타임에서 변경 가능한 텍스처 스트리밍의 활성화 여부를 정의합니다. 옵션

  • 0: 비활성화

  • 1: 활성화(디폴트)

r.Streaming.PoolSize

3600

-1: 디폴트 텍스처 풀 사이즈, 그렇지 않은 경우 값이 MB 단위가 됩니다. 이 Cvar는 텍스처 풀 사이즈가 원래 너무 작게 설정되었지만 하드웨어가 더 큰 텍스처 풀 사이즈를 허용하는 경우 더 큰 밉맵을 로드할 수 있도록 런타임에서 텍스처 풀의 크기를 늘리는 데 사용됩니다.

r.DFShadowScatterTileCulling

1

컬링 타일 그리드로 오브젝트를 스캐터링할 때 래스터화를 사용할지 여부입니다. 옵션

  • 0: 비활성화

  • 1: 활성화

r.ForceLOD

5

강제할 LOD 레벨입니다. -1은 비활성화입니다. 씬에 특정 LOD를 강제 적용하여 얻을 수 있는 퍼포먼스나 퀄리티를 테스트할 때 유용합니다.

언리얼 엔진 문서의 미래를 함께 만들어주세요! 더 나은 서비스를 제공할 수 있도록 문서 사용에 대한 피드백을 주세요.
설문조사에 참여해 주세요
건너뛰기