VTK基础概念-圆柱体绘制

#include "vtkSmartPointer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderer.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkInteractorStyleTrackballCamera.h"
#include "vtkCylinderSource.h"
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#include "vtkProperty.h"
#include "vtkBMPReader.h"

int main(){

	vtkSmartPointer<vtkBMPReader>bmpReader = vtkSmartPointer<vtkBMPReader>::New();
	bmpReader->SetFileName("C:\\Users\\li\\Desktop\\doling.bmp");

	vtkSmartPointer<vtkTexture>texture = vtkSmartPointer<vtkTexture>::New();
	texture->SetInputConnection(bmpReader->GetOutputPort());
	texture->InterpolateOn();

	//vtkCylinderSource派生自vtkPolyDataAlgorithm,生成一个中心在渲染场景原点的柱体.
	vtkSmartPointer<vtkCylinderSource> cylinder = vtkSmartPointer<vtkCylinderSource>::New();
	
	cylinder->SetHeight(3.0);
	cylinder->SetRadius(1.0);
	cylinder->SetResolution(10);

	//vtkPolyDataMappe,渲染多边形几何数据(vtkPolyData),派生自类vtkMapper,将输入的数据转换为几何图元(点、线、多边形)进行渲染。
	//GetOutputPort()VTK可视化管线的输入数据接口,对应的可视化管线输出数据的接口

	vtkSmartPointer<vtkPolyDataMapper> cylinderMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
	cylinderMapper->SetInputConnection(cylinder->GetOutputPort());

	//  vtkActor派生自vtkProp类,渲染场景中数据的可视化表达是通过vtkProp的子类负责的。
	//三维空间中渲染对象最常用的vtkProp子类是vtkActor(表达场景中的几何数据)和vtkVolume(表达场景中的体数据);
	//二维空间中的数据则是用vtkActor2D表达

	vtkSmartPointer<vtkActor>cylinderActor = vtkSmartPointer<vtkActor>::New();
	cylinderActor->SetMapper(cylinderMapper);
	cylinderActor->SetTexture(texture);
	//cylinderActor->GetProperty()->SetDiffuseColor(0.5, 0.8, 0.6);

	// vtkRenderer负责管理场景的渲染过程,vtkRenderer可以渲染在窗口中不同的矩形区域中(即视口),或者覆盖整个窗口区域。

	vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
	renderer->AddActor(cylinderActor);   //添加vtkProp类型的对象到渲染场景中。
	renderer->SetBackground(0.1,0.2,0.4);   //0.0~1.0,(0.0,0.0, 0.0)为黑色,(1.0,1.0, 1.0)为白色

	//vtkRenderWindow将操作系统与VTK渲染引擎连接到一起。不同平台下的vtkRenderWindow子类负责本地计算机系统中窗口创建和渲染过程管理。

	vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();
	renWin->AddRenderer(renderer);
	renWin->SetSize(300,300);

	vtkSmartPointer<vtkRenderWindowInteractor> iren = vtkSmartPointer<vtkRenderWindowInteractor>::New();
	iren->SetRenderWindow(renWin);

	// vtkInteractorStyleTrackballCamera交互器样式的一种,该样式下,用户是通过控制相机对物体作旋转、放大、缩小等操作。
	vtkSmartPointer<vtkInteractorStyleTrackballCamera> style = vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
	iren->SetInteractorStyle(style);  //定义交互器样式,默认的交互样式为vtkInteractorStyleSwitch

	iren->Initialize(); //为窗口事件做准备
	iren->Start();   //开始进入时间响应循环

	return 0;



	//vtkRenderWindow 渲染窗口~剧院;vtkRenderer 渲染场景~舞台;Actor 角色; vtkRenderWindowInteractor 互动;vtkInteractorStyle 互动方式


}
运行结果:

注:此为学习笔记,资源来源于http://blog.csdn.net/www_doling_net/article/details/8536376

猜你喜欢

转载自blog.csdn.net/kateyabc/article/details/78309517