You are here

VTK란?

안녕하세요. Tcl/Tk도 초보이지만 VTK에 대해서도 초보입니다.
필요에 의해 vtk를 접하게 되었고, 그래서 vtk에 대해서도 아주 얇은 지식밖에 없습니다^^;
단지 제가 공부한 내용들을 조금씩 정리해서 올리는 수준입니다.
시간도 오래 걸릴 것 같고 내용도 방대해서 어디부터 손을 대야 할 지 막막하지만,
일단 시작해 놓으면 끝을 볼 것 같기는 하네요.

자! 그럼 달려 볼까요~


VTK란?

VTK는 객체지향 기법으로 설계, 구현된 3차원 그래픽 C++ 클래스 라이브러리이다. TCL/TK, JAVA, Phython과 같은 스크립트 언어에 대한 인터페이스를 함께 제공한다. VTK는 시각화 알고리즘, implicit 모델링과 같은 고급 모델링 테크닉을 지원하며 교육용, 의학용, Visible human project에도 응용되고 있다. VTK에서는 visualization(또는 data visualization)과 computer graphics라는 용어의 의미를 구분하고 있다. 컴퓨터로 그림이나 애니메이션 등의 이미지를 생성해 내는 과정을 렌더링(rendering 또는 rendering process)이라 하는 데, 컴퓨터 그래픽은 바로 이 렌더링에 대한 연구 분야를 의미하는 것으로 정의하고 있다. 반면에 visualization은 어떤 사용자의 데이터를 점, 선, 면 등의 graphical primitive로 변환하는 과정으로 정의한다. 이 때 graphical primitive는 렌더링을 통해 이미지로 변환할 수 있는 그래픽 데이터를 의미한다. 즉, 일반 데이터를 이미지로 표현하기 위한 그래픽 데이터로 바꾸는 과정이 visualization이고, 이 데이터를 다시 이미지로 변환하는 과정을 렌더링이라고 정의한다는 것이다. 이렇게 구분하는 이유는 VTK의 객체 간의 연관성을 파악하기 위해서이다. 아래의 그림은 VTK에서 사용되는 주요 객체간의 연관관계를 나타낸 것이다.



vtkSource, vtkFilter, vtkMapper가 visualization pipeline을 구성한다. Visualization pipeline은 VTK에서 visualization을 위해 도입한 구조를 의미한다. vtkMapper, vtkPropery, vtkActor, vtkLight, vtkCamera, vtkRenderer, vtkRenderWindow는 렌더링 과정에서 사용되는 그래픽 객체이다. 즉, visualization pipeline은 일반 데이터를 그래픽 데이터로 변환하는 과정이고, graphics object는 이렇게 생성된 그래픽 데이터를 렌더링하는 것과 연관된 객체를 의미한다. Source 객체는 외부 파일에서 데이터를 읽어 들이거나 스스로 생성하는 기능을 한다. Filter는 source의 입력을 받아 어떤 연산을 하고 그 연산 결과를 mapper로 출력하는 기능을 하는 객체를 의미한다. Mapper는 actor 객체의 geometric representation을 정의하는 객체를 의미한다. 구체적으로 설명하면, source에서 정의된 자료를 표현할 graphics primitives로 맵핑하는 인터페이스를 지정하는 역할을 하는 것이다. Actor는 화면에 그려지는 개개의 객체를 나타내는 말이다. Actor는 자신의 geometry와 property를 가지게 되는데 이중 geometry를 표현하는 것이 mapper 이다. Actor의 색상, 투명도, 빛과 관련된 속성 등과 같은 property는 vtkProperty라는 객체를 이용해 표현되게 된다. Renderer는 광원, 카메라, actor를 포함하는 하나의 렌더링 프로세스를 관리하는 객체이다. Renderer는 하나이상의 actor를 가져야 하며, 광원과 카메라는 default 값이 설정되어 있다. Renderwindow는 Windows의 윈도우와 동일한 의미를 가진다. vtkRenderWindow는 자신에게 연결된 하나이상의 renderer를 화면의 특정위치에 나타나도록 관리하는 기능을 한다.

[참고문헌] Journal of the Research Institute for Computer and Information Communication Vol.15, No. 2, 83-90, Oct 2007


프로그래밍을 위한 준비

아래의 글을 참고하여 프로그래밍을 위한 준비를 한다.
http://tcltk.co.kr/drupal/index.php?q=node/1188

첨부 파일파일 크기
Image icon pipe.gif4.55 KB
포럼: