인터랙티브 머티리얼은 자신과 교차하거나 가까이 있는 메시에 반응합니다. 이 이펙트는 디스턴스 필드(Distance field)를 사용하여 구현할 수 있습니다.
아래에는 반응형 머티리얼을 생성하는 세 가지 방법이 정리되어 있습니다.
거리를 사용하여 메시의 컬러를 변경하는 마스크 생성
사인파를 사용하여 두 메시가 교차하는 지점의 메시 표면에 물결 모양 생성
벡터 마스크를 사용하여 메시 표면이 가까이 있는 다른 메시를 끌어 당겨 교차하는 메시 감싸기
DistancetoNearestSurface 노드는 디스턴스 필드가 활성화된 플랫폼에서만 작동합니다. 따라서 이 머티리얼은 저사양 PC와 모바일에서 예상대로 작동하지 않을 수 있는데, 보통 디스턴스 필드 연산은 고해상도 필드로 인한 퍼포먼스의 병목 현상을 일으키거나 입력 메시가 디제너레이트되어 거의 불가능하기 때문입니다.
하지만 ShadingPathSwitch를 사용하면 모바일 플랫폼 또는 저사양 PC에서 DistancetoNearestSurface가 환경설정된 대로 작동하도록 셰이더를 강제할 수 있습니다.
먼저 다른 메시와 교차할 때 컬러가 변경되는 머티리얼부터 만들어야 합니다.
콘텐츠 브라우저(Content Browser)에서 새 머티리얼을 생성하고 머티리얼 섬네일을 더블클릭하여 머티리얼 에디터(Material Editor)를 엽니다.
다음 노드를 생성합니다.
DistancetoNearestSurface 노드
ShadingPathSwitch 노드
Divide 노드
Saturate 노드
OneMinus 노드
Time 노드
Sine 노드
Add 노드
VertexNormalWS 노드
Mask 노드
Multiply 노드(3)
DistancetoNearestSurface 노드에서 드래그하여 ShadingPathSwitch 노드의 디폴트(Default) 입력에 연결합니다.
Divide 노드를 선택하여 ConstB 입력 값을 50.0으로 변경합니다. 이것은 이펙트가 적용될 오브젝트 간의 거리를 결정합니다.
Divide 노드에서 드래그하여 ShadingPathSwitch의 모바일(Mobile) 입력에 연결합니다. 이것은 셰이딩 마스크가 모든 플랫폼에서 적절하게 작동할 수 있도록 보장해 줍니다.
ShadingPathSwitch 노드에서 드래그하여 Saturate 노드에 연결합니다. 이것은 메시의 컬러 채도를 높입니다.
Saturate 노드에서 드래그하여 OneMinus 노드에 연결합니다. 이것은 메시의 셰이더를 반전시킵니다.
OneMinus 노드에서 드래그하여 머티리얼 루트 노드의 베이스 컬러(Base Color) 입력에 연결합니다.
이것은 오브젝트 간 거리를 수학적으로 표현하는 디스턴스 필드 구성의 기반을 마련해 줍니다. 셰이더는 메시에서 마스킹 이펙트를 생성합니다. 이 메시를 다른 메시와 교차시켜 머티리얼이 어떻게 반응하는지 직접 시험해 보세요.
자동차가 가까워질 수록 머티리얼이 자동차의 형태 주변에 선을 생성하는 모습을 볼 수 있습니다.
물결 이펙트
이제 반응형 머티리얼의 두 번째 환경설정을 생성해보겠습니다.
Time 노드에서 드래그하여 Add 노드의 B 입력에 연결합니다.
Add 노드에서 드래그하여 Sine 노드에 연결합니다.
Sine 노드에서 드래그하여 첫 번째 Multiply 노드의 B 입력에 연결합니다.
Sine 노드를 선택하고 펼쳐 주기(Period) 값을 0.2로 변경합니다.
OneMinus 노드에서 드래그하여 첫 번째 Multiply 노드의 A 입력에 연결합니다.
첫 번째 Multiply 노드에서 드래그하여 머티리얼 루트 노드의 베이스 컬러 입력에 연결합니다. 그러면 OneMinus 노드와 머티리얼 루트 노드 간의 기존 연결이 끊어집니다.
이 환경설정은 디스턴스 필드의 이전 환경설정을 사용하며, 이제 반응형이 된 메시에 컬러를 적용합니다. 이 머티리얼은 주변 환경 및 메시와 상호작용하게 됩니다. 메시가 다른 메시와 교차할 경우 머티리얼은 표면을 따라 물결 모양을 생성합니다.
이 환경설정은 물을 생성할 때 일반적으로 사용됩니다.
감싸기 이펙트
이제 반응형 머티리얼의 세 번째 환경설정을 생성해보겠습니다.
OneMinus 노드에서 드래그하여 머티리얼 루트 노드의 베이스 컬러 입력에 연결합니다. 그러면 첫 번째 Multiply 노드와 머티리얼 루트 노드 간의 기존 연결이 끊어집니다.
VertextNormalWS 노드에서 드래그하여 Mask 노드에 연결합니다.
Mask 노드에서 드래그하여 두 번째 Multiply 노드의 A 입력에 연결합니다.
두 번째 Multiply 노드를 선택하고 펼쳐 B 입력 값을 50.0으로 변경합니다.
두 번째 Multiply 노드에서 드래그하여 세 번째 Multiply 노드의 B 입력에 연결합니다.
첫 번째 환경설정의 OneMinus 노드에서 드래그하여 세 번째 Multiply 노드의 A 입력에 연결합니다.
세 번째 Multiply 노드에서 드래그하여 머티리얼 루트 노드의 월드 포지션 오프셋(World Position Offset) 입력에 연결합니다.
두 번째 환경설정의 모습입니다.
프리뷰 창에서 머티리얼이 뾰족해 보이는 것을 확인할 수 있습니다. 메시에 적용할 때는 메시의 셰이프도 바뀝니다. 메시가 자동차에 가까워질 수록 머티리얼은 메시가 탈것을 감싸게 만듭니다.