6개월 유니티 게임 개발일지 : 파티클에 대해 6

hipop1109·2026년 1월 13일

Noise

파티클에 노이즈를 끼워 역동성을 더하는 기능

탭 자체는 위에 나온 많은 것들과 비슷하지만 하나씩 설명하자면

Separeate Axes

  • 각 축에서 움직이는 노이즈 세기를 각각 조절하는 탭, 켜면 x,y,z축이 생김

Strength

  • 얼마나 분산시킬지 주는 힘

Frequency

  • 값이 낮을 때 : 부드럽고 매끄러운 노이즈 생성
  • 값이 높을 때 : 빠르게 변하는 노이즈 생성
  • 파티클이 얼마나 갑작스럽게 바뀌느냐를 제어함

    요런식으로 프리뷰도 바뀜

Scroll Speed

  • 노이즈 필드를 시간의 흐름에 따라 이동시켜 파티클을 더욱 예측 불가하게 만든다

Damping
-탭을 켭면 세기가 빈도에 비례하게 된다
-Scroll Speed와 조절하면 파티클의 동작을 그대로 유지하면서 크기는 달라지게 만들 수 있다

Octaves

  • 최종 노이즈를 생성하기 위해 몇 개의 노이즈 레이어를 겹칠지 지정한다
  • 많이 쌓을수록 더욱 맛있게 만들 수 있지만, 리소스를 많이 차지한다는 단점이 있다

**Ocatve Multiplyer

  • 노이즈 레이어를 하나 추가할 때마다 세기가 이 수치만큼 줄어듦
  • 0~1의 범위

Octave Scale

  • 마찬가지로 노이즈 레이어를 추가할 때마다 빈도가 이 멀티플라이어만큼 조절됨
  • Octaves만큼 크기 조절 가능

Quality

  • 품질을 설정하는 칸
  • 품질 설정 낮추면 성능 줄일 수 있지만 노이즈의 효과 자체가 안 좋아질 수 있다

Remap

  • 최종 노이즈 값을 다른 범위에 다시 매핑하는 기능
  • 아래 Remap Curve랑 같이 사용

**Remap Curve

  • 최종 노이즈 값이 나타나는 방법을 나타내는 커브로 활용
  • Ex) 큰 값 -> 작은 값으로 하면 크게 시작하고 0으로 수렴하는 커브를 만들어 높은 쪽으로 가는 범위를 무시할 수 있다
  • 더 조사해보고 추가 자료 정리 필요

Position Amount

  • 노이즈가 파티클 위치에 주는 영향 조정

Rotation Amount

  • 노이즈가 파티클 회전력에 주는 영향 조정

Size Amount

  • 노이즈가 파티클 크기에 주는 영향 조정

결론적으로 Randomize와 비슷하지만 조금 더 디테일한 부분들을 건드릴 수 있고, 매 프레임마다 조정할 수 있고 시간성을 가진다는 차이점이 있다

Collision

씬에서 파티클이 게임오브젝트와 충돌했을 때의 현상을 제어하는 탭

Type

  • 충돌을 직접 지정한 Planes에 할 것인지 World로 할 것인지 정함
  • World로 하면 Collision Mode 메뉴로 2D, 3D 정할 수 있음
  • Planes로 할 경우 Transform 리스트가 나와 그 곳에 부딪힐 평면을 넣어 정의 가능

Dampen

  • 파티클이 충돌한 후 줄어드는 속도의 비율

Bounce

  • 파티클이 충돌한 후 표면에서 튕기는 속도의 비율

Lifetime Loss

  • 파티클이 충돌한 후 줄어드는 전체 수명의 비율

Min Kill Speed

  • 충돌한 후 이 속도 이하로 이동하는 파티클은 제거된다

Max Kill Speed

  • 충돌한 후 이 속도 이상으로 이동하는 파티클은 시스템에서 제거된다

Radius Scale

  • 파티클 충돌 구체의 반지름 조절 가능
  • 시각적 가장자리에 잘 맞게 조절해 현실적인 효과 구현 가능

Send Collision Message

  • OnParticleCollision을 통해 파티클 충돌 감지 가능

Scene Tools

  • 말 그대로 범위나 보이는 것을 조정하는 기능


결론적으론 이렇게 특정 평면에서 막혀서 떨어지는 느낌의 파티클 효과를 줄 수가 있다

Triggers

특정 컴포넌트를 Trigger 처리할 수 있는 기능

저 탭 속에 트리거로 인식되길 원하는 컴포넌트들을 넣으면 됨

Inside : 파티클이 콜라이더 안에 있을 떄
Outside : 파티클이 콜라이더 경계 밖에 있을 떄
Enter : 파티클이 콜라이더의 경계 안으로 들어갈 때
Exit : 파티클이 콜라이더 경계 밖으로 나갈 때

Callback : OnParticleTrigger() 콜백 함수에서 파티클에 엑세스 가능
Kill : 파티클 파괴, 엑세스 불가
Ignore : 파티클 무시, 엑세스 불가

Collider Query Mode

  • 파티클이 상호작용하는 콜라이더에 대한 정보를 가져올 때 사용하는 방법 지정
  • 트리거 모듈 처리 리소스 소모량이 증가함, 조심해야함
  • Disabled : 각 파티클이 상호작용하는 콜라이더 정보 가져오지 않음
  • One : 각 파티클이 상호작용하는 첫 번째 콜라이더 정보 가져옴
    - 여러 콜라이더와 상호작용하는 경우 저 위 리스트 중 우선인 쪽 가져옴
  • All : 각 파티클 상호작용하는 모든 콜라이더에 대한 정보 가져옴


이런 식으로 이 박스를 Collider를 놓으면 저 위로 올라갈 땐 Kill되는 것을 알 수 있다

Sub Emitters

이 파티클 수명의 특정 단계에서 파티클 위치에 생성되는 추가 파티클을 명명하는 탭이다

Birth : 파티클이 생성되는 시점에 발생
Collision : 파티클이 오브젝트에 충돌하는 시점
Death : 파티클이 파괴되는 시점
Trigger : 파티클이 트리거 콜라이더와 상호작용하는 시점
Manual : 스크립트를 통해 요청 (TriggerSubEmitter)

Inherit

  • 새로 생성된 파티클에 부모 파티클의 프로퍼티 (회전, 크기, 수명 등) 이전 가능

Emit Probability

  • Sub Emitter 이벤트가 트리거되는 확률을 지정할 수 있음


간단하게 이런 식으로 Birth에 빨간 똑같은 파티클을 넣어두면 부모인 하얀 파티클이 하나가 생성될 때마다 저 빨간 파티클이 같이 생성되는 개념으로 적용된다

Texture Sheet Animation

파티클 그래픽 한 알 자체를 애니메이션 프레임으로 재생할 수 있는 기능

Mode

  • Grid 모드를 선택, 스프라이트로 하면 안에 스프라이트를 넣을 수 있는 추가 탭이 나옴

Time Mode

  • 파티클 시스템이 애니메이션 프레임을 샘플링하는 방식을 선택
    - Lifetime : 파티클 수명 동안 애니메이션 커브를 사용
    - Speed : 파티클 속도에 기반한 프레임
    - FPS : 지정된 초당 프레임 수 값에 기반한 샘플프레임


이런 식으로 파티클을 생명 주기 단위로 애니메이션을 꽂아넣을 수 있는 개념

Lights

특정 비율의 파티클에 실시간으로 광원을 추가하는 개념

Light

  • 광원 프리펩 넣기

Ratio

  • 광원에 영향을 받는 파티클의 비율 조절 (0 ~ 1)

Random Distribution

  • 광원이 임의 할당되는지, 주기적으로 할당되는지 선택
  • true -> 모든 파티클이 비율에 따라 광원을 받을 확률 있음
  • false -> 새로 만들어진 파티클이 광원을 받는 빈도가 비율에 따라 결정
    - Ex) 매 N번째 파티클이 광원을 받음

Use Particle Color

  • True로 설정 -> 광원 최종 색깔이 해당 파티클 컬러에 따라 조정됨
  • False -> 광원 컬러가 조정 없이 사용됨

Size Affects Range

  • 활성화하면 광원에 지정된 Range에 파티클 크기가 곱해짐

Alpha Affects Intensity

  • 활성화하면 광원 Intensity에 파티클 알파값이 곱해짐

Rnage Multiplier

  • 지정한 탭의 커브를 통해 광원 범위를 파티클과 융합

Intensity Multiplier

  • 지정한 탭의 커브를 통해 광원 강도를 파티클과 융합

Maximum Lights

  • 이 설정을 사용해 너무 크거나 많은 광원이 들어가지 않도록 조정

Trails

파티클에 트레일을 씌울 수 있는 탭

Mode

  • Particles : 각 파티클이 움직이지 않는 잔상을 경로에 남김
  • Ribbon : 각 파티클을 나이에 따라 연결하는 줄이 생김

    각각 파티클, 리본
    -리본 선택 시 Ribbon Count가 나오는데, 이는 늘리면 늘릴수록 연결이 느슨해진다

Ratio

  • 잔상을 남길 파티클 비율을 0~1 사이의 값으로 설정함 (확률)

Lifetime

  • 잔상이 속한 파티클의 수명에 곱하는 수

Minimum Vertex Distance

  • 잔상에 새로운 추가 잔상이 생길 때까지 최소한으로 이동해야하는 거리

World Space

  • 잔상이 월드 공간에 놓여지게 하는 탭

Die With Particles

  • 파티클 소멸 즉시 잔상이 사라지게 하는 개념

Texture Mode

  • 트레일에 적용될 텍스쳐 결정
    - Stretch : 텍스쳐를 전체 트레일 길이에 따라 스트레치
    - Tile : 텍스처를 N 단위로 반복 (타일 개념
    - Repeat per Segment : 트레일을 따라 텍스쳐 반복, 트레일 끝마다 한번씩 반복하는 개념
    - Distribute per Segment : 모드 트레일의 전체 길이를 따라 텍스처를 한번 매핑, 모든 점이 균일하게 배치되어 있다고 가정함

Size affects Width

  • 잔상 너비에 파티클 크기를 곱함

Size affects Lifetime

  • 잔상 수명에 파티클 크기를 곱함

Inherit Particle Color

  • 잔상 색깔이 파티클 색상으로 조정됨

Color over Lifetime

  • 잔상이 추가된 파티클 수명에 따라 전체 잔상의 색상을 제어함

Width over Trail

  • 잔상의 너비를 길이에 따라 제어하는 탭

Color over Trail

  • 잔상의 컬러를 길이에 따라 제어하는 탭

Generate Lighting Data

  • 셰이더를 활용해 씬 조명을 활용하는 머터리얼을 사용 가능하게 하는 탭

공식문서 번역이 개판이라 나중에 실제로 적용해보고 수정해보도록 하겠다

Custom Data

파티클에 연결할 커스텀 데이터 포멧을 정의할 수 있다
이 데이터를 셰이더에서 사용하도록 넘겨주는 개념
이는 셰이더와 통합해 설명하도록 하겠다

Renderer

파티클 이미지나 메시가 어떻게 변환되고 처리되는지 조절하는 탭

Render Mode

  • 유니티가 그래픽으로부터 랜더링된 이미지를 생성하는 방법
    - Billboard : 파티클을 빌보드로 랜더링, 일반적
    - Stretched Billboard : 카메라에 따라 파티클 늘림
    - Horizontal Billboard : 파티클이 카메라와 평면이 됨
    - Vertical Billboard : 파티클이 Y축에 그대로 섬
    - Mesh : 3D 메시에서 파티클 랜더링
    - None : 파티클 랜더링하지 않음, 트레일만 보고싶을 때 가끔 씀

Normal Direction

  • 파티클 조명이 빛을 쐬는 방향
  • 1이면 카메라를 향함, 0이면 화면 중앙을 향함

Material

  • 파티클 랜더링 시 사용하는 머터리얼

Trail Material

  • 트레일에 사용하는 머터리얼

Sort Mode

  • 파티클을 화면에 올리는 순서
    - None : 정렬 X
    - By Distance : 카메라까지 거리 토대로 정렬
    - Oldest In Front : 파티클 시스템 앞 가장 오래 있었던 파티클 랜더링
    - Youngest In Front : 파티클 시스템 앞 가장 짧게 있었던 파티클 랜더링
    - By Depth : 카메라 평면부터의 거리를 토대로 파티클 랜더링

Sorting Fudge

  • 파티클 시스템 정렬 순서, 투명 머터리얼에서 겹칠 때 이를 살짝 밀어줘서 이상한 깜빡임을 방지하는 시스템

Min Particle Size

  • 표시되는 파티클의 최소 크기

Max Particle Size

  • 표시되는 파티클의 최대 크기

Render Alignment

  • 파티클 빌보드가 향하는 방향을 결정한다
    - View : 파티클은 카메라 평면을 향함
    • World : 파티클 월드 축에 맞게 정렬
    • Local : 파티클 Transform 컴포넌트에 맞게 정렬
    • Facing : 액티브 카메라의 게임 오브젝트에 있는 Transform 따라감
    • Velocity : 속도 방향과 같은 방향을 사용함

Flip

  • 지정된 축 따라 파티클의 일부만을 Flip, 커질수록 더 많이 Flip

Allow Roll

  • 파티클이 Z축도 같이, 즉 굴러도 되는지 표시하는 옵션

Pivot

  • 회전하는 중심축 조정, 아래 Visulize을 통해 피벗 위치를 볼 수 있음

Masking

  • 스프라이트 마스크와 상호작용 시 파티클에서 렌더링된 파티클 동작 설정
    - No Masking : 파티클 시스템이 씬의 스프라이트 마스크와 상호작용 X
    - Visible inside Mask : 스프라이트 마스크가 안쪽에 파티클 표시, 밖에는 표시 X
    - Visible Outside Mask : 파티클이 스프라이트 마스크 외부에는 표시, 내부에는 표시되지 않음

Apply Active Color Space

  • 리니어 색 공간에서 렌더링하는 경우 시스템이 파티클을 GPU에 업로드하기 전에 감마 공간의 파티클 컬러를 전환합니다.
    -공식문서의 문헌인데 무슨 뜻인지는 약간 애매해 더 알아보겠다

Custom Vertex Streams

  • 셰이더와 함께 씀, 같이 설명 예정

Cast Shadows

  • 파티클 시스템이 그림자를 만들어냄
    - On: 활성
    - Off: 비활성
    - To-Sided : 양쪽에 캐스팅
    - Shadows Only : 그림자만 보임, 원물은 보이지 않음

Shadow Bias

  • 조명 방향으로 그림자가 움직이는 효과

Motion Vectors

  • 모션 벡터를 활용해 이 파티클이 프레임 동안 어떻게 움직였는지 후처리 데이터에 넘겨주는 개념
  • 파티클은 엄청 많은 게 움직이기 때문에 이를 무시하는게 안정적일 수 있어서 생긴 탭
    - Camera Motion Only : 카메라 움직임만 반영, 파티클 이동 자체는 무시
    - Per Object Motion : 파티클 시스템을 하나의 덩어리처럼 계산, 진짜로 그렇게 움직일 때만 의미가 있음
    - Force No Motion : 모션벡터 생성 안함 (후처리에서 제외)

Sorting Layer ID, Order In Layer

  • 평소에 쓰던 Sort 탭

Light Probes

  • 씬의 light Probes 정보를 샘플링해 파티클이 그 위치에 간접적으로 빛을 받게 하는 기능

Anchor Override

  • Light Probes를 사용할 경우 보간 위치를 결정해주는 트랜스폼

드디어 얼추 정리가 되었으니.. 다음 걸로 넘어가자

profile
쑥쑥 개발자

1개의 댓글

comment-user-thumbnail
2026년 1월 14일

유익해요

답글 달기