Ad Block 한번만 꺼주시면 안될까요..?
게임 개발/유니티 에셋

유니티에서 액체(물)를 표현(구현)하는 방법. - Zibra Liquid -

UniCoti(유니코티) 2024. 2. 17.

유니티를 조금 다뤄본 사람이라면, "액체"를 표현하고 싶다는 갈망이 있었을 것입니다.

저를 포함해서 많은 사람들이 생각해 본 주제라고 생각하는데,

결론적으로 말하자면, "셰이더"라는 개념을 알아야 표현할 수 있습니다.

하지만 셰이더를 완벽히 다루기 위해서는 C# 보다도 어려운 과정이 따를 수 있습니다.

 

따라서 오늘 소개할 한 가지 방법은, 에셋을 사용하는 것입니다.

 

 

 

이 글에서 소개할 에셋은, 첫 번째 에셋인 "Zibra Liquid"입니다.

앞서 소개했듯 액체를 표현할 수 있게 해주는 에셋입니다.

 

두 번째 에셋도 있는데, 이건 좀 비싸기도 해서 자세히 소개는 안 할 겁니다.

그래도 짧게 소개하면 연기와 불을 표현할 수 있게 해주는 에셋입니다.

액체와 마찬가지로 연기(기체)와 불(플라스마)도 표현해보고 싶다면 구매해 보세요!


1. 기본 세팅하기.

우선 이 설명은 BRP를 기준으로 합니다. (URP, HDRP가 아니라는 뜻)

3D
BRP (3D)

먼저, 3D 템플릿으로 프로젝트를 하나 만들어줍니다.

 

그 후, [Window] -> [Package Manager]로 들어가서,

"Zibra Liquid" 에셋을 다운로드, 임포트 해서 프로젝트로 불러와줍니다.

폴더
파일

그러면 파일은 이런 상태가 됩니다.

여기까지 했으면 설치는 완료된 거고, 이제 기본세팅을 해봅시다.

 

Simulation Volume
Simulation Volume

먼저, 하이어라키에서 우클릭하여 [Zibra Liquid] -> [Simulation Volume]을 통해 
볼륨을 하나 만들어줍니다. 간단히 볼륨을 설명하면 "관리자"라고 보면 됩니다.

 

컴포넌트
컴포넌트

그리고 만들어진 오브젝트를 클릭해서 인스펙터 창을 보게 되면 

이런 식으로 경고 메시지 하나가 떠 있을 겁니다.

Reflection Probe를 넣어주어야 한다고 하네요.

Reflection Probe
Reflection Probe

따라서, 위의 사진처럼 하나 만들어주세요.

그렇게 되면 하이어라키에 "Reflection Probe"라는 오브젝트가 생기게 됩니다.

 

Reflection Probe
Reflection Probe 설정

그걸 드래그&드롭하여 여기 보이는 Reflection Probe에 넣어주면

기본세팅이 끝나게 됩니다!

 

Zebra Liquid
Zibra Liquid

 

이렇게 위쪽을 보면 경고가 사라졌죠? 이렇게 되면 잘 따라오신 겁니다.

여기까지 되셨다면 기본세팅은 끝이네요.


2. 개념.

에셋은 배수와 출수 개념이 있습니다.

배수는 "Void", 출수는 "Emitter"라고 표현됩니다.

Emitter, Void
Emitter, Void

위 사진에서도 EmitterVoid가 나와 있는 걸 볼 수 있죠.

 

에셋의 로직을 설명해 보겠습니다. 여기서 이해를 잘하셔야 합니다.

물의 양은 우리가 만든 볼륨에서 설정합니다. 예를 들어 50이라고 하죠.
그럼 출수구에서 50만큼의 물이 나옵니다. (출수구가 없는 경우 볼륨에서 나옴)

그럼 배수구에서 물을 빨아들이기 전까지는 출수구에선 물이 안나옵니다.
물의 양이 정해져있기 때문이죠.

배수구와 출수구는 이어져있다고 보시면 될 것 같습니다.
처음 시작해서 나온 물을 제외하면 배수구로 흡수되어야만
출수구로 물이 나오게 됩니다. 배수구가 없다면 그 상태로 유지됩니다.

 

써보시면 이해가 빠를 텐데, 아쉽네요. 천천히 읽어보시면 이해될 거라 믿습니다.

 

참고로 이 모든 요소들은 Manipulators라고 표현됩니다.


3. 사용법.

가장 먼저 물의 양을 조절할 수 있습니다.

물의 양 조절
물의 양 조절

물은 입자로 표현되는데, 여기서 particle count, 즉 입자의 양을 조절할 수 있습니다.

일단은 물을 직접 보는 게 재밌으니까 한번 이대로 실행해 봅시다!

 

물이 채워지는 모습
물이 채워지는 모습

이렇게 물이 차오르게 됩니다. Emitter(출수구)가 없기 때문

볼륨이 알아서 출수구가 되어 물을 뿜어내는 모습을 보이죠!

 

물 출수 끝난 모습
물 출수가 끝난 모습

이렇게 처음 설정한 물 양을 모두 뿜어내면 더 이상 물은 추가되지 않습니다.

배수구(Void)도 없기에 물이 다시 순환되지도 않아 그냥 저렇게 물이 갇혀있네요.

 

파도
파도

이 상태에서 볼륨을 흔들어보면(위치를 바꾸면) 파도를 만들 수도 있습니다.

 

물 공간 크기 조절
물 공간 크기 조절

물이 갇히는 공간의 크기를 바꿀 수도 있습니다.

여기서 사이즈를 조절해 주면 됩니다.

위의 버튼을 누르면 Scene창에서 마우스로 조절하고,

아니면 아래의 값으로 조절해 주면 됩니다.

 

이제 배수와 출수에 대해서 알아봅시다. 여기서 이미 만족하실 분들도 조금 있을 것 같네요.

 

배수구
Void (배수)

이건 배수구입니다. [Zibra] -> [Void]를 눌러주세요. 그럼 배수 오브젝트가 생깁니다.

 

배수 아이콘
배수 아이콘

배수 오브젝트의 아이콘은 이렇습니다. 소용돌이 모양이죠.

큐브 모양의 선이 배수가 되는 지점입니다.

 

배수구 설치하기
배수구 설치하기

이렇게 바닥에 배수구를 깔아서 물이 순환할 수 있도록 해줬습니다.

 

Emitter 추가
Emitter 추가

이번엔 출수구, Emitter입니다.

 

Emitter 아이콘
Emitter 아이콘

출수구, Emitter의 아이콘은 이렇게 원 3개가 배열된 모양입니다.

 

Emitter 컴포넌트
Emitter 컴포넌트

인스펙터의 컴포넌트를 보면, 이렇게 여러 세팅이 있습니다.

1번은 물이 나가는 속도, (Volume Per Sim Time)

2번은 물이 나가는 방향입니다. (Initial Velocity)

 

분수를 표현하기 위해 위쪽방향 (0,3,0)으로 설정하겠습니다.

화살표
화살표

그러면 이렇게 화살표 모양으로 물의 방향을 친절하게 표시해 줍니다.

 

마지막으로, 이걸 적용하려면 볼륨에 가야 합니다.

우리는 지금까지 이걸 만든 거지, 적용은 시키지 않았습니다.

 

볼륨에 추가하기
볼륨에 추가하기

여기 Add 버튼을 누르면 볼륨에서 인식하여 작동까지 하게 됩니다.

여기서 Manipulators란 배수, 출수등의 기능 오브젝트를 말하는 겁니다.

 

이제 한번 실행해 봅시다. 예상대로라면 분수처럼 물이 나와야 하는데...

분수처럼 나오는 물
분수처럼 나오는 물

잘 나오네요! 여기서 색깔도 바꿔주면 한층 물 같아집니다!

 

볼륨의 인스펙터창에서, "Zibra Liquid Material Parameter"을 보면,

색을 조절할 수 있습니다. 여기서 조절해 주면 됩니다.

Zibra Liquid Material Parameters
Zibra Liquid Material Parameters

ColorEmissive Color를 바꿔주면 나름 극적으로 색이 바뀝니다.

파란색 계열로 바꿔보겠습니다.

 

색을 바꾼 분수
색을 바꾼 분수

나름대로 예뻐졌네요! 여기까지 하면 사용법 끝입니다...

 

추가로, 배수, 출수구는 여러 개여도 가능합니다!

데모신을 보시면 이해가 잘 가실 거라 생각되네요.


여기까지 유니티로 액체를 표현하는 방법, "Zibra Liquid"에 대해 알아보았습니다.

일단 개인적으로 매우 신기하고, 전에는 경험할 수 없었던 그런 에셋이라 느꼈습니다.

액체를 유니티에서, 물리효과가 있는 채로 볼 수 있다는 건 굉장히

재밌는 요소였고, 배수, 출수로 표현되는 시스템도 편의성과 확장성에 이점이 있었습니다.

 

한 가지 아쉬운 점은 컴퓨터가 힘들어한다 정도네요.

하지만 팬 소리가 커질 뿐 안 돌아가지는 않을 겁니다.

 

그럼에도 실제 출시할 게임 (특히 모바일 게임)에는 쓰시지 않기를 추천드립니다.

꽤 무겁다고 자신있게 말할 수 있습니다. 만약 진로가 게임 개발자인 학생분이시라면

이거 이용해서 과학 탐구 해봐도 좋을 것 같습니다.

 

저도 학생이라 기회 생기면 해보려구요.

대충 생각나는거로는 파도가 쳐도 물체의 위치는 똑같다? 이런거 하면 좋을 것 같네요.

 

종합적으로, 저는 이 에셋은 굉장히 좋은 에셋이라 느꼈습니다. 

각자의 상황이 있는 만큼 액체가 필요한 상황이라면,

가격이 부담되지 않거나, 할인 중이라면 사보시길 권해드리겠습니다.


이상으로 도움이 되었길 바라며,

 

끝.

 

 

Easy 2D, 3D, VR, & AR software for cross-platform development of games and mobile apps. - Unity Store

Have a 2D, 3D, VR, or AR project that needs cross-platform functionality? We can help. Take a look at the easy-to-use Unity Plus real-time dev platform!

store.unity.com

 

 

Unity Pro

The complete solutions for professionals to create and operate.

unity.com

 

+)

이 글은 제가 실제로 사용해 본 제품에 대한 솔직한 이야기입니다. 링크를 통해 구매하시는 경우, 저에게는 소정의 커미션이 지급됩니다. 하지만, 이로 인해 저의 평가가 편향되지 않았음을 명확히 말씀드리고 싶습니다. 돈도 물론 중요하지만 진실한 글임을 인정받을 때 돈도 따라온다고 생각하기 때문입니다. 이 글의 목적은 전적으로 여러분들의 고민을 돕는 것이며 "광고"로만 보지 않아 주셨으면 합니다. 감사합니다. (커미션 진짜 얼마 안 됩니다... ㅠㅠ)

댓글

💲 추천 글