icon
3장 : 모듈 기본 사용법

사용자 정의 모듈 활용하기


지금까지 나이아가라의 스폰, 업데이트, 렌더링 모듈의 기본 사용법을 익히셨습니다. 이 모듈들만으로도 다양한 효과를 만들 수 있지만, 때로는 언리얼 엔진에서 기본으로 제공하는 모듈만으로는 원하는 복잡하거나 독특한 효과를 구현하기 어려울 때가 있습니다. 이럴 때 필요한 것이 바로 사용자 정의 모듈(Custom Module) 입니다.

사용자 정의 모듈은 나이아가라의 강력한 확장성을 보여주는 핵심 기능 중 하나입니다. 여러분이 직접 파티클의 속성을 제어하는 로직을 만들고, 이를 재사용 가능한 모듈 형태로 저장하여 다른 나이아가라 시스템에서도 활용할 수 있게 해줍니다. 마치 레고 블록을 직접 디자인하고 생산하여, 나만의 특별한 작품을 만드는 것과 비슷하다고 할 수 있습니다.


사용자 정의 모듈이란?

사용자 정의 모듈은 특정 기능을 수행하도록 비주얼 스크립트(Visual Script) 형태로 직접 제작하는 나이아가라 모듈입니다. 이는 블루프린트와 유사하게 노드 기반의 시각적인 프로그래밍 방식으로 이루어져 있어, C++ 코딩 지식 없이도 복잡한 파티클 로직을 구현할 수 있습니다.

사용자 정의 모듈을 활용하면 다음과 같은 장점을 얻을 수 있습니다.

  • 높은 유연성: 기본 모듈로는 불가능했던 독특한 파티클 동작이나 수학적 계산을 직접 구현할 수 있습니다.
  • 재사용성: 한 번 만든 사용자 정의 모듈은 여러 이미터나 나이아가라 시스템에서 재사용할 수 있어 작업 효율을 높입니다.
  • 깔끔한 워크플로우: 복잡한 파티클 로직을 하나의 모듈로 캡슐화하여 이미터의 Particle Update 섹션을 더 깔끔하게 유지할 수 있습니다.

사용자 정의 모듈 생성 및 편집 과정

간단한 예시를 통해 사용자 정의 모듈을 만들고 사용하는 과정을 살펴보겠습니다. 여기서는 파티클의 수명에 따라 특정 방향으로 지그재그 움직임을 추가하는 간단한 사용자 정의 모듈을 만들어볼 것입니다.

새로운 나이아가라 모듈 에셋 생성

  • 콘텐츠 브라우저(Content Browser) 에서 원하는 폴더를 선택하고 우클릭합니다.
  • FX > Niagara Module을 선택합니다.
  • 새 모듈의 이름을 NCM_ZigzagMovement (Niagara Custom Module의 약자)와 같이 지정합니다.
  • NCM_ZigzagMovement 에셋을 더블 클릭하여 나이아가라 모듈 에디터(Niagara Module Editor)를 엽니다. 이 에디터는 일반 나이아가라 에디터와 유사하지만, 모듈 로직을 만드는 데 집중되어 있습니다.

모듈 입력(Input) 및 출력(Output) 설정

  • 모듈 에디터의 개요(Overview) 패널에서 Module을 선택합니다.
  • 디테일(Details) 패널에서 InputsOutputs 섹션을 찾습니다.
  • OutputsParticles.Velocity를 추가합니다. (기본적으로 있을 수 있습니다.) 우리는 이 모듈에서 파티클의 속도를 변경할 것이므로, 변경된 속도 값을 출력해야 합니다.
    • + 버튼을 누르고 Add Output을 선택한 후 Particles.Velocity를 찾아 추가합니다.
  • InputsZigzagStrength (Float), ZigzagFrequency (Float) 두 개의 사용자 정의 입력을 추가합니다. 이는 모듈 외부에서 제어할 수 있는 파라미터가 됩니다.
    • + 버튼을 누르고 Add Input을 선택한 후 New Input을 선택합니다.
    • NameZigzagStrength, TypeFloat으로 설정합니다.
    • 같은 방식으로 ZigzagFrequency (Float)를 추가합니다.

스크립트 에디터에서 로직 구현

  • 스크립트 에디터(Script Editor) 패널로 이동합니다. 이곳에서 노드 기반의 비주얼 스크립트를 작성합니다.
  • 기본적으로 Set New or Existing Parameter 노드가 Particles.Velocity와 연결되어 있을 것입니다. 만약 없다면, Output 노드에서 Particles.Velocity 핀을 드래그하여 Set New or Existing Parameter 노드를 생성합니다.
  • 이제 파티클의 수명(Particles.NormalizedAge)을 기반으로 사인파(sine wave)를 생성하여 지그재그 움직임을 만들어낼 것입니다.
  • 빈 공간에 우클릭하고 NormalizedAge를 검색하여 Get Particles.NormalizedAge 노드를 추가합니다.
  • * (곱하기) 노드를 추가하고, Get Particles.NormalizedAge의 출력을 첫 번째 입력에 연결합니다. 두 번째 입력에는 ZigzagFrequency (우클릭 -> Get Niagara Parameter -> ZigzagFrequency)를 연결합니다.
  • Sine 노드를 추가하고, * 노드의 출력을 Sine 노드의 입력에 연결합니다.
  • * (곱하기) 노드를 하나 더 추가하여 Sine 노드의 출력을 첫 번째 입력에 연결합니다. 두 번째 입력에는 ZigzagStrength를 연결합니다.
  • 이제 최종 * 노드의 출력을 Set New or Existing Parameter 노드의 Velocity 입력(XYZ 중 하나, 예를 들어 X에 연결하여 좌우 지그재그)에 연결합니다. Append Vector 노드를 사용해 특정 축에만 값을 더할 수도 있습니다.
  • Tip: 간단하게 초기 속도를 설정하는 Add Velocity 노드를 사용하여 그 위에 지그재그 값을 더하는 방식으로 구현할 수도 있습니다. 이 경우, Set New or Existing Parameter 대신 Add (벡터 + 벡터) 노드를 사용합니다.
(Get Particles.NormalizedAge) ---[ * ]--- (Get ZigzagFrequency)
                                    |
                                  [ Sine ]
                                    |
                                  [ * ]--- (Get ZigzagStrength)
                                    |
(Result) --------------------------|
                                    |
(Apply to Particles.Velocity) ------
  • 이 예시는 복잡해 보일 수 있지만, 핵심은 Particles.NormalizedAge (0에서 1까지 변하는 파티클의 수명 진행률)를 사용하여 반복적인 패턴을 만드는 것입니다.

모듈 저장: NCM_ZigzagMovement 에셋을 저장합니다. (Ctrl + S)


사용자 정의 모듈 사용하기

이제 만든 사용자 정의 모듈을 기존 나이아가라 시스템에 적용해 보겠습니다.

이전에 만들었던 NS_BasicSpawn (또는 다른 나이아가라 시스템)을 엽니다.

개요(Overview) 패널에서 파티클 업데이트 효과를 추가하고 싶은 이미터를 선택합니다.

Particle Update 섹션 아래의 + 버튼을 클릭합니다.

검색창에 여러분이 만든 모듈 이름 NCM_ZigzagMovement를 검색하여 추가합니다.

모듈이 추가되면, 디테일(Details) 패널에서 여러분이 정의했던 ZigzagStrengthZigzagFrequency 속성을 볼 수 있습니다. 이 값들을 조절하면서 뷰포트에서 파티클의 움직임이 어떻게 변하는지 확인해 보세요.

  • ZigzagStrength를 높이면 지그재그 폭이 커지고, ZigzagFrequency를 높이면 더 자주 흔들립니다.

사용자 정의 모듈 활용 팁

  • 주석 달기: 복잡한 스크립트를 만들 때는 C 키를 눌러 주석 상자를 추가하여 각 부분의 역할을 설명하는 것이 좋습니다.
  • 입력 매개변수 사용: 모듈을 유연하게 만들기 위해 가능한 한 많은 값을 입력 매개변수로 노출시키는 것이 좋습니다.
  • 계산 순서: 스크립트 에디터에서 노드 간의 데이터 흐름과 계산 순서를 명확히 이해하는 것이 중요합니다.
  • 디버깅: 문제가 발생하면 디버거를 사용하여 파티클의 속성 변화를 추적하고, 어떤 노드에서 문제가 발생했는지 파악하세요.

사용자 정의 모듈은 나이아가라의 무한한 가능성을 열어주는 문입니다. 처음에는 어렵게 느껴질 수 있지만, 작은 기능부터 차근차근 만들어가다 보면 어느새 여러분만의 독창적인 파티클 효과를 자유자재로 만들어낼 수 있게 될 것입니다. 이제 나이아가라의 기본 모듈 사용법에 대한 여정을 마치고, 다음 장에서는 파티클 속성을 더욱 정교하게 제어하는 다양한 고급 기법들을 다루어 보겠습니다. 계속해서 흥미진진한 여정이 여러분을 기다리고 있습니다!