❶ vtk在java2中的使用
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 _ in;C:ProgramFilesJavaj re _ in;C:j sdk _ jrein;C:vtk in ) 拷貝C:vtk in*java dll到系統目錄 ) 編譯 運行 為了方便起見 拷貝C:vtk ExamplesTutorialStep Java目錄下的Cone java到d盤 當前目錄為d盤D:>javac classpath c:vtk invtk jar Cone javaD:>java classpath ;c:vtk invtk 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 programpublic 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 proces 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// beeen 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 imagerenWin Render();// rotate the active camera by one degreeren GetActiveCamera() Azimuth( );}} } lishixin/Article/program/Java/JSP/201311/19769