본문 바로가기

Unreal Engine

Distance Field를 활용한 Mesh Distortion (in UE)

 

 

 

메시 디스턴스 필드 노드를 활용하여 각 버텍스를 일정 방향으로 이동시킬 수 있다.

https://www.youtube.com/watch?v=5Lmp1h7cpHQ

https://www.youtube.com/watch?v=EHY_iHpqYkk

 

Distance Field를 활용해서 메시를 변형한다.

  • DistanceFieldGradient : 가장 가까운 표면의 상대적인 방향을 알 수 있다.
  • DistanceToNearestSurface : 가장 가까운 표면까지의 거리이다.

DistanceToNearestSurface 를 최대 거리 (Max Distance) 로 나누어 0 ~ 1이상으로 만들고, 이것을 반전시켜 변형 Mask로 사용한다. Max Distance 이상의 거리에서는 값이 0이다.

WPOMask = 1.0 - saturate(DistanceToNearestSurface / MaxDist);

 

WPO 방향 : DistanceFieldGradient 벡터를 반전시킨다. (가장 가까운 표면방향의 반대 방향으로 버텍스를 당겨야 한다)

 

Mask 에 Power를 한 이유는, 그라디언트를 선형에서 곡선형으로 만들기 위함이다.

(늘어나는 모양이 좀더 점성이 있는 것 처럼 급격한 곡선 모양이 된다)

Color = WPO Mask, amount
Contraction 영역 추가 (늘어날 때 홀쭉해지는 부분)

 

시각화

아래 이미지에서 흰색으로 마스킹 된 부분은 Distance Field 를 일정 거리로 나눈 뒤 반전시킨 것으로, 표면에 붙는 듯한 변형이 생기는 부분이다.

메시 표면으로부터 거리가 가까울수록 값이 커진다.