볼륨 렌더링

과학적 시각화와 컴퓨터 그래픽스 분야에서, 볼륨 렌더링은 3차원 스칼라 장 형태의 이산 샘플링 데이터를 2차원 투시로 보여주는 기술을 말한다.

전형적인 3차원 데이터는 CT, MRI, 혹은 MicroCT 스캐너에서 요구되는 2차원 단면 이미지 그룹을 말한다. 일반적으로 이 이미지들은 (예를 들면, 1 밀리미터 당 한장) 정규화 된 패턴이 요구된다. 예를 들면 각각의 볼륨 요소를 가진 볼륨 그리드 혹은 단일 값으로 표현된 복셀처럼 표현되어야 한다.

3차원 데이터 셋을 2차원으로 투영해 렌더링하기 위해서는 일단 볼륨이 존재하는 공간에 카메라가 정의되어야 한다. 또한 모든 복셀에는 색상과 투명도가 정의되어야 한다. 일반적으로 RGBA (red, green, blue, alpha) 전환 함수로 정의되며 이는 모든 가능한 복셀에 rgba 값을 할당한다.

직접적 볼륨 렌더링 
직접적 볼륨 렌더링에는 모든 샘플에 대해서 투명도와 색상이 맵핑된 값이 필요하다. 이는 간단한 램프(ramp)함수, 혹은 엄밀한 선형 함수, 혹은 임의의 테이블을 통해 전환된다.  일단 RGBA (red, green, blue, alpha) 값으로 바뀌고 나면 조합된 색상 결과가 적절한 프레임 버퍼의 픽셀에 투영된다. 이 부분은 렌더링 기술로 이루어진다.

이 기술들의 조합 또한 사용 가능하다. 예를 들어 쉬어-왑(a shear warp) 렌더링은 오프-스크린 버퍼에 있는 정렬된 단면을 그리기 위해 텍스쳐링 관련 하드웨어를 사용하기도 한다.

최적화 기술 
최적화의 주된 목적은 가능한 많은 양의 볼륨을 건너뛰는(Skip) 것이다. 일반적인 의료 데이터 세트는 크기가 1GB에 달하기도 한다. 그런 데이터들을 1초에 30 프레임으로 렌더링하기 위해서는 굉장히 빠른 메모리 버스가 요구된다. 복셀을 건너뛴다는 것은 처리할 정보의 양이 적어진다는 것을 의미한다.

빈 공간 건너뛰기 
볼륨 렌더링 시스템은 일반적으로 볼륨이 보이지 않는 재질을 포함하는지 가려낼 수 있다. 이렇게 보이지 않는 부분들은 렌더링하지 않도록 설정할 수 있다.

광선(ray)을 단축시켜 조기 종료시키기 
이는 볼륨이 앞에서 뒤의 순으로 렌더링 될 때 사용하는 기술이다. 픽셀에 투사되는 광선이 충분히 조밀한 질감을 가지게 되었을 경우, 더 많은 샘플링은 픽셀에 크게 영향을 미치지 못하므로 무시될 수 있다.

팔진트리(Octree)와 이진 공간 분할법(BSP) 
팔진트리나 BSP 트리와 같은 계층적 자료구조를 사용하는 것은 볼륨 데이터를 압축하고 볼륨 광선 투사(ray casting) 과정의 속도 향상에 많은 도움을 준다

참조

더 읽어보기 
 Volume Rendering, Volume Rendering Basics Tutorial by Ph.D. Ömer Cengiz ÇELEBİ
 Barthold Lichtenbelt, Randy Crane, Shaz Naqvi, Introduction to Volume Rendering (Hewlett-Packard Professional Books), Hewlett-Packard Company 1998.
 Peng H., Ruan, Z, Long, F, Simpson, JH, Myers, EW: V3D enables real-time 3D visualization and quantitative analysis of large-scale biological image data sets. Nature Biotechnology, 2010 Volume Rendering of large high-dimensional image data.

외부 링크 
 VolumeRendererUnity - a private volume renderer in unity as a web application by Christian Petry
 http://on-demand.gputechconf.com/gtc/2014/video/S4747-vrender-pixar-gpu-accelerated-volume-renderer.mp4

3차원 렌더링