한국어
Qt
 

VTK(Visualization Toolkit)는 과학 데이터를 조작하고 표시하기 위해 널리 사용되는 오픈소스 소프트웨어 시각화 툴킷이다. 3D 렌더링을 위한 도구 및 상호 작용을 위한 3D위젯과 광범위한 2D 플로팅 기능이 함께 제공된다. Qt 에도 이미 훌륭한 시각화 및 차트 모듈이 있지만 조금 더 활용 폭이 넓은 시각화 툴킷의 대안으로 사용할 수 있다.

Linux, Windows 및 Mac을 포함한 거의 모든 곳에서 실행되고 BSD 스타일 라이선스로 사용할 수 있어서 공개 및 비공개 소스 응용 프로그램 모두에서 어떤 용도로든 자유롭게 사용할 수 있다.

Qt 응용프로그램에서 VTK를 사용할 수 있게하는 것은 QVTKRenderWidget 클래스에 의해 가능하다. 이 타입은 QVTKOpenGLNativeWidget 의 별칭으로 이 클래스는 vtkGenericOpenGLRenderWindow 와 함께 작동하도록 QOpenGLWidget 을 확장한 것이다.
QVTKOpenGLNativeWidget 이 QOpenGLWidget 을 사용하여 OpenGL 컨텍스트를 생성하기 때문에 QSurfaceFormat(QOpenGLWidget::setFormat 또는 QSurfaceFormat::setDefaultFormat)을 사용하면 적절한 창과 컨텍스트를 생성할 수 있다.

QVTKOpenGLNativeWidget의 일반적인 사용법은 다음과 같다.

// before initializing QApplication, set the default surface format.
QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());
 
vtkNew<vtkGenericOpenGLRenderWindow> window;
QPointer<QVTKOpenGLNativeWidget> widget = new QVTKOpenGLNativeWidget(...);
widget->SetRenderWindow(window.Get());
 
// If using any of the standard view e.g. vtkContextView, then
// you can do the following.
vtkNew<vtkContextView> view;
view->SetRenderWindow(window.Get());
 
// You can continue to use `window` as a regular vtkRenderWindow
// including adding renderers, actors etc.

vtkGenericOpenGLRenderWindow는 플랫폼 독립 렌더 창으로 자신의 OpenGL 컨텍스트와 드로어블을 사용하여 렌더 창 구현을 제공한다.

classvtkGenericOpenGLRenderWindow_inherit_graph.png

QVTKOpenGLWindow는 Qt 응용 프로그램에서 VTK 렌더링 결과를 표시하는 메커니즘 중 하나다. QVTKOpenGLWindow는 QOpenGLWindow를 확장하여 vtkGenericOpenGLRenderWindow의 렌더링 결과를 표시한다.
QVTKOpenGLWindow는 QOpenGLWindow를 기반으로 하여 최상위 창에서 렌더링하기 위한 것이다.

classQVTKOpenGLWindow_coll_graph.png

Qt의 다양한 위젯을 통해 사용자 인터페이스를 구성하여 프로그램에 포괄적인 사용자 인터랙션을 추가할 수 있다.

SurfacePlotQt.png

 

예제 프로젝트: SurfacePlotQt.zip

VTK Git 저장소에서 소스코드를 가져올 수 있고 VTK 에서 제공하는 Qt 및 C++ 로 작성된 많은 예제는 유용하게 활용할 수 있다.

Qt 응용프로그램을 개발시 사용되는 클래스는 doxygen 문서 를 참고하자.

번호 제목 글쓴이 날짜 조회 수
공지 Qt프로그래밍(QtQuick) Beginner를 위한 글 읽는 순서 운영자 2019.01.05 110115
60 가상키보드(Qt Virtual Keyboard)를 사용하는 방법 [32] file makersweb 2019.05.03 235133
59 Windows에서 Qt D-Bus를 사용하여 프로세스간 통신(IPC) file makersweb 2019.05.02 7357
58 QML과 QtQuick 모듈 개념과 기본 타입들 makersweb 2019.04.26 15523
57 QML 전역 객체 (Global Object) file makersweb 2019.04.10 2705
56 tslib의 ts_calibrate를 응용해서 Qt로 터치보정기능 구현 file makersweb 2019.04.06 3128
55 GPU가 없는 장치에서 Qt Quick을 사용 makersweb 2019.04.02 4285
54 QTextCodec클래스를 사용하여 유니코드와 EUC-KR 변환 makersweb 2019.03.25 5966
53 qInstallMessageHandler를 이용한 디버그 메세지 출력 제어하기 makersweb 2019.02.25 3642
52 Qt5기반 독립 프로세스(out-of-process)로 동작하는 가상키보드(virtual keyboard) file makersweb 2019.02.24 5122
51 Qml 기본 컴포넌트 강좌 (4) - 모델 리스팅(Listing) file 운영자 2019.02.23 7421
50 Qt Bluetooth를 이용한 시리얼(Serial) 통신 file makersweb 2019.02.17 6306
49 Qml 기본 컴포넌트 강좌 (3) - 배치(positioning) 컴포넌트 file 운영자 2019.02.10 7735
48 QString 문자열 다루기 예제 운영자 2019.01.26 47050
47 Qt SQL을 이용한 가벼운 데이터베이스 다루기 [1] file 운영자 2019.01.23 9518
46 구글 클라우드 Speech-To-Text API를 Qt기반(C++, Qml)테스트 [7] file makersweb 2019.01.20 5178
45 QNetworkAccessManager를 통해 HTTP POST 하는 예제 makersweb 2019.01.17 7126
44 Qt응용프로그램 실행 시 콘솔창(터미널)같이 띄우기 file makersweb 2019.01.16 7222
43 안드로이드 가상장치 사용 file makersweb 2019.01.13 3356
42 Qml 기본 컴포넌트 강좌 (2) [2] file makersweb 2019.01.05 10964
41 Qml 기본 컴포넌트 강좌 (1) file makersweb 2019.01.03 15244