본문 바로가기
이펙트 (FX)/이펙트 팁 : Unreal

[Unreal/Niagara] 지면과 상호작용하는 번개 효과 제작법 소개 (SKM Lightning Part 2)

by Minkyu Lee 2026. 7. 26.

 

개요

스켈레탈 메시와 지면이 서로 상호작용하는 번개 효과 제작법 영상을 소개한다.

 

내용

  • 영상 정보
    • 영상 제목: Make Lightning Interact With Surfaces in Unreal Engine Niagara!
    • 채널명: Motion Dreams
    • 영상 링크: https://youtu.be/HdA_En3G54A

 

 

  • 핵심 요약 (Conclusion)
    • 언리얼 엔진 5 니아가라(Niagara) 시스템을 활용하여 캐릭터 표면에서 생성되는 번개 및 빔(Lightning/Beam) 이펙트가 주변 오브젝트의 표면 및 지형과 상호작용하며 정확히 달라붙도록(Stick) 만드는 워크플로우를 다룹니다.
    • 기존의 스켈레탈 메시 표면 샘플링(Sample Skeletal Mesh) 기법과 메시 법선(Normal) 벡터 연산을 결합하여 빔의 시작점과 방향을 정의하는 방법을 설명합니다.
    • GPU 컴퓨팅 시뮬레이션(GPU Compute Sim) 환경에서 'Move to Nearest Distance Field Surface' 모듈을 활용하여 빔의 끝점을 주변 씬 지오메트리 표면에 정밀하게 밀착시키는 기술을 구현합니다.
    • 리본 렌더러(Ribbon Renderer) 설정, 'Set New or Existing Parameter Directly' 노드를 통한 파라미터 블렌딩(Lerp), 그리고 Jitter 및 Beam Tangent 조정을 통한 사실적인 번개 곡선 왜곡 효과를 완성합니다.
  • 타임라인별 상세 정리
    1. 이미터 생성 및 기본 설정 (00:00:00 ~ 00:01:42)
      • 이전 영상에서 제작한 일렉트로큐팅(Electrocuting) 효과에 이어, 주변 표면에 닿는 번개 이펙트를 제작하기 위한 새로운 니아가라 이미터를 추가합니다 [00:07].
      • 새로운 이미터 생성: 최소한의 구성을 가진 'Minimal' 이미터를 선택하고 이름을 'Nearest Surface Heat Lightning'으로 지정합니다 [00:42].
      • 이미터 상태(Emitter State): 반복(Loop) 방식을 Infinite로 설정하고, Loop Duration은 0.1초로 설정합니다 [00:50]. 작업 편의를 위해 'Isolate' 아이콘을 클릭하여 해당 이미터만 단독으로 확인합니다 [00:50].
      • 메시 샘플링: 'Sample Skeletal Mesh' 모듈을 추가하여 번개의 스폰 위치를 정의합니다 [00:59]. Attach Parent로 설정하고 기본 및 미리보기 메시로 'Queen' 캐릭터 메시를 지정합니다 [01:10]. 이전에 생성한 유저 파라미터를 드래그 앤 드롭하여 연동할 수 있습니다 [01:18].
      • 샘플링 모드: Mesh Sampling Type을 'Surface'로 설정하고, Random Evolution을 'Every Frame'으로 설정하여 매 프레임마다 메시 표면의 새로운 위치를 샘플링합니다 [01:25].
    2. 빔 스폰 및 리본 렌더러 구성 (00:01:43 ~ 00:03:11)
      • 빔 셋업: 'Beam Emitter Setup' 모듈을 추가하여 번개 이미터의 기본 설정을 담당하게 합니다 [01:43].
      • 스폰 설정: Particle Spawn 카테고리에 'Spawn Beam' 모듈을 추가하여 실제 빔을 생성하고, 그 아래에 'Spawn Burst Instantaneous' 모듈을 추가하여 약 10개의 파티클이 즉시 스폰되도록 설정합니다 [01:53].
      • 렌더러 변경: 기본 스파이트(Sprite) 렌더러를 비활성화하고, 'Ribbon Renderer'를 추가합니다 [02:12].
      • 파라미터 연결: 빔의 시작점을 정의하기 위해 Sample Skeletal Position을 빔 시작 입력단에 연결합니다 (화살표 클릭 -> Link Inputs -> 드롭다운에서 올바른 파라미터 선택) [02:22].
      • 파티클 수명 및 시각 효과: Particle Lifetime을 약 2초로 단축하여 빔이 빠르게 생성되고 사라지게 합니다 [02:30]. 'Beam Width' 모듈을 추가하여 빔의 두께를 가시화하고, 밝은 파란색 컬러 설정과 함께 Value를 100으로 주어 강한 광원(Glow) 효과를 부여합니다 [02:40].
      • 게임플레이 연동: 이전에 제작한 애니메이션 몽타주(Animation Montage)에 해당 니아가라 시스템을 추가하여 버튼 입력 시 실행되도록 구성합니다 [03:04].
    3. 표면 법선 방향으로 빔 확장 설정 (00:03:12 ~ 00:04:13)
      • 위치 연산 변경: 무작위 스폰을 넘어 빔을 바깥쪽으로 쏘아 올리기 위해, 위치 모듈을 'Add Vector to Position'으로 변경합니다 [03:20].
      • 벡터 계산: 위치 파라미터를 복사·붙여넣기 한 후, 연산 방식을 'Multiply Vector by Float'으로 변경합니다 [03:30].
      • 표면 법선 활용: Sample Skeletal Mesh 모듈이 제공하는 'Sample Normal' 파라미터를 벡터 입력단에 연결하여 메시 표면의 법선 방향으로 빔이 밀려나도록 설정합니다 [03:46].
      • 플로트 커브: Float Curve 값을 100으로 설정하여 표면으로부터 약 100cm 가량 바깥쪽으로 빔이 뻗어나가도록 합니다 [03:57]. 이때 'Absolute Beam End'를 활성화해야 합니다 [04:05].
    4. GPU 시뮬레이션 및 Distance Field를 활용한 표면 부착 (00:04:14 ~ 00:06:22)
      • GPU 전환: 빔을 가장 가까운 표면에 밀착(Stick)시키기 위해 이미터를 GPU 기반으로 변경합니다. Properties에서 Simulation을 'GPU Compute Sim' 및 'Fixed'로 설정합니다 [04:15].
      • Distance Field 모듈 추가: Particle Spawn 카테고리에서 'distance'를 검색하여 'Move to Nearest Distance Field Surface GPU' 모듈을 추가합니다 [04:26]. 이 모듈을 통해 모든 빔이 주변의 씬(Scene) 지오메트리 표면에 달라붙게 됩니다 [04:36].
      • 파라미터 재기입(Rewrite): 이 모듈은 위치 데이터를 파티클 포지션에 직접 쓰기 때문에, 기존 빔 설정과 충돌하지 않도록 별도의 파라미터 블렌딩 처리가 필요합니다 [04:50].
      • 파라미터 설정 노드 추가: 'Set New or Existing Parameter Directly' 모듈을 추가하여 대상(Target)을 Particles Position으로 설정합니다 [05:07].
      • Lerp 포지션 적용: 방식을 'Lerp Position'으로 변경하여 두 위치를 부드럽게 혼합합니다 [05:26]. Alpha 값에는 'Ribbon Link Order'를 연결하여 A에서 B로 이어지는 시작-끝 매핑을 구성합니다 [05:36].
      • A(시작점)에는 Sample Skeletal Position을, B(끝점)에는 Distance Field 모듈이 기록한 위치 데이터를 연결하여 번개가 캐릭터에서 출발해 가장 가까운 표면에 정확히 안착하도록 완성합니다 [05:43].
    5. 지터, 탄젠트 및 최종 디테일 보완 (00:06:23 ~ 00:08:31)
      • 검색 거리 및 반경 조정: 플로트 값과 반경(Radius) 값을 조절하여 번개가 탐색하는 대략적인 검색 거리를 최적화합니다 [06:14].
      • 빔 왜곡 및 두께: 이전에 만든 다른 이미터에서 'Jitter Position' 모듈과 'Beam Width' 모듈을 복사해와서 번개의 불규칙한 떨림과 두께감을 부여합니다 [06:30].
      • 곡률(Curvature) 추가: Beam Emitter Setup에서 'Use Beam Tangent'를 활성화하고, Start Tangent에 Sample Normal 파라미터를 연결하여 번개의 자연스러운 곡선을 유도합니다 [06:56].
      • 루프 및 수명 조정: 빔의 지속 시간을 약 6.5초로 유지하기 위해 Loop Behavior를 Multiple로 설정하고 Loop Count를 65회로 지정합니다 [07:14].
      • 머티리얼 적용: Ribbon Renderer에 기존에 사용하던 번개 전용 머티리얼을 적용하고 디셀러레이션 옵션을 비활성화합니다 [07:39].
      • 최종 결론: GPU 이미터 특성상 라이트 렌더러 추가나 빔으로부터의 파티클 생성 제한 등이 존재하지만, 기존의 일렉트로큐팅 효과와 결합할 경우 압도적인 시각적 완성도를 보여줍니다 [07:50].

댓글