언리얼 엔진에서의 이미지 컴포지팅 프로세스는 리얼타임 컴포지팅 플러그인인 컴포셔 에 의해 처리됩니다. 컴포셔를 사용하면 에디터 또는 인게임에서 작업하는 동안 컴퓨터에서 생성된 CG 또는 현실 세계의 소스와 같이 서로 다른 소스에서 나온 비주얼 엘리먼트를 결합하여 매끄러운 단일 이미지로 블렌딩할 수 있습니다. 영화와 텔레비전 같은 비주얼 이펙트(VFX) 업계에서 단일 프레임으로 컴포지팅하는 작업은 지금까지 주로 오프라인으로 진행되고 프레임당 렌더링 시간이 상당히 오래 걸리던 프로세스였습니다.
프리비주얼라이제이션 단계에서부터 컴포지팅을 염두에 둔다면 감독이나 현장 세트 작업에 참여하는 다른 크리에이터의 입장에서는 최종 렌더의 모습을 파악할 수 있게 되고 연기나 샷의 구성 방식을 변경하는 데도 도움이 됩니다. 컴포지터의 입장에서 프리비주얼라이제이션은 Nuke나 Fusion 같은 서드 파티 업계 표준 소프트웨어를 사용하여 작업을 마무리하는 가이드로 삼을 수 있습니다.
컴포셔 플러그인 활성화하기
컴포셔 컴포지팅 툴에 액세스하려면 편집(Edit) 메뉴에서 플러그인(Plugins) 브라우저를 엽니다. 컴포짓(Compositing) 카테고리에서 컴포셔(Composure) 를 활성화하고 에디터를 재시작하여 변경사항을 적용합니다.

컴포짓 트리 패널
컴포셔 플러그인이 활성화되면 창(Window) > 버추얼 프로덕션(Virtual Production) 메뉴에서 컴포셔 컴포지팅(Composure Compositing) 패널에 액세스합니다.

이 패널을 사용하여 컴포지팅 엘리먼트 의 계층구조를 빌드합니다. 이러한 엘리먼트는 컴포짓 씬의 일부를 렌더링하는 오브젝트입니다. 예를 들어 위 계층구조는 'My_Composite'이라는 컴포지션으로 구성되어 있으며 'FG_Element', 'BG_Element', 및 'Media_Plate' 세 개의 엘리먼트가 갖춰져 있습니다. 각 엘리먼트는 컴포지팅된 씬의 서로 다른 부분을 포함합니다. 'FG_Element' 및 'BG_Element'는 CG 레이어(CG Layer) 엘리먼트로, 씬의 전경과 배경 오브젝트를 포함합니다. 'Media_Plate'는 미디어 플레이트(Media Plate) 레이어로, 컴포지팅 파이프라인에 대한 비디오 입력에 사용됩니다.
'컴포셔 컴포지팅' 패널을 우클릭하고 새 컴포 샷(New Comp Shot) 을 선택하여 컴포짓을 추가할 수 있습니다.

컴포지션 샷을 우클릭하면 레이어 엘리먼트 추가(Add Layer Element) 를 선택하고 엘리먼트 타입 선택(Pick an Element Type) 선택 창에서 원하는 엘리먼트 타입을 선택하여 새 엘리먼트를 추가할 수 있습니다.

엘리먼트는 계층구조에서 서로 중첩되어 어떤 엘리먼트가 계층구조 트리의 상위 항목에서 엘리먼트에 걸쳐 사용할 수 있는지 결정할 수 있습니다. 엘리먼트는 레벨 액터이므로 다른 모든 액터처럼 추가할 수 있습니다. 이 패널은 각 엘리먼트를 중첩하고 일부 제어를 노출하여 간편하게 사용할 수 있게 해줍니다.
씬에서의 이식성과 사용 용이성을 고려하여 엘리먼트가 자체 서브 레벨에 추가되어 있는지 확인합니다. 또한 엘리먼트는 레벨 액터이므로 다른 레벨에서 컴포지팅 트리를 로드하여 실행할 수도 있습니다.
컴포셔 컴포지팅 패널 분석
이미지를 클릭하면 확대됩니다.
- 엘리먼트 행(Element Row) 은 씬 내에서 컴포지팅된 엘리먼트로 구성된 컴포지션 샷으로 이루어져 있습니다. 이 행에는 현재 로드된 맵의 각 레이어가 표시됩니다.
- 엘리먼트 이름(Element Name) 은 각 레이어 엘리먼트에 지정되는 고유한 이름으로, '컴포지팅 머티리얼 그래프(Compositing Material Graph)'에서 찾은 특정 엘리먼트를 레퍼런스할 때 사용됩니다.
- 각 컴포지션 샷 또는 레이어 엘리먼트는 눈(Eye) 버튼을 사용하여 토글하여 켜거나 끌 수 있습니다.
- 알파(Alpha) 박스는 선택된 컴포지션 샷 또는 레이어 엘리먼트가 불투명해지는 방식을 제어합니다. 텍스트 박스에 값을 입력하거나 드롭다운을 클릭하고 슬라이더를 사용하여 비저빌리티를 제어할 수 있습니다.
- 잠금(Lock) 은 엘리먼트 프레임 고정을 토글합니다. 애니메이션 또는 비디오 스트리밍의 경우 엘리먼트의 렌더링을 일시정지하고 해당 위치를 고정할 수 있습니다.
- 미디어 출력(Media Output) 은 선택된 컴포지션 샷 또는 레이어 엘리먼트 렌더링 결과를 토글하여 켜거나 끌 수 있습니다. 이것을 처음으로 토글하여 켜면 미디어 출력 정의(Media Output Definition) 에셋을 선택 또는 생성하라는 알림이 표시됩니다. 카드 또는 포트 같은 타깃 출력의 에셋 디테일을 제공합니다.
- 컴포지션 샷 또는 레이어 엘리먼트를 선택하면 엘리먼트의 프로퍼티와 어트리뷰트를 해당 레벨의 디테일(Details) 패널에서 사용할 수 있게 됩니다. 컴포지팅 전용 세팅은 컴포셔 카테고리에서 찾을 수 있습니다.
- 컴포지션 샷 또는 레이어 엘리먼트를 클릭하면 마치 카메라 액터 프리뷰 패널처럼 엘리먼트 프리뷰(Element Preview) 패널이 레벨 뷰포트에 표시됩니다. 선택된 엘리먼트의 렌더링을 표시하고 엘리먼트의 상태가 나쁠 때는 오류 메시지도 표시합니다. 예를 들어 표시할 정보가 없는 경우 '비어 있음'을 표시하기도 합니다.
엘리먼트는 선형 컬러 스페이스에서 처리됩니다. 기본적으로 프리뷰는 선형에서 sRGB 변환으로 표시되며 톤매핑을 거치지 않은 이미지를 표시하기 때문에 결과적으로는 어딘가 부족하게 보이게 됩니다. 하지만 커스텀 머티리얼을 통해 자체 톤매핑을 추가하는 것과 같이 엘리먼트의 프리뷰 방식을 변경할 수 있는 옵션이 제공됩니다.
컴포짓 엘리먼트
엘리먼트 는 컴포짓된 이미지를 생성하는 데 사용되는 개별적인 구성 요소로, 컴포지션 샷 또는 개별 레이어 엘리먼트가 될 수 있습니다. 각 엘리먼트는 레이어로 이루어진 컴포지팅된 이미지 또는 컴포지팅된 씬의 일부를 렌더링하는 레벨 액터를 구성합니다. 레이어 액터는 컴포지팅된 씬의 일부를 각각 렌더링하는 레벨 액터입니다.
내부 패스
엘리먼트는 각각이 수행하는 내부 패스 세트를 갖습니다. 이러한 패스는 해당 엘리먼트 타입에 고유한 순차적인 단계의 세트입니다. 각 패스는 컴포짓에서 엘리먼트를 렌더링하는 별도의 단계입니다. 패스가 전혀 없는 엘리먼트는 아무것도 하지 않습니다. 사용 가능한 패스의 종류는 다양하며, 특정 엘리먼트 타입의 경우 미리 정의된 패스와 함께 제공됩니다. 예를 들어 '미디어 플레이트' 엘리먼트는 크로마 키(Chroma Key)와 번짐제거(Despill)가 이미 내장된 상태로 제공됩니다.
엘리먼트 분석
'컴포셔 컴포지팅 트리' 창에서 엘리먼트를 하나 선택하면 레벨의 디테일 패널에 선택된 엘리먼트의 정보와 프로퍼티가 표시됩니다.
이미지를 클릭하면 확대됩니다.
- 입력(Inputs) 어트리뷰트로는 비디오 입력에 미디어 텍스처를 사용하는 것처럼 일부 엘리먼트가 컴포지팅 시스템의 외부 리소스에 액세스할 수 있게 됩니다. 이를 통해 엘리먼트에 종속성을 라우팅할 수 있게 되며, 다른 하위 패스 및 미리 정의된 입력과 함께 제공되는 일부 엘리먼트 타입에 의해 레퍼런스 가능한 특수 패스와 같이 작동합니다.
- 타깃 카메라 액터(Target Camera Actor) 는 레벨에서 카메라 액터를 사용하기 위해 레퍼런스 뷰 포인트가 필요한 일부 엘리먼트 타입을 사용할 수 있게 해 줍니다. 정의되지 않은 상태로 둘 경우, 엘리먼트는 첫 번째로 찾을 수 있는 카메라 액터의 레벨을 검색하여 할당합니다. 이것은 개별 엘리먼트에 대해 오버라이드하거나 루트 엘리먼트에서 상속할 수도 있습니다.
- 트랜스폼(Transforms) 은 일종의 입력을 취해 변경하거나 이를 사용하여 새로운 것을 생성하는 패스입니다. 예를 들어 컬러 트랜스폼은 컬러 스페이스 하나에서 이미지를 취해 다른 컬러 스페이스에 넣습니다. 목록의 마지막 트랜스폼은 최종 렌더링 결과 엘리먼트를 만듭니다.
- 패스(Passes) 의 타입은 크로마 키, 번짐제거부터 심지어 새롭게 추가할 수 있는 커스텀까지 매우 다양합니다. 모두 동일한 프로퍼티를 공유하지만 해당 패스에만 고유한 프로퍼티를 포함할 수도 있습니다.
- 활성화됨(Enabled) 플래그는 패스를 토글하여 켜고 끕니다. 비활성화된 경우 패스는 마치 패스가 존재하지 않는 것처럼 작동합니다.
- 패스 이름(Pass Name) 은 다른 후속 패스에 의해 레퍼런스할 수 있도록 이름을 피딩합니다.
머티리얼에서 레퍼런스되어야 하는 패스는 고유한 이름을 가져야 합니다. - 중간(Intermediate) 플래그는 후속 패스의 사용 여부를 제어합니다. 기본적으로는 다음 패스에 대해서만 필요하다고 가정합니다. 그 후에는 다른 패스에 의해 사용될 수 있도록 렌더 타깃이 릴리즈됩니다. 패스 결과를 더 오래 액세스해야 하는 경우에는 이 플래그를 비활성화하세요.
엘리먼트 및 패스 렌더링은 공유된 렌더 타깃 풀을 사용합니다. 프레임마다 모든 타깃은 풀로 돌아와 재배포됩니다. 풀에서 사용되지 않은 타깃은 플러시됩니다.
- 출력(Outputs) 은 다른 형태의 패스이며, 엘리먼트의 렌더링 결과에 기여하지 않습니다. 대신 패스 결과를 비디오 캡처 카드 또는 플레이어 뷰포트 등 다른 위치로 라우팅합니다.
- 렌더 해상도(Render Resolution) 는 엘리먼트의 해상도 출력을 정의합니다. 오버라이드되거나 부모에서 상속할 수 있으며, 일부 패스의 경우 이 세팅을 오버라이드 또는 스케일하는 옵션을 갖습니다.
- 프리뷰 트랜스폼(Preview Transforms) 에서 엘리먼트는 선형 컬러 스페이스에서 처리됩니다. 기본적으로 아무런 톤매핑도 없이 프리뷰되어 컬러가 날아간 것처럼 보이게 됩니다. 엘리먼트의 선택적 트랜스폼으로는 에디터에서 이미지의 프리뷰 방식을 조정할 수 있습니다.
- 자동 실행(Auto Run) 플래그는 엘리먼트를 토글하여 실행 또는 렌더링되지 않도록 해줍니다. 플래그 상태는 '컴포셔 컴포지팅' 패널의 트리 뷰에 있는 눈 모양 아이콘에 반영됩니다.
머티리얼 컴포지팅하기
다음 섹션에서는 언리얼 엔진에서의 컴포지팅 파이프라인의 각 부분이 작동하고 결합되는 방식에 대해 자세히 설명합니다.
컴포셔를 사용하여 기본적인 컴포지션을 생성하는 단계별 가이드는 컴포셔 퀵스타트를 참고하세요.
엘리먼트 중첩하기
엘리먼트는 서로 중첩할 수 있으며 어떤 타입의 엘리먼트든 계층구조에 배치될 수 있지만 최종 컴포지션은 맨 위에 두고 해당 레이어 엘리먼트는 아래에 나열해야 합니다. 새 중첩 엘리먼트를 추가하려면 원하는 부모 엘리먼트를 우클릭하고 컨텍스트 메뉴에서 레이어 엘리먼트 추가 를 선택합니다. 그런 다음 추가할 엘리먼트 타입을 창에서 선택합니다.
엘리먼트 중첩은 컴포지션에서 사용되는 엘리먼트의 렌더링 순서를 결정합니다. 부모 엘리먼트는 맨 마지막에 렌더링되고, 그 아래의 모든 엘리먼트는 먼저 렌더링됩니다. 부모 엘리먼트는 자체 렌더 패스에 자손의 렌더링 결과를 사용할 수 있습니다.
컴포짓 엘리먼트 머티리얼 패스
컴포짓 엘리먼트 머티리얼 패스(Compositing Element Material Pass) 는 사용자가 작성한 머티리얼을 컴포짓 파이프라인에 추가할 수 있는 트랜스폼 패스입니다. 머티리얼에서는 하위 엘리먼트를 이름으로 레퍼런스할 수 있습니다.
이미지를 클릭하면 확대됩니다.
머티리얼에서 엘리먼트 레퍼런스하기
머티리얼에서 텍스처 파라미터(Texture Parameter) 를 생성하면 자손 엘리먼트의 렌더링 결과로 자동으로 채워집니다. 파라미터의 이름은 컴포지팅 트리에 있는 하위 엘리먼트와 동일하게 짓습니다.
이미지를 클릭하면 확대됩니다.
출력에는 단일 컬러만 필요하기 때문에 이 머티리얼의 컴포지팅에는 포스트 프로세스 머티리얼이 사용됩니다. 필요한 경우 포스트 프로세스 머티리얼에 대해 출력 알파(Output Alpha) 를 활성화합니다.
'디테일' 패널을 사용하여 이 머티리얼을 머티리얼(Material) 슬롯에 연결합니다. 모든 것이 적절히 구성된 경우 뷰포트 프리뷰에서 작동하기 시작합니다.

프리뷰에 자손 엘리먼트가 표시되지 않는 경우 이름이 정확히 일치하는지 다시 한번 확인합니다. 오타 또는 공백이 원인일 수 있습니다.
하위 엘리먼트가 비활성화되어 렌더링되지 않는 경우 텍스처 파라미터는 투명한 검정 텍스처로 채워집니다. 명명된 엘리먼트를 찾을 수 없는 경우 텍스처는 머티리얼의 디폴트 텍스처를 사용합니다.
머티리얼을 이식 가능하게 만들기
머티리얼에서 이름으로 엘리먼트를 레퍼런스하는 것은 어렵지 않지만, 머티리얼이 특화되기 때문에 특정 이름을 가진 엘리먼트를 사용해서만 작동할 수 있게 됩니다. 이에 대한 대안으로 머티리얼 텍스처 파라미터에 일반적인 이름을 지정하고 패스의 프로퍼티에서 하위 엘리먼트를 레퍼런스하도록 설정할 수도 있습니다.
이미지를 클릭하면 확대됩니다.
패스에 머티리얼이 설정되면 입력 엘리먼트(Input Elements) 라는 프로퍼티 섹션이 갖춰집니다. 여기에 머티리얼의 모든 텍스처 파라미터가 나열되어 특정 자손 엘리먼트를 레퍼런스할 수 있게 됩니다.
머티리얼에서 다른 패스 레퍼런스하기
머티리얼은 엘리먼트처럼 이미 실행 중인 다른 패스를 레퍼런스할 수 있으며, 단일 엘리먼트 내에서 프로그레시브 방식으로 트랜스폼을 수행할 수 있게 해줍니다. 예를 들어 '미디어 플레이트'를 사용하면 키가 지정된 결과물을 사용하는 크로마 키 패스와 번짐제거 패스를 수행할 수 있습니다.

현재 패스의 바로 앞 패스가 아닌 다른 패스를 레퍼런스해야 하는 경우, 해당하는 다른 패스의 중간 플래그의 체크가 해제되어 있어야 합니다.
프리패스 특수 파라미터 이름
프리패스 는 바로 앞에 어떤 패스가 실행되든 레퍼런스로 해석될 수 있는 특수 파라미터 이름입니다. 머티리얼에서 이 이름을 사용하면 '디테일' 패널에서 파라미터 매핑을 설정할 필요 없이 이식성을 높일 수 있습니다.

두 엘리먼트 컴포짓하기
기본적으로 프로젝트는 포스트 프로세스 파이프라인을 통해 알파 데이터를 전송하도록 구성되어 있습니다. CG 레이어가 적절히 작동하려면 '프로젝트 세팅(Project Setting)'의 포스트 프로세싱에서 알파 채널 지원 활성화(Enable alpha channel support in post processing) 가 선형 컬러 공간만(Linear color space only) 으로 설정되어야 합니다. 이 세팅은 '렌더링(Rendering) > '포스트 프로세싱(PostProcessing)' 카테고리에서 찾을 수 있습니다.
다음과 같은 함수를 사용하면 머티리얼에서의 엘리먼트 컴포지팅을 간소화할 수 있습니다.
Over 노드는 입력 A를 취해 A의 오파시티를 사용하여 입력 B에 오버레이하여 두 입력을 블렌딩합니다. 이 노드는 flaot4 RGBA 벡터를 취하며 RGB 채널에 알파 값이 이미 곱해져 있어야 합니다.
이미지를 클릭하면 확대됩니다.
아래 예시에서는 'Over' 머티리얼 표현식이 FG_Element
와 BG_Element
를 블렌딩합니다. 전경 오브젝트와 배경 플레이트를 블렌딩하는 데는 FG_Element
의 알파가 사용되었습니다.

머티리얼 파라미터 노출하기
스칼라와 벡터 머티리얼 파라미터는 머티리얼 파라미터(Material Parameters) 카테고리 아래에 있는 해당 패스의 '디테일' 패널에 자동으로 노출됩니다. 이를 통해 컴포지션을 더 쉽게 조정하고, 미세조정하고, 실험해 볼 수 있습니다.
이미지를 클릭하면 확대됩니다.
이 예시 머티리얼에서 블렌드(Blend) 스칼라 파라미터는 해당 엘리먼트의 '디테일' 패널에 자동으로 노출됩니다. 값을 조정하면 에디터에서 작업할 때 세팅을 빠르게 편집하고 실험해 볼 수 있습니다.


컴포짓 출력하기
출력(Output) 패스는 서로 다른 엘리먼트의 최종 결과를 외부 컨슈머에 라우팅하는 역할을 합니다. 각 엘리먼트는 출력 패스를 추가할 수 있는 공간을 갖추고 있습니다.
출력 옆에 있는 + 모양의 추가(Add) 버튼을 클릭하면 다음과 같이 선택 가능한 옵션이 주어집니다.

- 컴포지팅 미디어 캡처 출력
- EXR 파일 컴포지팅 출력
- 플레이어 뷰포트 컴포지팅 출력
- 렌더 타깃 컴포지팅 출력
가장 흔히 또는 주로 사용되는 출력은 미디어 캡처 패스를 사용한 캡처 카드입니다. 엘리먼트에 미디어 캡처 패스를 빠르고 간편하게 추가하려면 트리 패널 버튼을 사용하세요.

시퀀서를 허용하여 컴포지션 익스포트하기
다른 워크플로는 시퀀서를 통해 컴포짓 및 다른 레이어 또는 패스를 렌더링하는 것입니다.
이미지를 클릭하면 확대됩니다.
자세한 내용은 시퀀서를 사용한 리얼타임 컴포지팅을 참고하세요.