分類: 程式設計

VTK 視覺化工具函式庫(Visualization Toolkit)

VTK 視覺化工具函式庫(The Visualization ToolKit)是一個開放原始碼的物件導向軟體系統,由 Kitware 公司贊助開發,主要用於 3D 電腦繪圖、影像處理與視覺化運算等,VTK 內部是以 C++ 語言撰寫而成的,提供了各種語言的函式庫,例如:C++、Python、Tcl/Tk 與 Java。

此函式庫包含各式各樣的視覺化演算法,例如:scalar、 vector、 tensor、 texture 與 volumetric methods,另外也支援各種 modeling,例如:implicit modeling、 polygon reduction、 mesh smoothing、 cutting、 contouring 與 Delaunay triangulation 等,除此之外還有數百種 2D 與 3D 的影像演算法。


VTK 在醫學影像處理的領域中被廣泛的使用,以下是使用 VTK 函式庫撰寫而成的軟體:

以下是使用 VTK所繪製出來的圖形,由這些圖形大致上就可以看出來其主要的功能為何:

下面是一個簡單範例的 C++ 程式碼,畫出一個簡單的圓錐體:

#include <vtkConeSource.h>
#include <vtkPolyData.h>
#include <vtkSmartPointer.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>

int main(int, char *[]) {
  //Create a cone
  vtkSmartPointer<vtkConeSource> coneSource =
    vtkSmartPointer<vtkConeSource>::New();
  coneSource->Update();

  //Create a mapper and actor
  vtkSmartPointer<vtkPolyDataMapper> mapper =
    vtkSmartPointer<vtkPolyDataMapper>::New();
  mapper->SetInputConnection(coneSource->GetOutputPort());

  vtkSmartPointer<vtkActor> actor =
    vtkSmartPointer<vtkActor>::New();
  actor->SetMapper(mapper);

  //Create a renderer, render window, and interactor
  vtkSmartPointer<vtkRenderer> renderer =
    vtkSmartPointer<vtkRenderer>::New();
  vtkSmartPointer<vtkRenderWindow> renderWindow =
    vtkSmartPointer<vtkRenderWindow>::New();
  renderWindow->AddRenderer(renderer);
  vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
    vtkSmartPointer<vtkRenderWindowInteractor>::New();
  renderWindowInteractor->SetRenderWindow(renderWindow);

  //Add the actors to the scene
  renderer->AddActor(actor);
  renderer->SetBackground(.3, .2, .1); // Background color dark red

  //Render and interact
  renderWindow->Render();
  renderWindowInteractor->Start();

  return EXIT_SUCCESS;
}

其繪出的圖形為

VTK 官方的 Wiki 網站上可以找到更多範例。

G. T. Wang

個人使用 Linux 經驗長達十餘年,樂於分享各種自由軟體技術與實作文章。

Share
Published by
G. T. Wang
標籤: ParaView

Recent Posts

光陽 KYMCO GP 125 機車接電發動、更換電瓶記錄

本篇記錄我的光陽 KYMCO ...

2 年 ago

[開箱] YubiKey 5C NFC 實體金鑰

本篇是 YubiKey 5C ...

3 年 ago

[DIY] 自製竹火把

本篇記錄我拿竹子加上過期的苦茶...

3 年 ago