본문 바로가기
대학생활/수업

콘텐츠프로그래밍2 6주차 - 스페큘러 라이트

by se.jeon 2024. 10. 23.
728x90
반응형

지난 시간의 복습

L : Light

N : Normal

dot = Multiply or dot Product

벡터와 벡터의 내적 결과 = 스칼라

 

디퓨즈는 들어가면 골고루 나온다. 따라서 빛의 방향과 노말이 이루는 각도(cos thetha)만 계산하면 된다.

스페큘러는 반사가 된다는 특징이 있다. 자동차의 반사를 생각하면 된다.

현실 세계에서는 눈, 관찰자가 있지만 가상세계는 카메라, 뷰디렉션, 뷰벡터를 사용해야 한다.

 

 

기준을 세워두면 크기만 곱하면 된다.

 

코사인 세타는 어떻게 구할 수 있을까?

벡터 N과 L을 내적하면 둘의 크기가 1이기 때문에 코사인 세타를 구할 수 있다.

따라서 (L dot N) dot N

 

 

A의 역벡터를 구한 후 A의 역벡터와 B를 더하면 A에서 B로 가는 벡터, 파란 선을 구할 수 있다.

 


마이너스를 억지로 하면 계산이 복잡해지기 때문에

그래픽스에서는 거꾸로 만든 L벡터를 정의한 후, 반대로 내적을 한다.

n벡터를 구한 후 내적한다.

 

 

R은 어떻게 구할까

= n + P

= n + n - L

= 2n - L

= 2(cos theta dot N)

= 2((L dot N) dot N)

= 2(L dot N) dot N

= 2(N dot L) dot L - L

 

퐁 스페큘러

 

반사벡터와 뷰 벡터의 내적

제작 실습 진행 : 기본 벡터, Specular

언리얼 엔진은 기본적으로 연산처리를 해 주는 것이 있어 실습할 때 머티리얼을 Unlit 으로 만들고 제작해야

우리가 원하는 값을 제대로 볼 수 있다.

 

 

네임드를 사용해서 관리 해 주자.

네임드를 추가하여 이후 변수처럼 사용한다.

다시 연산할 필요 없이 연결해서 사용할 수 있다는 이점이 있다.

 

 

 

 

 

스페큘러의 세기는 Power로 조절 할 수 있다.

제작 실습 : 하프램버트 복습, Saturate

제작 실습 : 블린-퐁 계산식

 

레벨 블루프린트는 삭제 처리.

 

 

Sky Atmosphere과 Directional Light를 추가 해 준다.

Directional Light의 intensity를 0.0001lux로 설정 해 주어 어둠시야를 만들어 준다.

에디터에서 ctrl + L을 통해 라이트를 바꿔줄 수 있다.

 

 

지난 시간에는 레벨 블루프린트를 사용해서 다이나믹 인스턴스를 사용했다.

하지만, Directional Light의 Atmosphere and Cloud 태양빛 정보를 넘기려고 다이나믹 인스턴스를 사용하지 않아도 된다.

 

 

 

들어오는 빛, 스스로 빛나는 양 보다 밝을 수는 없다.

방금 만든 스페큘러와 같은 것들을 하나하나 조절해서 밝기를 전반적으로 통일하는 것은 불가능하다.

원하는 사실적인/ 아트적으로 조화로운 장면들을 연출하기 위해 물리 기반 렌더링을 사용하는 것.

 

스페큘러는 한 가지 요소만 있는 것이 아니다. 러프니스, 메탈릭, 프레넬은 괜히 만들어진 것이 아니다.

 

러프니스와 메탈릭이 의미하는 것은 무엇일까?

거칠기는 반사에 영향을 미친다. 대신, 디퓨즈가 강하다.

메탈 재질과 같은 경우 램버트가 별로 없고, 스페큘러가 강한 반사가 심한 형태.

 

프레넬은 무엇일까?

영상 시청 - What is Fresnel? (Everything has it)

https://youtu.be/CkOwvrBzu9I?si=FoGnR4dOuW-xU40L

 

물은 투명하기 때문에 바로 밑이 보인다.

반사가 아니라, 투과의 개념.

투명하기 때문에 투과해서 볼 수 있지만, 가장자리로 이동하여 각도를 비스듬히 하면 반사가 일어난다.

 

프레넬의 개념은 물만 가지고 있지 않다. 모든 물체는 프레넬을 가지고 있다.

금속과 같은 경우, 프레넬이 강하게 일어난다.

책상과 같은 경우 반사가 된다고 느끼지 않을 수 있지만 멀리서 보면 반사가 일어나고 있다.

벽돌조차도 프레넬이 일어난다. 그 정도와 강도가 미세할 뿐이다.

 

참고하기에 좋은 자료

https://lifeisforu.tistory.com/381

 

[ PBR 이란 무엇인가 ] 15. [ 번역 ] 모든 것은 프레넬을 가집니다

주의 : 이상한 내용이 포함되어 있을 수 있으므로 이상하면 참고자료를 확인하세요. 주의 : 번역이 개판이므로 이상하면 원문을 확인하세요. 주의 : 허락받고 번역한 것이 아니므로 언제든 내려

lifeisforu.tistory.com

 

제작 실습 진행 : 플레넬

 

테두리와 같은 효과를 줄 수 있다.

 

 

1-X를 통해 반전시켜줄 수 있다.

 

 

Power를 통해 세기를 조절 해 줄 수 있다.

 

 

기존의 노드와 연결하여 테두리가 빛나는 형태의 Rim Lighting을 해줄 수 있다.

 

프레넬을 복제해서 M_BandLambert를 제작

이를 통해 툰 쉐이딩을 흉내 내 볼 것이다.

HalfLambert를 변형 해 보자.

 

 

4단계로 나눠서 계단 형태로 만들 예정.

0.5를 기준으로 할 경우, 다음과 같이 보여지게 된다.

 

 

0과 1로 나누어져 있는 것으로 생각하면...

0이면 A, 1이면 B -> 선형 보간식 Lerp를 사용할 수 있다.

 

 

이를 통해 정도를 조절 해 줄 수 있다.

융합을 하여 다음과 같이 활용이 가능하다.

면을 분할 해 보자.

 

 

Power나 Lerp를 사용하여 명암의 범위와 강도를 조절한다.

 

 

M_BandLambert를 복사하여 M_BandLambertOutline을 제작 해 보자.

 

과제

오늘 만든 Material을 채색 해 보자.

색상을 곱해주는 형태로 할 수 있다.

 

이미시브 영역과 같은 경우... 언리얼 엔진은 포스트 프로세싱이 먹혀 있어 세게 곱해주면 스스로 빛을 내뿜는다.

1을 넘어가는 순간 스스로 발광한다고 보면 된다. 후처리에서 빛이 번지게 되는 것.

 

색칠한 결과물을 제출하는 것이 이번 주 창작 과제이다. 예뻐야 함.

과제

https://se-jeon.notion.site/6-12e4065cf2bc80b28d39fcfa3751b715?pvs=4

 

6주차 과제 | Notion

과제

se-jeon.notion.site

728x90
반응형