선행 단계: 이 페이지에서는 나이아가라 플러그인에 포함된 콘텐츠인 DefaultRibbonMaterial을 사용합니다. 하지만 메시 파티클 이펙트 생성 하우투를 완료한 경우 해당 튜토리얼에서 사용했던 M_Balloon 머티리얼을 사용해도 됩니다.
나이아가라에서는 리본이 빔으로 사용되고 있음을 표시하는 특정 모듈과 함께 리본 렌더러가 사용됩니다. 이 가이드에서는 번개를 시뮬레이션하는 빔 이펙트를 생성하는 방법을 배워봅니다.
시스템 및 이미터 생성
나이아가라에서는 시스템과 이미터가 독립적입니다. 현재 권장되는 워크플로는 기존 이미터나 이미터 템플릿에서 시스템을 생성하는 것입니다.
- 먼저 콘텐츠 브라우저에서 우클릭 후 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) 를 선택합니다. 이를 통해 나이아가라 오브젝트 선택 시 레벨 에디터 의 디테일 패널에 섹션이 추가되기 때문에 링크하려는 오브젝트를 선택할 수 있습니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
- 새 액터 컴포넌트 인터페이스 에서 핀을 드래그하고 놓습니다. 트랜스폼 구하기(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 를 선택합니다. 또는 스포이드를 사용하여 해당 레벨의 오브젝트를 선택할 수도 있습니다. 이제 해당 오브젝트를 이동시키면 빔 끝 위치가 함께 이동합니다.
이미지를 클릭하면 전체 크기로 표시됩니다.
최종 결과
축하합니다! 번개를 시뮬레이션하는 빔 이펙트를 생성했습니다. 아래 영상에서 번개 빔 이펙트의 예시를 볼 수 있습니다. 빔을 사용하여 만들 수 있는 비주얼 이펙트는 레이저, 광선 무기, 테슬라 코일 등 다양합니다.
