복셀 엔진 에디터로 만든 Nod의 어택 바이크. |
[clearfix]
1. 개요
복셀(Voxel)은 2차원적인 픽셀(도트)을 3차원의 형태로 구현한 것이라 할 수 있다. Voxel은 Volume + Pixel의 합성어로 '부피를 가진 픽셀'이라 할 수 있다. 작은 정육면체 또는 부피요소로 나눠질 수 있는 오브젝트를 렌더링하는 기술인데 보통은 하나의 공간을 빈틈없이 채울 수 있는 정육면체를 사용한다. 복셀그래픽에서 모든 복셀의 모양과 크기는 동일하며 하나의 복셀은 하나 이상의 특성값(파라미터)을 가질 수 있다. 특성값을 전혀 갖지 않는 복셀그래픽도 가능은 하지만 그리 유용하지는 않고(정의하는 복셀 공간 전체가 똑같은 복셀로 가득찬 덩어리 하나만 존재할 수 있는데 유용할리가) 보통 색상값 정도의 특성값 정보는 가지고 있다.물론 내구도, 타 복셀과의 접착력, 무게 등 색상값 이상의 정보도 담고자 한다면 얼마든지 담을 수 있는데, 이 점을 이용하여 복셀마다의 특성과 텍스처 정보를 다르게 하여 그래픽을 구현한 게임이 바로 마인크래프트이다. 구체적으로는 복셀의 블럭 ID값과 추가 상태 정보(내구도 등)를 저장하고 있으며 마인크래프트의 렌더링 엔진은 복셀의 블럭 ID값에 따라 텍스처 라이브러리에서 정육면체 텍스처를 불러와 복셀 표면을 렌더링한다. 단, 블럭에만 한정하고 캐릭터나 엔티티(액자, 풀잎, 꽃 같은 것)는 폴리곤 그래픽이다.
산업적으로는 엑스선, 음극선, MRI 등에서 복셀 그래픽을 사용한다.
2. 특징
폴리곤 그래픽이 세 개의 정점 정보(버텍스)로 삼각형을 만들고 그 표면에 텍스처를 입히는 것에 비해서, 복셀은 모양이 동일한 정육면체를 모아 물체를 표현하기 때문에 연산이 많아진다. 그래서 물체가 많아지거나 공간이 커지면 폴리곤 그래픽에 비해 급격히 속도가 느려진다는 단점이 있다. 특히 큰 물체를 세밀하게 표현해야 할 때 복셀 그래픽은 정직하게 블럭을 많이 쌓아서 물체를 표현해야 하지만, 폴리곤 그래픽의 경우 입체감 있는 고해상도 텍스처만 준비했다면 그냥 큰 삼각형 몇 개만으로 큰 물체를 그려낼 수 있다.반면에 폴리곤이 일반적으로 표면의 표현에 치중하기 때문에 내부는 그냥 빈 공간인 반면, 복셀은 공간 전체에 대한 특성값을 기록할 수 있기 때문에 입체적인 물체의 단면 표시 및 부분 재구성이 가능하다. MRI 등 의료계에서 사용되는 것이 바로 이 때문이다.
3. 장점
왼쪽이 노바로직의 코만치, 오른쪽이 다이나믹스의 태평양의 에이스들. 같은 1992년에 나온 게임이다. 태평양의 에이스들은 당시에는 최상급의 그래픽으로 평가받았다는 걸 염두에 두자. |
또한 픽셀처럼 입자 하나하나인 셈이나 마찬가지이기 때문에, 건물이 부서지는 이펙트나 지반이 무너지는 효과 등에 스크립트를 세세히 적용하지 않아도 되며, 물이나 모래의 모습도 제한적이면서 나름대로 디테일한 구현이 가능하다. 입자의 특성값에 무게, 점도, 마찰력 등의 물리 파라미터만 적용해 주면 나머지는 물리 엔진이 알아서 계산해낼 수 있기 때문이다. 물론 알아서 계산한다는거지 그 계산 결과가 디자이너의 의도대로인지는 별개의 이야기다. 예를 들어 건물을 폭발물로 공격하면 파괴되도록 디자인했는데, 건물이 파괴되는 모양이 콘크리트가 부서지는 게 아닌 무슨 모래성 허물어지는 것처럼 보일 수도 있다.
여담으로 복셀 그래픽 기반으로 지형을 렌더링한 경우 벽뚫기 버그가 존재할 수 없다는 장점도 있다. 폴리곤 그래픽은 최적화를 위해 한쪽 면에만 텍스쳐를 입혀놓고 다른 면은 투명하게 만든다. 일반적인 게임에서 땅 밑으로 들어간다면 텍스쳐를 전부 투시해서 볼 수 있게 되는 것이 이 때문이다. 하지만 복셀 기반 렌더링을 했다면 표면의 복셀 한두층 정도는 뚫고 들어간다고 하더라도 마인크래프트에서 땅을 파듯이 그 내부 층의 복셀을 볼 수 있을 뿐이다.
4. 게임에서
시드 마이어의 알파 센타우리는 지형과 유닛을 복셀로 구현하였다. 덕분에 유닛은 부품을 조합한 모듈식 설계로 만들 수 있었고, 지형은 64m 단위로 고저차를 구현하였다. 시드 마이어의 문명 시리즈에서 지형의 높낮이가 산악/바다 타일이 아니라 실제 높낮이로 계산되는 작품은 알파 센타우리가 유일하다.
타이베리안 선에서도 쓰인 기술이었다. 나름대로 복셀을 잘 이용해 지형에 따라 유닛의 기울기가 변하는 그래픽을 뽑아 냈지만, 그 때문에 유닛이 많아지게 되면 게임이 버벅거리게 되었다.[1][2]
5. 치명적인 단점
그러나 이 복셀 기술에는 치명적인 단점이 존재하는데, 해상도가 올라갈수록 연산량이 기하급수적으로 늘어난다는 것이다. 기본적으로 폴리곤의 복잡도(내지 디테일)가 면적에 비례하는 반면(즉 제곱) 복셀은 부피에 비례(즉 세제곱)한다. 단순하게 생각해보면 복셀 1개 = 폴리곤 1개나 다름없는데 저해상도에서는 복셀 1개에 해당하는 부피가 가로 세로 두배, 총 네 배의 고해상도에서는 8배의 부피가 된다. 이렇게 늘어나는 연산량은 GPU 등의 보조로 해결할 수 있는 수준이 아니었고, 폴리곤 기반으로 3D 기술이 발달하면서 질 좋은 텍스처와 다양한 렌더링 기술을 통해 훌륭한 그래픽을 뽑아낼 수 있게 되면서 복셀 기술의 장점이 의미를 잃게 되었다.또한 폴리곤 방식에 비해 애니메이션을 구현하기도 난해하다. 폴리곤 방식은 어떤 트리거를 유저가 수행했다면 정해진 스크립트대로 애니메이션이 작동하게만 하면 되지만, 복셀은 개개 입자의 상호작용을 전부 계산해야 하기 때문이다. 물론 이러면 매우 사실적인 표현은 가능하겠으나 그 정도의 실시간 고해상도 연산을 수행하는 것은 고성능 워크스테이션으로도 어림도 없다. 이러한 것 때문에 게임에서는 주로 지형 구현에 촛점을 둔 복셀 엔진을 개발하고 있다.
6. 미래
복셀을 이용한 연기 입자 효과 |
90년대에 비하면 CPU와 GPU의 성능이 무시무시하게 올라갔고 CUDA처럼 GPU를 병렬연산에 동원하는 기술도 도입되면서, 몇몇 게임사에서는 아예 인물 등의 그래픽은 폴리곤으로, 지형이나 스크립트 등은 복셀로 구현하는 것까지 시도하고 있다. 그렇기 때문에, 더욱더 현실감 있으면서도 하드웨어에 많이 부담을 주지 않는[4] 수준의 게임 제작도 가능할 것이다. 미래가 돼서 CPU의 수준이 더 좋아지게 되거나 그래픽카드 가속 지원 등이 가능해진다면 복셀 엔진을 중심으로 하는 게임도 많아질 것이다.
물체의 변형이 포함되는 물리 시뮬레이션에도 내부적으로는 복셀 기반인 경우가 많다.
2014년 기준으로 엔비디아에서 Flameworks라는 화염 렌더링용 복셀 프레임워크를 개발하였다.[5] 불 관련 물리 시뮬레이션과 그래픽을 동시에 구현하는데, 광학적인 특성과 물리적 특성이 전문 시뮬레이션 소프트웨어들[6]과 상등한 결과값을 나타내면서도 실시간으로 처리할 수 있게 되었다.
복셀을 응용한 실시간 글로벌 일루미네이션인 VXGI 기법도 있다. 일반적인 오프라인 렌더러에서 쓰는 Path tracing은 실시간으로 처리하기에 연산량이 지나치게 많으므로 실시간으로 3차원 공간을 복셀 Octree로 재구성한 뒤에 이 복셀 맵 내부에서 Path tracing과 Occlusion 계산을 하면 연산량을 절약함과 동시에 근사한 결과를 얻을 수 있다.
높은 해상도의 풀 복셀 그래픽을 우습게 구현할 정도로 GPU의 성능이 좋아진다면 차세대 그래픽으로 쓰일 가능성도 있다. 특히 전쟁 장르에서 복셀은 폴리곤의 단점을 거의 다 커버할 수 있다. 폭발이나 탄에 지형이 패이거나 부분적으로 파손되는 것은 폴리곤으로는 무조건 스크립트를 적용해 재생하는 방식으로밖에 구현할 수 없지만 복셀은 일부 부위가 부서져 나가는 것을 완벽히 구현할 수 있다. 또한 적 탄을 맞아 전차의 장갑재나 부품이 물리적으로 파손되어 방호력이 떨어지고 기능 장애가 생긴다거나, 항공기의 경우에는 유체역학까지 접목하면 피탄되어 파손된 부위 때문에 생기는 항력과 비행 특성 변화, 기능 이상까지도 모두 구현할 수 있다. 다만 이렇게 뛰어난 잠재력을 가지고 있지만 전차나 항공기의 파손까지 실시간으로 구현하려면 유한요소해석을 실시간으로 돌리는 정도의 막대한 연산력이 필요할 것이다.
7. 복셀 엔진을 사용하는 게임
- 에이스 오브 스페이드
- 노바로직의 초기 게임들
- 시드 마이어의 알파 센타우리 - 복셀 엔진 덕분에 자세한 지형 고저차와 유닛을 조합해서 만드는 시스템을 구현할 수 있었다.
- 구 에이스 오브 스페이드
- 커맨드 앤 컨커 타이베리안 선, 레드얼럿 2 - 2D RTS에서 복셀을 쓴 몇 안되는 경우다. 덕분에 유닛이 충격에 의해 기울어지는 등 자연스럽고 자유로운 움직임을 구현할 수 있었다. 물론 동시에 당시 컴퓨터 사양으로는 유닛이 조금만 많아져도 매우 버벅였던 것은 단점.
- 복셀 모드 둠 - 초창기에는 아이템과 주변 사물만 구현되지만, 오랜 개발 기간 끝에 2022년 둠 1을 완벽지원하는 복셀 둠이 릴리즈되었다. 1.0 릴리즈 시점이지만, 둠 2 관련 캐릭터 및 사물은 슈퍼 샷건 등의 소수 오브젝트를 제외하곤 미지원.
- 빌드 엔진으로 제작가능한 FPS 게임들 - 부분적인 복셀 그래픽을 지원했지만, 정작 이 엔진으로 개발된 상업용 FPS 게임중 복셀기능을 채용한건 말기의 아래 두 작품 뿐이었다. 아이템만 복셀 모드로 나오고, 아이템 그래픽을 복셀로 하느냐 평면도트로 하느냐의 토글기능이 존재했다. 듀크 뉴켐 3D의 경우 원래 복셀은 전혀 안쓰인 게임이지만 아이템뿐만 아니라 몬스터까지도 복셀로 변환해주는 MOD가 존재. 블러드도 캐릭터들까지 복셀로 바꿔주는 MOD가 있다. 2023년 8월 1일(한국시각) 둠 2도 복셀모드로 나왔다.
- 니드 포 스피드1/1SE
- GBA판 니드 포 스피드 포르쉐 언리시드, 언더그라운드 1/2, 모스트원티드, 카본
- 큐브월드 - 그래픽 기반부터가 복셀을 지향한다. 무기 커스터마이즈도 복셀기반의 그래픽을 활용한 예시.
- 3D 도트 게임 히어로즈 - 큐브월드와 비슷한 PS게임
파라노티컬 액티비티- 디게라티에서 만든 로그라이크 FPS게임...이지만 실상은 유니티 3D 엔진으로 폴리곤 모델 작성만 복셀인척 한 게임이다.- 캐슬스토리
- TROVE
- Teardown - 게임의 모든 것이 복셀로 이루어져 있으며 따로 마련된 스토리 기반 컨텐츠가 있지만, 스팀 창작마당이 활성화되어 있어 이곳에서 풀리는 다양한 장비와 탈것, 건물들을 마음껏 가져와 때려부수고 노는 게임이 되었다. 자체 인게임 에디터도 지원하므로 자신이 복셀 에디터 프로그램으로 만든 것을 불러와 만져볼 수도 있다.
- From The Depths
- 플래닛 코스터 - 지형편집 부분에서 복셀을 이용하여 현실적이고 독창적인 지형 생성이 가능하다.
- 하데스(게임) - 무려 국산 FPS 게임이다.
- 7 Days to Die
- 8-Bit Armies, 8-Bit Hordes, 8-Bit Invaders!
- 소프트웨어 렌더링 기반 모든 게임.
[1] 이 때가 1998~9년인 것을 감안한다면 더 심각한 수준이었을 것이다. 당장 지금의 하이엔드 급으로 이 게임을 해도 유닛을 잔뜩 뽑아놓다 보면 튕기기가 다반사이다. 그러니 램이 100MB도 안 되던 시절에는 얼마나 게임이 느릿느릿 했을지 더 이상의 자세한 설명은 생략한다. 더군다나 인구 수 200의 제한이 있었던 스타크래프트에 비해, 커맨드 앤 컨커 시리즈 시리즈에서는 자금만 있다면 무한대로 유닛을 생산할 수 있었다.[2] 그런데 재미있는 건, 노바로직의 코만치 같은 경우, 폴리곤 기반의 엑스윙보다 우월한 프레임을 보여주는 게 보통이었다.[3] 크라이시스에서 복셀 오브젝트가 쓰였고 기어즈 오브 워에서의 블러드 복셀 효과 등이 있다.[4] 어디까지나 복셀만을 썼을 때보다는 더 낫다는 것이다. 만약 이렇게 두 가지를 섞는다면 폴리곤만을 사용하는 게임보다는 하드웨어 부하가 더 많이 들어갈 것이다.[5] 시뮬레이터들은 보통 입자 개념으로 연산을 때리기 때문에 복셀의 특성과 비슷하다고 볼 수 있다.[6] 루시드라이트 등의 RT 시뮬레이터나 ANSYS, Flow 등의 유체 시뮬레이터 등.