发布网友 发布时间:2023-06-11 22:14
共1个回答
热心网友 时间:2024-11-02 06:05
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 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 image renWin Render(); // rotate the active camera by one degree ren GetActiveCamera() Azimuth( ); } } } lishixin/Article/program/Java/JSP/201311/19769