Unreal Engine - Simple Niagara (with cpp)

2025. 2. 4. 17:53·Unreal Engine

캐릭터가 움직이면, 해당 캐릭터의 뒷부분에 Trail 효과를 주고 싶어서 관련 기술을 찾아보던 도중 나이아가라 시스템을 알게 되었고 간단히 사용해 본 내용을 정리해 볼 것이다.

1. 나이아가라 시스템 생성


  • FX -> 나이아가라 시스템으로 생성을 한다.

  • 이후 어떤 이미터나 시스템을 사용할 것인지 나오는데, 이유는 잘 모르지만 참고한 많은 곳에서 Empty로 설정을 한다고 하였다.
  • 그런데, 엔진 버전 차이인지 Completely Empty가 아닌 Minimal로 만들어야 참고한 자료들과 같은 모습으로 생성할 수 있었다.

 

 

2. 이미터 값 수정하기


  • 아래 사진과 같이 두가지 노드가 뜨는데,
    • 좌측은 사용자 파라미터에 skeletal mesh를 추가하는 등의 작업을 할 때 사용해보았고,
    • 우측 노드를 주로 사용해서 값을 변경하고 추가하는 작업을 하였다.

 

2 - 1. 파티클 스폰

Initialize Partilce

  • 생성시 default로 존재하며, 랜더에서 지정한 값들이나 lifetime 등을 수정할 수 있다.

Add Velocity

  • 파티클이 이동하는 속도를 지정할 수 있다.

 

Initialize Mesh Reproduction Sprite

  • 우리가 사용자 파라메터에서 만든 Skeletal Mesh를 가져와서 넣을 수 있다.

+ 를 눌러서 Skeleta Mesh를 추가한 모습

  • 추가한 직후 디테일 창을 보면, 아래와 같이 나타는데,

  • 사용자 파라메터 Skeletal Mesh를 드래그해서 Mesh에 가져다 두면 다음과 같이 변한다

 

2 - 2. 랜더

  • 어떤 모습의 파티클로 랜더할 지 정하는 부분이다.
  • 다음과 같이 여러개의 랜더러가 있다. (default는 스프라이트 렌더러이다)

2 - 3. 이미터 업데이트

Spawn Rate

  • 1초에 몇개의 파티클을 스폰할 지 정하는 부분이다.
  • 아래 사진처럼 5000의 값을 넣은 결과 빛나는 것을 볼 수 있다.
  • 위로 길게 보이는 것은 위에서 언급한 Add Velocity값에서 Z값을 50을 넣어주었기 때문이다.

 

2 - 4. 파티클 업데이트

Color 

  • 파티클의 색상을 지정할 수 있다.
  • 이때 Color에서 Color from Curve를 지정해서 그래디언트를 줄 수 도 있다.

Jitter Position

  • 파티클이 흔들리는 효과를 줄 수 있다.

Scale Velocity

  • 속도값이 너무 클 때 속도값을 적절한 비율로 줄여주기 위해서 사용하는 것 같다.
    • 속도값이 너무 크면 파티클이 너무 빠르게 움직이는 것을 방지
    • 캐릭터 뒤를 따라가는 것 구현할 때 사용했다.

Update Mesh Reproduction Sprite

  • skeletal mesh를 기반으로 효과를 구현할 때 넣어주어야 하는 모듈이다.
  • 위에서 한 것 처럼 사용자 파라메터 skeletal mesh를 넣어주고 Overwrite Intrinsic Variables를 꺼주어야 한다. (캐릭터 뒤를 따라오는 효과를 내기 위해서는 꺼주어야함)

 

 

 

3. Skeletal Mesh 사용할  때 주의점


  • 프로퍼티를 CPU에서 GPU로 바꿔주어야 한다. (그래야지 프리뷰가 보인다)
  • 파티클 스폰에 Initialize Mesh Reproduction Sprite를 추가하고,
  • 파티클 업데이트에 Update Mesh Reproduction Sprite를 추가해야 한다.
  • 완성 이미터 모습

  • 영상

 

 

 

4. C++로 적용하기


  • Build.cs 파일에서 아래처럼 Niagara를 추가해 주어야 한다.
    • 이후에 빌드를 실행하고 모든 에디터와 VS를 꺼야한다.
    • 프로젝트가 있는 폴더로 가서 .uproject 파일 우클릭 후 generate visual studio project files를 해주면 된다.
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "EnhancedInput", "Niagara" });
  • 사용하기 위해서 필요한 라이브러리는 아래와 같다.
#include "NiagaraFunctionLibrary.h"
#include "NiagaraComponent.h"
  • 사용시 주의 점
    • 액터에 컴포넌트로 붙이기 위해서 필요한 타입은 UNiagaraComponent 이다.
    • 우리가 만든 나이아가라 시스템의 타입은 UNiagaraSystem이다.
    • 나이아가라 컴포넌트를 Root나 Scene 컴포넌트에 붙여주어야 한다.
  • 예제 코드
//Character.h

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Player|Components")
TObjectPtr<UNiagaraComponent> NiagaraComp;
NiagaraComp = CreateDefaultSubobject<UNiagaraComponent>(TEXT("Niagara Particle"));
NiagaraComp->SetupAttachment(SceneComp);

static ConstructorHelpers::FObjectFinder<UNiagaraSystem> NiagaraAsset(TEXT("/Game/Effects/NS_Line.NS_Line"));
if (NiagaraAsset.Succeeded())
{
	NiagaraComp->SetAsset(NiagaraAsset.Object);
}

NiagaraComp->AddRelativeLocation(FVector(0.f, -40.f, -20.f));
  • 영상

 

 

 

5. 참고 영상과 자료


  • 참고 영상

https://www.youtube.com/watch?v=lXPSNIak64Y&list=LL&index=1

https://www.youtube.com/watch?v=SmSuhARlYqI&list=LL&index=2&t=80s

  • 참고 자료

https://zeniff.tistory.com/26

 

[Unreal Engine C++] C++에서 Niagara System 스폰

필자가 프로젝트를 진행하면서 사용하였던 나이아가라 시스템을 C++로 스폰시키고 사용 후 디스폰시키는 방법, 나이아가라 시스템을 패키징 할 때 발생할 수 있는 문제를 수정하는 방식을 확인

zeniff.tistory.com

https://dev.epicgames.com/community/learning/tutorials/Gx5j/using-niagara-in-c

'Unreal Engine' 카테고리의 다른 글

Unreal Engine - 아이템 스폰 및 캐릭터와 연동  (1) 2025.02.07
Unreal Engine - 아이템 만들기 (+충돌 처리)  (2) 2025.02.06
Unreal Engine - Data Table  (0) 2025.02.03
UE5 Issues : C++ 충돌 처리  (3) 2025.01.27
UE5 Issues : Additive Animation (animation sequence 색깔)  (0) 2025.01.26
'Unreal Engine' 카테고리의 다른 글
  • Unreal Engine - 아이템 스폰 및 캐릭터와 연동
  • Unreal Engine - 아이템 만들기 (+충돌 처리)
  • Unreal Engine - Data Table
  • UE5 Issues : C++ 충돌 처리
gbleem
gbleem
gbleem 님의 블로그 입니다.
  • gbleem
    gbleem 님의 블로그
    gbleem
  • 전체
    오늘
    어제
    • 분류 전체보기 (189)
      • Unreal Engine (73)
      • C++ (19)
      • 알고리즘(코딩테스트) (32)
      • TIL (60)
      • CS (4)
      • 툴 (1)
  • 블로그 메뉴

    • 홈
    • 카테고리
  • 링크

    • 과제용 깃허브
    • 깃허브
    • velog
  • 공지사항

  • 인기 글

  • 태그

    싱글턴
    gamestate
    addonscreendebugmessage
    additive animation
    character animation
    템플릿
    map을 vector로 복사
    enhanced input system
    applydamage
    DP
    상속
    Vector
    const
    BFS
    actor 클래스
    motion matching
    C++
    cin함수
    blend pose
    매크로 지정자
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
gbleem
Unreal Engine - Simple Niagara (with cpp)
상단으로

티스토리툴바