VTK修炼之道43:图形进阶_vtkPolyData数据生成与显示
来源:互联网 发布:java redis isinmulti 编辑:程序博客网 时间:2024/06/05 07:51
1.VTK图像处理引言
图像数据的应用非常广泛,最贴近日常生活的应用是3D游戏,其中每个角色的模型、场景等都是图形数据。当然,游戏仅仅是图像数据的一个应用点。图形在CAD(计算机辅助设计)、影视、医学、地质、气象数据建模等领域中均有着广泛的应用。vtkPolyData是VTK中常用的数据结构之一,可以表示小到一个点、一条线,达到一个模型、一个场景等。
2.vtkPolyData数据生成与显示
之前也曾说过,在这里只是简单的回顾,更重要滴在于深入地理解。VTKPolyData主要由几何结构数据、拓扑结构数据、属性数据组成。几何结构数据:组成模型的点集;拓扑结构数据:这些点根据一定的连接关系组成的单元数据;表明集合点集之间的拓扑关系属性数据:与几何结构数据和拓扑结构数据相关联,属性数据可以是标量、向量或者张量。例如,可以为其中的每个点定义曲率属性数据,也可以为其中的每一个单元定义一个法向量属性数据。在VTKPolyData可视化中会利用这些属性数据直接或者间接计算单元或点的颜色。实例如下:#include <vtkAutoInit.h>VTK_MODULE_INIT(vtkRenderingOpenGL);#include <vtkSmartPointer.h>#include <vtkConeSource.h>#include <vtkPolyData.h>#include <vtkPolyDataMapper.h>#include <vtkActor.h>#include <vtkRenderer.h>#include <vtkRenderWindow.h>#include <vtkRenderWindowInteractor.h>int main(){vtkSmartPointer<vtkConeSource> coneSource =vtkSmartPointer<vtkConeSource>::New();coneSource->Update();vtkSmartPointer<vtkPolyData> polyData =vtkSmartPointer<vtkPolyData>::New();polyData = coneSource->GetOutput();int nPoints = polyData->GetNumberOfPoints();int nCells = polyData->GetNumberOfCells();std::cout << "几何数据(点数):" << nPoints << std::endl;std::cout << "拓扑数据(单元):" << nCells << std::endl;vtkSmartPointer<vtkPolyDataMapper> mapper =vtkSmartPointer<vtkPolyDataMapper>::New();mapper->SetInputData(polyData);vtkSmartPointer<vtkActor> actor =vtkSmartPointer<vtkActor>::New();actor->SetMapper(mapper);vtkSmartPointer<vtkRenderer> render =vtkSmartPointer<vtkRenderer>::New();render->AddActor(actor);render->SetBackground(10, 0, 0);vtkSmartPointer<vtkRenderWindow> rw =vtkSmartPointer<vtkRenderWindow>::New();rw->AddRenderer(render);rw->SetSize(640, 480);rw->SetWindowName("PolyData Structure Learning");rw->Render();vtkSmartPointer<vtkRenderWindowInteractor> rwi =vtkSmartPointer<vtkRenderWindowInteractor>::New();rwi->SetRenderWindow(rw);rwi->Initialize();rwi->Start();return 0;}上述代码中,VTKConeSource类定义了一个锥形图形数据,其输出为VTKPolyData类型数据。VTKPolyData的成员函数GetNumberOfPoints()和GetNumberOfCells()分别用来获取图形数据的点数和单元数目。接下来是定义一个图形数据的渲染管线,包括VTKPolyDataMapper()、vtkActor()、VTKRender()、vtkRenderWindow()和vtkRenderWindowInteractor()。这个渲染流程和图像渲染管线基本一致。需要注意的是,对于VTKPolyData类型数据的渲染管线,需要定义vtkPolyDataMapper对象,用于接受VTKPolyData图形数据以实现图像数据到渲染图元的转换。程序的显示结果如下所示:从结果可以看出,该椎体是由7个空间点构成了7个单元的数据组成。这里也仅仅定义了一个空间的椎体,并未给点或者单元数据设置属性信息。
3.参看资料
1.《C++ primer》
2.《The VTK User’s Guide – 11thEdition》
3. 张晓东, 罗火灵. VTK图形图像开发进阶[M]. 机械工业出版社, 2015.
0 0
- VTK修炼之道43:图形进阶_vtkPolyData数据生成与显示
- VTK修炼之道45:图形进阶_vtkPolyData属性数据
- VTK修炼之道44:图形进阶_vtkPolyData数据源讨论与数据创建
- VTK修炼之道48:图形基本操作进阶_符号化操作与模型区率计算
- VTK修炼之道50:图形基本操作进阶_网格模型的特征边 与 封闭性检测
- VTK修炼之道47:图形基本操作进阶_法向量计算
- VTK修炼之道51:图形基本操作进阶_连通区域分析
- VTK修炼之道59:图形基本操作进阶_纹理映射
- VTK修炼之道57:图形基本操作进阶_点云配准技术(LandMark标记点算法和坐标系显示方法)
- VTK修炼之道46:图形基本操作进阶_三角网格体积、表面积、测地距离、包围盒
- VTK修炼之道49:图形基本操作进阶_网格平滑(点云的曲面重建技术)
- VTK修炼之道52:图形基本操作进阶_多分辨率策略(模型抽取的三种方法)
- VTK修炼之道53:图形基本操作进阶_多分辨率策略(模型细化的三种方法)
- VTK修炼之道54:图形基本操作进阶_表面重建技术(三角剖分)
- VTK修炼之道55:图形基本操作进阶_表面重建技术(等值面提取)
- VTK修炼之道56:图形基本操作进阶_表面重建技术(三维点云曲面重建)
- VTK修炼之道58:图形基本操作进阶_点云配准技术(迭代最近点ICP算法)
- VTK修炼之道60:体绘制_体绘制管线&图形渲染管线
- C语言实验——矩阵转置 (sdut oj)
- redis简介及安装
- Java 类和对象
- android中两种未公开API
- C++初级主题--(2)构造函数和析构函数
- VTK修炼之道43:图形进阶_vtkPolyData数据生成与显示
- Windows下Scrapy爬虫框架的安装
- 【调研笔记】寒假记录 无人机巡检 图像处理方法调研总结
- 杨辉三角 (sdut oj)
- 运行Maven程序报错-Dmaven.multiModuleProjectDirectory system propery is not set.
- 对称矩阵的判定 (sdut oj)
- hihocoder 1372 平方求和
- #“Machine Learning”(Andrew Ng)#Week 3_2:Logistic Regression Model
- CSS3实现动态多级菜单效果