学习VTK9笔记(二)

上一个代码学习了QVTKOpenGLNativeWidget 的基本操作。这次学习 https://blog.youkuaiyun.com/shenziheng1/article/details/54952845 这里的内容。

代码如下。

#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL)
VTK_MODULE_INIT(vtkInteractionStyle)
VTK_MODULE_INIT(vtkRenderingFreeType)
 
#include <vtkSmartPointer.h>
#include <vtkUnstructuredGridReader.h>
#include <vtkUnstructuredGrid.h>
#include <vtkLookupTable.h>
#include <vtkDataSetMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
 
#include <vtkScalarBarActor.h>
#include <vtkScalarBarWidget.h>
#include <vtkTextActor.h>
#include <vtkTextWidget.h>
#include <vtkTextProperty.h>
#include <vtkTextRepresentation.h>
#include <vtkAxesActor.h>
#include <vtkOrientationMarkerWidget.h>
#include <vtkCaptionWidget.h>
#include <vtkCaptionActor2D.h>///
#include <vtkCaptionRepresentation.h>
#include <vtkBalloonWidget.h>
#include <vtkBalloonRepresentation.h>
 
int main()
{
	vtkSmartPointer< vtkUnstructuredGridReader > reader = vtkSmartPointer< vtkUnstructuredGridReader >::New();
	reader->SetFileName("data.vtk");
	reader->Update();
 
	vtkSmartPointer< vtkLookupTable > lut = vtkSmartPointer< vtkLookupTable >::New();
	lut->Build();
 
	vtkSmartPointer< vtkDataSetMapper > mapper = vtkSmartPointer< vtkDataSetMapper >::New();
	mapper->SetInputData(reader->GetOutput());
	mapper->SetScalarRange(reader->GetOutput()->GetScalarRange());
	mapper->SetLookupTable(lut);
 
	vtkSmartPointer< vtkActor > actor = vtkSmartPointer< vtkActor >::New();
	actor->SetMapper(mapper);
 
	vtkSmartPointer< vtkRenderer > renderer = vtkSmartPointer< vtkRenderer >::New();
	renderer->AddActor(actor);
	renderer->SetBackground(1, 1, 1);
 
	vtkSmartPointer< vtkRenderWindow > renderWindow = vtkSmartPointer< vtkRenderWindow >::New();
	renderWindow->AddRenderer(renderer);
	renderWindow->Render();
	renderWindow->SetWindowName("AnnotationWidget");
	renderWindow->SetSize(400, 400);
 
	vtkSmartPointer< vtkRenderWindowInteractor > interactor = 
		vtkSmartPointer< vtkRenderWindowInteractor >::New();
	interactor->SetRenderWindow(renderWindow);
/********************************************************************************************/
	//标注类测试
	 vtkScalarBarWidget
	vtkSmartPointer< vtkScalarBarActor > scalarBarActor = vtkSmartPointer< vtkScalarBarActor >::New();
	scalarBarActor->SetOrientationToHorizontal();
	scalarBarActor->SetLookupTable(lut);
 
	vtkSmartPointer< vtkScalarBarWidget > scalarBarWidget = vtkSmartPointer< vtkScalarBarWidget >::New();
	scalarBarWidget->SetInteractor(interactor);
	scalarBarWidget->SetScalarBarActor(scalarBarActor);
	scalarBarWidget->On();
 
	vtkTextWidget
	vtkSmartPointer<vtkTextActor> textActor = vtkSmartPointer<vtkTextActor>::New();
	textActor->SetInput("VTK Widgets");
	textActor->GetTextProperty()->SetColor(1, 0, 0);
 
	vtkSmartPointer<vtkTextWidget> textWidget = vtkSmartPointer<vtkTextWidget>::New();
	textWidget->SetInteractor(interactor);
	textWidget->SetTextActor(textActor);
 
	vtkSmartPointer<vtkTextRepresentation>  textRepresentation =
		vtkSmartPointer<vtkTextRepresentation>::New();
	textRepresentation->GetPositionCoordinate()->SetValue(0.15, 0.15);
	textRepresentation->GetPosition2Coordinate()->SetValue(0.7, 0.2);
 
	textWidget->SetRepresentation(textRepresentation);
	textWidget->SelectableOff();
	textWidget->On();
 
	/ vtkOrientationMarkerWidget
	vtkSmartPointer<vtkAxesActor> iconActor = vtkSmartPointer<vtkAxesActor>::New();
	vtkSmartPointer<vtkOrientationMarkerWidget> orientationWidget =
		vtkSmartPointer<vtkOrientationMarkerWidget>::New();
	orientationWidget->SetOutlineColor(0.9300, 0.5700, 0.1300);
	orientationWidget->SetInteractor(interactor);
	orientationWidget->SetOrientationMarker(iconActor);
	orientationWidget->SetViewport(0.0, 0.0, 0.2, 0.2);
	orientationWidget->SetEnabled(1);
	orientationWidget->InteractiveOn();
 
	 vtkCaptionWidget
	//vtkSmartPointer<vtkCaptionWidget> captionWidget = 
	//	vtkSmartPointer<vtkCaptionWidget>::New();
	//captionWidget->SetInteractor(interactor);
 
	//vtkSmartPointer<vtkCaptionRepresentation> captionRepresentation =
	//	vtkSmartPointer<vtkCaptionRepresentation>::New();
	//captionRepresentation->GetCaptionActor2D()->SetCaption("Caption Widget");
	//captionRepresentation->GetCaptionActor2D()->GetTextActor()->GetTextProperty()->SetFontSize(20);
	//
	//double pos[3] = { .5, 0, 0 };
	//captionRepresentation->SetAnchorPosition(pos);
	//captionWidget->SetRepresentation(captionRepresentation);
	//captionWidget->On();
 
	/ vtkBalloonWidget
	vtkSmartPointer<vtkBalloonWidget> balloonWidget =
		vtkSmartPointer<vtkBalloonWidget>::New();
	balloonWidget->SetInteractor(interactor);
 
	vtkSmartPointer<vtkBalloonRepresentation> balloonRep =
		vtkSmartPointer<vtkBalloonRepresentation>::New();
	balloonRep->SetBalloonLayoutToImageRight();
 
	balloonWidget->SetRepresentation(balloonRep);
	balloonWidget->AddBalloon(actor, "This is a widget example", NULL);
	balloonWidget->On();
 
	renderWindow->Render();
	interactor->Initialize();
	interactor->Start();
	return 0;
}

遗憾的是我没有他说的文件,data.vtk, 出来的图像没有那么好。

从网上找了一个立方体的vtk文件。

# vtk DataFile Version 3.0
Right rectangular prisms grid
ASCII
DATASET UNSTRUCTURED_GRID

POINTS	8	double
0	0	0
50	0	0
0	50	0
50	50	0
0	0	50
50	0	50
0	50	50
50	50	50

CELLS 1 9
8	0	1	2	3	4	5	6	7	

CELL_TYPES 1
11

CELL_DATA 1
SCALARS density double 1
LOOKUP_TABLE table1
1

SCALARS resistivity double 1
LOOKUP_TABLE table2
2

SCALARS temperature double 1
LOOKUP_TABLE table3
3

SCALARS susceptibility double 1
LOOKUP_TABLE table4
4

SCALARS permittivity double 1
LOOKUP_TABLE table4
4

图像颜色,不懂的太多,只能后续再说。

对于三维坐标轴的显示以及颜色示例条的显示比较有用,后续可以利用了。

 

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值