선행 단계: 이 페이지에서는 나이아가라 플러그인에 포함된 콘텐츠인 DefaultRibbonMaterial을 사용합니다. 하지만 메시 파티클 이펙트 생성 하우투를 완료한 경우 해당 튜토리얼에서 사용했던 M_Balloon 머티리얼을 사용해도 됩니다.
나이아가라에서는 리본이 빔으로 사용되고 있음을 표시하는 특정 모듈과 함께 리본 렌더러가 사용됩니다. 이 가이드에서는 번개를 시뮬레이션하는 빔 이펙트를 생성하는 방법을 배워봅니다.
시스템 및 이미터 생성
나이아가라에서는 시스템과 이미터가 독립적입니다. 현재 권장되는 워크플로는 기존 이미터나 이미터 템플릿에서 시스템을 생성하는 것입니다.
먼저 '콘텐츠 브라우저(Content Browser)'에서 우클릭하고 FX > 나이아가라 시스템(Niagara System) 을 선택하여 나이아가라 시스템을 생성합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
선택한 이미터에서 새 시스템 생성(New system from selected emitters) 을 선택합니다. 그리고 다음(Next) 을 클릭합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
템플릿(Templates) 에서 스태틱 빔(Static Beam) 을 선택합니다. 더하기 기호(+)를 클릭하여 이 템플릿을 추가합니다. 그런 다음 완료(Finish) 를 클릭합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
새 시스템을 BeamSystem 으로 명명합니다. 더블클릭하여 '나이아가라 에디터(Niagara Editor)'에서 실행합니다.
BeamSystem 을 해당 레벨로 드래그합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
파티클 이펙트를 만들 때는 항상 시스템을 레벨로 드래그하는 게 좋습니다. 그러면 컨텍스트의 모든 변경사항과 편집 내용을 확인할 수 있습니다. 시스템에 대한 모든 변경사항은 해당 레벨의 시스템 인스턴스에 자동으로 전파됩니다.
새 시스템의 이미터 인스턴스에는 StaticBeam 이라는 디폴트 이름이 지정되어 있지만, 이름을 변경할 수도 있습니다. 시스템 개요에서 이미터 인스턴스의 이름을 클릭하면 해당 필드가 편집가능이 됩니다. 이미터의 이름을 FX_Beam 으로 변경합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
렌더러 세팅 변경
렌더(Render) 그룹은 스택의 마지막 부분이지만, 이펙트가 예상대로 표시되도록 하려면 몇 가지를 변경해야 합니다.
시스템 개요(System Overview) 의 선택(Selection) 패널에서 렌더 를 클릭하여 엽니다.
[
이미지를 클릭하면 전체 크기로 표시됩니다.
이 시스템의 이미터 템플릿에는 이미 리본 렌더러가 포함되어 있습니다. 이 가이드에서는 추후 특정 모듈을 추가하여 리본이 빔으로 사용되었음을 표시합니다.
이 렌더러에 사용되는 머티리얼은 DefaultRibbonMaterial 입니다. 다른 머티리얼을 사용하고 싶은 경우에는 드롭다운을 클릭하여 해당하는 머티리얼을 검색해 선택하면 됩니다.
리본 렌더링(Ribbon Rendering) 섹션에서 스크롤을 내리면 테셀레이션(Tessellation) 이라는 섹션이 있습니다. 이 섹션에서 커브 텐션(Curve Tension) 을 .5 로 설정합니다. 이 설정은 번개 이펙트의 뾰족한 정도에 영향을 줍니다. 이 값을 높이거나 낮춰 이펙트를 변형할 수 있습니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
이미터 업데이트 그룹 세팅 편집
먼저 이미터 업데이트 그룹에서 모듈을 편집합니다. 이러한 행동은 이미터에 적용되며 프레임별로 업데이트됩니다.
시스템 개요 에서 이미터 업데이트 그룹을 클릭하여 선택 패널에서 엽니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
스태틱 빔 이미터 템플릿의 라이프 사이클 모드(Life Cycle Mode) 는 기본적으로 셀프(Self) 로 설정되어 있습니다. 즉, 이미터의 라이프 사이클과 루프 행동은 시스템에 의해 처리되는 게 아니라 직접 설정됩니다. 이 이펙트의 경우 루프 경과시간(Loop Duration) 값에 플로트를 하나 추가하여 약간의 무작위성을 추가할 것입니다. 루프 경과시간 의 드롭다운 화살표를 클릭하고 동적 입력(Dynamic Inputs) > 랜덤 범위 플로트(Random Ranged Float) 를 선택합니다. 이렇게 하면 루프 경과시간에 최소(Minimum) 필드 및 최대(Maximum) 필드가 추가됩니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
루프 경과시간의 최소 및 최대 값을 다음과 같이 설정합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
세팅
값
최소
.1
최대
.2
빔 이미터 구성(Beam Emitter Setup) 모듈은 이 이펙트가 빔을 사용한다는 것을 처음으로 나타냅니다. 스태틱 빔 템플릿으로 시작했으므로 이 모듈은 이미 포함되어 있습니다. 빔 시작(Beam Start) 과 빔 끝(Beam End) 은 디폴트 위치에 둡니다. 박스를 체크하여 절대 시작(Absolute Start) 과 절대 끝(Absolute End) 을 활성화할 수 있습니다.
빔의 시작 위치는 씬의 나이아가라 시스템 위치에 의해 정의됩니다. 끝 위치는 빔 끝에 설정된 스태틱 좌표에 의해 정의되며, 직접 값을 편집하여 변경할 수 있습니다. 튜토리얼 끝에서는 빔의 끝점을 액터에게 연결하는 방법을 배우게 됩니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
이펙트에 원호나 커브를 추가하려면 박스를 체크하여 빔 탄젠트 사용(Use Beam Tangents) 을 활성화합니다. 이렇게 하면 빔 시작 탄젠트(Beam Start Tangent) 및 빔 끝 탄젠트(Beam End Tangent) 세팅이 표시됩니다. 디폴트로 리셋(Reset to Default)(작은 노란색 화살표) 아이콘을 클릭하여 빔 시작 탄젠트 값을 벡터에 플로트 곱하기(Multiply Vector by Float) 로 변경합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
빔 시작 탄젠트 벡터(Vector) 와 플로트(Float) 를 다음 값으로 설정합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
세팅
값
벡터
X: 0, Y: 0, Z: 1
플로트
.5
빔 끝 탄젠트 벡터와 플로트를 다음 값으로 설정합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
세팅
값
벡터
X: 0, Y: 0, Z: 1
플로트
1
즉각적인 스폰 버스트(Spawn Burst Instantaneous) 모듈에서 스폰 수(Spawn Count) 를 35 로 설정합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
파티클 스폰 그룹 세팅 편집
다음으로 파티클 스폰 그룹에서 모듈을 편집합니다. 이러한 행동은 파티클이 처음 스폰될 때 파티클에 적용됩니다.
시스템 개요 에서 파티클 스폰 그룹을 클릭하여 선택 패널에서 엽니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
파티클 초기화(Initialize Particle) 모듈에서 수명(Lifetime) 파라미터를 찾습니다. 이 파라미터는 파티클이 사라지기 전까지 얼마나 오랫동안 표시될지를 결정합니다. 수명 을 .2 로 설정합니다. 이렇게 수명을 짧게 설정하면 빔이 번쩍이게 되므로 더 실감나는 번개를 만들 수 있습니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
빔 스폰(Spawn Beam) 모듈은 두 번째 빔에 특화된 모듈입니다. 이 모듈에서는 아무것도 설정하지 않고 그대로 두면 됩니다.
세 번째 빔에 특화된 모듈은 빔 너비(Beam Width) 모듈입니다. 빔 너비는 커브에서 플로트(Float from Curve) 로 설정되어 있습니다. 경사로 위/아래(Ramp Up Down) 템플릿을 선택하여 이 셰이프를 커브에 적용합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
커브 다이어그램 아래에는 추가 세팅이 있습니다. 커브 스케일(Scale Curve) 을 5 로 설정합니다.
파티클 업데이트 그룹 세팅 편집
이제 다음으로 파티클 업데이트 그룹에서 모듈을 편집합니다. 이러한 행동은 이미터의 파티클에 적용되며 프레임별로 업데이트됩니다.
시스템 개요 에서 파티클 업데이트 그룹을 클릭하여 선택 패널에서 엽니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
컬러(Color) 모듈에서 RGB 값을 다음과 같이 설정합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
커브를 분해해서 빔이 번개처럼 갈라지고 튀도록 만들려면 떨림 위치(Jitter Position) 모듈을 추가해 줍니다. 그러려면 더하기 기호(+) 아이콘을 파티클 업데이트 에서 클릭하여 위치(Location) > 떨림 위치 를 선택합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
떨림 위치 모듈을 제대로 작동하게 하려면 빔 업데이트(Update Beam) 모듈이 필요합니다. 빔 업데이트 모듈을 추가하려면 파티클 업데이트 에서 더하기 기호(+) 아이콘을 클릭한 다음 빔(Beam) > 빔 업데이트 를 선택합니다. 시스템 개요 에서 빔 업데이트 모듈을 스택의 떨림 위치 모듈 위로 드래그합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
이제 떨림 위치 모듈로 돌아갑니다. 떨림 양(Jitter Amount) 은 디폴트 세팅이 10 이며, 떨림 딜레이(Jitter Delay) 의 디폴트 세팅은 .25 입니다. 하지만 떨림 딜레이 를 .1 로 낮추면 빔이 각지고 들쭉날쭉한 모션으로 굽어지기 시작할 것입니다. 값이 .1 이어도 들쭉날쭉한 빔 아래로 원본의 원호 셰이프가 계속 보일 수 있기 때문에 아직은 이상적인 상태는 아닙니다. 이 문제를 해결하려면 떨림 딜레이를 음수로 설정해야 합니다. 떨림 딜레이 를 -.01 로 설정합니다. 떨림 양 을 15 로 설정합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
빔의 끝 위치 조정하기
이미터 업데이트 그룹에 있는 빔 이미터 구성 모듈에서 빔의 시작 및 끝 위치를 설정할 수 있습니다. 기본적으로 빔의 끝 위치는 스태틱 월드 위치 값으로 설정되기 때문에 값을 조정하여 수동으로 편집할 수 있습니다.
하지만, 해당 끝 위치를 씬의 액터로 링크하는 데 유용하게 사용될 수 있습니다. 이렇게 하면 빔의 끝 위치를 편집하고자 하는 경우 해당 액터를 간단히 이동시킬 수 있습니다. 블루프린트를 사용하는 것이 한 가지 방법입니다. 더욱 간단한 또 다른 방법으로는 스크래치 패드를 이용하여 동적 입력을 설정하는 것입니다.
선택 패널에서 빔 이미터 구성 모듈을 클릭하여 선택합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
빔 끝 옆의 드롭다운 화살표를 클릭한 후 scratch 를 검색하고, 새 동적 스크래치 입력(New Dynamic Scratch Input) 을 선택합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
스크래치 패드가 기본 설정으로 열립니다. 입력, 일부 값을 구하는 데 사용할 수 있는 맵 가져오기, 그리고 출력으로 구성되어 있습니다. 디폴트 입력을 우클릭한 후 이 디폴트 입력은 필요하지 않으므로 핀 제거(Remove Pin) 를 선택합니다.
더하기 기호(+)를 클릭하여 새 핀을 추가합니다. actor 를 검색하여 새로 만들기(Make New) > 액터 컴포넌트 인터페이스(Actor Component Interface) 를 선택합니다. 이를 통해 나이아가라 오브젝트 선택 시 레벨 에디터(Level Editor) 의 디테일 패널에 섹션이 추가되기 때문에 연결하고 싶은 오브젝트를 선택할 수 있습니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
새 액터 컴포넌트 인터페이스 에서 핀을 드래그하고 놓습니다. 트랜스폼 구하기(Get Transform) 를 선택합니다. 이를 통해 링크된 오브젝트의 트랜스포메이션 정보가 제공됩니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
위치 값을 출력에 연결합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
시스템이 자동으로 Position -> Vector3f 노드를 추가합니다. 이를 통해 벡터를 대규모 월드 좌표를 위한 적절한 포맷으로 변환할 수 있습니다. 캔버스를 정리하여 요소들이 겹치지 않게 할 수 있습니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
이제 스크래치가 완료되었으므로, 변경사항을 나이아가라 시스템으로 다시 전파하려면 적용(Apply) 을 눌러야 합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
나이아가라 에디터에서 빔 이미터 구성 모듈을 다시 선택합니다. 이제 빔 끝 과 연결된 새 액터 컴포넌트 인터페이스 가 있는 것을 확인할 수 있습니다. 드롭다운 화살표를 클릭하고 만들기(Make) > 새 유저 파라미터 읽기(Read from new User parameter) 를 선택합니다. 이렇게 하면 나이아가라 시스템 외부에서 설정할 수 있는 새 유저 파라미터가 생성됩니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
시스템은 오브젝트 이름과 파라미터 이름을 사용하여 유저 파라미터를 디폴트로 생성하므로 유저 파라미터가 꽤 길어집니다. 이 파라미터 이름을 바꾸고 싶은 경우 파라미터 패널로 이동합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
더블클릭하고 New Actor Component Interface_Beam End 를 Beam_End 와 같이 짧은 이름으로 변경합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
나이아가라 시스템을 저장하고 에디터를 닫아 레벨 에디터 로 돌아갑니다. 이전에 레벨로 드래그했던 빔 시스템이 보일 것입니다. 나이아가라 시스템의 시작 포인트를 이동시켜 빔의 시작 위치를 미리 처리할 수 있습니다. 단, 끝 포인트는 고정됩니다. 다음으로 할 일은 씬의 오브젝트에 어태치하는 것입니다.
먼저, 기본 스피어를 생성하여 끝 포인트에 링크합니다. 생성(Create) 메뉴에서 셰이프(Shapes) > 스피어(Sphere) 를 선택합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
아웃라이너(Outliner) 에서 스피어를 선택하고 더블클릭하여 해당 스피어의 이름을 Sphere_BeamEnd 로 변경합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
아웃라이너 에서 나이아가라 시스템 BeamSystem 을 선택합니다. 디테일 패널에서 오버라이드 파라미터(Override Parameters) 섹션으로 스크롤을 내립니다. 여기서는 스크래치 모듈을 생성했을 때 구성한 Beam_End 사용자 파라미터를 확인할 수 있습니다. 소스 액터(Source Actor) 의 드롭다운 메뉴를 선택한 후 Sphere_BeamEnd 를 선택합니다. 또는 스포이드를 사용하여 해당 레벨의 오브젝트를 선택할 수도 있습니다. 이제 해당 오브젝트를 이동시키면 빔 끝 위치가 함께 이동합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
최종 결과
축하합니다! 번개를 시뮬레이션하는 빔 이펙트를 생성했습니다. 아래 영상에서 번개 빔 이펙트의 예시를 볼 수 있습니다. 빔을 사용하여 만들 수 있는 비주얼 이펙트는 레이저, 광선 무기, 테슬라 코일 등 다양합니다.