`
aswang
  • 浏览: 847920 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

vtk学习笔记之显示标签vtkVectorText

 
阅读更多

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
0
0
分享到:
评论

相关推荐

    vtk学习笔记 ---绘制等值线

    而`vtkRenderWindow`是实际的显示窗口,它包含一个或多个`Renderer`。通过`RenderWindowInteractor`,你可以与可视化结果进行交互,如旋转、平移和缩放。 6. **运行和交互**:最后,调用`RenderWindow`的`Render`...

    初学者的VTK学习笔记

    VTK,全称为 Visualization Toolkit,是一款强大的开源可视化库,尤其在3D图形渲染和科学数据可视化方面具有广泛的应用。...希望这篇“初学者的VTK学习笔记”能对你有所帮助,祝你在VTK的学习旅程上取得成功!

    VTK学习笔记及安装指南

    ### VTK学习笔记及安装指南 #### 一、VTK简介与重要性 VTK (Visualization Toolkit) 是一套开源的三维图形处理库,主要用于科学计算可视化、图像处理以及计算机图形学领域。它提供了丰富的API接口,支持多种编程...

    Windows平台下VTK中文字符显示.

    ### Windows平台下VTK中文字符显示 #### 概述 VTK(Visualization Toolkit)是一款用于三维图形处理、图像处理以及可视化的开源软件包。在实际应用中,开发人员经常需要在三维视图中添加文本注释,特别是对于中文...

    VTK学习笔记

    1. **《The Visualization Toolkit: An Object-Oriented Approach to 3D Graphics》**:这是VTK官方推荐的学习书籍之一,详细介绍了VTK的使用方法和技术细节。 2. **VTK User Guide**:用户指南提供了基本的操作指导...

    VTK支持中文显示

    修改FTFont FTGLPixmaFont源代码 使VTK能够载入中文字体 显示中文,VTK6.1.0测试可用,vtkCornerAnnotation、vtkTextActor、vtkTextWidget...

    vtk中三视图显示

    本文将深入探讨如何在vtk中实现三视图显示,以及从描述中提及的四视图显示和体切片显示相关知识点。 ### 1. VTK简介 VTK是一个强大的工具,它提供了许多功能,包括数据处理、图像处理、几何建模、光照与材质处理、...

    VTK 学习指南 (中文版)

    VTK 学习指南(中文版) VTK(Visualization Toolkit,Visualization Toolkit)是一款功能强大的开源视觉化软件工具包,由Kitware 公司开发维护。VTK 提供了一个灵活、可扩展、跨平台的视觉化解决方案,广泛应用于...

    vtk 5.8 汉字显示

    在VTK 5.8版本中,存在一个显著的问题:它不支持汉字的直接显示。这限制了其在中国及东亚地区用户的使用,因为这些地方的文本通常包含汉字。然而,通过一些专门的修改和调整,我们可以使VTK 5.8支持汉字显示。 首先...

    VTK6.1.0支持中文显示

    修改FTFont FTGLPixmaFont源代码 使VTK6 1 0能够载入中文字体 显示中文 其他版本的VTK也能参照此方法 使用时TextProperty &gt;SetFontFamily VTK FONT FILE ;

    vtk资料包括VTK中文手册(中文VTK User's Guide(带书签))

    另外,VTK学习笔记可能是个人或社区对学习过程的记录,可能包含了问题解决的经验、技巧和代码片段,是宝贵的实践经验总结。示例程序则提供了直接运行的代码,可以加深对VTK的理解,通过实践来验证理论知识。 学习...

    VTK中一种显示汉字的方法

    ### VTK中一种显示汉字的方法 #### 摘要 VTK(Visualization ToolKit)作为一套集成计算机图形、图像处理及可视化的软件系统,在国内外得到了广泛的应用。然而,原生的VTK并未提供直接支持汉字显示的功能。为了...

    VTK学习手册 学VTK必备 中文版

    这个“VTK学习手册 学VTK必备 中文版”是为那些希望掌握VTK技术的中文读者精心准备的学习资源。文档《VTK User's Guide中文版》包含了对VTK的全面介绍和详细教程,旨在帮助初学者快速理解和应用VTK。 VTK的核心功能...

    vtk读取并显示stl文件

    主要用c++编写了如何用vtk读取并显示stl文件,方便大家使用,代码有详细的注释,很容易理解

    vtk学习资料,VTK图形图像开发进阶及源代码

    - **数据流水线**:VTK的数据流水线机制允许动态更新和高效处理大量数据,它是VTK的核心特性之一。 - **过滤器和模块**:VTK包含大量的过滤器,如数据生成器、转换器和分析器,它们可以串联起来形成数据处理流程。 -...

    VTK学习资料.pdf

    总结来说,这份VTK学习资料为初学者提供了一个基础的框架,包括如何构建VTK项目,了解VTK的渲染管线,以及如何使用VTK创建简单的3D可视化应用。通过一系列的具体步骤和代码示例,介绍了如何在VTK中创建几何形状、...

    Windows下使用QT VTK显示点云示例

    在Windows操作系统中,使用QT与VTK来显示点云数据是一项常见的任务,特别是在3D可视化领域。本示例主要展示了如何在Visual Studio 2015(VS2015)环境下,结合PCL(Point Cloud Library)1.8.1、VTK(Visualization ...

    VTK中文显示

    这是一个用于在3D场景中添加文本标签的类,它可以用来标注物体或数据显示信息。默认情况下,如果直接使用`vtkCaptionActor2D`来显示中文,可能会出现乱码或者无法显示的情况。为了解决这个问题,我们需要确保VTK能够...

    VTK DICOM 图像显示以及距离角度测量

    在显示图像时,通常会使用`vtkRenderWindow`和`vtkRenderer`来创建渲染窗口和渲染器,然后将`vtkImageData`(由DICOM读者生成)连接到`vtkImageViewer2`或`vtkMapper`,再通过`vtkActor`添加到渲染器中,最后用`...

    vtk学习资源包

    例如,VTK的过滤器系统是其强大功能之一,它允许开发者通过一系列预定义的过滤器处理数据,如提取表面、平滑数据或进行体绘制。 《vtk.docx》可能是一个综合性的介绍,详细阐述了VTK的安装、配置过程,以及如何启动...

Global site tag (gtag.js) - Google Analytics