실감 공통편 나이아가라와 파티클
안녕하세요 박현상입니다
이번 언리얼 VFX에서는
나이아가라 이펙트 시스템에 대하여 알아보려고 합니다
나이아가라는 언리얼의 파티클 시스템으로
과거의 캐스케이드에서 업그레이드된 시스템입니다
테크니컬 아티스트들은 이 나이아가라를 사용해서
프로그래머의 도움을 받지 않고도
추가적인 기능을 직접 생성할 수 있는데요
이 나이아가라 시스템에는
다양한 색, 움직임 등을 제어할 수 있는
다양한 모듈들이 있는데요
모든 모듈들에 대한 설명은 어렵겠지만
실제 예제를 통해서
주요하게 사용할 수 있는 기능들을 중심으로
학습 내용을 구성해 보았습니다
먼저 언리얼 VFX의 첫 번째 시간에는
나이아가라와 파티클에 대하여 알아보려고 합니다
나이아가라는 파티클이라고 하는 형식을 통해서
다양한 시각효과를 만드는 애셋입니다
이러한 파티클 시스템은
시간에 따라 제어가 된다는 특징을 가지고 있는데요
이번 시간에는 이러한 파티클의
화려한 움직임과 색의 변화를 통해
유저들의 시선을 끄는 방법에 대하여 알아보겠습니다
나이아가라의 개념
본격적인 강의에 앞서서
프로젝트에 필요한 세팅부터 먼저 알아보겠습니다
여러분들이 일반적으로 이 게임 항목에서
Third Person을 먼저 선택해서
블루프린트 그리고 스타터 콘텐츠가
반드시 포함되게끔 설정을 해주시고요
그러고 나서 프로젝트 이름을 지으신 후에
Create 버튼을 눌러주시면 됩니다
혹시라도 이미 여러분들이
Third Person의 스타터 콘텐츠가 없는 상태에서
프로젝트를 생성하셨다고 하더라도
이 콘텐츠 브라우저에서 Add 버튼을 클릭하시고
상단에 Add Feature 또는 Content 팩 항목을
선택해 주시면 됩니다
그러면 여기에서 여러분들이 필요에 따라서
Content 항목에서는 스타터 콘텐츠를 추가하실 수가 있고요
Blueprint 항목에서는 Third Person을 추가하실 수가 있습니다
그래서 이 두 가지
스타터 콘텐츠와 Third Person이 추가가 된
프로젝트의 형태에서 나머지 수업들을 진행해 볼 겁니다
이번 강의를 통해서 여러분들이 학습하게 되는 것은
나이아가라라고 하는 애셋입니다
나이아가라는 언리얼 엔진에서 제공되는
이펙트 효과를 만드는 애셋인데요
기본적으로 이펙트라고 하는 것은
사람이 걸어갈 때 모래 위에서 걷는다면
연기 같은 것이 나겠죠
마찬가지로 불을 피운다든가 마법을 쓴다든가 하면
불꽃이 일어날 거고요
혹은 벽에 총알이 땅하고 부딪힌다면
연기와 함께 작은 부스러기 파편 같은 것들이 튈 겁니다
이러한 것들을 만들기에 적합한 종류의 애셋입니다
일반적으로 사용자가 하는 행동에 대해서
단순히 애니메이션을 보여주거나
UI로만 보여주는 것이 아니라
시각적으로 유저 행동에 대한
리액션을 하는 역할을 담당합니다
나이아가라는 기본적으로 다양한 옵션을 가지고 있습니다
색을 바꾼다든가 움직임을 만든다든가
여러 가지 기능들이 있는데
이러한 기능들은 또 다시
다양한 옵션들, 파라미터들로 구성되어 있는데요
이런 것들을 다 하나하나 다루는
전문 이펙터 분들이야 수월하게 쓰시겠지만
전문 이펙터가 아니라면
굉장히 공부하기 어려운 영역 중에 하나입니다
그래서 제가 추천드리는 것은
마켓플레이스를 통해서
여러분들이 나이아가라 애셋 혹은
이펙트 애셋 같은 것들을 구하셔서
수정해서 사용하시는 것도 좋은 방법입니다
또한 여기서 얻은 애셋을 그대로 쓰는 방법도 있겠지만
약간씩 다양한 옵션들을 직접 바꿔가면서
내가 원하는 형태로 수정해 나가는 방식으로
공부해 보시는 것도 좋은 방법입니다
나이아가라를 공부하는 데 있어서
여러분들이 나중에 인터넷에서 혹은
마켓플레이스 같은 곳에서
액터 같은 것들을 검색을 해보실 때요
VFX 혹은 이펙트라고 검색을 해보시거나
아니면 애셋의 원래 이름인
나이아가라라고 검색을 해보셔도 좋습니다
또한 이러한 이펙트 자체는
보통 파티클이라고 하는
작은 알갱이 입자들로 이루어져 있어서
흔히 파티클 이펙트 내지는 파티클 시스템이라고도 불립니다
언리얼뿐만 아니라 대부분의 3D 혹은 2D에서
특수 효과들을 만들 때 이러한 파티클 시스템들은
자체적인 시스템들이 모두 다 갖춰져 있습니다
나이아가라 이전에는 언리얼에서는
캐스케이드라는 시스템을 사용했었습니다
결과적으로 나이아가라나 캐스케이드나 모두 다
파티클이라고 하는 작은 알갱이들을 표현하기 위한 애셋들입니다
특히 스타터 콘텐츠에서 기본 제공되는 것들은
캐스케이드로 되어 있습니다
하지만 캐스케이드에 비해서 나이아가라는
훨씬 더 발전되어 있고
모듈에 대한 편집뿐만 아니라 확장도 가능한
굉장히 다양한 기능들을 내포하고 있습니다
그래서 이전보다도 애니메이션 데이터라든가
블루프린트 데이터들과 서로 연계되는
상호작용을 만들기에도 훨씬 좋은 시스템입니다
여러분들이 스타터 콘텐츠 항목에서 파티클
그 안에 있는 이러한 애셋들을 보신다면 여기에서
P_Fire라고 되어 있는 것을 한번 눌러보겠습니다
여기 보면 캐스케이드라고 되어 있죠
더블 클릭해 보면 이건 굉장히 옛날 UI입니다
언리얼 4 이전에 3 때도 사용해오던 UI인데
지금 보시는 것처럼 이렇게 불꽃 효과가 일어나고 있고
보시는 것처럼 연기나 작은 스파크 같은 것들이 일어나고 있죠
우측에 있는 Emitter라고 하는
여러 가지 세팅들이 있는데요
보면 이 각각의 모듈들
여러 가지들이 이렇게 구성이 되어 있습니다
그리고 이러한 구성들마다 디테일 창에서 보이는
굉장히 많은 옵션들이 있죠
근데 보시면 몇 가지 특징 같은 것들이 보일 겁니다
분명히 같은 기능들임에도 불구하고
여기에서 보면 순서가 어떤 것은 로케이션이 위에 있고
어떤 것은 사이즈가 여기 있고
Velocity가 Initialize 초기화하는 항목이 아래에 빠져 있고
중간에 다른 내용들이 들어가 있고
이런 식으로 순서가
중구난방으로 이루어져 있는 것을 보실 수가 있는데요
이게 캐스케이드의 단점일 수가 있습니다
결국 이렇게 순서에 상관없이
Initialize나 이런 것들을 상관없이
끼워 넣는다고 하더라도 작동은 되는데
다만 다른 사람의 작업물을 내가 수정하겠다는 관점에서 보면
조금 파악하기가 어려울 수가 있겠죠
이러한 순서나 정보들을 나중에 나이아가라에서는
조금 더 정돈된 형태로 제공하기 때문에
여러분들이 이러한 애셋을 파악하는데
조금 더 쉬우실 수가 있고요
우선은 에디터를 연 김에 파티클이라고 하는 시스템
나이아가라든 그것이 캐스케이드든
작동되는 원리를 간단하게 알아볼 건데요
여기에 보이는 이 한 칸의 길쭉한
Flame이라고 되어 있는 부분
이 부분은 우리가 Emitter라고 부릅니다
그리고 이 Emitter 안에 있는 이 세부적인 것들을
우리는 모두 모듈이라고 부릅니다
그것이 Require 모듈이 됐든, Spawn 모듈이 됐든
Initial Size 같은 이런 모든 항목들이
전부 다 모듈에 해당합니다
이 모듈들은 결과적으로 옆에 있는
이러한 파티클들의 움직임을 제어하는 데 쓰이는데요
여기에서 특이한 것이 바로
Lifetime과 같은 항목들입니다
나이아가라뿐만 아니라 거의 대다수의 소프트웨어들에
탑재되어 있는 파티클 시스템들은 모두 다 Lifetime
시간에 굉장히 많은 영향을 받는데
여기에서 여러분들이 반드시 기억하고 있어야 될 사항이 있습니다
일반적으로 우리가 사용하는 Static Mesh
3D로 된 Static Mesh라든가 혹은
애니메이션을 줄 수 있는 Skeletal Mesh 같은 경우에는
일반적으로 레벨에 배치가 되면
우리가 별도의 삭제 요청을 하기 전까지는
계속해서 남아있게 됩니다
단순히 이런 3D 객체들뿐만 아니라 Light라든가
그 외 여러 가지 효과를 줄 수 있는 액터들도 마찬가지입니다
반면에 이 파티클 시스템이라고 하는 것은
정해진 수명이 있습니다
우리는 이것을 Lifetime이라고 부르는 것이고요
Lifetime 같은 경우에
파티클의 작은 입자 하나하나마다의 수명을 의미합니다
그래서 여러분들이 기본적으로 파티클을 제어하는 데 있어서
시간 제어를 잘하는 것이
좋은 이펙트를 만드는 데 굉장히 중요한 포인트가 됩니다
간단하게 구조에 대해서 설명해 드리면
파티클 시스템 그것이
나이아가라가 됐든 혹은 캐스케이드가 됐든 모두 다
파티클 시스템의 한 종류이고요
이러한 파티클 시스템 안에는
다양한 Emitter들이 있게 됩니다
그리고 이러한 각각의 Emitter들 안에는
여러 가지 모듈들이 들어가 있게 되는 것이죠
근데 이렇게 생소한 개념을
여러분들이 이해하시기가 조금 어렵죠
그래서 저는 이 파티클 시스템을 공장에 비유합니다
다만 이 공장은 책상이라든가 컴퓨터라든가
이런 공산품 같은 것들을 하는 것이 아니고
신선식품과 같이 유통기한이 정해진
이 유통기한은 Lifetime이 되겠죠
신선식품을 만드는 공장이고
이 공장의 생산 라인에는
이를테면 우유로 비유하자면
흰 우유 만드는 라인이 있을 거고
초코 우유나 딸기 우유 같은 것들을 만드는
각각의 라인들이 있겠죠
이 Emitter들은 그러한 공장의 라인들이라고 보시면 됩니다
그리고 그 성분을 조합해내고 섞고 하는 것들이 전부 다
포장하고 이런 것들이 전부 다 이 Emitter의 모듈들이
각각의 역할들을 하게 되는 것이죠
그래서 결과적으로는 우리는 파티클을 생산해내게 됩니다
그래서 여러분들이 파티클을 이해하실 때
파티클 시스템 전체적으로는 신선식품을 만드는 공장이다
유통기한을 가진 제품을 만드는 공장인데
Emitter를 통해서 다양한 제품들을
신선식품들을 만들 수가 있다
그렇게 만들어진 신선식품들을
우리는 파티클이라고 부른다고 기억하고 계시면
여러분들이 조금 더 생소한 시스템에 대해서
이해하시기가 쉬울 것 같습니다
나이아가라 이펙트 제작
우선 나이아가라를 먼저 만들어 보도록 하겠습니다
Content 폴더에다가 새로운 폴더
VFX로 폴더를 만들도록 하고요
여기에서 +Add 버튼 혹은
오른쪽 여백에서 오른쪽 버튼을 눌러서
나이아가라 시스템을 선택해 주시면 됩니다
굉장히 다양한 프리셋
템플릿이라고 보통 얘기를 하는 이런 것들을 선택해서
처음부터 집어 넣고 시작하는 방법이 있는데
이거 말고 가장 아래쪽에서 보면
Create Empty Niagara System을 눌러 주시게 되면
아무것도 없는 상태의 빈 나이아가라 시스템을
여러분들이 만드실 수가 있습니다
이렇게 만들어진 나이아가라 시스템의 이름은
VFX_Fire라고 짓도록 하겠습니다
우리는 불을 만들 예정입니다
애셋을 더블 클릭해서 에디터를 열겠습니다
나이아가라 에디터에 보게 되면 크게 세 가지로
이렇게 화면을 나눠서 생각해 볼 수가 있는데요
우선 프리뷰는 파티클의 움직임이라든가 형태를
미리보기 할 수 있는 창이 있고
그 아래쪽에는 각종 파라미터들
옵션에 대한 것들이 뜨는 창이 있죠
그리고 기본적으로 이 그래프 창에서
여러분들이 Emitter 추가하고
모듈 같은 것들을 추가하는 작업들을 하게 됩니다
그 아래 타임라인은 시간이 지남에 따라서
어떻게 파티클이 움직이는지
그 속도를 제어하거나 미리보기 할 때에도 사용이 되고요
이 각각의 모듈들을 선택을 해보면
우측에 있는 디테일 창을 통해서
각종 여러분들이 선택할 수 있는 다양한 옵션들이
디테일 창을 통해서 나오게 됩니다
위쪽에 있는 메뉴 바에 있는 쓰임들은
나중에 필요한 기능들에 맞춰서 설명해 드리도록 할 겁니다
이번에 이 그래프 창에서 오른쪽 클릭을 해서
Add Emitter 버튼을 눌러 주도록 할 겁니다
그러면 지금 보시는 것처럼
앞서서 나이아가라 애셋을 만들 때 보였던
템플릿 창이 보이게 되는데요
나이아가라에 있는 여러 가지 템플릿 중에서
Empty Emitter라는 것이 있습니다
현재는 아무것도 보이지 않는 Emitter죠
이것을 클릭해 놓고 Add 버튼을 눌러 주도록 하겠습니다
그러면 맨 우측에 파란색 노드
이렇게 파란색의 노드로 유저의 파라미터 혹은
나이아가라 시스템 전체에 대한 모듈 창이 있고요
Emitter 창이 있고 우측에 갈색으로는
우리가 하나하나 불꽃의 움직임을 만들어 줄 수 있는
Emitter 창과 함께 여러 가지 모듈들이 보이게 됩니다
기본적으로 이펙트는 보여지는 형태는 조금씩 다르겠지만
앞서서 캐스케이드와 마찬가지로 다양한 Emitter들
이 파티클 시스템 안에 다양한 Emitter들을 배치를 해서
하나의 효과를 만드는 것이기 때문에
이러한 구조는 여러분들이 기억해 두고 계시면
언리얼이나 유니티나 혹은 다른 상황에서도
빠르게 적응하실 수가 있을 겁니다
또한 나이아가라에서는
별도의 Emitter들을 따로 만들어서 관리할 수 있는
이러한 별도 기능이 존재합니다
그래서 여러분들이 FX에 나이아가라 Emitter를
이렇게 애셋 추가하는 버튼을 통해서 추가하신 다음에
이것도 마찬가지로 Create Empty Niagara Emitter
이렇게 만들어 보겠습니다
그래서 VFX_Emitter_Fire라고 이름을 짓고
이렇게 다른 나이아가라 시스템에 집어 넣을 수도 있습니다
물론 이 Emitter는 현재 아무것도
보여주는 역할을 하지 못하겠죠
결국에 이런 식으로 나이아가라는
나이아가라 시스템이라는 것을 통해서
Emitter들을 제어하는 구조다
이 Emitter들 같은 경우에는
독립된 애셋으로서 존재할 수 있다까지
기억하고 계시면 됩니다
설명을 위해서 만들었던 이 Emitter는
선택을 해서 Delete를 눌러서 지워 주도록 하겠습니다
여기에 있는 Emitter를 보시게 되면
크게 업데이트 영역이 있고요
Spawn 영역, Particle Update 영역 이렇게
Emitter에 대한 다양한 영역들이 캐스케이드와는 다르게
명확하게 구분되어 있는 것을 보실 수가 있고요
Emitter Update는 문자 그대로
공장 세팅이라고 보시면 됩니다
이를테면 우리가 1분에 10개씩 생산하는
생산 라인이라든가 이런 것들 있죠
그런 공장 세팅을 하는 영역이고
Particle Spawn과 Update는 쉽게 생각하시면
제품에 대한 세팅이라고 보시면 됩니다
흰 우유일지 혹은 초코 우유일지 이런 것들을 정하는 부분
그래서 이 Emitter를 제어하는 영역들은 이렇게
크게 보면 공장 세팅 영역과 제품 세팅 영역이 나눠져 있다
그리고 그 안에 들어가 있는 하나하나들을
우리는 모두 다 모듈이라고 부릅니다
이 모듈 같은 경우에는 플러스 버튼을 눌러서
여러 가지들을 추가할 수도 있습니다
그런 추가하는 과정들은 차근차근 할 거고
제일 먼저 우리들이 뭔가 애셋을 만들었다면
이름부터 바꿔줘야겠죠
여기에 이름 영역을 오른쪽 클릭해서
리네임을 하셔도 되고요
여기 디테일 창에서도 마찬가지입니다
더블 클릭하셔서 이름을 바꿔줄 수도 있습니다
우리는 Emitter의 이름을 Empty가 아닌
Fire로 바꿔주도록 할 겁니다
특히 이 이름은 중요한 게 나중에
이렇게 만들어진 모듈들을
나중에 다시 내보내기가 가능합니다
여기에 있는 Emitter들은 내보내기가 가능하기 때문에
미리 여러분들이 만들 때 이름을 바꿔 놓으시면
마음에 드는 Emitter 모듈들을 내보내서
여러분들이 사용하실 수가 있겠죠
우선 우리가 만들어야 될
Fire라는 것의 특징을 알아볼 겁니다
단순히 정지 이미지로만 보시는 것이 아니고
직접 영상을 통해서 움직임을
이렇게 불꽃이라고 하면 우리가 흔히
이렇게 타오르는 불꽃 같은 것들을 떠올릴 수가 있겠죠
이런 불꽃의 움직임이라든가
이렇게 사그라지는 모양이라든가 이런 것들을
변화되는 것들을 차근차근 보시면서
스케치를 해보시는 것도
이 형태를 앞으로 내가 어떻게 변화시키겠다
이런 것들을 파악하는데 굉장히 도움이 되고요
그래서 간단하게 불꽃에 대한 속성을 한번 정리를 해보자면요
우선 계속해서 움직이고 있다고 하는 특징이 있습니다
바람이 불면 쏠리기도 하고
때로는 분리돼서 사그라들기도 하고
그리고 기본적으로는 이러한
지금 저야 눈에 띄라고 녹색으로 하고 있지만
기본적으로는 빨간색의 컬러를 가지고 있죠
특히 바깥쪽으로는 빨간색의 컬러를 가지고 있고
안쪽으로는 주황색이나 혹은
밝은 노란색의 컬러를 가지고 있죠
그리고 또 다른 불의 특징으로는
대략적으로 이 범위가 정해져 있다는 특징도 있습니다
이만했던 불이 옮겨붙지 않으면
갑자기 커지는 일은 보통은 없죠
물론 흔들거리면서 약간의 변화는 있을 수 있겠으나
대부분은 어느 정도의 일정한 범위 안에서
불꽃이 생겼다가 사라졌다가 하는 것들을 알 수가 있습니다
그리고 보통은 이 시작하는 부위에
불이 커졌다가 점점 위로 올라갈수록 어떻게?
모양이 이렇게 점점 줄어드는 형태로 이루어져 있죠
그래서 이것을 조금만 더 단순화해 보면 이렇게 될 겁니다
기본적으로 아래에서 위로 올라가는 특성
그리고 밝은 노랑에서 붉은색으로 컬러가 바뀌는 특성
어느 정도 일정한 범위를 가지면서도
이 범위 안에서 서서히 위로 올라갈수록 좁아지는 특성
이러한 불이 타오르는 속성에 대해서
여러 가지로 쪼개서 하나하나 구현을 해 볼 건데요
여러분들이 이펙트를 만들기 전에
이러한 내가 표현하고자 하는 대상의 속성에 대해서
잘 기억하고 계시는 것은
표현력에 있어서 중요합니다
우선 Emitter Update입니다
Emitter Update라는 공간은
앞서서 이 전체가 하나의 공장이라고 한다면
Emitter는 생산 라인이라고 할 수가 있죠
생산 라인은 보통 하루의 생산량이 얼만큼 되냐가
굉장히 중요한 것처럼
여기에도 초당 몇 개씩을 생산하는지 설정해 줄 수 있습니다
Emitter Update의 플러스 버튼을 눌러서
Spawn Rate를 추가해 줍니다
그리고 여기에 Spawn Rate 값을 30을 입력할 건데요
이렇게 30을 입력을 하면
지금 프리뷰 창에서 보이는 것과 같이
동그란 파티클 입자들을 눈으로 확인할 수 있게 됩니다
근데 눈으로 보기엔 하나처럼 보이죠
여기에 굉장히 많은 수의 파티클들이
지금 겹쳐 있는 상태입니다
여기에 있는 Show 항목에서
Particle Counts 항목을 여러분들이 활성화하신다면
지금 저의 화면과 같이
현재 뷰포트 상에 보이고 있는 파티클의 개수가
눈으로 이렇게 확인이 될 겁니다
여기서 보면 우리는 이 Rate 값을 통해서
초당 30개를 생산하라고 파티클을 지정을 해놨습니다
초당 파티클 30개를 생산하는데
지금 전체 파티클의 카운트를 보게 되면 150개입니다
현재 실제 생산이 된 파티클의 개수는 150개죠
이 150이라는 숫자가 어디서 나왔냐면
바로 그 위에 있는 Emitter State에서 나왔습니다
생산 라인의 가동 시간을 의미하는 게 Emitter State고요
Spawn Rate 같은 경우에는 생산량을 의미합니다
공장에서 이런 가동 시간을 정해야 되는데
실제 Emitter State를 선택해 보면
Life Cycle Mode라고 하는 것이
셀프가 아닌 시스템으로 되어 있습니다
이 얘기는 내가 일일이 관리하지 않고
공장의 지침에 따르겠다는 뜻입니다
그래서 공장의 지침을 한번 살펴보면
Loop Duration이 5초라고 되어 있고요
여기서 얘기하는 건 시간은 모두 다
기본적으로 초 단위를 사용합니다
Loop Behavior 반복하는 것이 Infinite
무제한으로 되어 있습니다
5초 동안 생산하고 매번 5초마다 다시 가동을 하는 것이죠
그래서 파티클을 생산하는 데 있어서
여기 있는 Emitter Update 영역
이 부분이 파티클 생산에 아주 중요한 역할을 한다
물론 초당 일정하게 생산을 하는
Rate 방식이 있는 반면에
Burst라고 해서 한 번에 수십 개를
혹은 수백수천 개를 한 번에 생산해내는
또 다른 방식도 있습니다
이거는 그때그때 상황에 따라서
여러분들이 선택해서 쓰시면 되는 거고요
지금은 현재 일정하게
초당 일정한 개수를 n 등분해서 생산해 내는
Rate 방식으로 진행을 할 겁니다
이번에는 파티클의 운동성을 만들어 볼 겁니다
파티클이 지금 정지되어 있는 상태에서
불꽃처럼 만들어지려면 위로 움직여야겠죠
이렇게 위로 움직이기 위해서는 제일 처음에
일정한 속도로 움직일 수 있게끔
Spawn 영역에서 플러스 눌러서
Add Velocity를 클릭해 주시면 됩니다
속도를 지정하는 건데요
여기에서 보면 경고창이 뜨면서 디테일 창에서
Fix issue라고 하는 버튼들이 보이게 되는데
이전에 캐스케이드에서는
모듈이 서로 구성이 맞지 않게 되더라도
그것을 파악할 방법이 없었습니다
반면에 나이아가라에서는 내가 사용하고자 할 때
문제가 있다면 혹은 빠진 모듈들이 있다면
어떤 것이 잘못되었다고 이렇게 에러를
리포팅 해주는 기능이 있습니다
여기에서 우리가 추가하는 것은
첫 번째 항목인 Solve Forces And Velocity
이 부분을 Fix issue를 눌러주게 되면
지금 보시는 것처럼 이렇게 에러가 해결이 되고요
그리고 추가로 우리가 추가하지는 않았지만
Fix issue 버튼을 통해서 업데이트 항목에
Solve Forces And Velocity 항목이 추가된 것을
확인하실 수가 있습니다
파티클이 올라가는 속도를
우리는 Velocity 항목을 클릭해서
현재 위로 50 유닛만큼 올라가게 되어 있는데
초당 얼마만큼의 유닛만큼 움직이게 할 것이냐라는 기준으로
여러분들이 속도 같은 것들을 측정하시면 됩니다
만약에 여기에 Z축
우리가 위를 향하게끔 하는 것을 100으로 입력한다면
화면 상에서 훨씬 더 높은 곳을 향해서
이렇게 올라가는 걸 확인하실 수가 있죠
여기에서 보기 모드를 Lit이 아니라
Wireframe으로 한번 바꿔보겠습니다
그러면 지금 이렇게 여러분들이 화면 상에서 보는 것처럼
네모난 사각형이 위로 쭉 올라가는 것을 보실 수가 있고
오른쪽 클릭을 해서 가까이서 보거나 혹은
아래에서 위를 보거나 하더라도 이 정사각형이 항상
저를 똑바로 바라보는 것을 확인하실 수가 있죠
우리는 이러한 것을 Billboard라고 부릅니다
Billboard라고 하는 것은 항상 카메라를 마주보는 형태
그래서 우리가 별도의 회전값을 설정하지 않아도
이 오브젝트가 Mesh가 어디에 있든
카메라가 있는 곳이면 항상 이렇게
똑바로 마주보는 형태의 애셋을
우리는 Billboard라고 부릅니다
그래서 우리가 사용하는
기본적으로 동그란 이미지로 보였던 것이
사실은 이렇게 사각형에다가 그림을 집어넣어서
동그란 이미지를 집어넣어서 보여주는 방식이
파티클에서 일반적으로 취하는 방식입니다
이렇게 하게 되면 굉장히 많은 수의 입자를 뿌리게 되더라도
상대적으로 가볍게 사용할 수 있다는 장점이 있습니다
이번에는 Lit 모드로 다시 돌아와서
여기에다가 우리가 일정한 색상을 한번 입혀보도록 할 겁니다
색상을 입히는 방법은 시작할 때부터
Initial Particle 항목의 디테일 창에서
컬러 모드를 통해서 지정하는 방법이 있고요
이렇게 Direct Set이라든가 Unset을 하면
시작할 때 지정을 안 하겠다는 의미입니다
기본값은 흰색이고요
여기서 우리가 컬러를 바꾸게 되면 빨간색으로 나오죠
흰색으로 바꾸면 혹은 녹색으로 바꾸면
이런 식으로 우리가 원하는 색깔로 될 수는 있는데
불꽃 같은 경우에는 색깔이 한 가지로만 정해져 있지 않죠
제가 여기에다가 간단하게 색을 표시해 보면
시작할 때는 노란색입니다
그러다가 주황색으로 이렇게
그리고 마지막에 가장 가장자리는 빨간색으로
이런 식으로 보통 표현이 되는데
이렇게 운동 방향에 따라서 서서히
시작 지점에서부터 끝나는 지점까지
서서히 색깔을 바뀌게 하고 싶다면
여기 있는 Spawn이 아닌 Update 항목을 이용해서
여러분들이 접근을 해야 됩니다
보통 여기 있는 Spawn은 초기 값이라고 보시면 되고요
여기는 변화되는 값입니다
여기서 얘기하는 변화라는 건 색일 수도 있고요
방향일 수도 있고 속도일 수도 있고
다양한 것들이 있습니다
그래서 시간이 지날수록 위로 올라갈수록
색이 바뀌어야 되니까 색을 바꾸기 위해서는
Particle Update에다가 플러스 버튼을 눌러서
Scale Color라고 하는 것을 추가해 줍니다
Scale Color에서 Scale Mode라고 하는 것은
여러 가지 변화되는 것들을 표현하는
방식이라고 할 수가 있는데요
가장 단순한 형태로
RGBA Linear Color Curve라는 것으로 한번 바꿔보면
이렇게 수치로 되어 있던 것이
흔히 Gradient Map이라고 하는
눈으로 볼 수 있는 형태로 바뀌게 됩니다
그래서 여기에서 한번 컬러를 표현해 볼 건데요
위에는 더블 클릭해 보면 색을 지정하는 것이고요
아래쪽에는 알파라고 해서 투명도를 지정하는 겁니다
일단 위에서부터 차근차근 색을 표현해 볼 건데
밝은 노랑에서 우리의 목적지는
빨간색까지 변화를 시키는 것이겠죠
OK를 눌러보면 현재 저 위쪽으로 가면
마치 스타워즈 광선검처럼 보이는데
이렇게 노란색이었던 파티클이
점점 빨간색으로 바뀌는 것을 보실 수가 있습니다
다만 일반적으로 불꽃을 표현할 때
많이 쓰이는 색상들이 몇 가지가 더 있어서
그것에 대해서 조금만 더 설명을 드리면
노란색과 빨간색 중간에 보통 주황색을
이렇게 클릭을 하면 새로 생기죠
보통 여기에는 주황색으로 많이 표현을 합니다
빨간색을 드래그해서 조금만 더 끌고 오겠습니다
그리고 빨간색에서 끝나는 게 아니고
가장자리에는 한 번 더 클릭해서
추가해 주신 후에 더블 클릭해서
이번에는 약간 어두운 검붉은 색으로 마무리하도록 할 겁니다
그래서 총 4가지 컬러
밝은 노랑, 주황, 빨강, 어두운 빨강 이런 식으로
그래서 컬러를 총 4단계에 걸쳐서 표현하는데
이것은 제가 임의로 찍은 컬러는 아니고요
일반적인 파티클과 관련된 예제에서
가장 보편적으로 섞어서 사용하는 색 조합이 이렇게 됩니다
위로 올라갈수록 지금 서서히 흐려지는 이유는
여기 있는 투명도 때문입니다
배경이 안 보이는 건 프리뷰 세팅 창에서
Show Environment를 클릭해 주면 이렇게 배경에서
밝은 곳에서 어떻게 보일 수 있는지 알 수가 있고
하나 더 이런 식으로 투명도까지도
어떻게 조절하는지 확인할 수가 있겠죠
여러분들이 만약에 여기에서 투명도를
나는 조금 더 디테일하게 컨트롤 하고 싶다면
이렇게 하시면 됩니다
이것도 마찬가지로 좀 보편적으로 많이 쓰이는
알파 값에 대한 조합인데요
시작할 때도 이 파티클이 계속해서 생성되는 게
눈에 보이면 좀 안 예쁘니까
보통 알파 값을 시작할 때 0으로 둡니다
그러다가 급격하게 100%로, 1로 되는 거고요
더블 클릭하시면 됩니다
그리고 약간 중간에 가깝게
반투명하게 설정되어 있는 이 값을 더블 클릭해서
이것도 마찬가지로 1로 두겠습니다
그래서 지금 보시면 색상하고는 다르게
색상은 상대적으로 균등하게 배치되는 거에 비해서
알파 값의 변화는 조금 더 비율이
크게 크게 바뀌는 걸 보실 수가 있죠
이러한 세팅은 굉장히 다른 파티클에서도
많이 쓰이는 세팅 중에 하나입니다
그래서 기억해 두시면 좋을 것 같고요
여러분들이 임의로 보이는 정도나 이런 것들은 드래그해서
위치라든가 이런 걸 살짝 바꿀 수도 있습니다 이런 식으로
그래서 결과적으로는 우리는 이제 파티클을
위로 올려보내면서 위로 올라갈 때마다
색상이 조금씩 변화되게끔 한번 설정을 해봤습니다
지금 이 파티클의 움직임 자체가
컬러감은 불꽃과 비슷한
어떻게 보면 촛불 같은 느낌으로 만들어지긴 했는데
전체적인 움직임이 너무 균일하게 쭉 올라오다 보니까
움직임 자체는 굉장히 어색하죠
그래서 움직이는 범위를 우리가 먼저 정해놓고
세세하게 잡아 볼 건데
우선 Particle Spawn에서 플러스 버튼을 눌러서
Shape Location을 클릭해 줍니다
그러면 기본 Sphere라고 되어 있는데
지금 보시는 것처럼 이렇게 개별적인 파티클 입자들이
좀 더 넓은 영역에서 퍼져서 올라가는 걸 보실 수가 있죠
그것은 이 Sphere 자체의 반지름 값이
우리가 기본 값 100에서 0으로 완전히 좁혀보면
앞서서 똑같은 처음의 상태와 비슷한 움직임인데
이걸 서서히 넓혀주다 보면
한번 100보다 크게 좀 많이 넓혀 보겠습니다
이런 식으로 하다 보면 지금 보시는 것처럼
범위가 늘어나면서 Sphere라고 하는 가상의 공간 안에
랜덤하게 Spawn이 되기 때문에
지금 보시는 것처럼 퍼져서 올라가는 움직임이 보이실 텐데요
다만 이게 너무 넓거나 혹은
자기 마음대로 움직이면 안 되기 때문에
이거를 우리는 적절한 크기로 맞춰줘야 됩니다
Primitive 타입을 Cylinder로 한번 바꿔 보겠습니다
Cylinder로 바꾸고 범위를 조금만 좁힐 겁니다
Height 값 10으로 하고
Radius도 30으로 두겠습니다
그러면 이전에 일자로 올라가던 거에 비해서는
약간 불꽃 같은가? 정도의 느낌으로
이렇게 느낌이 좀 바뀌었죠
그러면서 지금 보면 약간 외형에 우둘투둘한 변화들이
이렇게 생긴 것들을 보면서
이전보다는 조금 더 불꽃에 가까워졌다고 생각할 수 있을 겁니다
기본적으로 Cylinder라고 하는 것은
이렇게 원통형의 범위를 통해서
파티클이 이 안에서 랜덤하게 생성되는 상태인 것이죠
여기에서 Initial Particle에서 보면
Lifetime이 5라고 되어 있는 걸 확인하실 수 있을 겁니다
이거는 유통기한이라고 생각하시면 돼요
각각의 파티클은 5초 짜리 생명을 부여받고
Spawn이 되는 겁니다
만약에 여기를 50으로 바꾼다면
50초 동안의 Lifetime을 부여받기 때문에
훨씬 더 위로, 훨씬 더 올라가게 되죠
다만 빨간색으로 안 보이는 이유는
빨간색으로 채 가기도 전에 여기에서
타임라인에서 파티클의 재생이 끝나기 때문에 그런 거고요
이건 기본값 다시 5로 되돌리도록 하겠습니다
아래쪽으로 쭉 내려가 보면 이런 식으로
파티클의 기본 세팅값들을 잡아주는 것들 중에
Sprite Attributes가 있습니다
현재 우리가 사용하는 Renderer
화면에 그림을 그려주게끔 하는 기능은
Sprite Renderer라는 것을 사용하기 때문에
Initialize Particle에서 여기에서 보면
Sprite Attributes 항목에 있는 옵션들을 통해서
파티클의 기본적인 크기라든가 회전이라든가
이런 것들을 수정해 줄 수 있는데요
여기 Mesh Attributes나 Ribbon Attributes는
별도의 Renderer가 추가된다면 영향을 받겠지만
여기에 있는 것들을 바꿔도
Sprite Renderer밖에 없기 때문에
이쪽은 영향을 끼치지 않습니다
그래서 Sprite Size에서 Uniform으로 가서
사이즈가 기본 10으로 하면
지금 보는 것처럼 조금 작아졌죠
이것을 만약에 50으로 바꾼다면
훨씬 더 개별 입자들이 이렇게
빼곡하게 차오르는 것을 보실 수가 있습니다
그런데 이러한 파티클의 움직임 자체가 위로만 올라가고
굉장히 폭도 균일하기 때문에 어색하죠
그래서 여기에서 계속해서
이번에는 올라가면서 서서히 사그라들 수 있게끔
업데이트 항목에다가 모듈을 하나 더 추가할 겁니다
Initialize에서 정해준 것은 시작할 당시의 값이라면
업데이트는 Lifetime 동안의 변화를 나타내게 되는데
우리는 기본적으로 Sprite를 쓰니까
여기에서 Sprite라고 한번 검색을 해보시면
Scale Sprite Size라고 하는 모듈이 있습니다
Size 모듈이 있는데 이것을 추가해 줍니다
그러면 지금 기본 값은 이렇게 작았다가
Scale이 0에서부터 100까지 100%가 되게끔
0에서부터 100% 되게끔 세팅이 되어 있는데
이걸 조금만 창을 늘려서 보기 편하게 바꾸겠습니다
여기에서 얘기하는 0이라고 하면 보통 시작 시간
파티클 입자의 개별적인 시작 시간이고요
여기에서 얘기하는 X축은 시간을 의미하는데
여기서 1이라고 하는 것은
1초가 아니고 100%를 의미합니다
우리의 파티클은 기본적으로 Initialize 때
5초로 우리가 설정을 해놨죠
그러니까 여기에서 1이 의미하는 것은
0에서부터 5초가 지나면
100% 시간이 지났다고 보는 것이죠
그 기간 동안에 Scale 값의 변화를
이렇게 Y축에다가 표현을 한 겁니다
그래서 X축은 시간이고요 Y축은 값입니다
마찬가지로 Scale Color에서도
이렇게 우측으로 갈수록 시간이 흘러갔죠
그래서 대부분 파티클에서 X축, 가로축은
시간을 의미한다고 생각하시면 됩니다
이 개별적인 하나하나의 값을
이 삼각형 모양의 선택할 수 있는 이 하나하나가
Key라고 보통 부르는데
얘는 X축 시간에 대한 것과 Y축 Scale 값에 대한 세팅
이렇게 두 가지가 있습니다
X축과 Y축이 있어서 클릭해 보시면
X축, Y축 이렇게 표현이 되어 있죠
그래서 이 Key를 중간에 이렇게 추가를 해서
오른쪽 클릭해서 Add Key를 통해서 값을 추가해서
클릭해서 드래그해서 값을 바꿔 줄 수도 있고요
만약 이렇게 바꾼다면 변화가 급격하게 바뀌다가
서서히 천천히 바뀌게끔 되겠죠 이런 식으로
필요 없다면 오른쪽 눌러서 Delete를
혹은 키보드의 Delete 키를 눌러 주시면
불필요한 Key 값이 사라지게 됩니다
그래서 그래프의 형태를 좀 바꿔볼 건데요
중간에 Key를 하나 Add Key를 눌러서 추가를 하시고
100%가 되는 구간을 조금 앞에다가 두겠습니다
그래서 최대 크기가 꼭 1이 아니라
2배 커져라도 가능합니다
Scale이니까요 2배 커져라 이렇게도 가능하고요
그러면 그래프가 밖을 벗어났을 때는
맨 왼쪽에 있는, Key 값을 입력하는 맨 왼쪽에 보면
줌 버튼을 여러분들이 딱 눌러 주시게 되면
지금 보시는 것처럼 그래프가 한눈에 들어올 수 있게 됩니다
그래서 끝날 때는 0으로 다시 사그라들게
서서히 작아지면서 사라지게끔 이렇게 바꿔 놓는데
시작할 때 보면 굉장히 자잘자잘하게 생기는
물방울 같은 패턴이 좀 눈에 거슬리죠
그러니까 시작할 때는 약 0.7에서 0.8 정도 되는 수치로
서로 겹쳐가지고 이런 식으로 움직임이 만들어질 수 있게끔
세팅 값을 바꿔 주겠습니다
이제 이러한 변화를 만들어 놓고
조금 부드럽게 표현하고 싶다면
오른쪽 눌러서 Key 값에다가 Auto로 설정을 해두면
지금 보시는 것처럼 그래프가 곡선의 형태로 바뀌면서
조금 더 부드러운 값의 표현들이 가능해집니다
그래서 핸들을 통해서 이렇게 곡선이 기울어지는 정도도
우리가 임의로 정할 수가 있어요
이런 식으로 세팅을 해놓으면
조금 더 불꽃의 형태와 유사해졌죠
이 상태에서 한번 월드에다가 배치해 보겠습니다
우선 저장부터 해주시고
우리가 만든 불꽃을 드래그해서 월드에 놓으면
이런 식으로 불꽃이 보이고 있죠
자연스럽게 이렇게 사라지면서 불꽃이 보이고 있고
만약에 우리가 여기에 있는 어떠한 값
이를테면 Initialize Particle에 가서
Lifetime을 3초로 바꾼다 그러면
지금 보는 것처럼 월드에도 바로바로 반영이 됩니다
이제 여기에다가 Material을 통해서
좀 더 디테일한 불꽃의 형태를 만들어 주는 걸로
한번 진행을 해 볼 겁니다
기본적으로 파티클에 사용되는 Material도
이런 Material Editor를 통해서
Renderer에다가 연결을 해주는 방식입니다
이번에는 콘텐츠 브라우저에서
Material을 하나 만들어 주겠습니다
그리고 Material의 이름은 M_FireFX로 지어주도록 하고
엔터를 눌러서 Material Editor 창을 열겠습니다
일반적으로 Material Editor 창의 가장 기본적인 세팅은
3D 오브젝트를 표현하는데 적합하게 되어 있습니다
이것이 이펙트에 사용하기 적합한 형태가 되게끔
세팅을 좀 바꿔 줄 건데요
우선은 Blend Mode를 기존의 Opaque라든가
Masked, Translucent, 3D 오브젝트에 사용하는 것이 아닌
Additive의 형태로 바꿔 줄 겁니다
이 특성은 우리가 앞서서 봤던 Sprite처럼
개별적인 이렇게 반투명한 형태들이 서로 겹쳤을 때마다
점점 밝게 표현을 해주는 것을
보통 Additive라고 얘기를 합니다
반투명한 것들이 겹치면 겹칠수록 밝아지는 것
왜냐하면 파티클이 기본적으로
불꽃이 기본적으로 밝죠 스스로 빛을 내고 있죠
그러한 느낌을 전달하기 위해서고요
거기에 추가로 Shading Model도
라이트의 영향을 받을 필요가 없겠죠
스스로 빛을 내기 때문에
Unlit 상태로 Shading Model도 바꿔주도록 할 겁니다
그러면 우측에 마스터 노드에서
지금 보시는 것처럼 Emissive Color와 Opacity만
활성화된 것을 보실 수가 있습니다
여기에다가 Texture Sample로
텍스처를 하나 추가를 할 겁니다
Texture Sample 검색해서
기본 스타터 콘텐츠에는 없는
심플이라고 되어 있는 텍스처가 있는데
이거는 제가 별도로 여러분들이 받으실 수 있게
제공해 드릴 거고요
이거는 텍스처 파일을 여러분들이 드래그해서
콘텐트 브라우저 창에다가 집어 넣기만 하면 됩니다
그래서 이 텍스처를 선택해서
여기 Texture Sample 노드에
여기에다가 이렇게 연결해 보겠습니다
그럼 텍스처가 전달이 됐죠
일반적으로는 3D 오브젝트에서는 이 상태로 사용을 합니다
반면에 파티클은 반드시
Particle Color라고 하는 것을 추가해 주셔야지
나중에 여기에 있는 색상과
우리가 모듈을 통해서 컬러 값을 변화를 시켰죠
이 모듈에서 변화되는 컬러 값들을
Material에 전달을 하는 것이 바로
Particle Color 모듈이기 때문에
여러분들이 이 두 가지를 서로 Multiply로 엮어주셔야
제대로 된 색상에 대한 표현
혹은 투명도에 대한 표현들이 가능해집니다
이렇게 가장 기본적인 Particle Color를
만드는 방식에 대해서 알아봤고
이것을 저장한 다음에
한번 Sprite Renderer에다가 넣어줘 보겠습니다
콘텐트 브라우저에서 M_FireFX 저장된 거 선택해 주시고
화살표를 눌러서 적용을 해 보겠습니다
그러면 외형이 조금 더
불꽃과 같은 형태로 나오는 걸 보실 수가 있죠
만약에 이 Particle Node가 없는 상태라고 한다면
Particle Color Node 없이 한번 적용해 보겠습니다
만약에 이런 상황이라면
우리가 아무리 Scale Color를 이용해서 바꿔준다고 하더라도
색의 변화가 없는 걸 보실 수가 있죠
그래서 반드시 여러분들이 파티클에서
모듈을 통해서 컬러를 바꾸고자 하신다면
그 모듈의 값들이 전달받을 수 있는
Particle Color Node를 꼭 생성해서 넣어주시면 됩니다
이렇게 파티클을 Material까지 입혀서 보면
확실히 시작할 때와 비교를 해보면
제가 한번 모듈들을 꺼서 보겠습니다
모듈들을 Color도 끄고 Shape도 끄고 Scale도 꺼보면
지금 보는 것처럼 완전히 광선검의 형태였던 파티클이
지금 보시는 것처럼 Scale과 Color를 통해서
불꽃과 가까운 형태로 만들어진 걸 보실 수가 있는데요
자세히 이렇게 오랫동안 보다 보면
너무 단순한 형태의 파티클을
텍스처를 이용해서 표현하다 보니까
이 파티클이 기본적으로 형태가
좀 단조롭다는 생각이 듭니다
그래서 이거를 조금 더 완화시킬 수 있는
방법에 대해서 한번 알아볼 건데요
보통 우리는 이것을 시퀀스 텍스처라고 얘기를 하는데
여기서부터는 조금 개념이 어려우실 수가 있습니다
이번에는 오른쪽을 눌러서
Material을 만든 다음에 M_FireFX인데
SubUV라는 기능에 대한 설명을 할 것이기 때문에
SubUV라고 꼬리글을 하나 더 붙여줬고요
Material 창을 열어서 앞서서 했던 세팅과
Blend Mode에 Additive
Shading Model은 Unlit 똑같이 가는데
다만 노드를 만들 때 Texture Sample이 아닌
우리가 사용할 SubUV라고 검색을 해보시면
Particle SubUV라고 이렇게 있죠
선택해 보시면 텍스처를 꽂는 건 똑같습니다
똑같은데 일반적인 Texture Sample과
사실상 거의 유사하죠 유사한 데 반해서
이렇게 옵션에도 어떻게 보면 크게 차이는 없죠
다만 이 차이는 조금 이따 보여드릴 거고
여기 두 가지 모두에다가 동일하게
Shift로 선택을 해서 T_Fire_SubUV Texture
이거는 스타터 콘텐츠에서 제공되는 텍스처입니다
이것을 추가해 주겠습니다
이렇게 두 가지 모두 다 추가가 됐죠
일단 SubUV에다가 Multiply로
이 Texture Sample은 설명을 위해서 만들었으니까 좀 빼놓고
Particle Color Node와 서로 Multiply로
컬러 값들을 Multiply 해주고요
또 다른 Multiply로는 알파 값들을 Multiply 하도록
이렇게 연결을 해놓겠습니다
그래서 RGB는 Emissive에, Opacity는 Opacity에
그러면 이걸 평면에서 보면
지금 보는 것처럼 그리드하게 텍스처가
이렇게 배치가 되어있는 걸 눈으로 확인할 수가 있죠
이거를 일단 저장을 하고요
이번에는 Renderer에서
단일 이미지를 사용한 FireFX가 아니라
방금 만든 SubUV를 일단 등록을 할 겁니다
이렇게 M_Fire_SubUV를 먼저 등록을 해주고요
그러면 지금 보는 것처럼 굉장히 그리드한 모양의
이상한 형태로 텍스처가 보이는 걸 확인하실 수가 있는데
여기에서 아래쪽에 쭉 보시면 SubUV라고 있습니다
그럼 여기 이미지 사이즈라는 항목이 나오게 되는데요
우리가 사용하고자 하는 텍스처의 형태를 먼저 보여드리고
스타터 콘텐츠의 텍스처 항목에서 보시면
쭉 아래로 좀 내려가겠습니다
이 T_Fire_SubUV Texture입니다
더블 클릭 하겠습니다
보면 이런 식으로 이미지가 여러 장
지금 가로로 6개, 세로로 6개 총 36장의 이미지가
그리드하게 배치되어 있는 걸 보실 수가 있습니다
일반적으로 텍스처라고 하면
이 한 장을 온전하게 다 보여주는 게 기본 값인데요
SubUV는 텍스처를 n 등분해서
이런 식으로 전부 다 이렇게 n 등분해가지고
이거를 마치 한 장인 것처럼 보일 수 있게 해주는 기능입니다
그래서 시작하는 곳이 0번이라고 한다면
우측으로 먼저 쭉 훑어서 5번 프레임까지 가고요
그리고 다시 맨 왼쪽 아래 줄로 와서
6번 프레임부터 쭉 가로로 가고
다시 대각선으로 쭉 이런 식으로 지그재그를 통해서
마지막 프레임까지 한 장 한 장씩을 마치
애니메이션 보여주듯이 그렇게 설정을 하기 때문에
우리가 SubUV를 쓸 때는
총 몇 장의 이미지를 쓰고 있는지
파티클에 알려줘야 됩니다
그래서 이미지 사이즈를
가로에 6개, 세로에 6개가 있다고 알려주면
지금은 가장 첫 번째 프레임에 있는
0번 프레임에 있는 이미지가 보여지게 됩니다
이제 우리는 이거를 마치 애니메이션처럼
차곡차곡 흘러가게 만들어야 되는데요
그럼 시간이 지나면서 0번에서부터 35번 프레임까지
총 36장을 훑어야 되니까
Spawn이 아닌 업데이트 영역에다가
SubUV Animation을 추가해 줄 겁니다
추가하시고 나면 현재 기본 Linear하게 흘러가게끔
시작부터 끝까지 흘러가게끔 되어 있고
여러분들이 임의의 시작과 종료 프레임을 정할 수도 있습니다
여기서 중요한 것은
현재 어떠한 Renderer를 사용해서
이 애니메이션을 쓸 거냐라는 건데
Sprite Renderer를 클릭해서
현재 Emitter에 추가되어 있는
Renderer를 선택해 주시면
이런 식으로 이렇게 이미지가 흘러가는 것이 보이시죠
이게 잘 안 보인다면 잠깐만
Spawn Rate 값을 1로 한번 바꿔보셔도
움직임을 파악하기 좋겠죠 이런 식으로
다시 원래대로 30개로 돌려 놓겠습니다
이러한 기능을 사용하는 데는
가장 중요한 이유가 있습니다
물론 요즘에 이펙트 시스템들이 좋아서
단순히 Rate 값을 30이나 300 이런 것뿐만 아니라
3000개 정도도 쓸 수 있습니다 쓰려고 하면
예쁘진 않겠지만 뿌리려고 하면
3000개의 입자도 뿌릴 수 있어요
근데 기본적으로 리얼타임 엔진에서는 문제가 됩니다
뭐를 많이 쓰면? Particle의 Count 수가 늘어나면
당연히 퍼포먼스에 악영향을 끼칩니다
근데 일반적으로 우리가 불꽃이
몇 개의 입자로 이루어졌는지 알 수가 있나요?
사실은 어마어마하게 많은 입자들을 이용해야
파티클들을 이용해야 불꽃이라는 표현이 가능할 겁니다
하지만 영상 쪽에서는 이렇게 많이 씁니다
실제로 영상 쪽에서는 파티클의 개수를
어마어마하게 많이 뿌려서 몇 시간 동안 렌더링을 걸어서
한 장의 온전한 불꽃 이미지를 얻어낼 수 있는 반면에
리얼타임에서는 영상처럼 그렇게
많은 수의 파티클을 쓸 수가 없기 때문에
역으로 영상 툴, 3D 툴
이런 것들에서 미리 렌더링을 겁니다 무엇을?
이런 시퀀스 텍스처라고 하는 것을
미리 렌더링을 하는 겁니다
그래서 렌더링 된 결과물을
이런 식의 시퀀스 텍스처로 만들어가지고
이런 것들을 한 장 한 장 렌더링을 건 것을
다 이렇게 배치를 해가지고 전체 한 장으로 만들어서
마치 수십만, 수천만 개의 파티클을 써서 나오는
디테일한 이미지들을 대신 사용한 것 같은 느낌을 내주는 거죠
그래서 상대적으로 영상에서만큼
많은 수의 파티클을 못 쓰는 것을
이런 시퀀스 텍스처를 통해서 해소한다고 보시면 됩니다
시퀀스 텍스처까지 사용하고 나면 겹치는 개수가
너무 좀 어색해질 수가 있습니다 너무 많아서
그래서 이럴 때는 효과에 따라서
임의로 값을 늘리거나 줄이거나 하셔가지고
Spawn Rate 값을 늘리거나 줄이거나 해서
불꽃의 느낌을 조금 더 다이내믹하게 보이게끔 만드는 것도
하나의 방법일 수가 있겠죠
이런 식으로 파티클이라고 하는 것은
굉장히 다양한 모듈들로 이루어져 있는 걸 아실 수가 있죠
그래서 여러분들이 이번 강의를 통해서
파티클의 나이아가라 시스템에 대해서
파악하는 시간이 되셨으면 좋겠습니다
이번 시간에는 불꽃 이펙트를 제작하면서
나이아가라 시스템의 주요 모듈들에 대하여 실습해 봤습니다
실습해 보면서 느끼셨겠지만
나이아가라와 같은 파티클 시스템을 활용할 때에는
변화와 시간이 중요하기 때문에
이 부분을 염두에 두고 제작해야 한다는 점을
꼭 기억하시기 바랍니다
그럼 이번 시간 학습한 내용을 정리하면서 마무리하겠습니다
감사합니다
나이아가라의 개념
나이아가라 언리얼 엔진에서 제공하는 이펙트 나이아가라는 파티클과 Emitter 제작에 활용되며 시간 제어 옵션을 활용함
나이아가라 이펙트 제작
불꽃 입자 생성하기 Spawn Rate를 통해 초당 생산할 수 있는 파티클을 지정함 Emitter State를 통해 파티클 생성 시간을 설정함
운동성 만들기 파티클이 위로 올라갈 수 있도록 Particle Spawn에서 Add Velocity를 추가함
SolveForcesAndVelocity 모듈을 추가하여 속도나 힘과 관련된 모듈 사용이 가능하도록 함
색상 적용하기 색을 변경하는 Scale Color 모듈을 추가함 색 정보 입력을 위해 RGBA Linear Color Curve를 활용함
움직임 범위 조정하기 Particle Spawn에서 기본 크기를 설정하며 Initial Particle을 통해 생성 시간, 크기, 고유 색상을 설정함
Scale Sprite Size를 통해 위로 올라갈수록 작아지는 불의 외형을 표현함
불 이펙트 머티리얼 제작하기 Blend Mode의 유형을 Additive로 설정하여 입자들이 겹치면 밝아지는 속성을 추가함
Texture Sample 노드를 추가하여 T_Fire_Simple.png를 등록함
시퀀스 텍스쳐 이펙트 제작하기 Sequence Texture를 활용하여 파티클 입자에 애니메이션을 구현함
Spawn Rate의 값을 조절하여 자연스러운 불꽃을 제작할 수 있음