언리얼엔진으로 파괴신이 되는 방법

뒤집기교주 작성일 24.02.20 06:21:50
댓글 10조회 63,335추천 25

요즘 들어 매일 찾아보던 뉴스도 보기 싫어지고 자주 보던 시사 관련 유튜브도 잘 안보게 됩니다. 연이어 터지는 충격적이고 실망스러운 소식들 때문에 인간에 대한 혐오감이 생기고 그런 소식들에 조금씩 무감각 해져가는 제 모습이 싫기 때문입니다. 불과 몇년전만 해도 국민들이 한마음 한뜻으로 잘못된 것을 바로잡고 사회 여러부분이 조금씩 정상화 되어간다 싶었는데 눈 앞에서 그 모든게 파괴되어 터져나가고 무너져 내리는 것이 정말 안타깝습니다.  

 

가끔 정말 비상식적이고 정도를 넘어선 발언 같은 것이 들려올 때면 화가 머리 끝까지 치미기도 하고 그럴 때에는 순간적으로 뭐라도 부숴야겠다는 충동에 휩싸이기도 합니다. 물론 현실에서 그랬다가는 와이프님이 저를 싸이코로 보실지도 모르기 때문에 그럴 수는 없습니다. 월급쟁이 신분으로 부순 물건 다신 살 능력도 없으니 잠깐 그런 마음만 들었다가 그저 속으로 삭힐 뿐입니다. 진짜 던진다면 작은 베개 정도?  

 

이런 답답한 현실에서 아주 조금이나마 위안 아닌 위안이랄게 언리얼엔진으로는 물건이고 건물이고 마구 부수는 파괴신 놀이가 가능하다는 점입니다. 어떻게 보면 이런 비이성적이고 원초적인 본능을 간접적으로 해소시켜 주는 것이 게임과 영화 같은 미디어의 주요 기능 중에 하나가 아닐까 생각해봅니다. 이번에는 언리얼엔진의 카오스 파괴 기능이랑 나이아가라 기능을 써본 경험담에 대해서 간략하게 이야기 해보겠습니다.  

 

카오스 디스트럭션 시스템은 미리 부숴둔 모델의 조각들을 실시간으로 물리엔진을 통해 시뮬레이션 해줍니다. 또 이 과정을 유저가 직관적으로 이해 할 수 있게 만들어 두어서 복잡한 기술적 지식이 없더라도 충분히 원하는 형태의 폭발 또는 파괴를 만들 수 있게 해줍니다.  

 

a26158553e857263e1f4c1357cf2f747_796737.jpg

이 콘크리트 블럭을 예로 들어보겠습니다. 이 때까지만 해도 이분은 그냥 평범한 콘크리트 블럭이셨습니다. 시멘트. 물과 모래가 아주 적절히 배합되어 굳혀진 아주 묵직하고 단단한 분이셨죠. 앞으로 다가올 운명을 예측하지 못한채 자신이 어느 건물의 천장을 지탱하게 될것인지, 몇층에 배정될 것인지, 기대에 부풀어 계셨습니다.  

 

 

d6f3265e2436f785811aeb4af2c775f5_630446.jpg

그랬던 분을 프렉쳐 모드의 이런 화면을 통해 … 자 잠시만 이쪽으로 와보시죠.. 네? 여긴 왜? ….잠시면 됩니다  

 

f8c5611582d1ad645af709ead75a6730_112223.jpg

이렇게 라면땅 뽀개듯 잘 뽀개드렸습니다 (다들 라면땅 뭔지 아시죠? 저만 아잰가요?). 분노와 슬픔의 절규가 들리는 것 같습니다만 가볍게 무시합니다. 이 프렉쳐 모드에서 선택한 3D 모델을 어떤 모양으로 부술 것인지, 몇단계로 나누어 부술 것인지 부숴진 내부 표면은 어떤 재질이 될 것인지 등등의 많은 세팅을 할 수 있습니다. 물론 더 자잘하고 복잡하게 부술수록 피스들을 나누는데에도 컴퓨팅이 많이 필요하고 시뮬레이션도 복잡해지기 때문에 컴퓨터 성능에 맞추어 적당히 조절 할 수 밖에 없습니다.  

 

27de42f36fc063d0235e8dde82996445_198859.jpg

부실공사를 무사히(?) 잘 마치고 온 콘크리트 블럭님을 다른 멀쩡한 콘크리트 블럭들 사이에 감쪽같이 숨겨놓습니다. 애초에 부수기 전에는 옆에 붙여놓은 분들이랑 동일한 모델이었으니 이렇게 봐서는 어느 분이 847조각으로 쪼개진 분인지 알 수가 없습니다.  

 

893a2b2c017e774c536aa4b55679a210_678169.jpg

쪼개진 콘크리트 블럭에 여러가지 물리적 기능을 하는 액터*들을 배치합니다. 네모난 노란색 액터들은 앵커라고 하는데 시뮬레이션을 돌릴 때 이부분은 되도록이면 부서지지 않도록 하기 위해 배치합니다. 그리고 빨간색 공같이 생긴 것이 폭탄입니다. ㅎㅎㅎㅎㅎㅎㅎ  

 

*액터라 함은 언리얼엔진 레벨에 배치하거나 스폰시킬 수 있고, 정해진 기능에 따라 자신의 역할을 수행하는 기본 객체라고 할 수 있습니다.  

 

이제 에디터에서 시뮬레이션을 돌려 폭탄을 빵! 터트리면  

 

42246cb24c1c48d89f9ecf4030dc7196_116967.jpg

멀쩡했던 천장에 구멍이 생기면서 조각들이 우수수 떨어지는 효과를 만들 수 있습니다. 콘크리트 조각들이 터져나가고 주변 지형 지물과 부딪히면서 세팅된 무게에 맞춰 튕기고 굴러다니는 효과를 자동으로 시뮬레이션 해줍니다.  

 

아주아주 재밌습니다. 이렇게만 해도 폭탄의 위치를 이리저리 옮겨보기도 하고, 폭탄의 세기도 조절 해보고 떨어지는 지점의 지형지물도 바꿔보는 등 한참을 놀수가 있습니다. 또 꼭 폭탄 액터를 쓰지 않아도, 다른 물체를 높은 곳에서 떨어뜨려서 천장을 부순다던가 하는 물리 시뮬레이션을 돌려 볼 수 있습니다.  

 

재밌습니다 재밌긴한데… 뭔가 좀 많이 썰렁합니다. 뭔가 진짜로 콘크리트가 터져나가는 상황이면 먼지랑 연기도 많이 생길 것이고, 조각들이 부서질 때나, 다른 곳에 부딪히면서 더 작은 조각이 생기거나 하는 일이 있어야 하는데 그런게 아직 없습니다. 그래서 나이아가라 효과를 연계해서 같이 써보도록 합니다.  

 

나이아가라 비주얼 이펙트 시스템은 언리얼엔진 내에서 자체적으로 여러가지 시각적 효과를 만들 때에 쓰입니다. 예를 들어, 모닥불, 각종 연기, 떨어지는 낙엽 등의 간단한 효과 부터 게임 캐릭터의 마법 능력, 동물 떼, 대규모 인원 시뮬레이션 효과 등의 복잡한 효과까지 쓰임새가 다양합니다. 나이아가라 시스템 또한 별도의 프로그래밍 지식이 없이도 직관적인 인터페이스를 통해 유저가 다양한 효과를 만들어서 적용시켜 볼 수 있게 되어 있습니다.  

 

7f58d360da5afd2355c9d0dc03917580_547997.jpg

일단 이펙트에 사용할 콘크리트 조각들을 모아 구부러진 쇠파이프도 끼워넣고 별도의 3D 모델로 만들었습니다.  

 

9a4755f875e66fffa71fffeb6b01f637_610402.jpg

이 별도의 조각들을 나이아가라 시스템에 넣어서, 떨어지는 방향, 속도, 떨어지는 개수, 바닥에 부딪히고 나서 생기는 관성 등의 여러가지 변수를 조절합니다. 참고로 나이아가라 시스템은 파티클(입자) 를 사용하는 시스템도 가능하지만 이렇게 3D 모델을 넣어서도 사용 가능합니다.  

 

1962d46996cc80c11fa317ef4d445408_296340.jpg

그리고 역시 나이아가라 시스템을 통해, 콘크리트 조각들이 땅에 부딪히는 순간, 충격지점에서 부터 작은 돌 조각이 사방으로 비산하게 만들었습니다. 이 역시 튀어나가는 속도, 회전량 등을 조절 할 수 있습니다.  

 

227125ea77ec2ac7a6a048d1a37a5fde_184924.jpg

이 외에도 폭발에서 피어나는 연기, 구멍에서 떨어지는 작은 돌조각 등 몇가지 나이아가라 시스템을 더 만들었습니다. 이렇게 나이아가라 효과들이 준비 된 다음에는 천장에 구멍이 뚫리는 카오스 효과에 맞추어 그럴 듯한 타이밍에 각 효과가 터지도록 타임라인을 설정합니다. 각종 효과를 이렇게 하나의 시퀀스로 가져와서 돌려보면 처음에는 이것저것 손 볼 것이 많이 보입니다. 연기량이 너무 많다거나, 돌조각이 너무 일정하게 떨어져서 부자연스럽다거나 등등의 문제가 보일 때 마다 관련 변수를 조절 해서 다듬어 나갑니다.  

 

결과물 영상입니다. 제목은 ‘아니 문이 있는데 왜?’ 로 지어보았습니다.  

카오스랑 나이아가라 효과를 연계해서 사용하는데 있어서 이렇게 시퀀스에서 타이밍을 맞추어 영화적인 연출을 하는 방법도 있습니다만 게임 같은 실시간 인터렉티브 미디어에서는 그보다 더 직접적으로 둘을 연결하는 방법이 있습니다. 바로 카오스 데이터를 사용하는 방법입니다. 카오스 디스트럭션 시뮬레이션이 일어나는 과정에서 표면이 부서지는 위치 또는 파편이 날아가면서 생성되는 트레일 데이터등이 만들어지는데, 이 데이터를 이용해서 디스트럭션이 일어나는 정확한 위치에 나이아가라 효과가 따라서 생성될 수 있게 만들 수가 있습니다.  

 

아래 영상은 콘크리트 벽이 부서지면서 날아가는 파편의 속도에 따라 나이아가라 플루이드 Gas smoke 효과가 랜덤하게 나타나게 만들어 보았습니다.  

 

카오스 x 나이아가라 플루이드  

참고로 나이아가라 플루이드는 비교적 최근에 언리얼엔진에 추가된 실험적 기능입니다. 기존의 단순한 파티클 기반의 구성을 넘어서 3D 픽셀 (볼륨 픽셀, 또는 Voxel) 을 사용하기 때문에 보다 자연스럽고 사실적인 효과를 제작 할 수 있습니다. 이 같은 장점 때문에 주변 사물이나 빛에 반응하는 형태가 기존의 파티클 시스템보다 월등합니다. 하지만 실험적 기능이라는 수식어에서 알 수 있듯이 아직은 제약이 상당히 많은 기능이라고 할 수 있는데, 나이아가라 플루이드로 제작한 효과의 해상도를 높일 수록 좋은 퀄리티의 결과물을 얻을 수 있는 반면, 일정 이상의 해상도를 넘어가면 퍼포먼스가 극악으로 치닫습니다. 잦은 뻑남 현상과 부서진 키보드의 원인이 될 수 있습니다 (여기서도 카오스?). 제 개인적인 의견으로는 일반적인 개인 컴퓨터에서 얻을 수 있는 결과물은 굉장히 제한적이고 그 때문에 실시간으로 사용할 수 있는 범위도 아직은 상당히 좁다고 생각합니다.  

 

어쨌든 장점 덕분에 캐릭터 움직임에 반응하는 형태가 기존의 파티클 시스템 보다 더 사실적이라고 할 수 있는데 그걸 한번 재미삼아 시험 해봤습니다. 플루이드 Gas Smoke 를 마치 세트장에서 쓸만한 스모크 머신처럼 아래로 깔아주고 그 안에서 한번 신명나게 봉산탈춤을! …하려다가 탈춤 애니매이션이 없어서 브레이크 댄싱으로 대체 했습니다.  

 

스모크머신 x 헤드스핀  

올릴 때마다 글이 좀 구구절절 길어지는데, 항상 긴글 읽어주시고 자주 올리지 않는데도 기억 해주시고 응원 해주시는 분들 정말 정말 감사합니다. 또 언리얼엔진으로 이야기거리 생기면 들고 찾아오겠습니다  

 

뒤집기교주의 최근 게시물

취미일반 인기 게시글