벡터 필드

벡터 필드에 대한 개요, GPU 스프라이트와 어떻게 작동하는가에 대한 문서입니다.

Choose your operating system:

Windows

macOS

Linux

GPU 파티클의 가장 흥미로운 기능은, 그 효율성 말고도, 벡터 필드가 있습니다. 벡터 필드란 파티클의 운동에 영향을 끼치는 벡터의 균일 그리드입니다. 벡터 필드는 월드에 (Global Vector Field) 액터 형식으로 놓이며, 다른 액터처럼 트랜슬레이트 / 로테이트 / 스케일 작업도 가능합니다. 동적이라 언제고 움직일 수 있습니다. 캐스케이드에서도 (Local Vector Field) 필드를 놓을 수 있는데, 그에 연관된 이미터에만 영향력이 제한됩니다. 파티클이 벡터 필드 범위에 들어가면 그 운동이 거기에 영향을 받으며, 파티클이 범위를 벗어나면 필드의 영향력이 사그라듭니다.

벡터 필드는 기본적으로 그 안의 파티클에 포스를 전해줍니다. 벡터 필드에는 "tightness" 파라미터도 있습니다. 이 파라미터는 필드의 벡터를 파티클이 얼마나 직접적으로 따를 것인가를 제어합니다. tightness 가 1 로 설정되면 파티클은 필드의 속도를 바로 읽어오므로 필드를 그대로 따르게 됩니다.

스태틱 벡터 필드는 벡터 그리드가 절대 변하지 않는 것입니다. 이러한 필드는 Maya에서 익스포트하여 볼륨 텍스처로 임포트할 수 있습니다. 스태틱 필드는 일단 비용이 매우 저렴하며, 파티클의 운동에 재미를 더할 수 있는데, 특히 필드 자체의 운동에 애니메이션을 더하는 식입니다.

추가적으로 벡터 필드는 2D 이미지에서 재구성할 수도 있습니다. 이러한 경우 노멀맵같은 이미지를 임포트한 뒤 어느 한 볼륨을 중심으로 회전시키거나 돌출시켜서 볼륨 텍스처를 재구성하는 데 쓸 수 있습니다. 이러한 재구성 결과물 위에 스태틱 벡터 필드를 추가하면 약간의 노이즈나 임의성을 넣을 수도 있습니다. 추가적으로 아틀라스 텍스처에 개별 프레임을 보관하여 2D 이미지에 애니메이션을 줄 수도 있습니다. 그렇게 하면 오프라인에서의 유연한 시뮬레이션은 물론 실시간에서의 운동 재구성도 아주 적은 비용으로 할 수 있게 됩니다.

글로벌 벡터 필드

위에 말했듯이 Global Vector Field (글로벌 벡터 필드)는 레벨에 액터로 놓을 수 있습니다. 그런데 그냥 콘텐츠 브라우저에서 끌어다 놓기만 하면 되는 것은 아닙니다. 벡터 필드를 레벨에 제대로 구성하기 위해서는 Vector Field Volume (벡터 필드 볼륨) 액터를 추가해 주고, 적합한 벡터 필드 애셋을 짝지어 줘야 합니다.

벡터 필드 볼륨 액터

Vector Field Volume (벡터 필드 볼륨) 액터는 일반적인 볼륨과는 다릅니다. 클래스 뷰어 창에서 'Vector Field Volume' 을 끌어 레벨에 놓으면 만들 수 있습니다. 그런 다음 콘텐츠 브라우저에서 액터의 프로퍼티를 통해 벡터 필드를 할당해 주면 됩니다. 추가하고 나면 필드의 위치, 방향, 크기를 조절할 수 있습니다.

VFScaled.png

글로벌 벡터 필드 모듈 이 포함된 GPU 스프라이트 파티클 시스템은 이 글로벌 벡터 필드를 사용할 수 있습니다.

GlobalVectorFieldsSystem.png

GameModeVFV.png

이 이미지에서 보면 이미션 볼륨 절반 아래쪽에 있는 파티클들만 벡터 필드 볼륨에 교차되고 있습니다.

로컬 벡터 필드

Local Vector Field (로컬 벡터 필드)는 글로벌과 반대되는 개념으로써, 월드가 아니라 파티클 시스템 안에서만 존재하는 벡터 필드입니다. 즉 글로벌 벡터 필드 모듈 이 있는 파티클 시스템에는 모두 영향을 끼칠 수 있는 글로벌 벡터 필드와는 달리, 로컬 벡터 필드는 자신이 할당된 파티클 이미터에만 영향을 끼칠 수 있는 것입니다.

로컬 벡터 필드는 Local Vector Field 모듈 을 통해 추가합니다.

LocalVectorField.png

언리얼 엔진 문서의 미래를 함께 만들어주세요! 더 나은 서비스를 제공할 수 있도록 문서 사용에 대한 피드백을 주세요.
설문조사에 참여해 주세요
취소