나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2024-03-13 23:10:13

복셀

파일:external/goto2020.cdn1.cafe24.com/04.gif
복셀 엔진 에디터로 만든 Nod어택 바이크.

1. 개요2. 특징3. 장점4. 게임에서5. 치명적인 단점6. 미래7. 복셀 엔진을 사용하는 게임

[clearfix]

1. 개요

복셀(Voxel)은 2차원적인 픽셀(도트)을 3차원의 형태로 구현한 것이라 할 수 있다. Voxel은 Volume + Pixel의 합성어로 '부피를 가진 픽셀'이라 할 수 있다. 작은 정육면체 또는 부피요소로 나눠질 수 있는 오브젝트를 렌더링하는 기술인데 보통은 하나의 공간을 빈틈없이 채울 수 있는 정육면체를 사용한다. 복셀그래픽에서 모든 복셀의 모양과 크기는 동일하며 하나의 복셀은 하나 이상의 특성값(파라미터)을 가질 수 있다. 특성값을 전혀 갖지 않는 복셀그래픽도 가능은 하지만 그리 유용하지는 않고(정의하는 복셀 공간 전체가 똑같은 복셀로 가득찬 덩어리 하나만 존재할 수 있는데 유용할리가) 보통 색상값 정도의 특성값 정보는 가지고 있다.

물론 내구도, 타 복셀과의 접착력, 무게 등 색상값 이상의 정보도 담고자 한다면 얼마든지 담을 수 있는데, 이 점을 이용하여 복셀마다의 특성과 텍스처 정보를 다르게 하여 그래픽을 구현한 게임이 바로 마인크래프트이다. 구체적으로는 복셀의 블럭 ID값과 추가 상태 정보(내구도 등)를 저장하고 있으며 마인크래프트의 렌더링 엔진은 복셀의 블럭 ID값에 따라 텍스처 라이브러리에서 정육면체 텍스처를 불러와 복셀 표면을 렌더링한다. 단, 블럭에만 한정하고 캐릭터나 엔티티(액자, 풀잎, 꽃 같은 것)는 폴리곤 그래픽이다.

산업적으로는 엑스선, 음극선, MRI 등에서 복셀 그래픽을 사용한다.

2. 특징

폴리곤 그래픽이 세 개의 정점 정보(버텍스)로 삼각형을 만들고 그 표면에 텍스처를 입히는 것에 비해서, 복셀은 모양이 동일한 정육면체를 모아 물체를 표현하기 때문에 연산이 많아진다. 그래서 물체가 많아지거나 공간이 커지면 폴리곤 그래픽에 비해 급격히 속도가 느려진다는 단점이 있다. 특히 큰 물체를 세밀하게 표현해야 할 때 복셀 그래픽은 정직하게 블럭을 많이 쌓아서 물체를 표현해야 하지만, 폴리곤 그래픽의 경우 입체감 있는 고해상도 텍스처만 준비했다면 그냥 큰 삼각형 몇 개만으로 큰 물체를 그려낼 수 있다.

반면에 폴리곤이 일반적으로 표면의 표현에 치중하기 때문에 내부는 그냥 빈 공간인 반면, 복셀은 공간 전체에 대한 특성값을 기록할 수 있기 때문에 입체적인 물체의 단면 표시 및 부분 재구성이 가능하다. MRI 등 의료계에서 사용되는 것이 바로 이 때문이다.

3. 장점

파일:attachment/comanche-maximum-overkill.png 파일:attachment/aces-of-the-pacific.png
왼쪽이 노바로직코만치, 오른쪽이 다이나믹스태평양의 에이스들. 같은 1992년에 나온 게임이다.
태평양의 에이스들은 당시에는 최상급의 그래픽으로 평가받았다는 걸 염두에 두자.
일단 초창기의 허접하기 짝이 없는 목각인형에 합판소문스러운 폴리곤 기술과 비교하자면, 복셀 쪽은 상당히 리얼하게 보인다. 초창기의 폴리곤은 약간만 돌려도 심심하면 깨지는 데다가 모델링도 큼직한 상자 몇 개를 대강 붙여 놓은 것같이 조악했고 텍스처도 꽤나 저질이라 상자 위에 그림 그려놓은 수준으로 밖에 보이지 않았다. 반면 복셀은 비교적 깨짐이 적고 그 자체로 상당히 양감이 있어서 텍스처보다 그럴듯해 보였다.

또한 픽셀처럼 입자 하나하나인 셈이나 마찬가지이기 때문에, 건물이 부서지는 이펙트나 지반이 무너지는 효과 등에 스크립트를 세세히 적용하지 않아도 되며, 물이나 모래의 모습도 제한적이면서 나름대로 디테일한 구현이 가능하다. 입자의 특성값에 무게, 점도, 마찰력 등의 물리 파라미터만 적용해 주면 나머지는 물리 엔진이 알아서 계산해낼 수 있기 때문이다. 물론 알아서 계산한다는거지 그 계산 결과가 디자이너의 의도대로인지는 별개의 이야기다. 예를 들어 건물을 폭발물로 공격하면 파괴되도록 디자인했는데, 건물이 파괴되는 모양이 콘크리트가 부서지는 게 아닌 무슨 모래성 허물어지는 것처럼 보일 수도 있다.

여담으로 복셀 그래픽 기반으로 지형을 렌더링한 경우 벽뚫기 버그가 존재할 수 없다는 장점도 있다. 폴리곤 그래픽은 최적화를 위해 한쪽 면에만 텍스쳐를 입혀놓고 다른 면은 투명하게 만든다. 일반적인 게임에서 땅 밑으로 들어간다면 텍스쳐를 전부 투시해서 볼 수 있게 되는 것이 이 때문이다. 하지만 복셀 기반 렌더링을 했다면 표면의 복셀 한두층 정도는 뚫고 들어간다고 하더라도 마인크래프트에서 땅을 파듯이 그 내부 층의 복셀을 볼 수 있을 뿐이다.

4. 게임에서

파일:external/goto2020.cdn1.cafe24.com/01.jpg 파일:external/goto2020.cdn1.cafe24.com/02.jpg
이 기술은 몇몇 게임들에서 구현되어 사용되었다. 대표적으로 웨스트우드에서 제작한 커맨드 앤 컨커 타이베리안 선이다. 또한 3D 카드 없이 소프트웨어적으로 3차원 지형이나 물체를 표현할 수 있었기 때문에, 복셀 스페이스라고 부르는 이것은 노바로직의 헬기 시뮬레이션 코만치와 FPS인 델타 포스에서 처음 도입해 큰 호응을 얻었다.

시드 마이어의 알파 센타우리는 지형과 유닛을 복셀로 구현하였다. 덕분에 유닛은 부품을 조합한 모듈식 설계로 만들 수 있었고, 지형은 64m 단위로 고저차를 구현하였다. 시드 마이어의 문명 시리즈에서 지형의 높낮이가 산악/바다 타일이 아니라 실제 높낮이로 계산되는 작품은 알파 센타우리가 유일하다.

타이베리안 선에서도 쓰인 기술이었다. 나름대로 복셀을 잘 이용해 지형에 따라 유닛의 기울기가 변하는 그래픽을 뽑아 냈지만, 그 때문에 유닛이 많아지게 되면 게임이 버벅거리게 되었다.[1][2]

5. 치명적인 단점

그러나 이 복셀 기술에는 치명적인 단점이 존재하는데, 해상도가 올라갈수록 연산량이 기하급수적으로 늘어난다는 것이다. 기본적으로 폴리곤의 복잡도(내지 디테일)가 면적에 비례하는 반면(즉 제곱) 복셀은 부피에 비례(즉 세제곱)한다. 단순하게 생각해보면 복셀 1개 = 폴리곤 1개나 다름없는데 저해상도에서는 복셀 1개에 해당하는 부피가 가로 세로 두배, 총 네 배의 고해상도에서는 8배의 부피가 된다. 이렇게 늘어나는 연산량은 GPU 등의 보조로 해결할 수 있는 수준이 아니었고, 폴리곤 기반으로 3D 기술이 발달하면서 질 좋은 텍스처와 다양한 렌더링 기술을 통해 훌륭한 그래픽을 뽑아낼 수 있게 되면서 복셀 기술의 장점이 의미를 잃게 되었다.

또한 폴리곤 방식에 비해 애니메이션을 구현하기도 난해하다. 폴리곤 방식은 어떤 트리거를 유저가 수행했다면 정해진 스크립트대로 애니메이션이 작동하게만 하면 되지만, 복셀은 개개 입자의 상호작용을 전부 계산해야 하기 때문이다. 물론 이러면 매우 사실적인 표현은 가능하겠으나 그 정도의 실시간 고해상도 연산을 수행하는 것은 고성능 워크스테이션으로도 어림도 없다. 이러한 것 때문에 게임에서는 주로 지형 구현에 촛점을 둔 복셀 엔진을 개발하고 있다.

6. 미래

파일:external/www.thinkboxsoftware.com/krakatoa15_fumefx_vr_dens4-2_fire.png
복셀을 이용한 연기 입자 효과
복셀 기술은 시대를 많이 앞서 나간 기술이었다. 그렇기 때문에 초창기의 폴리곤에 비해 약간 더 좋았기 때문에 반짝했으나 점차적으로 폴리곤 그래픽이 발전하기 시작하며 점차 사장되기 시작하였다. 그러나 아직까지도 폴리곤이 따라갈 수 없는 복셀만의 장점이 있기 때문에 언리얼 엔진이나 크라이엔진을 이용한 게임에서는 복셀 효과를 일부 혼합하여 사용하기도 한다.[3]

90년대에 비하면 CPU와 GPU의 성능이 무시무시하게 올라갔고 CUDA처럼 GPU를 병렬연산에 동원하는 기술도 도입되면서, 몇몇 게임사에서는 아예 인물 등의 그래픽은 폴리곤으로, 지형이나 스크립트 등은 복셀로 구현하는 것까지 시도하고 있다. 그렇기 때문에, 더욱더 현실감 있으면서도 하드웨어에 많이 부담을 주지 않는[4] 수준의 게임 제작도 가능할 것이다. 미래가 돼서 CPU의 수준이 더 좋아지게 되거나 그래픽카드 가속 지원 등이 가능해진다면 복셀 엔진을 중심으로 하는 게임도 많아질 것이다.

물체의 변형이 포함되는 물리 시뮬레이션에도 내부적으로는 복셀 기반인 경우가 많다.

2014년 기준으로 엔비디아에서 Flameworks라는 화염 렌더링용 복셀 프레임워크를 개발하였다.[5] 불 관련 물리 시뮬레이션과 그래픽을 동시에 구현하는데, 광학적인 특성과 물리적 특성이 전문 시뮬레이션 소프트웨어들[6]과 상등한 결과값을 나타내면서도 실시간으로 처리할 수 있게 되었다.

복셀을 응용한 실시간 글로벌 일루미네이션인 VXGI 기법도 있다. 일반적인 오프라인 렌더러에서 쓰는 Path tracing은 실시간으로 처리하기에 연산량이 지나치게 많으므로 실시간으로 3차원 공간을 복셀 Octree로 재구성한 뒤에 이 복셀 맵 내부에서 Path tracing과 Occlusion 계산을 하면 연산량을 절약함과 동시에 근사한 결과를 얻을 수 있다.

높은 해상도의 풀 복셀 그래픽을 우습게 구현할 정도로 GPU의 성능이 좋아진다면 차세대 그래픽으로 쓰일 가능성도 있다. 특히 전쟁 장르에서 복셀은 폴리곤의 단점을 거의 다 커버할 수 있다. 폭발이나 탄에 지형이 패이거나 부분적으로 파손되는 것은 폴리곤으로는 무조건 스크립트를 적용해 재생하는 방식으로밖에 구현할 수 없지만 복셀은 일부 부위가 부서져 나가는 것을 완벽히 구현할 수 있다. 또한 적 탄을 맞아 전차의 장갑재나 부품이 물리적으로 파손되어 방호력이 떨어지고 기능 장애가 생긴다거나, 항공기의 경우에는 유체역학까지 접목하면 피탄되어 파손된 부위 때문에 생기는 항력과 비행 특성 변화, 기능 이상까지도 모두 구현할 수 있다. 다만 이렇게 뛰어난 잠재력을 가지고 있지만 전차나 항공기의 파손까지 실시간으로 구현하려면 유한요소해석을 실시간으로 돌리는 정도의 막대한 연산력이 필요할 것이다.

7. 복셀 엔진을 사용하는 게임


[1] 이 때가 1998~9년인 것을 감안한다면 더 심각한 수준이었을 것이다. 당장 지금의 하이엔드 급으로 이 게임을 해도 유닛을 잔뜩 뽑아놓다 보면 튕기기가 다반사이다. 그러니 램이 100MB도 안 되던 시절에는 얼마나 게임이 느릿느릿 했을지 더 이상의 자세한 설명은 생략한다. 더군다나 인구 수 200의 제한이 있었던 스타크래프트에 비해, 커맨드 앤 컨커 시리즈 시리즈에서는 자금만 있다면 무한대로 유닛을 생산할 수 있었다.[2] 그런데 재미있는 건, 노바로직의 코만치 같은 경우, 폴리곤 기반의 엑스윙보다 우월한 프레임을 보여주는 게 보통이었다.[3] 크라이시스에서 복셀 오브젝트가 쓰였고 기어즈 오브 워에서의 블러드 복셀 효과 등이 있다.[4] 어디까지나 복셀만을 썼을 때보다는 더 낫다는 것이다. 만약 이렇게 두 가지를 섞는다면 폴리곤만을 사용하는 게임보다는 하드웨어 부하가 더 많이 들어갈 것이다.[5] 시뮬레이터들은 보통 입자 개념으로 연산을 때리기 때문에 복셀의 특성과 비슷하다고 볼 수 있다.[6] 루시드라이트 등의 RT 시뮬레이터나 ANSYS, Flow 등의 유체 시뮬레이터 등.