在使用vtk编写一些算法时候,我们需要可视化程序的执行过程,或者能够在图形上看到当前的执行情况,比如,在连接多边形构造矿体的时候,需要检查算法连接的顶点是否正确,这个时候就需要显示点的ID。另外还可能需要显示cell的ID,下面的例子就给出在vtk中如何显示点的ID和cell的ID.
这里使用vtkConeSource来演示,程序的最终目的显示Cone的顶点id 和每个面的id。
vtkConeSource cone = new vtkConeSource();
cone.SetHeight(3.0);
cone.SetRadius(1.0);
cone.SetResolution(10);
vtkPolyDataMapper coneMapper = new vtkPolyDataMapper();
coneMapper.SetInputConnection(cone.GetOutputPort());
vtkActor coneActor = new vtkActor();
coneActor.SetMapper(coneMapper);
renderer.AddActor(coneActor);
然后,使用vtkIdFilter来给vtkConeSource生成field data并使用vtkLabeledDataMapper来显示:
vtkIdFilter ids = new vtkIdFilter();
ids.SetInputConnection(cone.GetOutputPort());
ids.PointIdsOn();
ids.CellIdsOn();
ids.FieldDataOn();
vtkLabeledDataMapper ldm = new vtkLabeledDataMapper();
ldm.SetInputConnection(ids.GetOutputPort());
ldm.SetLabelModeToLabelFieldData();
vtkActor2D pointLabels = new vtkActor2D();
pointLabels.SetMapper(ldm);
renderer.AddActor(pointLabels);
要显示cell的id需要使用vtkCellCenters:
vtkCellCenters cc = new vtkCellCenters();
cc.SetInputConnection(ids.GetOutputPort());
vtkLabeledDataMapper cellMapper = new vtkLabeledDataMapper();
cellMapper.SetInputConnection(cc.GetOutputPort());
cellMapper.SetLabelModeToLabelFieldData();
cellMapper.GetLabelTextProperty().SetColor(0, 1, 0);
vtkActor2D cellLabels = new vtkActor2D();
cellLabels.SetMapper(cellMapper);
renderer.AddActor(cellLabels);
需要注意的是,vtkIdFilter 和 vtkCellCenters的输入, 其中vtkCellCenters的输入是vtkIdFilter 的输出。
最终的执行效果如下:
vtkLabeledDataMapper 的一些参数设置方法,比如
SetLabelFormat("%g");可以设置标签的格式
GetLabelTextProperty().SetFontFamilyToCourier();设置字体
GetLabelTextProperty().SetFontSize(10);可以设置大小
SetLabelModeToLabelScalars()方法表示使用vtkPolyData的scalar值作为标签
vtkIdFilter中的几个方法:
CellIdsOn()以cells的id来生成标签数据
FieldDataOn()以vtkPolyData的属性值来生成标签数据
PointIdsOn()这个就是用点的ID来作为标签
使用vtkLabeledDataMapper 显示少了的标签是可以的,但是如果标签的数量达到几百以上了,速度就变得很慢,严重影响操作体验,不管怎么优化,改变都很小。但是在网上查资料,说在QT下面使用vtkLabeledDataMapper显示几千个标签速度很快,貌似是两个平台下面的渲染机制不同,不知道vtk什么时候解决这个问题。
- 大小: 29.4 KB
分享到:
相关推荐
而`vtkRenderWindow`是实际的显示窗口,它包含一个或多个`Renderer`。通过`RenderWindowInteractor`,你可以与可视化结果进行交互,如旋转、平移和缩放。 6. **运行和交互**:最后,调用`RenderWindow`的`Render`...
VTK-9.1.0-cp38-cp38-win_amd64.zip 是针对Python 3.8版本且适用于64位Windows系统的VTK库的压缩包。这个版本的VTK提供了对现代计算机图形硬件的充分利用,支持复杂的三维渲染和交互操作。 "whl" 文件格式是Python...
在VTK-5.2.0-win32这个压缩包中,主要的文件是`vtk-5.2.0-win32.exe`,这是一个可执行文件,用于在Windows系统上安装VTK库。这个安装程序将包含各种库文件、头文件、示例代码、文档等,以便开发者可以在自己的项目中...
VTK-8.2.0-cp36-cp36m-win_amd64.zip 是一个专为基于Windows x64平台设计的Python 3.6版本的VTK库压缩包。它包含了Python接口的VTK库,允许开发者在Python环境中进行高效的数据可视化。 此压缩包中的“VTK-8.2.0-cp...
VTK-8.2.0-cp38-cp38-win_amd64
vtk-9.3.0-cp310-cp310-win_amd64.whl
VTK-8.1.0是安装mayavi-4.5.0+vtk81-cp36-cp36m-win_amd64.whl的基础模块,为后期numpy模块中图像的显示做铺垫。
VTK-9.0.1-cp36-cp36m-win_amd64.whl
vtk-9.3.1-cp310-cp310-win_amd64.whl
vtk-9.3.1-cp312-cp312-win_amd64.whl
The Visualization Toolkit (VTK) is an open-source, freely available software system for 3D computer graphics, image processing and visualization. VTK consists of a C++ class library and several ...
vtk-9.1.0-cp36-cp36m-win_amd64
适用平台:windows x64文件格式:whl安装方式:切换到whl路径,执行pip install whl文件名
VTK-7.1.1-cp36-cp36m-win32
**Python库vtk-9.0.3-cp39-cp39-macosx_11_0_arm64.whl详解** `vtk-9.0.3-cp39-cp39-macosx_11_0_arm64.whl`是一个针对Python开发的库,特别适用于在MacOS系统上运行,特别是搭载了Apple M1芯片的新型号(arm64架构...
VTK-9.1.0-cp37-cp37m-win_amd64.whl
VTK-5.0.1-control-1.1.zip 是一个特定版本的VTK控制模块的压缩包,适用于开发三维软件。在VTK中,"control"通常指的是用户界面和交互部分,它允许用户与三维可视化场景进行交互。 VTK的核心功能包括数据处理、几何...
VTK-9.1.0-cp310-cp310-win_amd64.whl
VTK-7.1.1-cp35-cp35m-win_amd64.whl
VTK-9.0.1-cp36-cp36m-win_amd64