VTK(Visualization ToolKit)是一個開放源碼
自由獲取的軟件系統
全世界的數以千計的研究人員和開發人員用它來進行
D計算機圖形
圖像處理
可視化
VTK包含一個c++類庫
眾多的翻譯接口層
包括Tcl/Tk
Java
Python
Visualization Toolkit 是一個用於可視化應用程序構造與運行的支撐環境
它是在三維函數庫OpenGL 的基礎上采用面向對象的設計方法發展起來的
它將我們在可視化開發過程中會經常遇到的細節屏蔽起來
並將一些常用的算法封裝起來
比如Visualization Toolkit 將我們在表面重建中比較常見的Marching Cubes 算法封裝起來
以類的形式給我們以支持
這樣我們在對三維規則點陣數據進行表面重建時就不必再重復編寫MarchingCubes 算法的代碼
而直接使用Visualization Toolkit 中已經提供的vtkMarchingCubes 類
Visualization Toolkit 是給從事可視化應用程序開發工作的研究人員提供直接的技術支持的一個強大的可視化開發工具
它以用戶使用的方便性和靈活性為主要原則
具有如下的特點
) 具有強大的三維圖形功能
Visualization Toolkit 既支持基於體素Voxel
basedrendering 的體繪制Volume Rendering又保留了傳統的面繪制
從而在極大的改善可視化效果的同時又可以充分利用現有的圖形庫和圖形硬件
) Visualization Toolkit 的體系結構使其具有非常好的流streaming 和高速緩存caching 的能力
在處理大量的數據時不必考慮內存資源的限制
) Visualization Toolkit 能夠更好的支持基於網絡的工具比如Java 和VRML 隨著Web 和Internet 技術的發展Visualization Toolkit 有著很好的發展前景
) 能夠支持多種著色如OpenGL 等
) Visualization Toolkit 具有設備無關性使其代碼具有良好的可移植性
) Visualization Toolkit 中定義了許多宏
這些宏極大的簡化了編程工作並且加強了一致的對象行為
) Visualization Toolkit 具有更豐富的數據類型
支持對多種數據類型進行處理
) 既可以工作於Windows 操作系統又可以工作於Unix 操作系統極大的方便了用戶
下面介紹一下VTK在JDK
_
下的使用方法
) 從vtk的網站()上下載最新的軟件包
版本是
然後把它安裝到C:\vtk
\目錄下
) 從Sun官方下載鏈接
版本
_
然後安裝到C:\j
sdk
_
上
) 設置環境變量
系統
>高級
>環境變量
>path
設置為C:\j
sdk
_
\bin;C:\ProgramFiles\Java\j
re
_
\bin;C:\j
sdk
_
\jre\bin;C:\vtk
\bin
) 拷貝C:\vtk
\bin\*java
dll到系統目錄
) 編譯
運行
為了方便起見
拷貝C:\vtk
\Examples\Tutorial\Step
\Java目錄下的Cone
java到d盤
當前目錄為d盤
D:\>javac
classpath c:\vtk
\bin\vtk
jar Cone
java
D:\>java
classpath
;c:\vtk
\bin\vtk
jar Cone
源碼如下
//
// This example creates a polygonal model of a cone
and then renders it to
// the screen
It will rotate the cone
degrees and then exit
The basic
// setup of source
> mapper
> actor
> renderer
> renderwindow is
// typical of most VTK programs
//
// We import the vtk wrapped classes first
import vtk
*;
// Then we define our class
public class Cone {
// In the static contructor we load in the native code
// The libraries must be in your path to work
static {
System
loadLibrary(
vtkCommonJava
);
System
loadLibrary(
vtkFilteringJava
);
System
loadLibrary(
vtkIOJava
);
System
loadLibrary(
vtkImagingJava
);
System
loadLibrary(
vtkGraphicsJava
);
System
loadLibrary(
vtkRenderingJava
);
}
// now the main program
public static void main (String []args) {
//
// Next we create an instance of vtkConeSource and set some of its
// properties
The instance of vtkConeSource
cone
is part of a
// visualization pipeline (it is a source process object); it produces data
// (output type is vtkPolyData) which other filters may process
//
vtkConeSource cone = new vtkConeSource();
cone
SetHeight(
);
cone
SetRadius(
);
cone
SetResolution(
);
//
// In this example we terminate the pipeline with a mapper process object
// (Intermediate filters such as vtkShrinkPolyData could be inserted in
// between the source and the mapper
) We create an instance of
// vtkPolyDataMapper to map the polygonal data into graphics primitives
We
// connect the output of the cone souece to the input of this mapper
//
vtkPolyDataMapper coneMapper = new vtkPolyDataMapper();
coneMapper
SetInput( cone
GetOutput() );
//
// Create an actor to represent the cone
The actor orchestrates rendering
// of the mapper
s graphics primitives
An actor also refers to properties
// via a vtkProperty instance
and includes an internal transformation
// matrix
We set this actor
s mapper to be coneMapper which we created
// above
//
vtkActor coneActor = new vtkActor();
coneActor
SetMapper( coneMapper );
//
// Create the Renderer and assign actors to it
A renderer is like a
// viewport
It is part or all of a window on the screen and it is
// responsible for drawing the actors it has
We also set the background
// color here
//
vtkRenderer ren
= new vtkRenderer();
ren
AddActor( coneActor );
ren
SetBackground(
);
//
// Finally we create the render window which will show up on the screen
// We put our renderer into the render window using AddRenderer
We also
// set the size to be
pixels by
//
vtkRenderWindow renWin = new vtkRenderWindow();
renWin
AddRenderer( ren
);
renWin
SetSize(
);
//
// now we loop over
degreeees and render the cone each time
//
int i;
for (i =
; i <
; ++i)
{
// render the image
renWin
Render();
// rotate the active camera by one degree
ren
GetActiveCamera()
Azimuth(
);
}
}
}
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19769.html