`
aswang
  • 浏览: 846307 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

vtk学习笔记 --- 编译vtk库和java库

 
阅读更多

环境:

操作系统:windows xp

编译环境:visual studio 2008  + jdk 1.6

 

这里选择的vtk版本为:vtk 5.8.0 ,下载地址:

安装文件:http://www.vtk.org/files/release/5.8/vtk-5.8.0-win32-x86.exe  

源码:http://www.vtk.org/files/release/5.8/vtk-5.8.0.zip

还需要另外一个项目配置工具:cmake 2.8.6 ,下载地址:http://www.cmake.org/files/v2.8/cmake-2.8.6-win32-x86.exe

 

注意事项:操作系统最好选择32位的,之前因为本机操作系统为win7 64位,便尝试着编译了一次,结果失败。也可以在xp虚拟机里面编译。只不过速度稍微慢点。

 

1、安装vtk 和 cmake,上面选择的是可安装的vtk版本,这样我们直接将其安装在某个目录,如E:\VTK-5.8.0,为了编码出错,安装目录最好不要包含空格。然后在该目录下新建源码目录,vtk,以及用于后续编译的工作目录build,然后将上面的vtk源码解压到vtk目录。 接着安装cmake,这个没有限制,默认即可 。

 

2、配置项目,打开cmake工具,截图如下:


 

在上面的source code地址选择vtk源码目录,在下面的build 地址选择build目录,然后点击下面的Configure按钮,

在接下来的窗口,会让你选择编译工具, 选择机器上安装的vs2008 即可。完成以后,cmake开始配置项目,这个过程

可能会需要几分钟时间,如果配置一切正确,那最后会显示Confiure done,否则提示出错。同时在Configure过程结束以后,

在中间的窗口中会显示很多配置项,有的后面会显示复选框,有的后面已经有值了。如果出错,一般都是因为某些配置不正确,

在这里需要选中BUILD SHARED LIBS和VTK_WRAP_JAVA这两个复选框。如果你希望用mfc来开发界面,还需要选择一项GUISUPPORT,重新配置以后,需要再次点击Configure,这个时候,cmake会检查,如果选择了GUISUPPORT,那么后面还需要选择一项VTK_USER_MFC,然后再次Configure,知道没错了,最后点击Generate来生成vs项目。生成的项目在build目录。

 

3,编译vtk c++库以及java库,找到build目录下的VTK.sln文件,这个是对应的vs工程主文件,打开即可打开整个工程,里面包含的项目很多,大概100多个。然后选择重新生成解决方案,剩下的时间就是等待编译完成,这个过程看个人机器配置,估计需要30分钟以上。如果一切ok的话,那么在build目录下会生成一个bin目录,里面会包含一个Debug或者Release目录,这个取决于你编译的是什么版本,在这个目录里面会包含生成的库文件,以及对应的jar包。我们只需要里面的dll文件和jar包。

 

4,编译测试demo。这个可以直接使用源码里面example目录中的例子来测试,在example目录中有个tutorial目录,里面包含几个项目,找到Step1项目,把java目录中的java文件复制出来即可。

 

//
// This example creates a polygonal model of a cone, and then renders it to
// the screen. It will rotate the cone 360 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( 3.0 );
    cone.SetRadius( 1.0 );
    cone.SetResolution( 10 );
  
    // 
    // 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.SetInputConnection( cone.GetOutputPort() );

    // 
    // 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 ren1 = new vtkRenderer();
    ren1.AddActor( coneActor );
    ren1.SetBackground( 0.1, 0.2, 0.4 );

    //
    // 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 300 pixels by 300
    //
    vtkRenderWindow renWin = new vtkRenderWindow();
    renWin.AddRenderer( ren1 );
    renWin.SetSize( 300, 300 );
    
    //
    // now we loop over 360 degreeees and render the cone each time
    //
    int i;
    for (i = 0; i < 360; ++i)
      {
      // render the image
      renWin.Render();
      // rotate the active camera by one degree
      ren1.GetActiveCamera().Azimuth( 1 );
      }
  
    } 
}

 注意,需要将vtk.jar文件加入eclipse的build path,同时把上面拷贝出来的dll文件拷贝到java 安装目录下的bin目录下,即和java.exe文件在同一目录。接下来就是执行程序测试结果了,如果不出问题,那么可以得到以下效果:


 

至此,编译的java库已经能够正常工作了,后面可以在此基础上开发vtk程序了。

 

 

 

 

 

 

 

 

 

 

  • 大小: 42.7 KB
  • 大小: 12.4 KB
1
0
分享到:
评论
1 楼 loveseed1989 2017-02-15  
您好,我用您的方法运行Cone.java,会给我报java.lang.UnsatisfiedLinkError: no vtkCommonJava in java.library.path这个错误,您知道什么原因吗?

相关推荐

    初学者的VTK学习笔记

    VTK,全称为 Visualization Toolkit,是一款强大的开源可视化库,尤其在3D图形渲染和科学数据可视化方面具有广泛的应用。...希望这篇“初学者的VTK学习笔记”能对你有所帮助,祝你在VTK的学习旅程上取得成功!

    VTK学习笔记及安装指南

    ### VTK学习笔记及安装指南 #### 一、VTK简介与重要性 VTK (Visualization Toolkit) 是一套开源的三维图形处理库,主要用于科学计算可视化、图像处理以及计算机图形学领域。它提供了丰富的API接口,支持多种编程...

    VTK学习笔记

    ### VTK学习笔记知识点概述 #### 一、VTK简介与背景 VTK(Visualization Toolkit)是一种开源的软件系统,用于三维图形处理和可视化技术。它由Kitware开发,并广泛应用于科学计算、医学图像处理等领域。VTK的核心...

    vtk学习过程中写的笔记 对于初学者有用

    vtk学习笔记 vtk是The Visualization Toolkit的简称,是一个开源的、跨平台的科学可视化工具包。vtk是一个基于对象的 API,提供了大量的示例和文档,帮助用户快速上手。vtk的主要应用场景包括科学计算、数据分析、...

    VTK编程简介.rar_ VTK_vtk_vtk 安装

    VTK,全称为 Visualization Toolkit,是一个开源的三维可视化软件库,广泛用于科学计算和数据分析的可视化。VTK 提供了一套完整的数据模型、图形绘制、用户交互等工具,支持多种平台,包括 Windows、Linux 和 macOS ...

    VTK 重磅教程 从简单到复杂

    - **安装与配置**:根据所提供的部分内容,详细介绍如何在Windows环境下使用Visual C++进行VTK的安装和配置过程,包括必要的软件包下载、编译配置及环境变量设置等步骤。 #### 二、VTK数据类型 VTK提供了丰富的数据...

    cmake实战 ------学习cmake的绝佳查询手册

    cmake的实践手册《cmake实践》(CmakePractice)的作者Cjacker,在学习cmake的过程中编写了此文档,希望它能成为一个面向实用的学习笔记和教程。 文档中还提出了cmake使用上的疑问,例如,为什么在多数使用变量的...

    cmake笔记资料

    3. **安装编译结果**:最后一步是将编译好的可执行文件或库安装到指定的位置。 #### 三、cmake的关键特性 **cmake的主要特点**包括但不限于以下几点: 1. **开源许可**:cmake采用类BSD许可发布,这意味着它可以...

    cmake practice.pdf

    根据文档提供的信息,官方文档可能存在错误和不足,所以文档作者鼓励大家在学习过程中编写实用的笔记,并希望他人能够提出疑问和进行补充。在官方文档中,IF语句应当使用变量名而非变量值,而在大多数情况下引用变量...

    CMake Practice.pdf

    因此,本教程《cmake实践》是由一位KDE开发者撰写,通过边学习边编写的成果,既是一个学习笔记也是一个教程(Tutorial)。该文档面向实际应用,旨在帮助用户掌握CMake的使用,并鼓励所有读者对文档进行修改和补充,...

    CMake Pratice-CMake实践修订版

    这样的格式使得读者能够在学习过程中做笔记,并且对内容进行个性化的解读和补充。文档中也提到了CMake官方文档的不足之处,例如官方文档中的一些错误信息,以及对某些具体命令使用方式的疑问。 在CMake的使用中,有...

    CMake实践 中文翻译版

    文档包含了作者在学习过程中的一些学习笔记和心得体会,以及在实际应用中遇到的问题和解决方案。作者也明确表示了,希望文档能够开放给所有人阅读、修改和补充,以共同提升对cmake的掌握和运用。

    CMake——入门到精通.pdf

    这表明,该文件不仅提供了基础概念的讲解,还包含了作者的个人实践经验和学习笔记,为初学者提供了宝贵的参考。 标签“cmake”简单直接,但表明了文件的主要内容是围绕CMake这一主题展开的。 在文档的具体内容中,...

    cmake实践.pdf

    该书是作者在学习CMake的过程中编写的学习笔记和教程,旨在为其他用户提供实用的参考。尽管官方文档不多且存在错误,但是通过实际经验的积累和CMake社区的帮助,作者逐渐深入理解了CMake的使用方法,并在文档中分享...

Global site tag (gtag.js) - Google Analytics