zoukankan      html  css  js  c++  java
  • vtk工作流

    要理解VTK的工作原理,首先应明确几个类型:

    1.vtkSource(数据源)   这个就好比一个剧本里面的角色,让演员知道要演的是什么人物。

            数据源有:vtkConeSource,vtkSphereSource,vtkOutlineSource...等等。

            它们都继承与vtkPolyDataAlgorithm类,该类用于提供不同的类型的数据源

    2.vtkMapper(映射器)   它就像是一个剧本,应该如何塑造角色的装扮

          映射器有:vtkDataSetMapper,vtkMultiGroupPolyDataMapper,vtkPolyDataMapper。

          它们都继承于vtkMapper类。所有的数据对象都要通过映射器Mapper映射到vtkActor中。

    3.vtkActor(演员) 有了剧本,有了角色,得找个真人来演出这个剧本了。

            该类继承于vtkProp3D,有4个子类:vtkFollow,vtkLODActor,vtkMesaActor,vtkOpenGLActor.

    4.vtkRenderer(渲染器)   这个过程就相当于对演员进行化妆并布置场景;

           该类继承于vtkViewport,有2个子类:vtkMesaRender,vtkOpenGLRender.

           该类另外一个作用是设置窗口vtkRenderWindow的背景.

    5.vtkRenderWindow(窗口)    这个就相当于个舞台 ,把准备好的演员放进去,准备表演了;

           该类继承于vtkWindow,有2个子类:vtkMesaWindow,vtkOpenGLWindow.

    6.vtkRenderWindowInteractor(窗口交互器)    这个像摄像机,用于捕捉演员的动作,然后传给导演看

           该类的继承关系在vtkRenderWindowInteractor文章中已给出。

    7.vtkInteractorObserver(观察者)        有点导演的意思,导演通过观看录像后,做出一系列调整

           该类的继承关系在vtkRenderWindowInteractor文章中已给出

    Example:

    vtkConeSource * s=vtkConeSource::New();                //棱锥数据源,用于构造描述棱锥的点、线、面
    vtkPolyDataMapper * m=vtkPolyDataMapper::New();   //映射器,可以根据点、线、面构造图形
    m->SetInput(s->GetOutput());                                      //完成点、线、面的传递
    vtkActor * a=vtkActor::New();                                        //创建一个物体(演员)
    a->SetMapper(m);                                                         //设置描述物体的图形
    vtkRenderer * r=vtkRenderer::New();                            //绘制器,能够绘制物体
    r->AddActor(a);                                                             //把物体交给绘制器绘制
    vtkRenderWindow * w=vtkRenderWindow::New();         //绘制窗,提供绘制的平面
    w->AddRenderer(r);                                                     //设置绘制器工作的平面
    for (int i=0;i<65535;i++)                                                  //循环绘制
       w->Render();

    vtkRenderWindowInteractor *iren=vtkRenderWindowInteractor::New();//交互器
    iren->SetRenderWindow(w);

    vtkInteractorStyleTrackballCamera *style = vtkInteractorStyleTrackballCamera::New();//观察者
    iren->SetInteractorStyle(style);

    vtkMyCallback *callback = vtkMyCallback::New();                             //对观察到的事件响应
    iren->AddObserver(vtkCommand::InteractionEvent, callback);
    iren->Initialize();
    iren->Start();

  • 相关阅读:
    怎么防止重复提交
    JSP三大指令是什么?
    python中字符串的编码和解码
    什么是 JavaConfig?
    Spring Boot 有哪些优点?
    如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?
    Mybatis 动态 sql 是做什么的?都有哪些动态 sql?能简述一下动态 sql 的执行原理不?
    如果你也用过 struts2.简单介绍下 springMVC 和 struts2 的区别有哪些?
    学习笔记——命令模式Command
    学习笔记——中介者模式Mediator
  • 原文地址:https://www.cnblogs.com/burellow/p/3641757.html
Copyright © 2011-2022 走看看