본문 바로가기

Graphics/Unreal

노이즈 기반 언리얼 연기 메테리얼

(Unreal 5.1.1 버전 사용)

 

개요

개인 작업 도중, 연기 효과 표현을 어떻게 해야 할까 고민하던 중에 아래 영상을 보고 영감을 받았습니다.
애프터이펙트로 만드는 연기기는 하지만, 원리는 동일하니까요.

 

 

영상의 작업 과정을 요약하자면, 크게 '노이즈 생성',  '노이즈 시드값 애니메이션', '노이즈 알파 수정', '마스크 적용' 의 4가지 단계로 구분할 수 있겠습니다.

단계를 따라서, 메테리얼을 만들어 봅시다.

 


 

노이즈 생성 및 애니메이션

 

노이즈 메테리얼

 

노이즈 생성 기본 노드 구조

 

먼저 노이즈의 위치값으로 들어갈 UV 값과 위치, 크기를 조절할 파라미터 값들을 패너로 연결해줍니다.

그 다음, 앞선 'Create an Atmospheric Smoke Effect' 영상에선 Evolution 값으로 노이즈에 추가적인 애니메이션을 더해줬는데, 이를 언리얼에서 구현하기 위해서 노이즈의 z 포지션 값을 Time 값과 속도 파라미터로 움직여줍니다. 이렇게 노이즈의 z 포지션 값을 조정하게 되면, 상하좌우(x, y)로 움직이지 않는 상태에서 노이즈의 형태가 변화하게 됩니다.

 

이는 화면상에 표시되는 2차원 노이즈는 3차원 노이즈의 단면이기 때문입니다.

아래 이미지 좌측의 3차원 노이즈를 칼로 위와 아래가 나뉘도록 절반 자른 뒤, 그 단면을 평면으로 바라본다면 흔히 볼 수 있던 텍스처 형태의 2차원 노이즈가 되겠죠. 칼을 조금 더 위로 움직여서 한번 더 자른 뒤 그 단면을 이전에 자른 단면과 비교해본다면, 노이즈의 형태는 다를 것입니다.

단면이 노이즈의 위 아래로 (z축을 따라) 움직이면서 노이즈의 형태도 변화하게 되는 것 입니다.

 

3차원 노이즈(좌)와 2차원 노이즈(우)

 

언리얼 엔진의 노이즈 메테리얼 노드에 대한 추가적인 설명은 아래 영상과 언리얼 포스트를 추천드립니다.

 

 

Getting the Most Out of Noise in UE4

UE4 has had material based procedural noise for some time now, but most users have had to limit their usage of it due to its high performance cost. We have addressed these needs in Unreal Engine 4.13, and here's how you can get the most out of it. 

www.unrealengine.com

 


 

노이즈 조정

노이즈를 만들었으니, 완성에 거의 다다랐습니다. 이제 만들어낸 노이즈를 연기처럼 보일 수 있게 최종 컬러값의 명도와 대비를 조절해 줄 차례입니다.

 

명도 및 대비 조절 노드 구조

 

노이즈 결과 값의 명도 및 대비를 조절하는 노드의 구조는 위와 같습니다. Brightness 파라미터 값을 변경하면 노이즈의 전체 명도 값이 조절되고, Contrast 값을 변경해 대비를 조절할 수 있습니다.

잠시 포토샵으로 넘어가서 간단하게 풀어 보겠습니다.
Brightness 파라미터는 커브의 높낮이를 조절합니다. 아래 예시에서 볼 수 있듯이, 커브의 사선이 위로 움직이면 이미지는 밝아지고, 아래로 움직이면 이미지는 전체적으로 어두워지게 됩니다.

 

Brightness 값 변경 (커브의 높낮이 변경)

 

Contrast 파라미터 값을 변경하면, 커브의 기울기가 가파르거나 완만해지면서 대비가 변화하게 됩니다.
명도와 대비 조절에 대해서는 추후 다른 포스트로 조금 더 자세하게 다뤄보겠습니다.

 

Contrast 값 변경 (커브의 기울기 변경)

 


 

마스크 적용하기

 

마스크 노드 구조

 

마스크 텍스처를 별도로 만들어서 적용해도 되지만, 조금 더 편리하게 조절하기 위해서 UV기반으로 마스크를 생성하겠습니다. UV의 y값을 마스크의 알파값으로 사용하는 방식입니다.

마스크의 스케일을 조절할 수 있게 MaskScale 파라미터를 UV에 곱연산해주고, CustomRotater 노드로 마스크를 회전해 줍니다. 마스크를 수직이동만 가능하게 하기 위해서 Roatation Center 의 x 값에 상수를 넣어두었습니다.

 


 

최종 결과

위의 모든 단계들을 따라 만들고, 색상 값까지 적용한 모습입니다.

 

연기 메테리얼 동작 예

 

노이즈 기반 연기 메테리얼 전체 노드

 


 

이미지 출처

2차원 노이즈
3차원 노이즈

 

 

 

'Graphics > Unreal' 카테고리의 다른 글

언리얼 LED 화면 효과 메테리얼 만들기  (0) 2024.04.15