본문 바로가기
유니티/기초

유니티 파티클 시스템 (Particle System)- 속성

by 노튜 2020. 11. 27.
728x90

1. 유니티 파티클 시스템

 

유니티 파티클 시스템은 작고 간단한 이미지나 메쉬를 대량으로 표현하는 데 사용하도록 만들어진 시스템이다. 파티클은 움직이도록 제어할 수도 있으며, 크기, 방향, 모양 등을 설정하여, 눈이나 비가 내리는 효과와 같은 다양한 효과를 만드는 데 사용된다.  



Particle System

1.1 속성



▼아이콘

대부분 속성에는 ▼모양의 아이콘이 있다.

 ▼아이콘을 선택해서, 랜덤으로 파티클의 시작 크기, 속도 등을 조절할 수 있다. 

파티클의 크기 및 속도에 랜덤성을 부여하여, 시각적인 효과를 높일 수 있다. 

 

Duration : 파티클 시스템의 재생시간이다. 

Looping : 반복사용 설정이다. Duration을 반복한다. 

Prewarm : Looping이 선택(✓)되면 활성화된다. 한 사이클( One Duration )이 이미 완료된 상태에서 파티클 시스템이 동작한다. 예를 들어, 눈이 내리는 지역에서 시작할 때, 눈이 내리고 있는 모습을 표현할 수 있다. Prewarm이 선택되지 않으면, 시작 시 눈이 내리기 시작한다.    

Start Delay : 시작 시간을 연기한다. 1초로 설정하면, 1초 후에 파티클 시스템이 동작한다.

Start Lifetime :  파티클의 재생시간이다. (파티클 시스템이 아니다. )  

Start Speed : 파티클의 시작 속도이다. 0은 움직이지 않으며, 숫자가 클수록 빠르다.

 

3D Start Size  : X, Y, Z 값을 따로 설정하여 파티클의 시작 크기를 설정한다.

Start Size : 파티클의 시작 크기를 설정한다. 

 

3D Start Rotation : X, Y, Z 값을 각각 설정하여 파티클의 시작 시 회전 값을 설정한다.

Start Rotation : 파티클의 시작 시 회전 값을 설정한다.

Flip Rotation : 0.0~ 1.0 사이의 값을 설정한다. 실제 0프로 ~ 100프로의 값과 같은 의미이다.

반대방향으로 파티클을 회전시킬지를 설정하는 값이다. 가령, 15의 시작 회전 값을 가진다고 하면, Flip Rotation 값을 설정하면, -15의 시작 회전 값을 가진 파티클을 생성한다. 0.5로 설정하면, 절반은 15, 나머지 절반은 -15의 회전 값을 가진 파티클을 생성한다.

 

Start Color : 파티클의 시작 시 색상을 설정한다.

 

Gravity Modifier : 파티클이 중력에 영향을 받을 지를 설정한다.

 

Simulation Space : 파티클이 동작하는 환경이 World, Local, Custom 인지 설정한다.

Simulation Speed : 파티클 시스템의 동작 환경의 시간을 설정한다. 파티클의 속도, Duration의 감소 등이 영향을 받는다.

 

Delta Time : Unscaled 와 Scaled 값을 설정한다. Scaled는 Time.timeScale에 영향을 받는다. Time.timeScale은 플레이 시 게임의 시간을 조절할 수 있는 기능으로, Time.timeScale = 0.0일 때에는, 모든 게임 오브젝트는 정지한다.  Unscaled는 영향을 받지 않고 동작한다.  

 

Scaling Mode : 파티클의 스케일에 영향을 주는 방법을 설정한다. Hierarchy, Local, Shape 모드가 있으며, Hierarchy를 선택하면, 부모 게임 오브젝트의 Scale에 영향을 받는다.

Play On Awake :  파티클 시스템의 시작 설정을 한다. Play On Awake 설정을 해제하고, 스크립트로 시작 및 정지를 설정한다. 선택하면 활성화되면 파티클 시스템이 실행된다.

Emitter Velocity : 파티클 시스템이 속도를 계산하는데 Rigidbody 또는 Transform을 사용할지를 설정합니다.

Max Particles : 최대 파티클의 수를 설정합니다.

Auto Random Seed : 설정을하면, 파티클 시스템의 모양이 조금씩 다릅니다. 설정을 해제하면, 파티클 시스템의 모양이 일정하다. 반복 효과를 내는 데 사용할 수 있다.

 

Stop Action : 파티클 시스템이 정지한 후의 행동을 설정한다. 파티클 시스템에서 방출한 파티클들이 시간을 다하여 정지한 상태까지 포함한다. Disable(비활성화), Destroy(파괴), Callback(On Particle System Stopped 콜백을 연결된 스크립트로 전송한다.), None (없음) 설정을 합니다. 

 

Culling mode: 파티클 시스템이 방출한 파티클이 스크린을 벗어나면 취할 행동을 설정합니다. 

Pause는 파티클이 화면에서 벗어나면 시뮬레이션을 중단합니다.

Pause and Catch-up은 화면에서 벗어나면 시뮬레이션을 중단하고, 다시 진입하면 정지되지 않았다면 시뮬레이션이 도달해야하는 단계까지 행동을 하기 위해 대규모 단계를 수행한다. 성능이 순간적으로 크게 저하될 수 있다. 

Always Simulate : 스크린상에 있지 않아도 시뮬레이션 한다. 불꽃놀이 같은 일회성 효과에 유용하다.

Automatic : 반복 설정한 경우에는 Pause, 기타 시스템에는 Always Simulate를 한다.

 

Ring Buffer Mode : 파티클이 Max Particles 수에 도달할 때까지 파티클을 계속 활성화합니다.

Max Particles 수에 도달하면 수명이 경과한 파티클을 제거하는 대신 가장 오래된 파티클을 재활용하여 새 파티클을 생성합니다(Unity documents). 

 

Disabled : 시스템이 수명이 경과한 파티클을 제거합니다.  

Pause Until Replaced : 수명을 다한 오래된 파티클을 일시정지했다가 Max Particles 한계에 도달하면 시스템에서 재활용하여 새 파티클로 다시 표시되게 합니다. 

Loop Until Replaced : 수명을 다한 파티클이 특정한 수명 비율 지점으로 다시 돌아가며, Max Particles 한계에 도달하면 시스템에서 재활용하여 새 파티클로 다시 표시되게 합니다.

 

1.2 모듈(Module)

1.2.1 Emission

 

초당 방출하는 파티클은 Duration 동안에 초당 지속적으로 생성된다.

Bursts는 Duration 동안에 Cycles 수 만큼 Interval 간격으로 Count의 파티클 양을 방출한다.

 

Rate Over Time : 초당 방출하는 파티클 수를 설정한다.

Rate Over Distance : Unit을 기준으로 거리당 방출하는 파티클 수를 설정한다.

Bursts : 파티클을 한번에 방출한다. +- 를 사용해 추가하거나 제거할 수 있다.

 Time : 시작 시간을 연기한다. 

Count : 한번에 방출하는 파티클의 숫자를 설정한다.

Cycles : Duration 동안에 방출하는 숫자를 설정한다.

Interval : 방출 간격을 설정한다.

Probability : 방출 확률을 설정한다. 0.0~ 1.0 사이의 값을 가지며, 0%~100%를 의미한다.

 

1.2.2 Shape

 

 파티클을 내보내는 모양을 설정한다. 

Shape : Cone, Box , Sphere 등의 모양과 함께, Mesh 타입으로 파티클을 내보내는 모양을 설정할 수 있다. 

Cone을 예로 들어, Angle을 설정하여, Cone모양에서 파티클이 퍼지도록 할 수 있으며, Radius를 조절하여, 시작 위치를 좁히거나 퍼져서 파티클이 생성되도록 설정할 수 있다. 

       

 

1.2.3 Velocity Over Lifetime

 

파티클이 생성되고 사라지질 때까지의 속도를 조절한다. 직선, 궤도 벡터 값을 사용하며, 파티클을 대각선으로 나가게 하거나, 회전하도록 설정할 수 있다. 

 

1.2.4 Limit Velocity Over lifetime

 

파티클의 속도를 제한한다. 제한 속도를 초과할 경우 속도가 감소하는 비율 등을 설정할 수 있다.  

 

1.2.5 Inherit Velocity

 

파티클이 부모로부터 속도를 상속받도록 설정한다.

Mode Initial은 파티클이 생성 시 한번만 상속을 받도록 설정하며, Mode Current은 지속적으로 계속 영향을 받는다. Multiplier는 속도를 상속받는 비율을 설정한다.

 

1.2.6 Force Over Lifetime 

파티클이 활성화된 시간동안 힘을 가한다. 

 

1.2.7 Color over Lifetime 

 

파티클이 활성화된 시간 동안의 색상을 설정한다. Gradient 모드를 사용하여, 색상 및 알파 값을 조절할 수 있다.

 

Color Gradient 

 

1.2.8 Color by Speed

 

파티클의 속도에 따라 색상 값에 변화를 주도록 설정한다.

 

1.2.9 Size over Lifetime

 

파티클이 활성화된 시간 동안에 크기를 조절한다.

 

1.2.10 Size by Speed 

 

파티클의 속도에 따라 크기를 변경하도록 설정한다.

 

1.2.11 Rotation over Lifetime

 

파티클이 활성화된 시간 동안에 회전을 하도록 설정한다.

 

1.2.12 Rotation by Speed

 

파티클의 속도에 따라 회전을 하도록 설정한다.

 

1.2.13 External Forces 

 

윈드 존 (Wind Zone)에 영향을 받는 정도를 설정한다. 

Game Object → 3D Wind Zone

 

1.2.14 Noise 

 

파이클에 노이즈 효과를 준다. 파티클에 불규칙적인 움직임을 연출하여, 자연스러운 효과를 줄 수 있다.  

 

1.2.15 Collision

 

파티클과 게임 오브젝트가 충돌하도록 설정한다. 평면(Plane)이나 월드(World) 설정을 통해 다양한 물체와 충돌을 하도록 설정할 수 있다.

 

1.2.16 Triggers

 

대상 게임 오브젝트와 충돌 판정을 설정한다. 대상 게임 오브젝트와 충돌하면 파티클을 사라지게하거나, 통과하도록 설정한다. 충돌 후 Callback 함수를 호출하도록 설정할 수 있다.  

 

1.2.17 Sub Emitters

 

파티클이 생성, 충돌, 파괴되었을때, 서브 파티클을 방출하도록 설정한다. 불꽃놀이를 예를 들 수 있다. Sub Emitter로 설정된 파티클 시스템은 현재 파티클 시스템의 하위 요소에 있어야 한다. 파티클은 Sub Emitter의 Bursts를 방출한다.

 

  

Sub Particle System

 

  

1.2.18 Texture Sheet Animation

 

파티클의 그래픽은 정지 이미지가 아니어도 됩니다. 이 모듈을 통해 텍스처를 두 개 이상의 애니메이션 프레임으로 재생할 수 있는 개별 하위 이미지의 그리드로 처리할 수 있습니다.(Unity documents) 

스프라이트 모드는 시간이 지남에 따라 Sprite A ➝ Sprite B ➝ Sprite C 로 애니메이션이 이루어지는 것처럼 설정할 수 있다.

 

1.2.19 Lights

 

파티클에 빛(라이트)를 추가 설정한다. 아래는 파티클에 라이트를 추가하였을 경우를 나타낸다.

 

 

1.2.20 Trails

 

파티클에 트레일(꼬리 선)을 추가 설정한다. 색상, 크기, 시간 등을 설정할 수 있다. 

Renderer 모듈의 Trail Material에 사용할 머티리얼을 등록해야 한다.  

 

Trail

 

1.2.21 Custom Data 

 

커스텀 데이터 모듈을 사용하면 파티클에 연결할 커스텀 데이터 포맷을 에디터에서 정의할 수 있습니다. 이 포맷은 스크립트에서도 설정할 수 있습니다. 데이터의 형태는 MinMaxCurve 컴포넌트가 4개 이하인 벡터(Vector)이거나 HDR을 사용 가능한 MinMaxGradient인 색상 일 수 있습니다. 이 데이터를 스크립트와 쉐이더에서 로직을 커스터마이즈 하는 데 사용합니다(Unity documents).

 



1.2.22 Renderer 

 

렌더러 설정에 따라 파티클의 이미지나 메시가 렌더링 되는지를 결정한다. 

 

Render Mode 

파티클을 렌더링하는 방법을 설정한다.

 

Billboard : 항상 카메라를 향하도록 설정한다. 

Vertical Billboard : 파티클이 월드 Y축과 평행하게 있으며, 카메라를 향한다.

Horizontal Billboard : 파티클이 월드 XZ와 평행하게 있는다.

Stretched Billboard : 파티클에 다양한 스케일이 적용되며, 카메라를 향한다.

Render Mode

 

Normal Direction : 파티클 그래픽스에 사용되는 조명 노멀의 바이어스(Vias)이다. 값이 1.0이면 노멀이 카메라를 향하고, 값이 0.0이면 화면 중앙을 향한다. (Billboard only)

 

Material : 파티클에 적용되는 머티리얼을 설정한다.

Trail Material : Trail에 적용되는 머티리얼을 설정한다.

Sort : 파티클이 그려지는 순서를 설정한다.

Sorting Fudge : 다른 파티클 시스템이나 게임 오브젝트와의 파티클 시스템의 정렬 순서 설정이다. 값이 낮으면 다른 파티클 시스템을 포함한 다른 투명한 게임 오브젝트에 그려지는 상대적인 기회가 늘어난다. 

 

Min Particle Size : 스크린에 표시할 최소 파티클의 크기를 설정한다.

Max Particle Size : 스크린에 표시할 최대 파티클의 크기를 설정한다.

 

Render Alignment : Billboard 모드에서 파티클이 정렬되는 것을 설정한다. View 뷰포트를 바라보도록 설정하거나, Local과 일치하도록 설정 등을 할 수 있다. 

Flip : 0.0~1.0 사이의 값을 가지며, 지정된 축을 따라 파티클의 일부분을 미러링 한다.

Allow Roll : 카메라를 향한 파티클이 카메라의 Z 축을 따라 회전 가능한지 여부를 제어합니다. 이 옵션을 비활성화하는 것은 HMD 롤로 인해 파티클 시스템에서 원하지 않는 결과가 도출될 수 있는 VR 애플리케이션의 경우 특히 유용합니다(Unity documents).

 

Pivot : 피벗을 설정한다. 피벗의 오프셋을 통해 회전 중심을 변경한다. 

Visualize Pivot : 피벗을 보이도록 설정한다.

Masking : Mask 설정을 한다. (UI Mask 글을 참조해주세요.) 

Apply Active Color Space : 리니어 색 공간에서 렌더링 하는 경우 시스템이 파티클을 GPU에 업로드하기 전에 감마 공간의 파티클 컬러를 전환합니다. 

 

Custom Vertex Streams : 머티리얼의 버텍스 셰이더에서 어떤 파티클 프로퍼티를 사용할지 설정한다. 

Cast Shadows : 그림자를 사용할지를 설정한다. 

Receive Shadows : 그림자 효과를 파티클에 캐스팅하도록 설정한다. 불투명한 머티리얼만 그림자가 적용될 수 있다.

Shadow Bias :  조명 방향으로 그림자를 움직여 빌보드를 사용한 근사로 인해 발생하는 그림자 결함을 제거합니다.

 

Motion Vectors : 모션 벡터를 설정한다. 

Sorting Layers ID : 정렬 레이어를 설정한다. 

Order in Layer : 정렬 레이어 내에서의 렌더링 설정을 한다. 

Light Probes : 라이트 프로브를 사용하여 빛 효과를 보정할지를 설정한다. 

Reflection Probes : 반사 프로브를 사용하여, 반사 효과를 보정할지를 설정한다.


2. 파티클 시스템 활용 예제

 

https://notyu.tistory.com/60

 

유니티 파티클 시스템(Particle System) - 활용

1. 파티클 시스템 속성 파티클 시스템의 속성 값에 대해서는 아래 글을 참조해주세요. https://notyu.tistory.com/59 유니티 파티클 시스템 (Particle System)- 속성 1. 유니티 파티클 시스템 유니티 파티클 시

notyu.tistory.com

 

참조

 

docs.unity3d.com/kr/2018.4/Manual/class-ParticleSystem.html

 

파티클 시스템 - Unity 매뉴얼

Particle System 컴포넌트는 씬 안에 다수의 작은 2D 이미지를 생성하고 애니메이션하여 액체, 구름 및 불꽃 같은 유체 엔티티를 시뮬레이션합니다. 파티클 시스템과 그 용도에 대한 전체 개요는 파

docs.unity3d.com

 

728x90