vtkVectorText从字面上可以看出,这是vtk提供的向量文本对象,它将给定的文本字符串转换为vtkPolyData对象来显示。它除了能够支持常见的数字(0-9),字母(a-z,A-Z)之外,还支持其它的一些ASCII字符,即还包括字符编码在33-126之间的字符。而且它只支持\n这个控制字符。
下面给一个示例来了解如何使用vtkVectorText。
首先,创建500个随机顶点,以顶点的ID值作为vtkVectorText的输入字符串,同时,因为我们需要在顶点的旁边来显示标签,所以还需要使用vtkTransform以及vtkTransformFilter来对vtkVectorText的输出做平移转换。代码如下:
//点集合
vtkPoints points = new vtkPoints();
//定义cells
vtkCellArray verts = new vtkCellArray();
//保存标签多边形的
vtkAppendPolyData appendPolyData = new vtkAppendPolyData();
for(int i=0;i<500;i++){
double x = math.Random(1,3);
double y = math.Random(1,3);
double z = math.Random(1,3);
points.InsertNextPoint(x,y,z);
verts.InsertNextCell(1);
verts.InsertCellPoint(i);
vtkVectorText text = new vtkVectorText();
text.SetText(""+i);
//--进行缩放
vtkTransform t = new vtkTransform();
t.Translate(x, y, z);
t.Scale(.04, .04, .04);
vtkTransformFilter tf = new vtkTransformFilter();
tf.SetTransform(t);
tf.SetInput(text.GetOutput());
appendPolyData.AddInputConnection(tf.GetOutputPort());
}
//原始数据 显示点集合
vtkPolyData polyData = new vtkPolyData();
polyData.SetPoints(points);
polyData.SetVerts(verts);
vtkPolyDataMapper mapper = new vtkPolyDataMapper();
mapper.SetInput(polyData);
vtkActor vertsActor = new vtkActor();
vertsActor.SetMapper(mapper);
vertsActor.GetProperty().SetPointSize(5);
renderer.AddActor(vertsActor);
上面的代码会在窗口中显示出创建的500个顶点,同时我们还可以得到一个包含了这些顶点标签的vtkAppendPolyData 对象。下面的代码用来显示标签:
//显示字体
vtkPolyDataMapper textMapper = new vtkPolyDataMapper();
textMapper.ImmediateModeRenderingOn();
textMapper.SetInputConnection(appendPolyData.GetOutputPort());
vtkActor textActor = new vtkActor();
textActor.SetMapper(textMapper);
renderer.AddActor(textActor);
最终显示结果如下:(这里只测试了100个点)
因为vtkVectorText将字符串转换为vtkPolyData来显示的,所以速度相对比较快。因为它只是输出字符串的vtkPolyData的对象,所以标签的旋转以及定位都需要我们自己来设置,这个还是有点麻烦。因为如何使得标签使用朝向屏幕,除了使用每一个标签一个vtkFollower来操作之外,就需要我们自己来计算每一个标签应该旋转的角度,然后使用vtkTransform来调整标签的朝向,以达到我们的要求。
另外,vtk提供的vtkVectorText定义,每一个字符都包含了很多三角面,如果希望获取更高的性能,可以参照vtkVectorText的实现,来重写 ,将它提供的字符定义进行精简,这样优化以后,估计显示10000个标签应该都不成问题了。
- 大小: 13.8 KB
分享到:
相关推荐
而`vtkRenderWindow`是实际的显示窗口,它包含一个或多个`Renderer`。通过`RenderWindowInteractor`,你可以与可视化结果进行交互,如旋转、平移和缩放。 6. **运行和交互**:最后,调用`RenderWindow`的`Render`...
VTK,全称为 Visualization Toolkit,是一款强大的开源可视化库,尤其在3D图形渲染和科学数据可视化方面具有广泛的应用。...希望这篇“初学者的VTK学习笔记”能对你有所帮助,祝你在VTK的学习旅程上取得成功!
### VTK学习笔记及安装指南 #### 一、VTK简介与重要性 VTK (Visualization Toolkit) 是一套开源的三维图形处理库,主要用于科学计算可视化、图像处理以及计算机图形学领域。它提供了丰富的API接口,支持多种编程...
### Windows平台下VTK中文字符显示 #### 概述 VTK(Visualization Toolkit)是一款用于三维图形处理、图像处理以及可视化的开源软件包。在实际应用中,开发人员经常需要在三维视图中添加文本注释,特别是对于中文...
1. **《The Visualization Toolkit: An Object-Oriented Approach to 3D Graphics》**:这是VTK官方推荐的学习书籍之一,详细介绍了VTK的使用方法和技术细节。 2. **VTK User Guide**:用户指南提供了基本的操作指导...
修改FTFont FTGLPixmaFont源代码 使VTK能够载入中文字体 显示中文,VTK6.1.0测试可用,vtkCornerAnnotation、vtkTextActor、vtkTextWidget...
本文将深入探讨如何在vtk中实现三视图显示,以及从描述中提及的四视图显示和体切片显示相关知识点。 ### 1. VTK简介 VTK是一个强大的工具,它提供了许多功能,包括数据处理、图像处理、几何建模、光照与材质处理、...
VTK 学习指南(中文版) VTK(Visualization Toolkit,Visualization Toolkit)是一款功能强大的开源视觉化软件工具包,由Kitware 公司开发维护。VTK 提供了一个灵活、可扩展、跨平台的视觉化解决方案,广泛应用于...
在VTK 5.8版本中,存在一个显著的问题:它不支持汉字的直接显示。这限制了其在中国及东亚地区用户的使用,因为这些地方的文本通常包含汉字。然而,通过一些专门的修改和调整,我们可以使VTK 5.8支持汉字显示。 首先...
修改FTFont FTGLPixmaFont源代码 使VTK6 1 0能够载入中文字体 显示中文 其他版本的VTK也能参照此方法 使用时TextProperty >SetFontFamily VTK FONT FILE ;
另外,VTK学习笔记可能是个人或社区对学习过程的记录,可能包含了问题解决的经验、技巧和代码片段,是宝贵的实践经验总结。示例程序则提供了直接运行的代码,可以加深对VTK的理解,通过实践来验证理论知识。 学习...
### VTK中一种显示汉字的方法 #### 摘要 VTK(Visualization ToolKit)作为一套集成计算机图形、图像处理及可视化的软件系统,在国内外得到了广泛的应用。然而,原生的VTK并未提供直接支持汉字显示的功能。为了...
这个“VTK学习手册 学VTK必备 中文版”是为那些希望掌握VTK技术的中文读者精心准备的学习资源。文档《VTK User's Guide中文版》包含了对VTK的全面介绍和详细教程,旨在帮助初学者快速理解和应用VTK。 VTK的核心功能...
主要用c++编写了如何用vtk读取并显示stl文件,方便大家使用,代码有详细的注释,很容易理解
- **数据流水线**:VTK的数据流水线机制允许动态更新和高效处理大量数据,它是VTK的核心特性之一。 - **过滤器和模块**:VTK包含大量的过滤器,如数据生成器、转换器和分析器,它们可以串联起来形成数据处理流程。 -...
总结来说,这份VTK学习资料为初学者提供了一个基础的框架,包括如何构建VTK项目,了解VTK的渲染管线,以及如何使用VTK创建简单的3D可视化应用。通过一系列的具体步骤和代码示例,介绍了如何在VTK中创建几何形状、...
在Windows操作系统中,使用QT与VTK来显示点云数据是一项常见的任务,特别是在3D可视化领域。本示例主要展示了如何在Visual Studio 2015(VS2015)环境下,结合PCL(Point Cloud Library)1.8.1、VTK(Visualization ...
这是一个用于在3D场景中添加文本标签的类,它可以用来标注物体或数据显示信息。默认情况下,如果直接使用`vtkCaptionActor2D`来显示中文,可能会出现乱码或者无法显示的情况。为了解决这个问题,我们需要确保VTK能够...
在显示图像时,通常会使用`vtkRenderWindow`和`vtkRenderer`来创建渲染窗口和渲染器,然后将`vtkImageData`(由DICOM读者生成)连接到`vtkImageViewer2`或`vtkMapper`,再通过`vtkActor`添加到渲染器中,最后用`...
例如,VTK的过滤器系统是其强大功能之一,它允许开发者通过一系列预定义的过滤器处理数据,如提取表面、平滑数据或进行体绘制。 《vtk.docx》可能是一个综合性的介绍,详细阐述了VTK的安装、配置过程,以及如何启动...