VTK学习记录1-简单demo

图像模型:Rendering
可视化模型:生成几何模型
数据流,管道的执行流程:data source-》visualization-》graphics

 

 

整个舞台要由绘制器绘制,然后在renderwindow里展示,演员和观众之间的互动是用interactor交互器实现。
上图左边窗口放置了两个绘制器renderer。这里的三棱锥就是一个actor。
--------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------分割线-----------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------

先写一个简单的demo:

看的视频里的例子,不过视频里的是VTK5,我用的VTK8,个别接口比如改为setinput()。

 1 //tips:如果不是用cmake编译,而是用vs编译的,需要加这三行。
 2 #include "vtkAutoInit.h" 
 3 VTK_MODULE_INIT(vtkRenderingOpenGL2); // VTK was built with vtkRenderingOpenGL2
 4 VTK_MODULE_INIT(vtkInteractionStyle);
 5 
 6 #include <vtkConeSource.h>
 7 #include <vtkRenderer.h>
 8 #include <vtkPolyDataMapper.h>
 9 #include <vtkRenderWindow.h>
10 #include <vtkActor.h>
11 #include <vtkCamera.h>
12 int main()
13 {
14     vtkConeSource *cone = vtkConeSource::New();
15     cone->SetResolution(3);
16     cone->SetHeight(5);
17     cone->SetRadius(2);
18 
19     vtkPolyDataMapper *coneMapper = vtkPolyDataMapper::New();
20     coneMapper->SetInputData(cone->GetOutput());
21     coneMapper->SetInputConnection(cone->GetOutputPort());
22     
23     vtkActor *vtkactor = vtkActor::New();
24     vtkactor->SetMapper(coneMapper);
25 
26     vtkRenderer *render = vtkRenderer::New();
27     render->AddActor(vtkactor);
28     render->SetBackground(0.1, 0.2, 0.3);
29 
30     vtkRenderWindow *window = vtkRenderWindow::New();
31     window->SetSize(500, 500);
32     window->AddRenderer(render);
33 
34     for (int i = 0; i < 36000; i++)
35     {
36         window->Render();
37         render->GetActiveCamera()->Azimuth(1);
38     }
39 
40     cone->Delete();
41     coneMapper->Delete();
42     vtkactor->Delete();
43     render->Delete();
44     window->Delete();
45     return 0;
46 }
View Code

注:由于不是用的cmake编译的,用VS2017编译的,所以前三行代码必须要加,不然就会编译OK,运行出错。

  具体解释看这里。c++ - no override found for 'vtkPolyDataMapper' - Stack Overflow

posted @ 2021-07-14 20:43  QAQ_BIU  阅读(276)  评论(0)    收藏  举报