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

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();

效果:

可视化管线:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/919419.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络基础(3)https和加密

http其它的报头 直接看图片: 上图中的第一个和第二个类型之前已经使用过了也就不多做说明了,第三个报头类型使用的很少了。第四个报头类型主要就使用在一些灰度更新的应用上,确定用户使用的软件的版本不让其访问该版本不能访问的功能。下一个…

高阶C语言之五:(数据)文件

目录 文件名 文件类型 文件指针 文件的打开和关闭 文件打开模式 文件操作函数(顺序) 0、“流” 1、字符输出函数fputc 2、字符输入函数fgetc 3、字符串输出函数fputs 4、 字符串输入函数fgets 5、格式化输入函数fscanf 6、格式化输出函数fpr…

C#获取视频第一帧_腾讯云媒体处理获取视频第一帧

一、 使用步骤: 第一步、腾讯云开启万象 第二步、安装Tencent.QCloud.Cos.Sdk 包 第三步、修改 腾讯云配置 图片存储目录配置 第四步、执行获取图片并保存 二、封装代码 using System.Text; using System.Threading.Tasks;using COSXML.Model.CI; using COSXML.A…

分词器的概念(通俗易懂版)

什么是分词器?简单点说就是将字符序列转化为数字序列,对应模型的输入。 通常情况下,Tokenizer有三种粒度:word/char/subword word: 按照词进行分词,如: Today is sunday. 则根据空格或标点进行分割[today, is, sunda…

Jenkins更换主题颜色+登录页面LOGO图片

默认主题和logo图片展示 默认主题黑色和白色。 默认LOGO图片 安装插件 Login ThemeMaterial Theme 系统管理–>插件管理–>Available plugins 搜不到Login Theme是因为我提前装好了 没有外网的可以参考这篇离线安装插件 验证插件并修改主题颜色 系统管理–>A…

11.19.2024刷华为OD

文章目录 HJ51HJ53 杨辉三角HJ56HJ57 高精度整数加法HJ58HJ60 简单题HJ63 DNA序列(简单题)语法知识记录 HJ51 https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d?tpId37&tags&title&difficulty0&judgeStatus0&…

C语言零基础入门

一、输入输出 &#xff08;1&#xff09;scanf scanf 是C语言中的一个标准库函数&#xff0c;用于从标准输入&#xff08;通常是键盘&#xff09;读取数据。scanf 函数定义在 <stdio.h> 头文件中。 #include <stdio.h>int main(void) {//读取整数 int num;print…

应聘美容师要注意什么?博弈美业收银系统/管理系统/拓客系统分享建议

随着美容行业的不断发展&#xff0c;成为一名优秀的美容师需要具备一系列重要的技能和品质。无论是在面试过程中还是在实际工作中&#xff0c;以下建议将帮助你在应聘美容师职位时脱颖而出&#xff1a; ▶ 专业技能和资格 首先&#xff0c;确保你具备所需的专业技能和资格。这…

JVM性能分析工具JProfiler的使用

一、基本概念 JProfiler&#xff1a;即“Java Profiler”&#xff0c;即“Java分析器”或“Java性能分析工具”。它是一款用于Java应用程序的性能分析和调试工具&#xff0c;主要帮助开发人员识别和解决性能瓶颈问题。 JVM&#xff1a;即“Java Virtual Machine”&#xff0c…

css鼠标移动效果高亮追随效果

如图所示&#xff0c;鼠标移动有一块高亮随着鼠标移动。代码如下&#xff1a;(vue3篇) <div class"container"><span class"use-hover-hglh-element trail" :style"isShow ? dyStyle : { opacity: 0 }"></span></div>…

PHP屏蔽海外IP的访问页面(源代码实例)

PHP屏蔽海外IP的访问页面&#xff08;源代码实例&#xff09;&#xff0c;页面禁用境外IP地址访问 <?php/*** 屏蔽海外ip访问* 使用ip2long函数得到ip转为整数的值&#xff0c;判断值是否在任一一个区间中* 以下是所有国内ip段* 调用方法&#xff1a;IschinaIp($ALLIPS)* …

现代分布式系统新法宝:基于单元的架构

- 前言 - 数十年来&#xff0c;IT 业界一直在努力掌握分布式系统。然而&#xff0c;随着系统日益复杂&#xff0c;给开发数字产品的组织带来巨大挑战。可以说&#xff0c;分布式系统最棘手的方面之一是面对故障时的可靠性&#xff0c;特别是现代分布式系统使用大量物理与虚拟资…

2.8 群辉 黑群晖 意味断电 抱歉,您所指定的页面不存在。

实验室组装的黑群晖施工时不小心被意味断电&#xff0c;然后出现了如下图&#xff1a; 对于7.1.1的系统来说&#xff0c;这个是由于libsynopkg.so.1和libsynoshare.so.7这两个文件出问题所致。 因此&#xff0c;解决方法也比较简单就是把好的文件恢复到/lib文件夹下即可。 这…

【视频讲解】Python深度神经网络DNNs-K-Means(K-均值)聚类方法在MNIST等数据可视化对比分析...

全文链接&#xff1a;https://tecdat.cn/?p38289 分析师&#xff1a;Cucu Sun 近年来&#xff0c;由于诸如自动编码器等深度神经网络&#xff08;DNN&#xff09;的高表示能力&#xff0c;深度聚类方法发展迅速。其核心思想是表示学习和聚类可以相互促进&#xff1a;好的表示会…

K8S资源限制之ResourceQuota

ResourceQuota介绍 在K8S中&#xff0c;大部分资源都可以指定到一个名称空间下&#xff0c;因此可以对一个名称空间的计算资源&#xff0c;存储资源&#xff0c;资源数量等维度做资源限制。 如限制pod数量、svc数量&#xff0c;控制器数量&#xff0c;限制PVC请求的存储量 注…

【Android原生问题分析】夸克、抖音划动无响应问题【Android14】

1 问题描述 偶现问题&#xff0c;用户打开夸克、抖音后&#xff0c;在界面上划动无响应&#xff0c;但是没有ANR。回到Launcher后再次打开夸克/抖音&#xff0c;发现App的界面发生了变化&#xff0c;但是仍然是划不动的。 2 log初分析 复现问题附近的log为&#xff1a; 用户…

[JavaWeb]微头条项目

完整笔记和项目代码&#xff1a; https://pan.baidu.com/s/1PZBO0mfpwDPic4Ezsk8orA?pwdwwp5 提取码: wwp5 JavaWeb-微头条项目开发 1 项目简介 1.1 业务介绍 微头条新闻发布和浏览平台,主要包含业务如下 用户功能 注册功能登录功能 头条新闻 新闻的分页浏览通过标题关键字搜…

AJAX学习(24.11.1-24.11.14)(包含HTTP协议)

AJAX学习&#xff08;24.11.1-11.14) 来源&#xff1a; 传智 | 高校学习平台-首页 传智播课&#xff1a;黑马程序员 1.服务器和客户端 1.服务器&#xff1a;存放和对外提供资源的电脑。 2.客户端&#xff08;用户&#xff09;&#xff1a;获取和消费资源的电脑。&#xff0…

9.《滑动窗口篇》---①长度最小的子数组(中等)

滑动窗口推导过程 我们不能说一上来就知道这个题目用滑动窗口&#xff0c;然后就使用滑动窗口的方法来做这个题目。 首先我们想到的应该是暴力解法。 接着再优化为滑动窗口 由于数字都是 ≥ 0 的数。因此累加的数越多。和越大。 因此right往后遍历的时候。当发现sum > targe…

《Python网络安全项目实战》项目5 编写网站扫描程序

《Python网络安全项目实战》项目5 编写网站扫描程序 项目目标&#xff1a;任务5.1 暴力破解网站目录和文件位置任务描述任务分析任务实施相关知识任务评价 任务5.2 制作网页JPG爬虫任务分析任务实施相关知识任务评价任务拓展 WEB网站安全渗透测试过程中需要进行目录扫描和网站爬…