分享
 
 
 

vtk在Java2中的使用

王朝java/jsp·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

VTK(Visualization ToolKit)是一个开放源码、自由获取的软件系统,全世界的数以千计的研究人员和开发人员用它来进行3D计算机图形,图像处理,可视化。VTK包含一个c++类库,众多的翻译接口层,包括Tcl/Tk,Java,Python。

Visualization Toolkit 是一个用于可视化应用程序构造与运行的支撑环境,它是在三维函数库OpenGL 的基础上采用面向对象的设计方法发展起来的,它将我们在可视化开发过程中会经常遇到的细节屏蔽起来,并将一些常用的算法封装起来。比如Visualization Toolkit 将我们在表面重建中比较常见的Marching Cubes 算法封装起来,以类的形式给我们以支持,这样我们在对三维规则点阵数据进行表面重建时就不必再重复编写MarchingCubes 算法的代码,而直接使用Visualization Toolkit 中已经提供的vtkMarchingCubes 类

Visualization Toolkit 是给从事可视化应用程序开发工作的研究人员提供直接的技术支持的一个强大的可视化开发工具,它以用户使用的方便性和灵活性为主要原则,具有如下的特点:

1) 具有强大的三维图形功能。Visualization Toolkit 既支持基于体素Voxel-basedrendering 的体绘制Volume Rendering又保留了传统的面绘制,从而在极大的改善可视化效果的同时又可以充分利用现有的图形库和图形硬件

2) Visualization Toolkit 的体系结构使其具有非常好的流streaming 和高速缓存caching 的能力,在处理大量的数据时不必考虑内存资源的限制

3) Visualization Toolkit 能够更好的支持基于网络的工具比如Java 和VRML 随着Web 和Internet 技术的发展Visualization Toolkit 有着很好的发展前景

4) 能够支持多种着色如OpenGL 等

5) Visualization Toolkit 具有设备无关性使其代码具有良好的可移植性

6) Visualization Toolkit 中定义了许多宏,这些宏极大的简化了编程工作并且加强了一致的对象行为

7) Visualization Toolkit 具有更丰富的数据类型,支持对多种数据类型进行处理

8) 既可以工作于Windows 操作系统又可以工作于Unix 操作系统极大的方便了用户

下面介绍一下VTK在JDK1.4.1_02下的使用方法,

1) 从vtk的网站(http://www.vtk.org/)上下载最新的软件包,版本是4.2。然后把它安装到C:\vtk42\目录下

2) 从Sun官方下载链接,版本1.4.1_02,然后安装到C:\j2sdk1.4.1_02上

3) 设置环境变量,系统->高级->环境变量->path,设置为C:\j2sdk1.4.1_02\bin;C:\ProgramFiles\Java\j2re1.4.1_02\bin;C:\j2sdk1.4.1_02\jre\bin;C:\vtk42\bin

4) 拷贝C:\vtk42\bin\*java.dll到系统目录

5) 编译,运行,为了方便起见,拷贝C:\vtk42\Examples\Tutorial\Step1\Java目录下的Cone.java到d盘,当前目录为d盘

D:\>javac -classpath c:\vtk42\bin\vtk.jar Cone.java

D:\>java -classpath .;c:\vtk42\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 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.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 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 );

}

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有