핵심 파티클 개념

언리얼 내에서 그리고 캐스케이드 파티클 에디터에서 파티클 작업을 할 때의 핵심 개념입니다.

Windows
MacOS
Linux

파티클 시스템 그리고 그 파티클 시스템 에디터를 말하는 캐스케이드 는 매우 유연하고 강력한 툴입니다. 하지만 손을 걷어붙이고 뛰어들기 전에 완벽히 이해해 둬야 하는 중요한 핵심 개념 몇 가지가 있습니다. 이 글의 목적은 그러한 핵심 개념에 대해 소개해 드려, 이러한 파티클 시스템의 작동방식에 대한 보다 확고한 이해를 도우면서도 유저 인터페이스나 파티클 이펙트 생성시 구체적인 부분에 있어서 미묘한 차이를 줄이기 위함입니다.

파티클 이펙트로의 모듈식 접근법

캐스케이드에 차고도 넘치는 핵심 개념은 모듈식으로 디자인된 파티클 시스템이라는 점입니다. Maya 같은 일부 3D 이펙트 제작 프로그램에서는, 특정 행위에 필요한 프로퍼티 대부분이 이미 준비된 상태로 파티클 시스템이 생성됩니다. 거기서 사용자는 그 프로퍼티를 변경하여 원하는 결과를 얻어내는 것입니다.

반면 캐스케이드에서 파티클 시스템은 딱 필요한 프로퍼티와 행위 모듈 약간만 있는 상태에서 시작됩니다.

각 모듈은 파티클 행위의 특정한 면을 나타내며, 색이나 생성시의 위치, 운동, 규모 등 딱 그 행위를 제어하는 프로퍼티만을 담고 있습니다. 거기서 사용자는 필요에 따라 모듈을 추가하거나 제거하여 파티클 행위를 추가 정의합니다. 꼭 필요한 행위에 대한 모듈만 추가되므로, 불필요한 프로퍼티에 대한 계산 낭비가 없습니다.

모듈이 으뜸인 점은 추가, 제거, 복사는 물론 파티클 시스템 내 이미터에서의 인스턴싱도 쉽게 가능하여, 사용할 수 있는 모듈에 대해 잘 알고만 있다면 복잡한 구성도 쉽게 이뤄낼 수 있다는 점입니다.

기본 모듈

DefaultEmitter.png

어떤 모듈은 파티클 이미터에 기본적으로 존재합니다. 어떤 파티클 시스템에도 핵심 개념이 되는 '스프라이트 이미터' 가 파티클 시스템에 새로 추가될 때마다 항상 다음과 같은 디폴트 모듈이 포함된 상태로 생성됩니다:

  • Required 필수 - 파티클에 적용되는 머티리얼이라던가, 이미터가 파티클을 내뿜는 기간이라던가, 등등 파티클 시스템이라면 응당 있어야 할 여러가지 프로퍼티가 들어있습니다.

  • Spawn 스폰 - 이미터에서 파티클을 얼마나 빨리 스폰시킬지, 버스트 스폰시킬지, 등 파티클 생성 타이밍 관련 프로퍼티를 제어하는 모듈입니다.

  • Lifetime 수명 - 파티클 생성 이후의 삶을 관장하는 모듈입니다. 이 모듈이 없으면 파티클은 영원합니다.

  • Initial Size 초기 크기 - 파티클 생성 시점에서의 스케일을 조절합니다.

  • Initial Velocity 초기 속도 - 파티클 생성 시점에서의 운동을 제어합니다.

  • Color Over Life 수명에 따른 색 - 각 파티클의 수명에 따른 색을 조절하는 모듈입니다.

RequiredSpawn 모듈은 영구적인 것으로 이미터에서 제거할 수 없습니다. 그 외 다른 모듈은 뜻대로 제거할 수 있습니다.

모듈 카테고리

파티클 이미터에 추가할 수 있는 모듈은 많습니다. 이러한 모듈은 헛갈리지 않도록 카테고리 별로 나뉘어 있습니다. 카테고리는 다음과 같습니다:

카테고리

설명

Acceleration

가속 - 인력과 같은 것이 파티클 가속에 어떻게 영향을 끼치는지를 좌우하는 모듈입니다.

Attraction

인력 - 공간의 여러 지점으로 파티클을 끌어 파티클 운동을 제어하는 모듈입니다.

Camera

카메라 - 카메라 공간에서의 파티클 운동을 제어하는 모듈로, 파티클이 카메라에서 멀리 또는 가까이 보이게 할 지에 대한 사용자 제어가 가능합니다.

Collision

충돌 - 파티클과 지오메트리 사이의 충돌 처리 방식을 제어하는 모듈입니다.

Color

색 - 파티클의 색에 영향을 끼치는 모듈입니다.

Event

이벤트 - 파티클 이벤트 트리거를 제어하는 모듈로, 게임 내 다양한 반응을 유발시킵니다.

Kill

킬 - 파티클 소멸을 좌우하는 모듈입니다.

Lifetime

수명 - 파티클이 얼마나 오래 살 것인지를 제어하는 모듈입니다.

Light

라이트 - 파티클 라이트를 관장하는 모듈입니다.

Location

위치 - 이미터 액터를 기준으로 한 파티클 생성 상대 위치를 제어하는 모듈입니다.

Material

머티리얼 - 파티클 자체에 적용된 머티리얼을 제어하는 모듈입니다.

Orbit

선회 - 이펙트에 부가적인 동작을 더하는 화면 공간 선회 행위가 가능한 모듈입니다.

Orientation

지향 - 파티클의 회전축을 고정시킬 수 있는 모듈입니다.

Parameter

파라미터 - 파라미터화, 즉 블루프린트나 마티네같은 외부 소스를 통해 제어할 수 있는 모듈입니다.

Rotation

회전 - 파티클의 회전을 제어하는 모듈입니다.

RotationRate

회전율 - 스핀과 같은 회전 속도상의 변화를 좌우하는 모듈입니다.

Size

크기 - 파티클의 스케일을 조절하는 모듈입니다.

Spawn

스폰 - 이동 거리에 따라 파티클을 스폰하는 등 특수 파티클 스폰에 관련된 모듈입니다.

SubUV

SubUV - 파티클에 스프라이트 시트 애니메이션이 가능한 모듈입니다.

Velocity

속도 - 각 파티클의 속도를 제어하는 모듈입니다.

각각의 파티클 모듈 관련 상세 정보는 파티클 시스템 레퍼런스 문서를 참고해 주시기 바랍니다.

Initial vs. Over Life

파티클 모듈 관련 작업을 해야 할 때 명심해야 할 두 가지 중요 개념은 initial (초기) 와 over life 또는 per life (수명에 따른) 프로퍼티 입니다.

  • Initial (초기) 모듈은 파티클이 월드에 스폰되는 순간의 일정 부분을 제어하는 데 사용됩니다.

  • Over Life 또는 Per Life (수명에 따른) 모듈은 파티클의 수명에 걸쳐 일정 부분을 변화시키기 위해 존재합니다.

예를 들어 Initial Color (초기색) 모듈은 파티클 생성 순간의 색을 설정할 수 있는 반면, Color Over Life (수명에 따른 색) 프로퍼티는 파티클의 생성과 사망 시점 사이에서의 색이 점차 변화하도록 할 수 있습니다.

모듈 시간 계산

프로퍼티를 시간에 따라 변하는 분포형으로 변경하는 경우, '상대 시간'을 사용하는 모듈도 있고 '절대 시간'을 사용하는 모듈도 있습니다. (분포 관련해서는 추후 자세히 설명하겠습니다)

  • 절대 시간은 기본적으로 전체적인 이미터 시간입니다. 2 초 짜리 3 번 반복되는 이미터가 있다면, 그 이미터에 있는 모듈의 절대 시간은 0 초에서 2 초까지 세 번 반복 실행되는 것입니다.

  • 상대 시간은 0 과 1 사이의 값으로, 각 파티클의 수명을 나타냅니다.

현재 사용가능한 모듈에 대한 설명은 파티클 시스템 레퍼런스 문서를 참고해 주시기 바랍니다.

이미터, 파티클 시스템, 이미터 액터

캐스케이드로 자신만의 파티클 이펙트 제작을 하면서 유념해야 할 것은, 오브젝트 하나 하나가 서로에게 어떤 상관관계를 갖는 것인가 입니다. 이 글에서 이미 모듈에 대한 개념을 논한 바 있지만, 모듈이란 전체 파티클 이펙트를 이루는 것 중 하나의 성분에 지나지 않습니다. 파티클 시스템의 성분을 모두 말해 보자면, 모듈, 이미터, 파티클 시스템, 이미터 액터 라 할 수 있습니다. 그들의 상관관계를 확실히 하자면 이렇습니다:

  • 모듈 이란 파티클의 행위를 정의하며, 이미터 안에 놓입니다...

  • 이미터 란 이펙트에 대해 특정 유형 파티클을 내뿜는 데 사용되는 것으로, 몇이든 사용 가능하며, 파티클 시스템 안에 놓입니다...

  • 파티클 시스템 이란 콘텐츠 브라우저에서 볼 수 있는 애셋으로, 이미터 액터 에 의해 참조 가능한 것입니다...

  • 이미터 액터 란 레벨에 놓을 수 있는 오브젝트로, 씬에서 파티클이 실제 어디 어떻게 쓰이는지를 제어하는 것입니다.

파티클 계산

파티클 시스템 작업을 할 때는 계산 순서에 주의해야 합니다. 캐스케이드 이미터 리스트의 각 열은 각기 다른 이미터를 나타내며, 그 열의 각 블록은 각기 다른 모듈을 나타냅니다. 계산 순서는 다음과 같습니다:

  • 이미터 리스트에 있는 이미터의 계산 순서는 왼쪽에서 오른쪽입니다.

  • 쌓여있는 모듈의 계산 순서는 위에서 아래입니다.

이미터 유형

파티클을 가지고 만들고자 하는 이펙트 유형이 방대한 만큼, 꼭 필요한 이미터를 만들어내는 데 쓸 수 있는 이미터 유형 역시도 다양합니다. 아래는 사용할 수 있는 이미터 유형입니다:

참고로 모든 이미터는 유형을 막론하고 스프라이트 이미터로 시작합니다. 그 후 다양한 이미터 Type Data 모듈을 이미터에 추가하여 그 유형을 다른 것으로 바꿉니다.

  • Sprite Emitters 스프라이트 이미터 - 가장 기본적이고 자주 사용되는 이미터 유형입니다. 파티클은 항상 카메라를 향하는 폴리곤형 스프라이트(2 폴리곤 카드)로 방출됩니다. 연기, 불 등 다양한 이펙트에 좋습니다.

  • AnimTrail Data 애님트레일 데이터 - 애니메이션 스켈레톤의 소켓에서부터 흔적을 만드는 데 사용됩니다.

  • Beam Data 빔 데이터 - 레이저, 번갯줄기 비슷한 효과를 내는 빔을 만드는 데 사용됩니다.

  • GPU Sprites GPU 스프라이트 - 대량의 실행시간 계산이 GPU 에 전해지는 특수 파티클 유형입니다. 이로써 가능한 파티클의 수치가 CPU 파티클일 때는 천 단위에서 GPU 파티클에서는 타깃 시스템의 GPU 유형에 따라 십만 단위로 증폭됩니다.

  • Mesh Data 메시 데이터 - 이러한 이미터 유형은 스프라이트 시리즈가 아니라 폴리곤 메시를 내뿜습니다. 돌사태, 잔해와 같은 효과에 좋습니다.

  • Ribbon Data 리본 데이터 - 꼬리에 꼬리를 무는 파티클 굴비를 엮어, 움직이는 이미터 뒤에 흔적을 남기는 리본을 만듭니다.

사용할 수 있는 여러가지 이미터 유형 관련 상세 정보는 파티클 시스템 레퍼런스 문서를 참고해 주시기 바랍니다.

파라미터

파티클 시스템의 모든 면을 미리 정의할 수는 없습니다. 가끔 파티클 시스템 행위의 일정 부분은 실행시간에 변화시키거나 제어할 필요가 있습니다. 예를 들어 마법을 시전할 때 소모되는 마법 에너지의 양에 따라 색이 변하는 마법 효과를 만들 수가 있습니다. 그러한 경우에는 파티클 시스템에 파라미터를 추가해 줘야 할 것입니다.

파라미터 란 블루프린트, 마티네, 머티리얼, 그 외 기타 시스템과 데이터를 주고받을 수 있는 프로퍼티 유형입니다. 캐스케이드에서는 어떤 프로퍼티라 해도 파라미터에 할당할 수 있으며, 그렇다는 것은 파티클 시스템 외부에서도 그 프로퍼티를 제어할 수 있다는 뜻입니다.

예를 들어 화염 이펙트의 스폰율을 제어하는 파라미터 설정을 해 두었다면, 실행시간에 방사되는 화염의 양을 플레이어가 늘이거나 줄이도록 할 수 있습니다.

반대로 파티클 시스템에 추가해서, 주어진 머티리얼에 사용된 색처럼 레벨에 있는 다른 색을 연달아 바꿀 수 있는 파라미터 모듈도 있습니다.

캐스케이드에서 파라미터는 일반적으로 프로퍼티 내에서의 데이터 처리를 위한 방편인 분포(Distribution)를 통해 구성됩니다. 분포에 대한 일반적인 개요는 아래 에서 찾아볼 수 있으며, 자세한 정보는 분포 문서를 참고해 주시기 바랍니다.

라이팅포함 파티클

파티클 시스템이 빛을 받도록 설정할 수 있으나, 특별한 세팅이 필요합니다.

라이팅포함 파티클 설정을 하려면:

  1. 머티리얼의 셰이딩 모델을 라이팅제외(unlit) 이외의 것으로 설정합니다. 디폴트 라이팅포함(DefaultLit)을 사용하면 노멀 매핑, 스페큘러 등에 접근할 수 있습니다.

  2. 캐스케이드의 (아무 이미터나 모듈도 선택하지 않은 상태에서 볼 수 있는 LOD 프로퍼티 아래의) LODSettings 를 보면, 각각의 LOD 에 대해 bLit 라는 플래그가 있습니다. 체크해 주세요. 이 플래그는 캐스케이드만 수정할 수 있습니다.

위의 작업을 해 준 파티클은 게임에서 라이팅포함, 빛을 받는 상태로 나타납니다. 이미터 원점을 기준으로 빛을 받으니, 라이팅 업데이트 상태를 확인하기 위해서는 월드에서 원점을 움직이거나 근처에 다이내믹 라이트를 놓아 주시기 바랍니다.

레벨 오브 디테일 (LOD)

파티클 시스템의 계산 비용이 비싸지는 것은 순식간입니다. 파티클 계산량 중 상당 부분을 GPU 에 넘겨주는 GPU 파티클을 사용할 때 조차도 플레이어에게서 너무 멀리 있거나 제대로 알아보기 힘든 파티클까지 계산할 가치가 있을지에 대해서는 고려를 해 보는 것이 좋습니다.

캠프 파이어 파티클 시스템을 예로 들어 봅시다. 가까이서 봤을 때는 연기 위로 일렁이는 불똥과 재까지 확인할 수 있을 것입니다만, 수 백 미터 떨어진 곳에서 본다면 그런 불똥은 모니터에 렌더링하기는 너무 작을 수가 있습니다. 즉 계산할 필요가 있을까요?

여기서 바로 레벨 오브 디테일(LOD)이 등장합니다. LOD 시스템을 통해 파티클 시스템이 자동 단순화되는 거리 범위를 임의 설정할 수 있습니다. 각 범위마다 하나씩 다른 LOD 로 간주되며, 단순화는 프로퍼티 값을 낮추거나, 모듈을 끄거나, 심지어 이미터까지도 끄거나 하는 식으로 일어납니다. 위의 캠프 파이어를 예로 들면, 플레이어가 너무 멀리 떨어지면 전체 이펙트에 불똥을 추가하는 이미터를 완전 꺼버리는 것이 이상적일 것입니다.

파티클 시스템에는 LOD 를 필요한 만큼 만들 수 있으며, 각각에 대한 범위는 수동 조절 가능합니다.

분포

분포(Distribution)는 어느 한 값에 대한 범위를 설정한다든가, 곡선상의 값으로 보간해 들어간다든가, 특별한 방식으로 데이터를 처리하는 데이터 유형 세트입니다.

캐스케이드의 모듈에서 찾을 수 있는 다수의 프로퍼티에는 여러가지 분포를 적용할 수 있습니다. 그러면 해당 프로퍼티의 실제 값은 그 분포 내에서 설정됩니다.

분포는 크게 5 가지 유형으로 나뉩니다:

  • Constant 상수 - 어떤 식으로도 변하지 않는 하나의 고정된 값을 나타냅니다.

  • Uniform 균일 - 최소값과 최대값을 가지며, 그 두 값(을 포함한 값) 사이의 임의값을 선택해서 출력합니다.

  • Constant Curve 상수 커브 - 시간에 따라 보간되는 값을 내어주는 단일 커브입니다. 이 경우 시간은 일반적으로 파티클의 생성과 소멸, 즉 파티클 방출이 시작되고 끝나는 시간 사이의 기간을 가리킵니다.

  • Uniform Curve 균일 커브 - 최소값 커브와 최대값 커브를 가지며, 최종 값은 그 두 그래프 사이 그래프상의 점에서 선택됩니다.

  • Parameter 파라미터 - 프로퍼티를 파라미터화 시켜서 블루프린트, 파티네 등 외부적인 수단을 통해 조작할 수 있도록 하는 분포 유형입니다.

이들 각각의 분포 유형마다 실수(float)형과 벡터(vector)형 값이 별도로 존재합니다. 예를 들어 실수 균일 커브벡터 균일 커브 분포가 있을 수 있습니다. 그러나 각 분포에 실수를 쓸지 벡터를 쓸지는 제어할 프로퍼티의 유형에 따라 좌우되며, 사용자가 선택할 부분은 아닙니다. 예를 들어 컬러 제어는 (RGB 가 벡터 값으로 표시되니) 벡터 균일 분포를 통해 제어해야 하나, 수명은 (실수 하나로 표시되는 값이니) 실수 균일 분포를 통해 제어 가능합니다.

분포 관련 상세 정보와 그 작동 방식에 대한 정보는 분포 문서를 참고해 주시기 바랍니다.

Select Skin
Light
Dark

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼