VTK知识学习(10)- 渲染引擎

server/2024/11/20 21:31:16/

1、前言

vtkProp;

vtkAbstractMapper;

vtkProperty;

vtkCamera;

vtkLight;

vtkRenderer;

vtkRenderWindow;

vtkRenderWindowInteractor;

vtkTransform;

vtkLookupTable;…………
这些类都是与数据显示或渲染相关的。

用计算机图形学的专业词汇来说,就是它们构成了 VTK的渲染引擎(RenderingEngine)。

渲染引擎主要负责数据的可视化表达,是VTK里的两个重要概念之一,而另一个重要概念就是可视化管线(Visualization Pipeline)。

2、可视化管线

可视化管线是指用于获取或创建数据、处理数据以及把数据写入文件或者把数据传递给渲染引擎进行显示,这样的一种结构在 VTK里就称为可视化管线。

数据对象(Data Obiect)处理对象(Process Object)和数据流方向(Direction ofDataFlow)是可视化管线的三个基本要素。

每个 VTK 程序都会有可视化管线存在,比如示例RenderCylinder,其可视化管线可以简单地表示成如图所示的连接关系。

示例代码:

 private void RenderCylinder(){vtkCylinderSource cylinderSource = vtkCylinderSource.New();cylinderSource.SetHeight(3.0);   //设置高cylinderSource.SetRadius(1.0);   // 设置半径cylinderSource.SetResolution(100);  //设置横截面的等边多边形的边数。vtkPolyDataMapper polyDataMapper = vtkPolyDataMapper.New();//VTK可视化管线的输入数据接口,对应的可视化管线的输出数据接口为GetOutputPort().polyDataMapper.SetInputConnection(cylinderSource.GetOutputPort());vtkActor actor = vtkActor.New();actor.SetMapper(polyDataMapper); //用于设置生成几何图元的Mapper,即连接一个Actor到可视化管理的末端。vtkRenderer renderer = vtkRenderer.New();renderer.AddActor(actor);       //将vtkProp类型的对象添加到渲染场景中。renderer.SetBackground(0.3, 0.6, 0.7); //设置渲染场景的背景颜色,用RGB的格式设置。还有其它函数可以设置渐变效果。vtkRenderWindow renWin = renderWindowControl.RenderWindow;renWin.AddRenderer(renderer);                   // 添加渲染器renWin.Render();}

图示:

示例 RenderCylinder 的可视化管线非常简单,先是创建一个柱体数据,接着经Mapper后生成的图元直接送入渲染引警渲染,创建的数据没有经过任何处理。

3、一个复杂的可视化管线

在该示例中,先读入一个后缀为 vk的文件(head.vtk),然后用移动立方体法(vtkMarchingCubes)提取等值面,最后把等值面数据经Mapper送往渲染引擎进行显示(运行结果如图所示)。

示例代码:

//读取Structure_poings类型的vtk文件
vtkStructuredPointsReader reader = vtkStructuredPointsReader.New();
reader.SetFileName("data//head.vtk");//处理读入的数据。
//用移动立方体提取等值面。   VTK中把与类似vtkMarchingCubes对数据处理的类称为Filter。
vtkMarchingCubes cubes = vtkMarchingCubes.New();
cubes.SetInputConnection(reader.GetOutputPort());
cubes.SetValue(0, 500);//将生成的等值面数据进行Mapper
vtkPolyDataMapper mapper = vtkPolyDataMapper.New();
mapper.SetInputConnection(cubes.GetOutputPort());//把Mapper的输出送往渲染引擎进行显示vtkActor actor = vtkActor.New();
actor.SetMapper(mapper);vtkRenderer renderer = vtkRenderer.New();
renderer.AddActor(actor);
renderer.SetBackground(0.3, 1, 0.7);vtkRenderWindow renWin = renderWindowControl.RenderWindow;
renWin.AddRenderer(renderer);
renWin.Render();
reader.Dispose();
cubes.Dispose();
mapper.Dispose();
actor.Dispose();
renderer.Dispose();

效果:

可视化管线:


http://www.ppmy.cn/server/143541.html

相关文章

Deep-Live-Cam -面部交换、视频深度伪造

文章目录 一、关于 Deep-Live-Cam免责声明 二、安装(Windows/Nvidia)安装(手动)基本安装(CPU) GPU加速(可选)CUDA执行提供商(Nvidia)CoreML执行提供商&#x…

深度学习之GAN的生成能力评价

1.1 如何客观评价GAN的生成能力? ​ 最常见评价GAN的方法就是主观评价。主观评价需要花费大量人力物力,且存在以下问题: 评价带有主管色彩,有些bad case没看到很容易造成误判 如果一个GAN过拟合了,那么生成的样本会非…

【Unity踩坑】Unity编辑器占用资源过高

在使用Unity 6 的编辑器时,尤其是打开URP项目后,发现笔记本电脑的风扇呼呼狂炫。 后来试着把Game中的Low Resolution Aspect Ratios打开后,温度神奇地下来了。 这不对比了一下,发现在关闭这个选项后,占用的资源主要是…

react中如何在一张图片上加一个灰色蒙层,并添加事件?

最终效果: 实现原理: 移动到图片上的时候,给img加一个伪类 !!此时就要地方要注意了,因为img标签是闭合的标签,无法直接添加 伪类(::after),所以 我是在img外…

数据库——索引机制

目录 一、基础理论 search key index file 二、ordered indices 定义: 主要类型: 三、Hash indices 定义: 溢出处理: 溢出桶: 溢出处理: 周期性重新哈希: 四、创建索引的语句 一、基础理论 索引是数据库中…

Spring Boot 中 Druid 连接池与多数据源切换的方法

Spring Boot 中 Druid 连接池与多数据源切换的方法 在Spring Boot项目中,使用Druid连接池和进行多数据源切换是常见的需求,尤其是在需要读写分离、数据库分片等复杂场景下。本文将详细介绍如何在Spring Boot中配置Druid连接池并实现多数据源切换。 一、…

HarmonyOS Next 关于页面渲染的性能优化方案

HarmonyOS Next 关于页面渲染的性能优化方案 HarmonyOS Next 应用开发中,用户的使用体验至关重要。其中用户启动APP到呈现页面主要包含三个步骤: 框架初始化页面加载布局渲染 从页面加载到布局渲染中,主要包含了6个环节: 执行页…

vue2动态导出多级表头表格

需求:导出多级表格,如下,每个人名对应的是不同的城市金钱和年龄,日期占俩行,需要根据数据进行动态展示 1.效果 2.关键代码讲解 2.1数据源 2.2所需插件 npm install xlsx 2.3关键代码 创建name组和date组&#xff0c…