VTK圆柱渲染

渲染一个圆柱对象;

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;
}



猜你喜欢

转载自blog.csdn.net/thecentry/article/details/79133651
今日推荐