icon
5장 : 기본 스크립팅과 수학

나이아가라 스크립트 기본 개념


지금까지 나이아가라의 기본 구성 요소와 데이터 흐름에 대해 알아보셨습니다. 이제 여러분의 파티클 효과에 생명력을 불어넣고, 복잡한 로직을 구현하는 핵심 도구인 나이아가라 스크립트(Niagara Script) 에 대해 배울 차례입니다. 나이아가라 스크립트는 모듈의 내부 동작을 정의하고, 파티클의 속성을 계산하며, 복잡한 상호작용을 구현하는 데 사용되는 노드 기반의 비주얼 프로그래밍 환경입니다.

코딩에 익숙하지 않더라도 걱정하지 마세요. 나이아가라 스크립트는 언리얼 엔진의 블루프린트와 유사하게 시각적인 노드 연결을 통해 작동합니다. 이는 여러분이 코드를 직접 작성하는 대신, 논리적인 흐름을 블록처럼 조립하여 파티클의 모든 동작을 제어할 수 있게 해줍니다.


나이아가라 스크립트란 무엇인가요?

나이아가라 스크립트는 나이아가라 에디터의 스크립트 에디터(Script Editor) 패널에서 작업하는 비주얼 프로그래밍 공간입니다. 모든 나이아가라 모듈(이전에 배운 Initialize Particle, Add Velocity, Scale Color 등)은 내부적으로 이 나이아가라 스크립트로 구성되어 있습니다. 심지어 여러분이 만드는 사용자 정의 모듈도 이 스크립트 에디터에서 직접 로직을 구현하게 됩니다.

나이아가라 스크립트의 핵심 개념은 데이터 흐름(Data Flow) 입니다. 각 노드는 특정 연산(예: 더하기, 곱하기, 벡터 생성, 값 가져오기)을 수행하고, 그 결과를 다음 노드로 전달합니다. 이러한 데이터의 흐름은 파티클의 최종 속성을 계산하는 데 사용됩니다.


나이아가라 스크립트의 주요 구성 요소

스크립트 에디터에서 여러분이 다루게 될 주요 구성 요소들은 다음과 같습니다.

노드 (Nodes)

노드는 스크립트의 가장 기본적인 빌딩 블록입니다. 각 노드는 특정한 기능이나 연산을 수행합니다.

  • 입력 핀 (Input Pins): 노드의 왼쪽 또는 상단에 위치하며, 다른 노드로부터 데이터를 받거나 직접 값을 입력받습니다.
  • 출력 핀 (Output Pins): 노드의 오른쪽 또는 하단에 위치하며, 노드에서 처리된 결과를 다음 노드로 전달합니다.
  • 연결선 (Wires): 노드의 출력 핀과 다른 노드의 입력 핀을 연결하여 데이터의 흐름을 만듭니다.

매개변수 (Parameters)

매개변수는 파티클이 가지고 있는 속성(예: Particles.Color, Particles.Position, Particles.Velocity)이나 시스템/이미터의 속성(System.DeltaTime, Emitter.Age)을 나타냅니다.

  • Get 노드: 특정 매개변수의 현재 값을 가져올 때 사용합니다. (예: Get Particles.Color, Get Particles.Position)
  • Set 노드: 특정 매개변수의 값을 설정하거나 변경할 때 사용합니다. (예: Set New or Existing Parameter 노드를 사용하여 Particles.Color 값을 변경)

네임스페이스 (Namespaces)

나이아가라의 매개변수는 체계적인 관리를 위해 네임스페이스를 사용합니다. 이는 매개변수의 출처나 종류를 명확히 구분하는 데 도움을 줍니다. 주요 네임스페이스는 다음과 같습니다.

  • Particles.: 개별 파티클의 속성 (예: Particles.Position, Particles.Color, Particles.Lifetime).
  • System.: 나이아가라 시스템 전체의 속성 (예: System.DeltaTime, System.EffectType).
  • Emitter.: 개별 이미터의 속성 (예: Emitter.Age, Emitter.SpawnCount).
  • User.: 외부(블루프린트, C++ 등)에서 전달되는 사용자 정의 매개변수 (예: User.MyCustomValue).
  • Engine.: 언리얼 엔진 자체에서 제공하는 매개변수 (예: Engine.WorldTime).
  • Local.: 스크립트 내부에서 임시로 사용하는 지역 변수.

네임스페이스를 통해 어떤 매개변수가 어떤 스코프(Scope)에서 정의되고 사용되는지 명확히 알 수 있으며, 같은 이름의 매개변수가 다른 스코프에 있을 때 충돌을 방지합니다.

데이터 타입 (Data Types)

각 매개변수와 핀은 특정 데이터 타입을 가집니다. 올바른 데이터 타입끼리만 연결할 수 있습니다.

  • Float: 소수점을 포함하는 단일 숫자 (예: 1.5, 3.14).
  • Int: 정수 (예: 1, 100).
  • Vector2: 2차원 좌표 (X, Y).
  • Vector3: 3차원 좌표 (X, Y, Z), 위치나 속도에 주로 사용.
  • Vector4: 4차원 벡터 (X, Y, Z, W), 색상(RGBA)이나 쿼터니언 회전에 주로 사용.
  • Color: 색상 값 (RGBA).
  • Bool: 참/거짓 논리 값.
  • Enum: 열거형, 미리 정의된 목록 중 하나를 선택하는 타입.

스크립트 에디터에서 작업하기

  1. 스크립트 에디터 열기: 나이아가라 에디터에서 이미터의 모듈(예: Initialize Particle, Add Velocity)을 선택하거나, 사용자 정의 모듈을 생성하면 스크립트 에디터 패널에 해당 모듈의 내부 스크립트가 나타납니다.
  2. 노드 추가: 스크립트 에디터의 빈 공간에 마우스 우클릭하면 노드 검색창이 나타납니다. 여기서 원하는 노드를 검색하여 추가할 수 있습니다. (예: Add, Multiply, Sine, Make Vector, Get Particles.Position 등)
  3. 노드 연결: 노드의 출력 핀을 마우스로 클릭하고 드래그하여 다른 노드의 입력 핀에 연결합니다. 연결선이 나타나며 데이터가 흐르는 것을 시각적으로 보여줍니다.
  4. 값 설정: 노드에 직접 값을 입력해야 하는 경우, 해당 노드를 선택하면 디테일 패널에 속성이 나타나 값을 변경할 수 있습니다.

스크립팅의 기본 원칙: Evaluate 노드

대부분의 나이아가라 스크립트에는 Evaluate 노드가 포함됩니다. 이 노드는 스크립트의 시작점 역할을 하며, 모든 계산이 이 노드에서 시작되어 파이프라인을 따라 흐릅니다. 복잡한 사용자 정의 모듈을 만들 때는 Output 노드를 통해 최종 결과값을 Set New or Existing Parameter 노드로 전달하여 파티클 속성을 업데이트합니다.


나이아가라 스크립트는 파티클 효과에 생명력과 지능을 부여하는 핵심 도구입니다. 노드 기반의 직관적인 인터페이스 덕분에 코딩 경험이 없더라도 논리적인 사고방식만 있다면 충분히 다룰 수 있습니다. 다음 절에서는 이 스크립트를 사용하여 파티클의 움직임이나 속성에 수학적 연산을 적용하는 방법에 대해 더 깊이 알아보겠습니다.