[Unity] 빌트인 파티클 시스템(Built-in Particle System) : 메인 모듈(Main Module)
2022. 2. 17. 01:27ㆍGame Development/Unity
파티클 시스템 (Particle System)
- 파티클(Particle, 입자)을 활용하여 불꽃, 연기, 액체 등과 같은 동적 오브젝트를 구현할 때 유용하게 사용됨
- 파티클 시스템은 파티클이라 부르는 매우 작은 이미지나 메시를 시뮬레이션하고 렌더링하여 시각 효과를 생성함
- 이때, 파티클들을 개별적으로 하나 하나 시뮬레이션 하는 것이 아니라, 모든 파티클들을 종합적으로 시뮬레이션하여 완성된 효과를 구현함
- Unity에서는 구현할 효과에 대해 더 효과적인 것을 유연하게 선택할 수 있도록, 빌트인 파티클 시스템(Built-in Particle System), 비주얼 이펙트 그래프(Visual Effect Graph), 이렇게 2가지를 제공함
- 프로젝트가 컴퓨트 셰이더(Compute Shader)를 지원하는 플랫폼을 목표로 하는 경우에는 두 가지 모두 사용할 수 있다.
빌트인 파티클 시스템 (Built-in Particle System)
- CPU에서 파티클 동작을 시뮬레이션함
- C# 스크립트를 통해 파티클 시스템과 해당 시스템 내의 개별 파티클들과 상호 작용이 가능
- 파티클 시스템 API를 사용하여, 파티클 시스템에 대한 커스텀 동작(사용자 설정)을 구현할 수 있음
- 재생 컨트롤이 가능한 API 제공 → 스크립트를 통해 효과를 재생하거나 일시 중지, 사용자가 설정한 입자 간 거리로 효과를 시뮬레이션 하는 것도 가능. 시스템의 각 파티클 시스템을 읽거나 쓰고, 충돌 이벤트에 응답 또한 가능
- 가능한 파티클 수는 천 개 정도이다.
- 빌트인 렌더 파이프라인, 유니버설 렌더 파이프라인, 고해상도 렌더 파이프라인과 호환이 가능
- 인스펙터에서 Particle System 컴포넌트를 추가하여 사용하는 간단한 사용법. 게임 실행 전, 사전에 정의해놓은 대로 동작을 진행한다.
- Unity의 기본 물리 시스템과 상호작용이 가능 → 콜라이더와 상호 작용 가능
- 프레임 버퍼는 지원하지 않는다.
비주얼 이펙트 그래프 (Visual Effect Graph)
- GPU에서 수백만 개의 파티클들을 시뮬레이션하고, 대규모의 시각 효과 구현 가능
- 더욱 더 높은 레벨의 커스터마이즈까지 가능하여, 시각 효과를 쉽게 만들 수 있도록 비주얼 그래프 에디터도 제공
- 유니버설 렌더 파이프라인, 고해상도 렌더 파이프라인과 호환 가능
- 가능한 파티클 수는 백 만개 정도이다.
- 그래프 뷰를 사용하는 High-Level의 커스터마이즈가 가능한 프로세스
- 물리 효과 측면에서, 비주얼 이펙트 그래프에 정의된 특정 요소와 상호 작용이 가능
- C# 스크립트에서 그래프 프로퍼티를 표시하고 접근하여, 그 효과를 표현하는 객체를 커스터마이즈 가능
- 이벤트 인터페이스를 사용하여 그래프가 처리할 수 있는 데이터가 첨부된 커스텀 이벤트 전송이 가능
- Visual Effect 컴포넌트 또한 재생 컨트롤이 가능한 API 기능 제공 (효과 재생, 일시 중지 등)
- 고해상도 렌더 파이프라인에 대해서는 컬러 및 뎁스 버퍼에 대한 접근을 제공한다고 함
일단 이 글에서는 빌트인 파티클 시스템에 대해서 공부한 내용들만 다뤄보려고 한다.
빌트인 파티클 시스템 살펴보기
파티클 시스템 추가하기
- Hierarchy에서 우클릭 → Effects → Particle System
파티클 효과 패널
- 생성한 파티클 시스템 오브젝트를 클릭하면, 씬 뷰 내부에 다음과 같은 패널이 뜸
파티클 시스템 컴포넌트 프로퍼티
- Transform의 Position, Rotation, Scale 값을 수정하여 파티클 개별의 위치, 회전각, 크기 변경이 가능
시간 경과에 따른 프로퍼티의 다양화
- 파티클 시스템 컴포넌트에서 시간 경과에 따른 입자의 모양 변화를 설정하기 위한 프로퍼티 옵션이 존재함
- ex) Start Delay, Start Lifetime, Start Speed 등
- Constant : 입자가 수명 시간동안 고정된 프로퍼티 값을 가짐
- Curve : 해당 프로퍼티 값은 커브/그래프로 규정됨
- Random Between Two Constants : 해당 프로퍼티 값의 상한선 값과 하한선 값을 지정하고, 이 사이의 값 중 랜덤으로 적용됨
- Random Between Two Curves : 두 곡선을 정의하고, 이 값의 상한값과 하한값 사이에서 랜덤하게 적용됨
프로퍼티를 Curve나 Random Between Two Curves로 설정하면 인스펙터 하단에 파티클 시스템 커브 에디터가 표시된다.
- Optimize : 4개 이하의 키에 커브를 맞추어 빠르게 읽을 수 있는 다항식으로 빌드. 최적화되지 않는 커브를 읽는 것보다 효율적
- Remove : 선택한 커브 삭제
또한, 파티클 시스템이 커브를 재생하는 방식을 편집할 수도 있다.
톱니바퀴 아이콘을 클릭하면, 다음 셋 중 하나로 선택할 수 있다.
- Loop : 입자의 수명 시간동안 커브를 지정된 횟수만큼 재생함
- 예를 들어, 입자의 크기를 확대하거나 축소하는 커브를 만든 후, 여러 번 반복하도록 명령하여 입자의 수명이 다할 때까지 해당 애니메이션이 여러 번 발생하게 할 수도 있음
- Ping Pong : Loop와 유사하나, 커브를 앞뒤로 재생하는 차이점이 있음
- Clamp : 커브의 값을 벗어나는 값들을 해당 영역 안의 값만 가지도록 제한
컬러(Color)에 대한 프로퍼티 옵션들
- Color : 파티클 시스템의 수명 주기에 걸쳐, 모든 입자가 이 컬러로 시작. 입자는 여전히 수명 주기동안 컬러를 바꿀 수 있음
- Gradient : 시작 컬러와 종료 컬러를 가진 입자 설정. 불꽃 같은 효과에 적합할 듯함
- Random Between Two Colors : 두 개의 특정 컬러 사이에서 선형 보간법으로 시작 입자 컬러를 임의 선택
- Random Between Two Gradients : 선택된 두 개의 컬러 사이에서 선형보간법으로 시작 컬러가 임의로 선택되고, 파티클 시스템이 현재 나이에 해당하는 시점의 각 그래디언트에서 컬러를 선택
- Random Color : 그냥 랜덤으로 무작위 샘플 채취
- Mode : 입자의 컬러 혼합 여부 설정
- Color : 현재 선택한 키의 컬러 표시
- Location : 현재 선택한 키가 얼마나 먼 지점에 있는지 나타냄
- Presets : 현재 값을 프리셋으로 설정하여 저장 가능
728x90
반응형
'Game Development > Unity' 카테고리의 다른 글
[Unity] "Universal RP Light 2D"를 스크립트 제어하기 (0) | 2022.02.20 |
---|---|
[Unity] 일방향 충돌, 측면 마찰 및 반발력을 설정할 수 있는 Platform Effector 2D (0) | 2022.02.19 |
[Unity] C# 접근 한정자 + 인스펙터에서 변수 확인하기 (Debug Mode) (0) | 2022.02.15 |
[Unity] 트랜스폼(Transform)에 대해 조금 더 공부하기 (0) | 2022.02.14 |
[Unity] 클릭(터치)한 화면 좌표로 캐릭터 이동 시키기 (0) | 2022.02.01 |