icon
7장 : 간단한 콜리전과 물리

정적 메시와의 기본 콜리전


나이아가라 파티클 시스템에서 파티클이 단순히 공간을 유영하는 것을 넘어, 게임 월드 내의 환경 오브젝트와 상호작용하게 만들려면 콜리전(Collision) 기능을 활용해야 합니다. 콜리전은 파티클이 주변 지오메트리(예: 벽, 바닥, 기타 스태틱 메시)에 부딪혔을 때 물리적으로 반응하도록 하는 핵심적인 요소입니다.

이 절에서는 나이아가라 파티클이 정적 메시(Static Mesh), 즉 움직이지 않는 고정된 오브젝트와 어떻게 충돌하고 반응하는지 기본적인 개념과 설정 방법에 대해 알아보겠습니다.


콜리전이란 무엇인가요?

콜리전은 물리 시뮬레이션의 한 부분으로, 두 오브젝트가 서로 접촉했을 때 이를 감지하고 그에 따른 물리적 반응(예: 튕겨나가기, 멈추기, 속도 감소)을 처리하는 과정을 의미합니다. 나이아가라에서 파티클 콜리전은 파티클이 월드 내의 다른 오브젝트와 사실적으로 상호작용하게 하여, 시각 효과의 현실감을 크게 높여줍니다.

예를 들어, 총알이 벽에 부딪혀 튕겨나가거나, 물방울이 바닥에 떨어져 사라지거나, 파편이 지면에 닿아 멈추는 등의 효과는 모두 콜리전 기능을 통해 구현됩니다.


콜리전 모듈 추가 및 기본 설정

나이아가라에서 파티클 콜리전을 활성화하는 가장 기본적인 방법은 Collision 모듈을 사용하는 것입니다.

Collision 모듈 추가

  • 나이아가라 에디터에서 이미터의 Particle Update 섹션으로 이동합니다.
  • + 버튼을 클릭하고 Collision 모듈을 검색하여 추가합니다.

주요 속성 설정: Collision 모듈을 선택하면 디테일(Details) 패널에 다음과 같은 주요 속성들이 나타납니다.

  • Collision Mode: 충돌 감지 방식을 결정합니다.
    • Distance Field (거리 필드): 복잡한 메시의 형태를 근사하여 효율적으로 충돌을 감지합니다. 디테일이 높고 정확하지만, 메시가 커지면 계산 비용이 증가할 수 있습니다. 대부분의 경우 좋은 선택입니다.
    • Trace (트레이스): 파티클의 움직임 경로를 따라 광선(Ray)을 발사하여 충돌을 감지합니다. 정확하지만 많은 파티클이 동시에 충돌할 때 비용이 높아질 수 있습니다.
    • Static Mesh: 특정 스태틱 메시와의 충돌만 감지합니다. 특정 오브젝트에만 충돌이 필요할 때 사용합니다. (매우 특수한 경우)
    • Landscape: 랜드스케이프 지형과의 충돌을 최적화합니다.
  • Restitution (반발 계수): 충돌 시 파티클이 얼마나 튕겨 나갈지를 결정합니다.
    • 0.0은 전혀 튕기지 않고 멈춥니다. (예: 진흙에 박히는 총알)
    • 1.0은 충돌 전 속도로 완벽하게 튕겨 나갑니다. (예: 완벽한 탄성 충돌)
    • 0.01.0 사이의 값은 부분적으로 튕겨 나갑니다.
  • Friction (마찰 계수): 충돌 후 파티클이 표면을 따라 미끄러질 때 속도가 얼마나 감소할지를 결정합니다.
    • 0.0은 마찰이 없어 계속 미끄러집니다.
    • 1.0은 즉시 멈춥니다.
  • Max Collisions: 한 파티클이 수명 동안 최대로 충돌할 수 있는 횟수를 제한합니다. (성능 최적화에 도움)
  • Radius: 파티클의 충돌 반경을 조절합니다. 스프라이트 파티클의 경우 Sprite Size와 연동될 수 있습니다. 3D 메시 파티클의 경우 메시의 바운딩 박스에 비례합니다.
  • Kill On Collision: 충돌 시 파티클을 즉시 소멸시킬지 여부를 결정합니다. (예: 물방울이 바닥에 닿으면 사라짐)

Distance Field 기반 콜리전 (권장)

Distance Field 콜리전 모드는 대부분의 상황에서 가장 좋은 성능과 정확도를 제공합니다. 이 모드를 사용하기 위해서는 프로젝트의 특정 설정이 활성화되어 있어야 합니다.

  • 프로젝트 설정 확인

    Edit > Project Settings를 엽니다.

    Engine 섹션 아래의 Rendering > Lighting 카테고리로 이동합니다.

    Generate Mesh Distance Fields 옵션이 활성화되어 있는지 확인합니다. 이 옵션은 스태틱 메시의 거리 필드 데이터를 미리 생성하여 콜리전 및 GI 계산에 사용될 수 있도록 합니다. (활성화 후 엔진 재시작 필요)

  • 활용: Collision 모듈의 Collision ModeDistance Field로 설정하고 사용합니다.

직접 해보기: 바닥에 튕기는 파티클 만들기

간단한 파티클이 바닥에 떨어져 튕기는 효과를 구현해 보겠습니다.

새 나이아가라 시스템 생성: New system from selected emitters (기본 스폰, 중력 포함) 템플릿을 사용하여 NS_BouncingParticles라는 이름의 시스템을 만듭니다.

Initialize Particle 설정

  • Lifetime2.0 정도로 설정합니다.
  • Sprite Size10.0 정도로 작게 설정합니다.
  • Color는 밝은 색으로 설정합니다.

Add Velocity 설정

  • Velocity Z 값을 300.0 정도로 설정하여 위로 솟아오르게 합니다.
  • XYRandom Range Float를 사용하여 -50.0 ~ 50.0 정도로 무작위 수평 속도를 추가하여 파티클이 사방으로 퍼지도록 합니다.

Add Gravity Force 확인: Particle Update 섹션에 Add Gravity Force 모듈이 있는지 확인합니다. 없다면 추가합니다.

Collision 모듈 추가

  • Particle Update 섹션에서 + 버튼을 클릭하고 Collision 모듈을 추가합니다.
  • Collision 모듈을 선택합니다.

Collision 속성 설정

  • Collision Mode: Distance Field (만약 Generate Mesh Distance Fields가 비활성화되어 있다면 Trace로 테스트해도 됩니다.)
  • Restitution: 0.7 정도로 설정하여 적당히 튕기도록 합니다.
  • Friction: 0.5 정도로 설정하여 바닥에서 약간 미끄러지다 멈추도록 합니다.
  • Radius: 10.0 정도로 설정하여 스프라이트 크기와 유사하게 만듭니다.
  • Kill On Collision: 비활성화합니다. (튕기는 효과를 봐야 하므로)

레벨에 배치: 나이아가라 시스템을 게임 레벨의 바닥 위 적당한 높이에 배치하고, 시뮬레이션을 재생합니다.

이제 파티클이 위로 솟아올랐다가 중력에 의해 떨어져 바닥에 닿으면 튕겨나오고, 점차 속도를 잃고 멈추는 것을 확인할 수 있을 겁니다.


충돌 이벤트와 콜리전 응답

파티클이 충돌했을 때 단순히 튕겨 나가는 것 외에, 특정 이벤트(예: 사운드 재생, 스파크 생성)를 발생시키고 싶다면 Collision 모듈의 Collision Event 기능을 활용할 수 있습니다.

  • Generate Collision Event: Collision 모듈의 Collision Event 섹션에서 Generate Collision Event를 활성화하면, 파티클이 충돌할 때마다 이벤트를 발생시킵니다.
  • Event Handler: 이벤트를 받아서 처리하는 Event Handler 모듈을 이미터에 추가하여, 충돌 이벤트가 발생했을 때 다른 파티클을 스폰하거나, 사운드를 재생하거나, 블루프린트 로직을 트리거할 수 있습니다.
    • 예시: 충돌 지점에서 작은 스파크 파티클을 스폰하거나, 충돌 사운드를 재생하는 Event Handler를 만들 수 있습니다.

성능 고려 사항

  • 파티클 수: 콜리전은 파티클 수에 비례하여 성능 비용이 증가합니다. 많은 파티클이 동시에 콜리전을 수행해야 한다면 주의해야 합니다.
  • Collision Mode 선택: Distance Field가 대부분 효율적이지만, 특정 시나리오에서는 Trace가 더 적합할 수도 있습니다. 항상 테스트를 통해 최적의 모드를 찾아야 합니다.
  • Max Collisions 제한: 파티클이 무한정 튕기면서 계산을 유발하는 것을 방지하기 위해 Max Collisions 값을 제한하는 것이 좋습니다.
  • Kill On Collision 활용: 충돌 후 바로 사라지는 파티클은 불필요한 추가 계산을 줄여 성능에 도움이 됩니다.

정적 메시와의 콜리전은 나이아가라 파티클 효과에 물리적인 상호작용을 부여하여 현실감을 높이는 중요한 기능입니다. 이를 통해 여러분은 단순히 공중에 떠다니는 효과가 아닌, 게임 월드와 능동적으로 반응하는 동적인 시각 효과를 만들 수 있을 것입니다.