a를 더해주면, 사인파가 좌우로 수평 이동합니다. 즉, 시간을 기준으로 보면 “언제” 진동이 시작될지를 바꿀 수 있습니다.
머티리얼이 적용된 여러 메시에 서로 다른 a값을 주면, 전부 동시에 빛나지 않고 순차적으로 빛나거나, 일정한 차이를 두고 깜빡이게 만들 수 있습니다.
사인 그래프 전체를 b만큼 위아래로 수직 이동합니다.
y = sin(x) + 1 형태를 쓴다면, 결과값은 0 ~ 2 사이를 진동하게 됩니다. 이를 머티리얼과 연결해 빛의 세기를 조절할 수 있습니다. 이 경우 빛은 꺼지지 않고 부드럽게 깜빡이게 됩니다.
sin(x)를 곱셈으로 스케일링하면, 그래프의 최대, 최소값이 달라집니다.
A가 커질수록, 빛의 세기가 더 큰 범위에서 변동합니다. 즉, 반짝임이 좀 더 극적으로 바뀝니다. 반대로 A값을 작게 하면, 미세하게 깜빡여서 “잔잔한” 빛 변화를 줄 수 있습니다.
그래프에서 x에 B를 곱하면, 사인파의 반복 주기가 바뀌게 됩니다.
B가 커질수록 짧은 주기로 빠르게 깜빡이고, 작아질수록 깜빡이는 주기가 길어집니다. 예를 들어, “조명 깜빡임” 처럼 빠른 변화를 원하면 B 값을 크게 잡고, 서서히 변하는 효과를 원하면 B 값을 작게 조정합니다.
실습
sin 그래프로 빨간색으로 반짝이는 안전등에 사용할 수 있는 머티리얼을 만들어 보자.
1. 머티리얼을 생성한다.
2. 타임 노드를 생성한다
타임은 게임 내의 시간을 실시간으로 받아오는 노드이다.
3. 사인 노드를 생성하여 타임을 연결한다.
매 시간마다 시간 값을 사인 그래프에 넣는다.
4. 머티리얼 메인 노드의 이미시브 컬러에 연결한다.
5. 반짝이는 머티리얼에 색상을 넣어주기 위해 VectorParameter 노드를 생성한다.
파라미터 : 함수가 동작을 할 때 외부에서 어떠한 값을 받아서 동작을 할 필요가 있을 때가 있는데 외부에서 들어오는 어떠한 값이 파라미터이다. 실습에서는 머티리얼을 만들고 있는 내부에서 값을 넣어주고 있지만 다 만들고 나서는 외부에서도 이 값을 변경할 수 있도록 벡터 파라미터를 사용하는 것이다.
6. 색상을 변경하여 사인 노드와 곱하여 이미시브 컬러에 연결을 한다.
반짝이는 효과를 주는 것은 위 로직으로 끝나지만 위에서 배운 내용을 응용하여 그래프를 변경해보자.
7. x에 a를 더해주어 반짝이는 시작점을 조절하자. y = sin(x+a)
키보드의 1을 누른 상태로 마우스 왼쪽 클릭을 하면 상수를 입력하는 노드가 생성된다.상수를 파라미터로 변환한다.
8. x에 b를 곱하여 반짝이는 빈도를 조절하자. y = sin(x*b)
b 또한 파라미터로 변환하여 외부에서 값을 변경 가능하도록 함. 현재 2배로 빠르게 깜빡인다.
9. 현재 빨간색이 서서히 켜졌다 서서히 꺼지고 있는데 아예 꺼졌다 켜졌다를 하려면 Ceil(천장)노드를 이용을 한다.
10. sin(x)에 c를 곱하여 반짝이는 빛의 세기를 조절하자. y=sin(x)*c
전구의 형태를 보면 가운데에 광원이 빛을 발산하는 형태고 광원에서 조금 멀어지면 어두워지는 걸 볼 수 있는데 어두워지는 효과를 주는 로직을 구현해보자. 전구의 겉부분
11. Fresnel 노드와 Multyiply 노드를 생성하여 연결해준다.
Fresnel 노드 : 화면상에서 법선 벡터와 카메라 간의 각도 차를 바탕으로 표면 가장자리 부분이 두드러지도록 값을 계산해주는 노드 간단하게 머티리얼의 가장자리만 빛나게 해주는 기능을 가진 노드Fresnel 노드를 적용한 상태
12. 원 마이너스(OneMinus) 노드를 생성하여 연결해준다.
원 마이너스 노드 : 값을 반전 시켜주는 노드 위에서 프레넬(Fresnel) 노드를 사용하여 머티리얼의 가장자리만 빛나게 했지만 원 마이너스 노드로 반전시켜서 중앙부만 빛이 나게 하는 노드이다.원 마이너스 노드를 적용한 상태.
현재 처음과 별 다를 바가 없어보이는데 중앙부의 값이 너무 적어서 그런 현상이 나타남.
13. 중앙부의 값을 키워주기 위해 파워 노드를 생성하여 연결해준다.
Power 노드를 적용한 상태전체적인 로직
14. 실제 에셋에 적용하기 위해 머티리얼 인스턴스를 생성한다.
인스턴스를 실행하면 오른쪽의 파라미터 그룹에서 설정해놓은 파라미터들을 수정할 수 있다.
파라미터 값을 변경하면 인스턴스에서는 변경이 되지만 원본 파일인 머티리얼에서는 적용이 되지 않는다. 인스터스에서 색상을 파랑으로 바꿨지만 원본은 바뀌지 않은 빨강인 상태.
만든 머티리얼 인스턴스를 이용하여 건물 옥상에 안전등을 설치해보자
15. 빌딩 애셋을 실행하고 옥상의 안테나 끝에 안전등을 설치한다.
16. 안테나 끝에 구 형태의 스태틱 메시를 위치 조절하여 붙여주고 머티리얼을 적용한다.
머티리얼 인스턴스를 여러 개 만들어서 빌딩 애셋별로 다른 패턴으로 안전등을 적용 할 수 있다.
오른쪽 높은 빌딩에는 파란 불, 낮은 빌딩에는 빨간 불이 켜지는 모습.
인스턴스를 응용하여 어두운 맵에서 길을 안내하는 반짝이는 화살표도 만들 수 있다.
원뿔과 실린더 모양의 스태틱 메시를 붙여서 화살표 모양을 만들고 인스턴스를 넣어준다.
레벨에 배치하여 크기와 회전 값을 조절하여 길 방향 안내를 한다.
1주차때 만들었던 프로젝트에서 캐릭터를 마이그레이터를 통해 디자인 프로젝트로 가져오자.
배치를 하고 시작하면 캐릭터가 움직이지 않는데 디테일 - 빙의 에서 플레이어 자동 빙의를 Player 0으로 해야 실행 시 캐릭터가 움직인다.
맵이 너무 어두워서 잘 보이지 않을 때 캐릭터가 이동할 경로에 포인트 라이트를 배치해 두면 깔끔하다.