zoukankan      html  css  js  c++  java
  • VTK 初识VTK

    1.VTK是什么?

    Visualization ToolKit
    3D计算机图形学、图象处理及可视化工具包
     
    VTK使用C++、面向对象技术开发;基于OpenGL,封装了OpenGL中的功能,屏蔽细节、便于交互、易于使用提供多种语言接口C++ 、Java 、Tcl、 Python 等;可在Windows 98/NT, SGI, Linux,  Sun, HP等系统编译运行;最重要的一点是:开源(Open Source)。
    典型应用一:体绘制
          
    典型应用二:面绘制
       
    典型应用三:矢量场的可视化

    2.VTK的使用流程

    VTK  流水线机制
    Visualization Model:generation geometry
    Graphics Model:rendering
    一般可视化流程可以详细表述为:
    绘图过程( Graphics Model ):目的是将图形原语在屏幕上显示。
    下面举一个典型的例子来理解Actor:
     
    用伪代码来表征这个过程为:
     1 Main() { 
     2     create a window; 
     3     create a renderer;  give the renderer
     4                                 to  the window;
     5     create procedural geometry; 
     6     create a mapper; give the geometry
     7                                 to the mapper; 
     8     create an actor; give the mapper to 
     9                                 the actor; 
    10  
    11     give the actor to the renderer; 
    12     window->render(); 
    13 }
    即:Windows->Render->Actor->Mapper->Geometry

    3.VTK的开发流程

    4.一个比较震撼的实例

     1 //得到图像文件
     2 vtkDICOMImageReader *Reader  = vtkDICOMReader::New();
     3 Reader ->SetDirectoryName("");
     4 Reader ->Update();
     5 //MC
     6 vtkMarchingCubes *m_MC = vtkMarchingCubes::New();
     7 m_MC ->SetInput(Reader->GetOutput());
     8 m_MC ->SetValue(0, 200); 
     9 //获得皮肤几何数据的属性
    10 vtkPolyDataMapper *Mapper= vtkPolyDataMapper::New(); 
    11 Mapper-SetInput(m_MC ->GetOutput());
    12 //显示
    13 vtkActor *m_actor = vtkActor::New();
    14 m_actor->SetMapper(m_isoMapper);
    15 //皮肤颜色
    16 m_actor->GetProperty()->SetDiffuseColor(0, .49, .25);
    17 //设置反射率
    18 m_actor->GetProperty()->SetSpecular(0.3); 
    19 //设置反射光强
    20 m_actor->GetProperty()->SetSpecularPower(20);
    21 //不透明度
    22 m_actor->GetProperty()->SetOpacity(1);
    23 //绘制
    24 vtkRenderer *m_renderer = vtkRenderer::New();
    25 m_renderer ->AddActor(m_actor);
    26 m_renderer ->SetBackground(0.2,0.5,0.3);
    27  
    28 vtkWin32OpenGLRenderWindow *m_renWin = vtkWin32OpenGLRenderWindow::New();
    29 m_renWin-> AddRenderer(m_renderer);
    30 m_renWin-> Render();
    31  
    32 vtkRenderWindowInteractor *m_iren = vtkRenderWindowInteractor::New(); 
    33 m_iren->SetRenderWindow(m_renWin);
     
    VTK主要工作流程符合流水线机制,永恒不变,但使用起来要灵活应用其中的一些类,不要单纯的拘泥于最基本的流水线,其实有些类充当一个角色,有些类可以连续承担多个角色。

    5.VTK在图像处理、虚拟现实、计算机图形学中的应用

    图像处理:
           
    虚拟现实:
          
    计算机图形:
           
  • 相关阅读:
    input宽度自适应
    七牛云上传 图片
    删除文件夹所有内容
    无法获取 div123 的内部内容,因为该内容不是文本。
    关于"无法删除数据库 'xxx',因为该数据库当前正在使用" 解决办法
    Asp.Net 获取FileUpload控件的文件路径、文件名、扩展名
    asp.net复制整个文件夹
    多行文本框内容转换空格换行
    花(唯一分解定理+排列组合+快速幂)
    Xn数列(矩阵乘法+快速幂+慢速乘法)
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14240789.html
Copyright © 2011-2022 走看看