VTK颜色映射

关于vtk的颜色映射原理看这篇:https://blog.csdn.net/webzhuce/article/details/78077561 

 我这里的只是方便自己浏览代码的。

 

#include <vtkActor.h>
#include <vtkConeSource.h>
#include <vtkCellArray.h>
#include <vtkFloatArray.h>
#include <vtkPointData.h>
#include <vtkPoints.h>
#include <vtkPolyData.h>
#include <vtkPolyDataMapper.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkLookupTable.h>
#include <vtkInteractorStyleTrackballCamera.h>

#include <vtkAutoInit.h> 
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);

int main()
{
	// 立方体的顶点坐标,即几何结构
	static float x[8][3] = { {0,0,0}, {4,0,0}, {4,4,0}, {0,4,0},
	{0,0,4}, {4,0,4}, {4,4,4}, {0,4,4} };
	// 4个顶点构成一个拓扑单元,共六个面
	static vtkIdType y[6][4] = { {0,1,2,3}, {4,5,6,7}, {0,1,5,4},
	{1,2,6,5}, {2,3,7,6}, {3,0,4,7} };

	// 创建几何结构
	vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
	for (int i = 0; i < 8; i++)
		points->InsertPoint(i, x[i]);
	// 创建拓扑结构
	vtkSmartPointer<vtkCellArray> polys = vtkSmartPointer<vtkCellArray>::New();
	for (int i = 0; i < 6; i++)
		polys->InsertNextCell(4, y[i]);

	// 创建数据集属性的数据数组对象
	vtkSmartPointer<vtkFloatArray> scalars = vtkSmartPointer<vtkFloatArray>::New();
	for (int i = 0; i < 8; i++)
		scalars->InsertTuple1(i, i);
	// 设置多边形数据集的几何和拓扑结构,及属性数组
	vtkSmartPointer<vtkPolyData> cube = vtkSmartPointer<vtkPolyData>::New();
	cube->SetPoints(points);
	cube->SetPolys(polys);
	cube->GetPointData()->SetScalars(scalars);

	// 颜色映射表
	vtkSmartPointer<vtkLookupTable> colorTable = vtkSmartPointer<vtkLookupTable>::New();
	colorTable->SetNumberOfColors(6);
	colorTable->SetTableValue(0, 1.0, 0.0, 1.0, 1.0);
	colorTable->SetTableValue(1, 0.0, 1.0, 1.0, 1.0);
	colorTable->SetTableValue(2, 1.0, 1.0, 1.0, 1.0);
	colorTable->SetTableValue(3, 1.0, 0.0, 1.0, 1.0);
	colorTable->SetTableValue(4, 0.0, 0.0, 1.0, 1.0);
	colorTable->SetTableValue(5, 1.0, 1.0, 0.0, 1.0);
	colorTable->Build();

	// 数据映射
	vtkSmartPointer<vtkPolyDataMapper> cubeMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
	cubeMapper->SetInputData(cube);
	cubeMapper->SetScalarRange(0, 7);
	cubeMapper->SetLookupTable(colorTable);
	vtkActor* cubeActor = vtkActor::New();
	cubeActor->SetMapper(cubeMapper);

	vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
	renderer->AddActor(cubeActor);

	vtkRenderWindow* renWin = vtkRenderWindow::New();
	renWin->AddRenderer(renderer);

	vtkSmartPointer<vtkRenderWindowInteractor> iren = vtkSmartPointer<vtkRenderWindowInteractor>::New();
	iren->SetRenderWindow(renWin);
	vtkSmartPointer<vtkInteractorStyleTrackballCamera> style = vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
	iren->SetInteractorStyle(style);
	
	renWin->SetSize(600, 600);
	renWin->Render();
	iren->Start();
	
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值