渲染一个圆柱对象;
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:
扫描二维码关注公众号,回复:
879232 查看本文章
#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; }