Home [Unity Graphics Study] 1. Particle System
Post
Cancel

[Unity Graphics Study] 1. Particle System

GameMakers 동아리에서 7월 말에 시작된 아트 스터디에 참여해 매주 비대면으로 각종 게임 아트와 관련된 이론 및 실습 강의를 듣고 있다.

1~3주차까지는 유니티의 파티클 시스템에 대해 알아보고, 이를 이용해 불/물/구름같은 유체 엔티티나 피격연출, HUD 스크린 등과 같이 게임에서 흔히 볼 수 있는 여러가지 이펙트를 제작해보았다.(글에서 위 이펙트들에 대한 제작 방법은 따로 정리하지 않았다.)



시작하기 전에: 게임의 디테일이란

  • 반대로 생각해보기 - 게임의 필수요소?
  • 게임의 퀄리티는 디테일로부터
  • 리소스와 시스템 연결하기


유니티 파티클 시스템

다수의 작은 이미지나 메시(=파티클)를 렌더링하여 시각 효과를 만들어내는 시스템.
스프라이트나 메시로 묘사하기 어려운 불/액체 등의 동적 오브젝트를 구현할 때 유용하게 사용된다.

파티클 시스템에는 파티클의 크기나 속도 등 다양한 옵션을 조절할 수 있는 모듈이 많이 있는데, 사실 몇 가지 모듈 외에는 별로 자주 쓰이지 않는다.


파티클 쉐이더(*레거시)

현재 유니티에 내장된 기본 쉐이더는 물리 기반의 스탠다드 쉐이더로 에디터를 사용해서 여러가지 재질을 만들어낼 수 있지만, 예전에는 유니티에서 각각 다른 용도의 내장 쉐이더를 제공했다. 스터디와 아래 실습에서는 다음의 두 레거시 쉐이더를 사용했다.

Additive,Alpha-Blended

  • Legacy Shaders/Particles/Additive: 빛의 연산. 어두울수록 투명하고 밝을수록 불투명하다.
  • Legacy Shaders/Particles/Alpha blended: 색의 연산. 텍스처의 검은 부분이 그대로 보여진다.


이펙트의 스토리 정의하기

이펙트를 만들 때는 상황에 대한 스토리, 즉 흐름을 생각하며 만들어야 실감나는 연출이 될 수 있다. 예를 들어 주먹을 무기로 한 히트 이펙트를 만든다고 하면 스토리는 다음과 같이 정의할 수 있다.

  1. 빛나는 효과: 타격지점에 빛을 등장시킴으로써 일이 일어났음을 알림. 잠시 후 매우 큰 빛으로 힘의 하이라이트를 표현.
  2. 무기 종류에 따른 표현: 주먹이나 망치는 둔탁하고 사방으로 힘이 흩어지는 느낌이 든다. 타격 면적이 넓기 때문에 에너지가 사방으로 흩어지는 느낌. 따라서 1번의 큰 빛이 줄어듦과 동시에 방사형으로 뻗어나가는 선들과 알갱이들로 힘의 이동을 표현.(실제로 이런 빛이 보이는건 아니지만.. 타격감을 위해!)
  3. 힘이 사그라짐: 빛 페이드아웃


실습

실제 게임에 적용하는 건 후에 해보기로 하고 일단은 일러스트 배경에 각종 이펙트를 적용시켜 보았다.
강의 들을때부터 직접 그린 일러스트에 이펙트 적용하는 걸 너무 해보고 싶었어서 아예 이펙트부터 생각해두고 그렸다ㅋㅋ
스터디 때는 여러 텍스처를 쓰는 히트 이펙트같이 조금 복잡한 타입도 만들어봤지만, 아직 파티클 시스템이 익숙하지 않아 아래 실습에서는 가볍게 기초적인 이펙트만 만들었다. 그래서 종류는 여러개지만 사실상 액션은 비슷비슷하다.

적용 전 / 후

적용 전 적용 후

gif 품질이 좋지 않고 재생 시간이 짧아서 제대로 보이지는 않지만 어쨌든 적용된 이펙트는 총 11가지이다. 많지는 않은데 각 이펙트별로 적용한 옵션값을 다 적으려니 감당이 안돼서=_=;; 간단하게만 적어보았다.

적용 이펙트

  • 창문 불빛, 네온사인 불빛, 차 불빛
  • 창밖 공중에 내리는 비, 창문에 맺힌 빗방울, 창문에 흘러내리는 빗방울
  • 창문 김, 머그컵 김
  • 쿨링 팬, 오디오 비주얼라이저(?), 스마트폰 SNS 좋아요

모듈

  • Color over Lifetime
    오디오 비주얼라이저를 제외한 모든 이펙트에 Color over Lifetime 모듈을 사용했다. 쿨링 팬은 빠르게 깜빡이는 효과를 주기 위해, 나머지는 페이드인/아웃 효과를 위해 사용했다.
  • Shape & Start Speed
    같은 위치에서 등장하고 사라지는 이펙트(네온사인 불빛, 창문 불빛, 창문 김, 쿨링 팬)를 제외한 나머지 이펙트에는 이동 속도와 방향이 있으므로 Start Speed 값을 주고 Shape 모듈을 사용해 적절한 각도로 회전시켰다.
  • Trail
    창문에 흘러내리는 빗방울의 물줄기 표현, 오디오 비주얼라이저에서는 길어지는 막대 표현을 위해 Trail 모듈을 사용했다.
  • Noise
    창문에 흘러내리는 빗방울과 스마트폰 SNS 좋아요에 Noise 모듈을 사용해 아주 약간의 불규칙적인 움직임을 주었다.
  • Velocity over Lifetime
    (이미지에선 잘 보이지 않지만) 창문에 흘러내리는 빗방울의 속도가 불규칙적인 점을 생각해 y좌표 속도만을 그래프로 조정해주었다.

아쉬운 부분

  • 차 불빛 표현
    제일 아쉽다. 사실 그냥 빼버릴까도 생각했는데 일단은 넣었다. 모르고 보면 이게 뭔가 싶을듯ㅋㅋㅋ
    그런데 정말 어떤식으로 넣어야할지 감을 잡기가 어려웠다. 머릿속에서 그린 이미지로는 어차피 흐린 창밖 풍경이니까 단순하게 흐린 빛 막대만 넣어도 그럴듯하게 보일거라고 생각했는데, 차 실루엣이 없어서 그런가 영 엉성한 느낌이다.
  • 오디오 비주얼라이저(?)
    라고 부르기 민망한 결과물이지만…
    음악이 재생되는 듯한 리듬감있는 움직임, 파도처럼 높낮이가 바뀌는 막대들을 어떻게 표현해야 할지 아이디어가 떠오르지 않았다.
    원래 만들려던 것과 많이 다르긴 한데 빼자니 허전해서 그냥 넣었다.
  • 창문에 흘러내리는 빗방울
    사진상으론 잘 안 보이는데, 빗줄기가 좀 어색하다. 텍스처도 고쳐야 할 것 같고, trail 옵션도 수정해야 될 것 같은데 어떻게 고쳐야될지는 생각해봐야 할듯…
  • 키보드 RGB 효과
    이건 어떻게 뿌려봐도 영 부자연스러워서 결국 뺐다.


고치고 싶은 부분이 많은데 시간상의 한계로 더 디테일하게 만지지 못한게 아쉽기는 하다. 아무래도 아트 부분은 역시 감각이 얼마나 있느냐에 따라 작업시간과 결과물이 달라지는 것 같다. 그리고 모듈 가짓수도 적지 않다보니 이를 얼마나 숙지하고 있는가도 좀 영향을 미치는듯. (그래서 위에서 적용한 이펙트중에 불필요하거나 엉뚱한 모듈을 건드린 경우도 분명 있을 것이다…) 아무튼 이펙트 제작은 이번이 처음이었는데 정말 어렵긴 하지만 왜 이제서야 해봤을까 싶을정도로 재밌기도 했다.ㅋ_ㅋ

This post is licensed under CC BY 4.0 by the author.

Week2 - Simple DP

Week3 - Binary Search, Two Pointer

Comments powered by Disqus.