VTK教程2--------最簡單的VTK程序分析

talk is cheap, show me the code。
下面是官方example中的第一個,也是最簡單一個,我把英文註釋刪除了,按照自己的理解加了中文註釋。

  vtkConeSource *cone = vtkConeSource::New();
  cone->SetHeight( 3.0 );
  cone->SetRadius( 1.0 );
  cone->SetResolution( 10 );   //準備需要渲染的數據

  vtkPolyDataMapper *coneMapper = vtkPolyDataMapper::New();  //創建映射器
  coneMapper->SetInputConnection( cone->GetOutputPort() );   //將準備的數據連接到映射器

  vtkActor *coneActor = vtkActor::New();
  coneActor->SetMapper( coneMapper );  //創建一個演員來代表數據

  vtkRenderer *ren1= vtkRenderer::New();
  ren1->AddActor( coneActor );  //創建一個渲染器添加演員
  ren1->SetBackground( 0.1, 0.2, 0.4 );  //設置背景色

  // 創建渲染窗口來顯示數據
  vtkRenderWindow *renWin = vtkRenderWindow::New();
  renWin->AddRenderer( ren1 );
  renWin->SetSize( 300, 300 );  //設置渲染窗口的大小

  // 接下來將actor逐漸旋轉,每次旋轉1°
  int i;
  for (i = 0; i < 360; ++i)
  {
    renWin->Render();
    // 每次旋轉1°
    ren1->GetActiveCamera()->Azimuth( 1 );
  }

按照pipeline的思維導圖,連接如下:
在這裏插入圖片描述
假如說,我們需要在窗口中渲染兩個cone怎麼辦呢?
首先,肯定需要兩個vtkConeSource,也需要兩個vtkActor,同樣也需要兩個vtkPolyDataMapper,那麼來做一個實驗,在example上新增上述三個類,注意爲了避免兩個圖形重合,需要進行些許修改,代碼如下:

  vtkConeSource *cone = vtkConeSource::New();
  cone->SetHeight( 3.0 );
  cone->SetRadius( 1.0 );
  cone->SetResolution( 10 );
  cone->SetCenter(-2.0,-0.0,-0.0);  //修改了圖形的原點


  vtkConeSource *cone1 = vtkConeSource::New();
  cone1->SetHeight(3.0);
  cone1->SetRadius(1.0);
  cone1->SetResolution(10);
  cone1->SetCenter(0.0,0.0,0.0);  //圖形原點

同樣的,再新增以下代碼:

  vtkPolyDataMapper *coneMapper1 = vtkPolyDataMapper::New();
  coneMapper1->SetInputConnection(cone1->GetOutputPort());

  vtkActor *coneActor1 = vtkActor::New();
  coneActor1->SetMapper(coneMapper1);

  ren1->AddActor(coneActor1);

最終得到的結果如下圖所示:
在這裏插入圖片描述
好了,理解了cone的渲染就知道了vtk的編程模型了。
如果沒有完全理解,可以再把cone開頭的幾個example再消化一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章