언리얼

[언리얼, 머티리얼] 공부 정리 - [공식 튜토리얼] 머티리얼 핵심 개념

Esunn 2022. 8. 8. 04:18

https://learn.unrealengine.com/course/2497973

 

Epic Games

 

www.unrealengine.com

언리얼 공식 튜토리얼 머티리얼 핵심 개념편을 보고 정리한 글이다.

 

텍스처

예제로 주어진 tga파일은 4개로 이루어졌는데 

같은 파일 이름에 D, N, M, R 이 붙어 4개로 구성되어있다.

 

D는 디퓨즈 텍스처, N은 노멀맵, M은 메탈릭, R은 러프니스이다.

 

텍스처 크기

이미지를 가져오려면 크기가 맞아야 함.(해상도)

2의 제곱으로 최대 8192 x 8192 까지 사용 가능하다.

16 x 4096등의 해상도도 가능

 

2의 제곱수가 아닌 해상도는 밉맵이 없음.

밉맵 : 동일한 텍스처의 작은 버전

 

텍스처 포맷

언리얼에서는 .PSD 또는 .TGA로 텍스처를 사용함 

PSD는 포토샵 포맷이다.

 

TGA 미압축이지만 알파채널이 지원됨 비트맵은 지원 X JPEG 비추천

PSD or TGA 추천

 

그러나 결국 엔진에서 파일 유형이 같아짐

 

파일 임포트 방법 3가지

콘텐츠 브라우저 - 특정 폴더에서 - 우클릭 임포트 - 텍스처 선택

콘텐츠 브라우저 위 임포트 버튼

파일 탐색기에서 드레그를 통한 임포트

 

선택 후 우클릭해 저장을 해줌.

 

텍스처 압축

임포트 하는 순간 압축됨

텍스처는 엔진에서 DXTC 또는 BC로 압축됨 ( 기본 압축 포맷 )

언리얼을 게임 외에 사용하는 경우 압축을 변경함

대부분 압축은 건들지 않음.

 

머티리얼 생성

예제 프로젝트에 있는 문 머티리얼 만들기

 

콘텐츠 브라우저 우클릭 - 머티리얼

 

머티리얼은 M_ 로 시작해서 그 뒤에 이름을 붙임

머티리얼 에디터 창에서 팔레트에 있는 표현식을 선택해 노드를 만들 수 있음.

이런 노드들을 표현식이라고 부른다.

 

처음에 있는 노드는 머티리얼 자체의 입력이다.

뷰포트 아래에는 디테일 창이 있다.

현재 선택한 것에 대한 것이 나온다.

 

아래에는 통계 패널이 있다.

 

머티리얼 만들기

텍스처들을 머티리얼로 끌어와서 노드를 통해 연결시켜주는 작업을 한다.

 

디퓨즈 텍스처를 베이스 컬러로 설정, 메탈릭과 러프니스, 노멀은 각각 해당 노드에 설정.

Alt + 클릭으로 노드 끊기 가능.

 

완성된 머티리얼을 셰이더로 컴파일해야 한다.

적용을 클릭해 컴파일해줌. (저장은 적용과 같이 되니 저장을 추천)

 

완성된 머티리얼과 적용한 모습

 

PBR 머티리얼

PBR 머티리얼이란?

Physical Based Rendering의 약자로 물리 기반 렌더링이라는 뜻.

실제 빛의 작용을 최대한 비슷하게 계산함.

기본적으로 콘텐츠 제작이 쉬워지고 다양한 사용 환경에서 일관된 작동 방식을 보임.

 

PBR 셰이딩을 제어하는 것 3가지

 메탈릭, 스페큘러, 러프니스

거의 모든 머티리얼이다. 통합 셰이딩이라 부름(Unified Shading)

 

PBR 머티리얼 제작

새 머티리얼

 

Constant3Vector 표현식 추가, Constant 추가

숫자를 누른 채로 아무 곳이나 누르면 같은 노드를 만들 수 있다.

 

메탈릭, 스페큘러, 러프니스는 0과 1 사이에서 동작한다.

스페큘러의 기본값은 보통 0.5이다.

러프니스도 마찬가지 메탈릭은 0.

 

러프니스는 가장 중요하면서도 가장 흔하게 사용된다.

PBR은 월드 내의 거의 모든 것이 최소한 약간씩은 반사하는 특징이 있다는 것으로 가정.

모든 머티리얼이 조금씩 반사함.

러프니스가 1이 되면 이런 반사가 없어짐.

 

스페큘러는 사용되지 않는 경우가 많다.

0으로 설정하면 반사를 포함해 빛이 비치는 모든 것이 사라짐.

 

메탈릭은 기본값이 0이다. 

1로 갈수록 금속처럼 보인다.

 

메탈릭과 러프니스 위주로

레벨에서도 확인해보자.

 

 

예제 분석

메탈릭이 아닌 것은 검정(0), 메탈릭인 것은 흰색(1)으로 bool을 통해 2가지로 표현

러프니스는 나무의 질감을 표현을 위해 나무가 손상된 부분에 표현을 줌

 

 

머티리얼 표현식

표현식은 머티리얼 에디터에서 노드이다.

 

자주 사용하는 머티리얼 표현식

Texture Sample (텍스처 샘플) : 텍스처를 저장하여 머티리얼에서 사용

 

Constant (상수) : 중요, 1, 2, 3, 4 등등 있고 2와 4는 자주 사용하지 않는다. 단일 값으로 존재

    1은 회색조(흑백을 나타냄 - 밝기 1 이상 숫자도 가능) 3Vector은 실제 색을 의미

 

Texture Coordinate (텍스처 좌표) : UTiling, VTiling 존재 텍스처 스케일을 나타냄 

    텍스처 샘플의 UV입력에 연결 텍스처 샘플 - 우클릭 - 노드 프리뷰 시작

    Panner : 추가 가능 텍스처가 움직이게 됨

 

Multiply : 두 가지 곱하기 가능, 특정 노드에서 우클릭 - 노드 프리뷰를 통해 미리 보기 가능

 

Lerp (선형 보간) : LinearInterpolate의 줄임말이다. A와 B를 기준 C(알파)에 따라 블렌딩 한다.

 

이 7가지 표현식만 써도 충분히 강력한 기능을 낼 수 있다.

Texture Sample, Constant, Constant3Vector, TextureCoordinate, Panner, Multiply, Lerp

 

 

머티리얼 제작

위 표현식을 기반으로 예제 머티리얼 제작

바위와 잔디 블렌딩

 

Lerp : 검정 부분에 A 사용 포토샵 레이어와 비슷하다.

 

주어진 노말맵과 디퓨즈를 이용해 바위, 잔디, 물웅덩이를 표현함

메탈릭과 러프니스도 Lerp를 이용해 알파를 기준으로 나눠줌.

 

완성된 머티리얼과 적용한 모습

 

머티리얼 입력

커튼과 스포트 라이트 머티리얼 제작

흔들리는 효과와 빛나는 효과 

 

머티리얼 입력의 활성화 비활성화 여부는 머티리얼 세팅에 따라 달라짐.

 

이게 머티리얼 입력창이다.

 

Pixel Depth Offset :특수한 상황에서만 이용됨

 

Ambient Occlusion : 주변광을 가리는 효과를 머티리얼에 적용, 모든 상황에 작동 X

    잘 쓰이지 않음.

 

스포트 라이트

Emissive Color : 머티리얼이 라이팅에 영향받지 않는다는 뜻, 이미시브 컬러에 입력된 내용에 따라

 

    Constant3Vector입력 값을 높이면 그 색으로 빛나게 됨.

    색 선택 툴로 작업을 하면 값이 최대가 1인데 이보다 높아지면 더 빛나므로 직접 값을 조정하는 것이 좋음.

    램프, 화염 등 다양하게 사용 가능.

   

 

커튼 

노이즈 텍스처 이용

 

World Position Offset : 본질적으로 엔진 내부에서 버텍스 셰이더 사용하여 모델로 오프셋

 

    Constant3Vector을 입력하면 RGB가 아닌 월드의 X, Y, Z를 나타냄

    모델의 실제 오프셋 적용 머티리얼을 나타내는 구체가 이동함을 알 수 있다.

 

커튼이 전체적으로 움직이게 되는데 위쪽은 안 움직이게 하기 위해서는

버텍스 컬러를 이용.

 

대부분의 곳에서 이 기능을 쓸 수 있다. 잔디, 커튼, 물 등등 여러 방면에서 사용 가능.

그러나 월드 포지션 오프셋은 콜리전을 지원하지 않는다.

충돌 처리가 필요한 경우에는 사용하면 안 된다. 시각적 애니메이션 작업에 쓰는 게 좋다.

 

 

머티리얼 프로퍼티

뷰포트 밑에 있는 디테일 패널에서 확인 가능.

 

Shading Model : Unlit 빛을 발산하지만 받지는 않음(램프, 마법 효과 등등에 사용 가능) 

 

Opacity Mask (오파시티 마스크) 이용 목표

Blend mode : Masked - 완전히 보이거나 보이지 않는 모든 오브젝트에 이용. 텍스처의 알파에 알파 출력으로 연결

    기본적으로 반투명의 단순화된 형태이지만 마스크는 페이드 지원 X - 한 값에서 다음 값으로 부드럽게 전환 X

    있거나 or 없거나 - 사슬 울타리, 초목, 잔디 등에 좋음 Translucent 렌더링보다 최적화 잘됨.

 

Two Sided (양면) : 유리, 초목, 마법 효과 등에 사용하면 좋음.

 

유리 머티리얼 제작

Translucent 사용 : Opaycity (오파시티)가 있음. 반투명하지만 빛의 반사가 없음.

    언리얼은 디퍼드 렌더러이다. 

 

Translucency : 디테일 패널의 설정이다. - Screen Space Reflections 활성화

    Lighting Mode - Surface Forward Shading로 변경(가장 부담이 크다) 메탈릭, 러프니스 등의 옵션이 활성화됨

 

이렇게 하면 렌더링이 매우 오래 걸린다. 언리얼에서 가장 복잡하고 값비싼 유리의 형태이다.

유리에 관련된 부분은 잘 찾아보고 쓰자.

 

 

마무리

이 강의에서는 머티리얼 에디터만 다룸. 툴셋도 있다.

머티리얼 워크플로 과정에서 다음 과정을 다룸.

 

 


후기

머티리얼에 대한 첫 강의였는데 정말 배운 점이 많고 머티리얼에 기본적인 내용에 정말 도움이 됐다.

언리얼에서 머티리얼이 어떤 식으로 작용되고 편집하는지 잘 알 수 있다. 꼭 추천하고 싶은 강의다.