본문 바로가기

언리얼/머티리얼

2024 언리얼 엔진 실무 기반 교육 과정 34일차

  • 툰쉐이딩
  • 아웃라이너
  • 포스트 프로세스를 사용한 툰쉐이더(Blinn)
  • phong
  • Detect edge
  • 포스트 프로세스 - 비네트

<툰쉐이딩>

- 머티리얼 생성

- 결과노드 디테일 > 셰이딩 모델을 unlit으로 변경

- Sky Atmosphere Light Direction 노드 생성

- Dot 생성

- Dot의 B에서 핀을 뽑아 Vertex Normal WS를 생성

- Dot에 Multiply, Add순으로 연결하고 각각 0.5를 더하고 곱해준다

- toon 텍스쳐의 설정에 들어가 압축 세팅을 User Interface 2D로 바꿔준다

- 디테일 > 텍스쳐 > sRGB 비활성화

- Add에 Append를 달아주고 파라미터도 함께 달아준다

  > 이 파라미터로 툰 쉐이더를 조절할 수 있다.

- Toon 텍스쳐를 Append 와 연결하고 Multiply를 연결한다.

- B에 색상노드를 연결해 색을 곱해준다

- 이미시브 컬러와 연결

= 톤이 나뉜 머티리얼

* 파라미터를 만진 모습

 

* 노드 기능 정리


아웃라이너

- Pixel Normal WS 생성하고 Dot과 연결해준다.

  > Vertex Normal은 면의 개수에 영향을 받기 때문에 면의 영향을 받지 않는 Pixel Normal을 사용

- Camera Vector WS를 B에 연결

- Dot에 1-x 노드 연결

= 중앙이 검은색인 머티리얼

 

- Dot에 If를 연결

- 콘스탄트를 3개 만들고 각각 0.15, 1, 0을 입력한다

- 0.15를 B에, 1을 A>B, A==B에 연결

- 0을 A<B에 연결한다.

= 아웃라인 생성된 모습 (0과 1로 이루어짐)

- Multiply로 툰셰이더와 아웃라인을 연결한다

= 아웃라인이 생김

 

* 큐브모양일시 넘어가는 면도 검은색이 됨

  > 포스트 프로세스를 사용하여 만들면 해결할 수 있음


포스트 프로세스를 사용한 툰쉐이더

- Sky Atomo sphere light Direction 생성

- Add 연결 후 B에 Camera vector 생성

- Add에 Normalize 연결

- Normalize에 Dot을 연결하고 Dot의 B에 Pixel Normal 연결

= 이런 모습

- Dot에 Saturate 연결 후 Power 연결

- 파라미터도 함께 달아준다

- Multiply를 연결하고 콘스탄스 연결

= 흰 부분이 하이라이트가 될 부분

 

- Round를 달아주고 Add연결, B에는 위에서 만든 텍스쳐를 연결한다

- 아웃라이너 노드와 Add를 Multiply로 곱한다

= 하이라이까지 생긴 툰셰이더

 

* 노드 기능 정리


Phong

= Blinn과 다른 느낌의 반사

= 빛맺힘이 림라이트 같은 질감

 

* 노드 기능 정리


- Add, Multiply, Multiply를 순서대로 생성한다

- Add의 B에 툰 텍스쳐를 연결

- Multiply의 B에 툰 텍스쳐의 색상 연결

- Multiply2의 B에 위에 제작한 If 노드 연결

- Switch Param을 생성하여 위의 Multiply2와 툰셰이더 + 아웃라이너 Multiply를 연결

  > Multiply2를 False에, 툰세이더 + 아웃라이너를 True에 연결

- Switch를 이미시브에 연결

 

 

<Detect edge>

- 머티리얼 생성

- 머티리얼 도메인을 Post Process로 변경

- Screen Position 노드 생성

- View Size 노드 생성

- 2콘스탄트 4개를 만들고 각각 Multiply 연결

- Multiply의 B에 각각 콘스탄트 1을 연결한다

   > 외각선의 굵기

- Divide를 4개 생성하고 Multiply를 A에, B에 View Size를 연결

- Add를 생성하고 A에 Screen Position을 A에 연결한다

- 위에걸 4개를 만들고, Divide를 Add의 B에 연결

* 중간 노드 정리

- Scene Texture 생성

- Scene Texture의 씬 텍스쳐를 World Normal로 변경

 

- 포스트 프로세스 볼륨 생성

- 포스트 프로세스 볼륨 > 디테일 > 렌더링 기능 > 포스트 프로세스 머티리얼

- + 버튼을 눌러 배열 추가

- 추가된 배열에 에셋 레퍼런스 선택 

- 만든 머티리얼을 추가한다

= 노말처럼 보임

  > 예시를 위해 Scene Texture의 Color를 이미시브에 연결함

 

- 머티리얼로 돌아와 포스트 프로세스 머티리얼의 블렌더블 위치를 Before Tonemapping으로 변경

- Add에 Scene Texture를 각각 UVs에 연결

- Scene Texture의 Color에 multiply를 각각 A에 연결하고 B에 0.5를 입력

- Multiply에 Add를 연결하고 Add의 B에 0.5를 입력

- Subtract를 생성하여 Add를 각각 두개씩 묶어준다

- Subtract에 각각 Abs를 연결하고 Add로 합쳐준다

- Add를 이미시브에 연결

= 알록달록한 라인 생성

- Split Components를 생성해 Add와 연결

- Max를 두개 생성하여 하나엔 R-A / G-B를 연결하고, Max-A, B-B를 연결한다

= 흑백으로 변함

- Smooth Step을 생성하고 콘스탄트 2개 생성 후 하나엔 0.2, 나머지 하나엔 0.5 입력

- Add로 0.2와 0.5를 더해준다

- Smooth Step의 Min에 0.2를 Max에 Add를 연결

- 위에 Split Components를 연결한 Max를 Value값으로 사용한다

  > Min 값보다 작으면 0이되고, Max값보다 크면 1이 된다

= 흰색과 검은색으로 딱 나뉨

- Scene Texture 생성

- Scene Texture의 씬 텍스처를 Post Process Input 0으로 변경

- Lerp와 4백터를 생성하여 Lerp의 A엔 Scene Texture를, B엔 백터 4를 연결한다

  > 백터 4가 아웃라인의 색을 정함

= 기본 뷰포트에 아웃라인이 생김

- Smooth Step에 Multiply를 연결하고 B에 0.2를 더해준다

- 위에서 만든 Multiply를 Lerp의 Alpha값으로 사용한다.

- 초반에 만든 Add에 Scene Depth를 연결한다

-Scene Depth를 Subtract를 만들어 AB를 각각 묶어준다

- Subtract에 각각 Abs를 연결하고 Add로 더해준다

- Scene Depth 맨 위 두개를 Max로 연결

- 세번째 Scene Depth와 첫번째 Max를 Max로 연결

- 네번째 Scene Depth와 두번째 Max를 Max로 연결

- Add와 Max를 Divide로 연결

- Divide에 Saturate 연결

- 위에 만든 Smooth Step을 복사 붙여넣기 하고 Saturate를 Smooth Step의 Value 값으로 사용한다

- 위에 있는 Smooth Step과 밑에 있는 Smooth Step 연결

- 연결한 Max값을 텍스처의 Lerp에 연결되어있는 노드들을 제거하고 연결

제거된 노드

= 내부 색상 유지한채 외각 라인 생성

 

* 노드 기능 정리


포스트 프로세스 비네트

- 머티리얼 생성

- 머티리얼 도메인을 Post Process로 변경

- Tex Coord 생성

- Multiply 2개 생성하고 위에는 A에 바로 연결, 아래는 1-x를 거치고 A에 연결

- Multiply의 B값에 각각 콘스탄트 5를 연결

- Multiply에 Saturate를 각각 연결

- Saturate를 Multiply로 곱해준다

- Multiply를 Mask 기능을 사용해 각각 R과 G의 값으로 나눠준다

- Mask G와R을 Multiply로 합치고 Saturate를 연결한다.

- Saturate와 이미시브컬러를 연결

 

= 비네트 효과

 

* 노드 기능 정리