渲染一个圆柱对象;
1:创建一个圆柱对象;
2:创建一个多边数据映射器对象,用于几何数据映射到图像库,还可以设置相应的属性;
3:创建一个角色,设置角色的属性,与mapper相连接;
4:创建渲染器:角色放在渲染器中,设置渲染属性
5:创建渲染窗口:讲渲染器放在渲染窗口里面
6:创建窗口交互方式:在渲染窗口中捕捉消息响应
在console下实现的代码如下:
方法1:
#include "vtkActor.h"
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkImageViewer.h"
#include "vtkImageViewer2.h"
#include"vtkPNGReader.h"
#include "vtkImageActor.h"
#include "vtkInteractorStyleImage.h"
#include"vtkInteractorStyleTrackballCamera.h"
#include "vtkActor2D.h"
#include"vtkCylinderSource.h"
#include"vtkCamera.h"
#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2); // VTK was built with vtkRenderingOpenGL2
VTK_MODULE_INIT(vtkInteractionStyle);
//create a poly
int main()
{
//create a poly
vtkSmartPointer<vtkCylinderSource>cylinder = vtkSmartPointer<vtkCylinderSource>::New();
cylinder->SetHeight(3);
cylinder->SetRadius(1);
cylinder->SetResolution(8);//set the type of poly
//create a poly mapper
vtkSmartPointer<vtkPolyDataMapper>cylinderMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
cylinderMapper->SetInputConnection(cylinder->GetOutputPort());
//create a actor to connect mapper
vtkSmartPointer<vtkActor>cylinderActor = vtkSmartPointer<vtkActor>::New();
cylinderActor->SetMapper(cylinderMapper);
cylinderActor->GetProperty()->SetColor(1.0, 0.3882, 0.2784);
cylinderActor->RotateX(30.0);
cylinderActor->RotateY(-45.0);
//create a render to store actor and interact window to actor with event
vtkSmartPointer<vtkRenderer>ren1 = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow>reWin = vtkSmartPointer<vtkRenderWindow>::New();
vtkSmartPointer<vtkRenderWindowInteractor>iren = vtkSmartPointer<vtkRenderWindowInteractor>::New();
iren->SetRenderWindow(reWin);
//add actor to render and set the color of render
ren1->AddActor(cylinderActor);
ren1->SetBackground(0.1, 0.2, 0.3);
reWin->AddRenderer(ren1);
reWin->SetSize(300, 300);
//reset camera and move it
ren1->ResetCamera();
ren1->GetActiveCamera()->Zoom(1.5);
//start render
reWin->Render();
//start interaction
iren->Start();
return 0;
}
方法2:
#include "vtkActor.h"
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkImageViewer.h"
#include "vtkImageViewer2.h"
#include"vtkPNGReader.h"
#include "vtkImageActor.h"
#include "vtkInteractorStyleImage.h"
#include"vtkInteractorStyleTrackballCamera.h"
#include "vtkActor2D.h"
#include"vtkCylinderSource.h"
#include"vtkCamera.h"
#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2); // VTK was built with vtkRenderingOpenGL2
VTK_MODULE_INIT(vtkInteractionStyle);
//create a poly 2
int main()
{
vtkSmartPointer<vtkCylinderSource> cylinder =
vtkSmartPointer<vtkCylinderSource>::New();
cylinder->SetHeight(3.0);
cylinder->SetRadius(1.0);
cylinder->SetResolution(10);
vtkSmartPointer<vtkPolyDataMapper> cylinderMapper =
vtkSmartPointer<vtkPolyDataMapper>::New();
cylinderMapper->SetInputConnection(cylinder->GetOutputPort());
vtkSmartPointer<vtkActor> cylinderActor =
vtkSmartPointer<vtkActor>::New();
cylinderActor->SetMapper(cylinderMapper);
cylinderActor->GetProperty()->SetColor(1.0, 0.0, 0.0);
vtkSmartPointer<vtkRenderer> renderer =
vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(cylinderActor);
renderer->SetBackground(1.0, 1.0, 1.0);
vtkSmartPointer<vtkRenderWindow> renWin =
vtkSmartPointer<vtkRenderWindow>::New();
renWin->AddRenderer(renderer);
renWin->SetSize(640, 480);
renWin->Render();
renWin->SetWindowName("RenderCylinder");
vtkSmartPointer<vtkRenderWindowInteractor> iren =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
iren->SetRenderWindow(renWin);
vtkSmartPointer<vtkInteractorStyleTrackballCamera> style =
vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
iren->SetInteractorStyle(style);
iren->Initialize();
iren->Start();
return EXIT_SUCCESS;
}