반응형

 

 

 

클로킹 이펙트 튜토리얼 첫 번째는 일명 Dissolve이펙트로 발밑부터 머리끝방향으로 사라지는 것을 구현해보겠습니다.

 

 


기본 세팅

우선 새 마테리얼을 생성한 후 Blend Mode를 Masked로 설정합니다, 

 

Masked는 다른 명칭으로 CutOut이라고 하며 위 결과물 처럼 텍스처를 잘라 낼때 사용 합니다.

 

 


Opacity Mask

TexCoord에서 G채널만 가져온 채로 if문으로 위 처럼 노드를 구현했습니다.

 

그 결과 위 처럼 오파시티 마스크를 사용하는 것을 확인 할 수 있습니다, 하지만 마네킹모델에 마테리얼을 적용하면 원하는 결과가 나오지 않습니다, 그 이유는 TexCoord로 UV좌표를 사용하기 때문에  모델의 UV를 핀 기준으로 마스킹되기 때문입니다.

 

그래서 모델의 UV기준이 아닌 월드 좌표 기준으로 UV를 사용하게 만들어야 합니다.

 

 

 


월드 좌표 기준 UV

이 기능은 따로 마테리얼 펑션으로 제작해 보겠습니다, 신규추가 -> 머티리얼 & 텍스처 -> 머티리얼펑션을 생성합니다.


위 처럼 절대 월드 위치 노드를 생성합니다.

 

절대 월드 위치 노드의 디테일 설정에서 Shader Offset 설정을 Excluding Material Shader로 설정합니다.

 

 


TransformPosition 노드를 생성합니다.

 

디테일 설정에서 Absolute World Space로 설정합니다.

위 노드는 월드 좌표계를 로컬 좌표계로 변경하는 역할을 합니다.

 

 


Custom 노드를 생성합니다.

 

디테일 설정은 일단 Output Type을 Float3로 하고 Description은 해당 노드 이름입니다, 

 

GetPrimitiveData(Parameters.PrimitiveId).LocalObjectBoundsMin.xyz

코드는 위 한 줄입니다, 오브젝트 바운드의 최소값(하단) 좌표를 출력합니다.

 

 

커스텀 노드를 하나 더 생성하고 코드 제외하고 위와 똑같이 세팅합니다.

GetPrimitiveData(Parameters.PrimitiveId).LocalObjectBoundsMax.xyz

이번 노드에 들어가는 코드입니다, 이전 코드와 비슷하지만 최대값(상단) 좌표를 출력합니다.

 

 

 


만든 노드들을 위 사진과 같이 세팅합니다,

Transform Position노드까지 작업이 로컬 좌표를 가져오는 작업이고 이 좌표를 오브젝트의 중앙을 기준으로 합니다,

그래서 Min값을 빼서 발밑(하단)으로 좌표를 맞춘다음에 Min, Max값을 뺀 값을 나눠서 월드 기준 UV값을 제작합니다.

 

Float3 출력값중 Z축을 출력한 결과 입니다.

 

 

아까 TexCoord노드 대신 새로 만든 마테리얼 펑션을 설치했습니다.

 

그 결과 원하는 데로 오파시티 마스크가 잘려나가는 것을 만들었습니다.

 

 

 


Dissolve 효과 만들기 - 띠 만들기

모델을 잘리게 만드는 것은 완성했으나 이번엔 멋있데 잘리게 만들어야합니다, 위 처럼 잘리는 부분에 특수한 효과를 넣어 보겠습니다.

 

우선 위 처럼 뺄셈으로 간단하게 프로그래스 기능을 만듭니다.

 

Power를 통해 소스의 강도를 조절 할 수 있게 만들어 주고 Clamp를 통해 값을 0~1로 고정합니다.

 

이전에 만든 노드를 똑같이 한개 더 만들고 Amount 값과 차이나는 변수를 하나 만들어서 두 소스를 빼서 띠형태의 소스를 만듭니다, 이제 저 띠 값에 Dissolve효과를 내는 텍스처와 합성해서 효과를 완성할 것 입니다.

 

모델에 적용한 모습.

 

 

아래 정렬된 노드를 마스크 핀으로, 뺀값을 이미시브 컬러 핀으로 세팅합니다.

 

 

 


Dissolve 효과 만들기 - 텍스처 효과 추가

텍스처는 위 두 개를 사용했습니다.

 

노드는 위와 같이 작성했고 우측에 Add이후에 이어진 곳은 원래 Mask(B)와 연결되어 있던 곳에 연결합니다.

 

이제 그럴듯하게 쉐이더가 표현되고 있습니다.

 

 

 


Dissolve 효과 만들기 - 다듬기

Amount 값이 0인데도 불구하고 Emission의 Glow효과가 위로 올라오고 있습니다, 

 

 

Power노드를 이용해서 낮은 값을 제거 죽여줍니다.

 

이미시브 컬러를 설정할 수 있게 float4를 곱하는 노드를 추가합니다,

베이스 컬러에 아무 색이나 넣었습니다.

 

 

마테리얼 인스턴스로 쉽게 수정 가능하게 변수 세팅하면 끝입니다.

 

 

반응형

WRITTEN BY
CatDarkGame
Technical Artist dhwlgn12@gmail.com

,