3D 컴퓨터 그래픽스에서 복셀(voxel)은 3차원 공간의 규칙적인 격자 위에 표현되는 값입니다. 쉽게 말해 복셀은 2D에서 사용하는 픽셀(pixel)의 3차원 버전이라고 할 수 있습니다. 픽셀이 2D 이미지 안에서 위치와 하나의 색상 값을 가지는 정사각형이라면, 복셀은 3D 모델 안에서 3차원 격자상의 위치와 하나의 색상 값을 가지는 정육면체입니다.
이 글에서는 Matplotlib를 이용해 복셀을 시각화하는 방법을 단계별로 살펴보겠습니다.
구현 단계
- 그림(figure) 크기를 설정하고 서브플롯 간의 여백을 조정합니다.
- 0과 1 사이에서 무작위 데이터 포인트를 생성합니다.
- 새 그림을 생성하거나 기존 그림을 활성화합니다.
- projection='3d' 옵션으로 현재 축(axe)을 가져오거나, 없으면 새로 생성합니다.
- voxels() 메서드를 사용하여 채워진 복셀 집합을 그립니다.
- show() 메서드로 그림을 화면에 표시합니다.
예제 코드
import numpy as np import matplotlib.pyplot as plt # 그림 크기 설정 plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True # 0과 1 사이의 무작위 데이터 생성 data = np.random.choice([0, 1], size=(5, 7, 9), p=[0.65, 0.35]) # 새 그림 생성 fig = plt.figure() # 3D 투영 축 설정 ax = fig.gca(projection='3d') # 복셀 그리기 ax.voxels(data, edgecolor="k", facecolors='green') # 그래프 표시 plt.show()
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

코드 설명
np.random.choice는 0과 1 중에서 지정된 확률(p=[0.65, 0.35])에 따라 값을 무작위로 선택하여 (5, 7, 9) 크기의 3차원 배열을 만듭니다. 이 배열의 각 요소가 복셀이 채워질지 여부를 결정하며, 값이 1인 위치만 녹색 큐브로 렌더링됩니다. edgecolor="k" 옵션은 각 복셀의 가장자리를 검은색 선으로 표시해 입체감을 더해 줍니다.