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

인카메라 VFX 프로덕션 테스트 샘플을 구성하는 방법을 알아보고, 프로덕션 도중 사용되는 기능, 프로젝트 구조, 세팅을 살펴봅니다.

Choose your operating system:

Windows

macOS

Linux

인카메라 VFX 프로덕션 테스트는 언리얼 엔진과 LED 볼륨을 사용한 차량 이동 샷, 멀티 카메라 설정 및 멀티 유저 설정을 통해 테이크 사이를 빠르게 변경하는 버추얼 프로덕션 샘플입니다. 이 샘플은 영화 제작자 조합 블리트(Bullitt)와 협업하여 제작했습니다. 팀은 LA에 있는 낸트 스튜디오(Nant Studios)의 LED 스테이지에서 4일에 걸쳐 인카메라 최종 픽셀을 만들어냈습니다.

프로젝트에서 제작된 단편.

이 샘플을 살펴보고 수정하는 과정에서 다음 내용을 학습할 수 있습니다.

  • 여러 아티스트가 프로덕션 진행 중에 씬에서 동시에 협업할 수 있도록 버추얼 프로덕션 프로젝트를 구성합니다.

  • 신속한 라이팅 변경을 위해 멀티 유저 기능이 있는 GPU 라이트매스를 사용하여 하나의 컴퓨터에서 라이팅을 굽고 세션의 모든 컴퓨터에 공유합니다.

  • 멀티 스크린 nDisplay 클러스터에서 mGPU를 사용하여 내부 프로스텀을 렌더링합니다.

  • 색 보정과 OCIO 프로파일을 nDisplay 렌더에 적용하여 각 씬의 룩을 구현합니다.

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

  • CVar을 적용하여 프로젝트의 퍼포먼스를 향상시킵니다.

이 가이드에서는 프로덕션 팀이 프로젝트에서 언리얼 엔진의 기능을 사용하여 최종 결과물을 만든 방법을 다룹니다. 이 프로젝트를 프로덕션 설계의 예제로 활용하세요. 인카메라 VFX의 기초를 학습하려면 인카메라 VFX 퀵 스타트를 참조하세요. 이 프로덕션의 비하인드 영상은 언리얼 엔진 스포트라이트를 참조하세요.

스테이지 구성 및 하드웨어

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

4개의 nDisplay 노드가 사용되어 다음 볼륨을 렌더링하고, 2개의 LED 패널이 각 노드에 할당되었습니다.

  • Walls: LED 패널 5 개의 전체 해상도 15312 x 2112

  • Ceiling: LED 패널 3 개의 전체 해상도 4160 x 5280

이 실제 프로덕션 샘플은 CPU 및 GPU 집약적이므로 카메라 지원 해상도에서 이러한 큰 LED 볼륨에 렌더링할 수 있습니다. 아래 다이어그램은 프로덕션에 기여하는 모든 디바이스 및 스테이지의 디바이스 간 연결을 보여줍니다. 촬영에서 각 디바이스의 역할을 알아보려면 인카메라 VFX 개요를 참조하세요. 인카메라 VFX 촬영에서 권장되는 하드웨어에 관해 알아보려면 인카메라 VFX 권장 하드웨어를 참조하세요.

스테이지에서 사용되는 디바이스와 디바이스 간의 통신 방식을 보여주는 다이어그램. 클릭하면 이미지가 확대됩니다.

시작하기

프로덕션에서 사용되는 실제 스테이지의 토폴로지를 나타내는 nDisplay 환경설정 과 더불어 nDisplay 환경설정이 프로젝트에 추가되어 LED 볼륨 없이 한 대의 컴퓨터로 씬을 볼 수 있습니다. 이 섹션에서는 단순한 nDisplay 환경설정을 사용하여 씬을 렌더링하고 단일 컴퓨터의 멀티 유저 세션에서 이를 변경하는 방법을 보여줍니다.

다음 단계를 따라 컴퓨터의 멀티 유저 세션에서 언리얼 에디터의 인스턴스를 실행하고 nDisplay 렌더러를 사용하여 또 다른 인스턴스를 실행합니다.

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

  2. 컴퓨터의 언리얼 엔진 폴더로 이동하고 Engine\Binaries\Win64\SwitchboardListener.exe 파일을 실행하여 컴퓨터에서 SwitchboardListener 를 실행합니다. 리스너는 시작 시 창을 자동으로 최소화하여 nDisplay 디바이스로 인한 문제 발생을 방지합니다. OS의 작업 표시줄에서 이 애플리케이션을 찾을 수 있습니다.

    다음은 전체 경로의 예시입니다. C:\Program Files\Epic Games\UE_4.27\Engine\Binaries\Win64\SwitchboardListener.exe

  3. 언리얼 엔진 폴더에서 Engine\Plugins\VirtualProduction\Switchboard\Source\Switchboard\Switchboard.bat 파일을 실행하여 컴퓨터에서 스위치보드(Switchboard) 를 시작합니다. 처음 스위치보드를 실행하는 경우 애플리케이션 창을 열기 전에 필수 종속성이 설치됩니다.

    다음은 전체 경로의 예시입니다. C:\Program Files\Epic Games\UE_4.27\Engine\Plugins\VirtualProduction\Switchboard\Source\Switchboard\Switchboard.bat

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

    • 처음 스위치보드를 실행하는 경우 스위치보드를 시작할 때 새 스위치보드 환경설정 추가(Add New Switchboard Configuration) 창이 표시됩니다.

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

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

  5. 새 스위치보드 환경설정 추가(Add New Switchboard Configuration) 창에서 다음과 같이 설정합니다.

    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. 확인(OK) 을 클릭하고 1개의 nDisplay 디바이스가 스위치보드에 추가되는 것을 확인합니다.

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

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

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

      언리얼 디바이스 추가

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

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

    3. 확인(OK) 을 클릭하고 1개의 언리얼 디바이스가 스위치보드에 추가되는 것을 확인합니다.

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

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

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

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

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

  11. 모든 창이 자동으로 최소화되고 nDisplay 렌더가 전체 화면으로 표시됩니다. 어둡게 보일 수 있지만 이후 단계에서 뷰를 변경합니다.

  12. 최소화된 스위치보드 창을 열고, 언리얼 디바이스용 리스너에 연결(Connect to listener) 버튼을 클릭하여 SwitchboardListener에 연결합니다.

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

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

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

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

    레벨 스냅샷 에디터 열기

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

    Setup A 레벨 스냅샷 복원

  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 개요를 참조하세요.

언리얼 엔진에는 스테이지 모니터(Stage Monitor) 툴이 포함되어 있어 하나의 애플리케이션에 있는 모든 nDisplay 클러스터 노드에서 특정 이벤트와 관련된 보고서를 받을 수 있습니다. 샷에 영향을 줄 수 있는 이벤트를 쉽게 파악할 수 있도록, 촬영 중에 중요한 상태를 입력할 수 있는 툴이 있습니다. 이 툴의 사용법에 관한 자세한 내용은 스테이지 모니터를 참조하세요.

리모트 컨트롤

프로덕션 팀은 설정 중에 리모트 컨트롤을 사용하여 태블릿에서 실행 중인 웹 애플리케이션을 통해 디스플레이와 가상 환경을 동적으로 제어할 수 있었습니다. 프로젝트에 노출된 컨트롤에는 라이팅, 디스플레이의 컬러 그레이딩, 가상 환경 내 스테이지의 위치 및 회전 수정이 포함됩니다.

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

리모트 컨트롤 사용

시작하기 섹션에서는 언리얼 에디터 인스턴스를 사용하여 씬을 변경하고 nDisplay 렌더에서 업데이트된 사항을 바로 확인했습니다. 이 섹션에서는 프로젝트를 위해 설계한 리모트 컨트롤 웹 애플리케이션을 사용하여 동일 작업을 수행하는 방법을 보여줍니다.

다음 단계를 따라 이 프로젝트를 위해 설계한 리모트 컨트롤 웹 애플리케이션을 확인하고, nDisplay 루트 액터를 원격으로 이동합니다.

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

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

  2. 리모트 컨트롤 패널에는 리모트 컨트롤 프리셋에서 노출된 모든 파라미터가 표시됩니다. 패널 오른쪽 상단의 꺾인 화살표 아이콘을 클릭하여 웹 애플리케이션을 실행합니다.

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

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

  3. 열어 놓은 레벨과 스테이지에서 작동하도록 프로퍼티를 리바인드해야 할 수 있습니다.

    리모트 컨트롤 패널의 프로퍼티 리바인드

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

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

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

웹 애플리케이션 디자인

리모트 컨트롤 웹 인터페이스는 리모트 컨트롤에 함께 사용할 웹 애플리케이션을 제공하는 플러그인입니다. 웹 애플리케이션에는 UI 빌더가 포함되어 코드 없이 고유한 웹 애플리케이션을 생성 및 커스터마이징할 수 있습니다.

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

UI 수정을 위한 리모트 컨트롤 디자인 모드

다음 목록에서는 이 프로덕션을 위해 설계한 리모트 컨트롤 웹 애플리케이션의 각 탭에 있는 컨트롤을 설명합니다.

  • 스테이지(Stage): 레벨 내 스테이지 위치와 회전에 대한 컨트롤을 결합합니다.

    스테이지 컨트롤

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

    뷰포트 세팅 컨트롤

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

    색 보정 컨트롤

  • 라이트 카드(LightCard): 라이트 카드에 대한 컨트롤을 결합합니다.

    라이트 카드 컨트롤

  • 스냅샷(Snapshot): 프로젝트의 모든 레벨 스냅샷을 표시하고, 레벨 스냅샷을 적용하는 컨트롤을 결합합니다. 자세한 내용은 레벨 스냅샷을 참조하세요.

    레벨 스냅샷 컨트롤

컬러 그레이딩 및 OCIO

파이프라인 전체에서 정확하고 일관적인 컬러를 유지하기 위해 아트 및 스테이지 팀은 오픈컬러IO(OCIO)를 활용하여 컬러 스페이스 변환을 표준화했습니다. 이러한 컬러 스페이스 변환으로 모니터, LED 패널, 프로덕션 카메라 간 디스플레이에 차이가 발생했습니다.

샘플 OCIO 환경설정과 룩업 테이블(Look-Up Table, LUT)이 OCIO 플러그인에 포함되어 있습니다. 이 프로젝트에는 이 OCIO 환경설정을 참조하고 두 nDisaply 환경설정 에셋에 할당된 OCIO 환경설정 에셋 예제가 있습니다. TheOrigin/Content/OCIO 에서 OCIO 환경설정 에셋을 확인할 수 있습니다.

OCIO 환경설정 생성 및 디스플레이를 위한 컬러 스페이스 변환을 자세히 알아보려면 인카메라 VFX 카메라 캘리브레이션을 참조하세요.

다음 단계를 따라 프로젝트에 고유한 OCIO 환경설정을 사용합니다.

  1. 콘텐츠 브라우저(Content Browser) 에서 우클릭하고 기타(Miscellaneous) > OpenColorIOConfiguration 을 선택하여 새 OpenColorIO 환경설정 에셋(OpenColorIO Configuration Asset) 을 생성합니다.

    OCIO 환경설정 에셋 추가

  2. 새 에셋을 더블클릭하여 에디터를 엽니다.

  3. 에셋 에디터의 환경설정(Config) 섹션에서 환경설정 파일(Configuration File) 필드를 디스크에 있는 OCIO 환경설정 파일의 경로로 설정합니다.

    OCIO 환경설정 파일 경로 설정

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

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

  6. 사용할 소스 및 대상 컬러 스페이스를 추가합니다. 사용 가능한 옵션은 지정한 OCIO 환경설정으로 결정됩니다.

    소스 및 대상 컬러 스페이스 추가

  7. nDisplay 뷰포트에 이 환경설정을 적용하려면 nDisplay 환경설정 에셋(nDisplay Config Asset) 이 포함된 레벨을 열고, 액터의 디테일 패널(Details Panel) 에서 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 라이트매스(GPU Lightmass) 창에서 라이팅 빌드(Build Lighting) 를 클릭하여 굽기를 시작합니다.

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

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

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

멀티 유저 세션의 다른 컴퓨터에 모든 변경사항을 공유하는 대신 전송할 변경사항을 선택할 수도 있습니다.

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

    저장할 파일 선택

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

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

  3. 선택 저장(Save Selected) 을 클릭하여 변경사항을 멀티 유저 세션의 다른 컴퓨터로 전송합니다.

라이트매스 굽기에서 변경 가능한 세팅을 자세히 알아보려면 GPU 라이트매스를 참조하세요.

멀티 유저 세션에서 GPU 라이트매스 굽기를 전송하는 것은 실험단계에 있는 기능입니다. 용량이 큰 빌드 데이터 파일을 만드는 씬의 경우 전송 문제가 발생할 수 있습니다. 이 경우 다음을 수행할 수 있습니다.

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

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

레벨 스냅샷

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

다음 섹션에서는 프로젝트에 포함된 필터 및 프리셋을 사용하는 방법을 설명합니다. 고유한 필터 만들기와 툴의 다른 기능에 관해 자세히 알아보려면 레벨 스냅샷을 참조하세요.

레벨 스냅샷 필터링

프로젝트에 포함된 것은 클래스를 기준으로 레벨 스냅샷에 있는 액터의 변경사항을 필터링할 수 있도록 하는 블루프린트 레벨 스냅샷 필터(Blueprint Level Snapshot Filter) 예제입니다. TheOrigin/Content/Tools/LevelSnapshotFilters 에서 LSF_FilterByClass 필터를 찾을 수 있습니다. 이 섹션에서는 프로젝트에서 이 필터를 사용하는 방법을 보여줍니다.

스테이지에서 사용되는 디바이스와 디바이스 간의 통신 방식을 보여주는 다이어그램. 클릭하면 이미지가 확대됩니다.

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

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

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

    레벨 스냅샷 에디터 열기

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

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

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

    Setup A 레벨 스냅샷 선택됨

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

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

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

    필터 클릭

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

    라이트 카드 검색

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

    결과 새로 고침으로 필터 적용

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

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

  10. 결과 새로 고침(Refresh Results) 을 클릭하고 목록에서 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. 툴바 에서 레벨 스냅샷(Level Snapshots) 버튼 옆에 있는 화살표를 클릭하고 드롭다운에서 레벨 스냅샷 에디터 열기(Open Level Snapshots Editor) 를 선택합니다.

    레벨 스냅샷 에디터 열기

  3. CaveEntrance_NantStudiosSimple 레벨에 대해 이미 생성된 2개의 레벨 스냅샷이 있습니다. 필터 로드/저장(Load/Save Filter) 을 클릭하고 ExampleStagePreset 을 선택합니다.

    Example Stage Preset 필터 로드

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

    프리셋 필터 로드됨

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

    Setup A 레벨 스냅샷이 프리셋으로 필터링됨

프로젝트 구조

인카메라 VFX 프로덕션 테스트는 버추얼 프로덕션용 언리얼 프로젝트 구조화 방법을 확인할 수 있는 좋은 예제입니다. 다음 폴더는 프로젝트 콘텐츠의 전반적인 구조를 정의하고 이를 관련 카테고리로 분류합니다.

Assets

이 폴더에는 일반적으로 캐릭터, 환경, FX를 생성하기 위한 모든 에셋이 포함되어 있습니다. 레벨 에셋은 여기에 포함되지 않습니다. 다음 목록은 이 샘플 프로젝트의 에셋이 어떤 카테고리로 분류되었는지 보여줍니다.

  • Atlases

  • Decals

  • FX

  • IES

  • Landscape

  • Materials

  • MS_Presets

  • Props

  • Rocks

  • Scatter

  • Sky

  • Textures

  • Vegetation

Environments

다음과 같은 3개의 촬영 환경이 프로젝트에 포함되어 있습니다.

  • CaveEntrance

    Cave Entrance 환경

  • CavePath

    Cave Path 환경

  • SpaceJunkyard

    Space Junkyard 환경

Environment Structure

소스 컨트롤을 통해서만 .umap 파일과 같은 바이너리 에셋을 체크 아웃할 수 있으므로, 동시에 한 환경에서 작업하는 각 아티스트는 고유한 레벨에서 작업해야 합니다. 이에 대한 해결책은 환경을 각 액터 타입에 기반한 여러 개의 서브레벨로 나누는 것입니다.

예를 들어 라이팅 아티스트는 라이팅 서브레벨에서 작업하고, FX 아티스트는 FX 서브레벨에서 작업합니다. 환경을 여러 개의 영역으로 나누는 여러 지오 레벨을 통해 각 아티스트가 작업하는 것이 일반적입니다. 사용되는 서브레벨의 수와 유형은 프로덕션 요구사항에 따라 다릅니다.

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

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

  • SubLevels: 이 프로젝트에서 각 레벨은 Caustics, FX, Geo, Lighting 서브레벨로 나뉘었습니다.

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

OCIO

이 폴더에는 OpenColorIO 환경설정 에셋이 포함되어 있습니다. 이 프로젝트에는 다음과 같은 1개의 에셋이 있습니다. ExampleOCIO. 이 프로젝트의 OCIO 사용에 관한 자세한 내용은 이 페이지의 컬러 그레이딩 및 OCIO 섹션을 참조하세요.

OCIO 에셋 예제

Stage Levels

이 폴더에는 환경과 스테이지 액터 둘 모두가 있는 모든 레벨 에셋이 포함되어 있습니다. nDisplay로 렌더링하고자 할 때 이 에셋을 엽니다. 스테이지 레벨은 레벨 에셋에서 사용되는 스테이지별로 카테고리가 분류됩니다. 이 샘플 프로젝트는 스테이지에 맞춰 다음과 같은 구조를 사용합니다.

  • NantStudios

    • CaveEntrance_NantStudios

    • CavePath_NantStudios

    • SpaceJunkyard_NantStudios

  • NantStudiosSimple

    • CaveEntrance_NantStudiosSimple

    • CavePath_NantStudiosSimple

    • SpaceJunkyard_NantStudiosSimple

Stages

이 폴더에는 LED 볼륨의 토폴로지를 설명하는 nDisplay 환경설정이 포함되어 있습니다. 프로덕션에서는 모든 샷에 다음과 같은 1개의 스테이지를 사용했습니다. Nant Studios. 스테이지의 간단한 버전도 제공되어 단일 데스크톱에서 앞면 벽을 렌더링할 수 있습니다.

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

NantStudios

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

    NantStudios nDisplay 환경설정 에셋

  • LEDMeshes: nDisplay 환경설정 에셋 에서 사용되는 LED 패널 해상도가 포함된 스태틱 메시와 머티리얼입니다.

    NantStudios LED 메시

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

  • NantStudios_Stage: nDisplay 루트 액터(nDisplay Root Actor), ICVFX 카메라(ICVFX Cameras), 라이트 카드(Light Cards) 와 같이 스테이지를 나타내는 액터만 포함된 레벨 에셋입니다.

Simple Nant Studios

  • Config: LED 볼륨의 토폴로지와 이를 렌더링하는 방법을 정의하는 스테이지의 nDisplay 환경설정 에셋입니다. 토폴로지는 Nant Studios 환경설정과 동일하게 보이지만 앞면 벽 2개만 렌더링을 위해 구성됩니다.

  • NantStudiosSimple_Stage: nDisplay 루트 액터(nDisplay Root Actor), ICVFX 카메라(ICVFX Cameras), 라이트 카드(Light Cards) 와 같이 스테이지를 나타내는 액터만 포함된 레벨 에셋입니다.

Tools

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

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

  • HierarchicalInstanceConverter

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

  • InnerFrustumCamera: LiveLinkComponent가 포함된 CineCameraActor입니다. 이 블루프린트는 사용자가 수동으로 인스턴스드 LiveLinkComponent를 씬 액터에 추가할 필요가 없도록 하여 카메라 추적을 간소화합니다.

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

  • LevelSnapshotPresets: 레벨 스냅샷을 위한 필터 그룹 프리셋입니다.

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

  • SyncTestBall: 이 툴은 동기화 테스트에 사용되는 빨간색의 튀는 공을 만듭니다. 공을 씬에 배치하면 두 벽 사이의 틈에 나타납니다. 동기화가 제대로 작동하지 않는 경우 틈에서 공이 맹렬하게 튀는 것이 보입니다.

Cvars

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

다음과 같이 스위치보드에서 CVar을 설정합니다.

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

  2. nDisplay 모니터(nDisplay Monitor) 탭의 콘솔(Console): 텍스트 박스에서 CVar과 원하는 값을 입력합니다.

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

nDisplay 모니터 콘솔

다음 값은 인카메라 VFX 프로덕션 테스트에서 사용되었습니다. 프로젝트의 콘텐츠와 원하는 룩에 따라 다른 값을 사용해야 할 수 있습니다.

Cvar

설명

r.ExrReadAndProcessOnGPU

N/A

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

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

r.RayTracing.Reflections.SortMaterials

0

셰이딩 전에 리플렉션되는 머티리얼의 정렬 여부를 결정합니다. 옵션:

  • 0: 비활성화됨

  • 1: 활성화됨, 트레이스(Trace) > 정렬(Sort) > 트레이스(Trace)(디폴트)

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: TAA와는 별개로 스페이셜 업스케일 패스를 수행합니다(디폴트).

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

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를 적용하여 얼마만큼의 퍼포먼스 또는 퀄리티를 얻을 수 있는지 테스트하는 데 유용합니다.

언리얼 엔진의 이전 버전을 위해 작성된 페이지입니다. 현재 언리얼 엔진 5 버전을 위해 업데이트되지 않았습니다.