2024. 7. 15. 16:44ㆍ게임개발
Dissolve란?
이런 것이다.
흔히 게임 내에서 오브젝트가 파괴되거나 적이 사망하여 소멸될 때 등등
사용처가 굉장히 많고, 꽤 만들기도 간단한 기능이다.
함 만들어보자
준비
우선 Unlit으로 쉐이더그래프를 하나 만들어주고 (Lit 해도 된다)
그래프 세팅은 Surface Type만
Transparent로 바꾸어준다
Transparent가 무엇인지는 아트 직군이거나
포토샵을 좀 다루어 보았다면 알 것이다.
이것은 텍스쳐의 알파값이 0일 경우
그 픽셀을 투명하게 처리할 것인지
검은색으로 처리할 것인지를 정하는 것이다.
따라서 우리는 Dissolve 될 때 검은색이 되는 게 아니라
투명하게 안 보여 야하기 때문에
Transparent를 선택해 준다
3D에서 쉐이더그래프를 만들었다면
Fragment자리에 BaseColor와 Alpha를 제외한
다른 노드블록이 들어가 있을 수 있는데
우리는 이것들만 쓸거라 다 지워줘도 상관없다.
원리
쉐이더그래프는 Simple Noise라는 노드를 지원한다
이는 간단하게 UV와 scale을 입력받아
랜덤 한 값을 무작위 배열시켜
ValueNoise라는 것을 만든 것이다
이름에 걸맞게 간단하게 노이즈를 뽑아주는 노드이고
많은 쉐이더 그래프에서 이를 사용한다
이 노드의 활용도는 꽤 다양한데
보통 그냥'랜덤'이라는 키워드가 필요하면
노이즈를 쓴다고 보면 된다.
사실 간단한 Dissolve자체는 노드 두 개로 구현가능하다
저 Step이라는 노드만 붙여주면 벌써 의도대로 동작한다
원리를 알았으니 한번 제대로 만들어보자
만들기
우선 필요한 프로퍼티들부터 만들어준다
대충 이렇게 세 개만 만들어놓고
DissolveHeight 같은 경우에는
Mode를 Slider로 바꾸어주면
최대 최솟값을 제한하고, 에디터에서 슬라이더로
값을 간단하게 조작할 수 있게 된다
그리고 이렇게 연결하여 저장하고
메테리얼을 하나 만들어 테스트해 보자
메테리얼을 만들 때
그냥 Create> Material 해서
이렇게 찾아서 적용시킬 수도 있지만
더 간단한 방법으로는
쉐이더그래프 파일을 우클릭하고
Create> Material을 하면 바로 만들어진다
약간의 꿀팁이었고 다시 테스트로 돌아와서
오브젝트를 하나 만들어 아까 만든 메테리얼을 적용시킨다
그리고 아래의 슬라이더를 한번 움직여보자
근데 뭔가 심심하지 않은가?
뭔가 타들어가면서 사라지는 느낌을 추가로 주고 싶다.
꽤 간단한데
이 원리를 이용해서 아우트라인을 만들어줄 것이다.
에디터 창으로 가서
일단 Float로 Outline의 굵기로 쓸 Outline에 적용할 색에 해당하는 Color프로퍼티를 만들어준다.
혹시 빛나게 하고 싶다면 노드 세팅에서 Mode를 Default에서 HDR로 변경해 주면 된다.
일단 외곽선에 해당하는 부분을 먼저 빼주자면
이와 같은 원리로 Outline을 따왔다.
DissolveHeight에 OutlineWidth를 더하여
Step에 오프셋을 줘서 더 큰 노이즈를 만들고
거기서 작은 노이즈를 빼서 그 외곽선만
가져왔다.
이제 기존 Base Color노드에 붙어있던 Color를 떼서 작은 노이즈에 곱해주고
OutLine에 OutlineColor를 곱하여 둘을 더해주면 저런 흰색과 OutlineColor색에 해당하는
아웃라인이 보일것이다. (임의로 빨간색으로 설정했다)
그리고 알파에는 큰 노이즈를 넣어주는데 왜냐하면
작은 노이즈를 넣으면 Outline부분이 안보이고 Outline을 넣으면 Outline만 보이기때문에
두 영역의 크기를 모두 포함하고있는 큰 노이즈를 넣으면 둘다 보이게 된다.
이제 저장하고 나가서 색깔 설정하고 한번 DissolveHeight를 조절해보자
아 잘된다~
노드 정리