QT传输函数控件设计1 引子

2024-04-07 21:08

本文主要是介绍QT传输函数控件设计1 引子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这又是一个系列的开头。

说实话本来我想先写写关于QT三维物体显示的功能的,因为后面也会遇到。但是鉴于有些朋友表示急需使用关于渲染的传输函数控件,这里我就先把这个传输函数控件搞定,然后再来写一下怎么实现小三维模型显示和交互。

老规矩:各位务必放心,本人开坑必填,预计一周内填完此坑。

各位注意了,我之前写的关于xml文件读写,以及QT图形图像显示的系列内容都是为这个来做铺垫。以前讲过的这两个系列的内容大部分我是不会再讲了,各位如果有看不懂的函数可以自己百度,也可以去看完我的这两个系列,相信你一定会有收获。而且就算您的需求不是做这么一个控件,相信学完这个博客也能加深对QT程序设计的理解。

哦对了,提一句,xml文件读写系列的《XML语言数据读写理解8》一直到《XML语言数据读写理解16》,这部分内容都是在做这个传输函数控件。里面的内容也都是跟设置传输函数控件读写类有关的,大家务必注意到这一点。也就是说我们开始做的内容是从《XML语言数据读写理解16》已经完成的内容开始的。

现在的情况是:我们已经有了xml文件读写类,其中最底层是节点读取类,然后是TsfunItem读取类,最后是根节点TsfunGroup读取类,用来调用低层次的类来实现读取整个记载了传输函数控件的xml文件的类。

我们要实现通过移动绘图面板上的图元,来实现定义修改传输函数节点的例子。

现在我再来说说几句,给之前不了解传输函数控件的人讲一下我们要做个什么东西。

首先我们有这个一个xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<TsfunGroup><TsfunItem Name="normalMode"><Nodes><Node><NormalizedIntensity Value="0"/><Opacity Value="0"/><Emission G="0" R="0" B="0"/></Node><Node><NormalizedIntensity Value="0.23597"/><Opacity Value="0"/><Emission G="0" R="0" B="0"/></Node><Node><NormalizedIntensity Value="0.288538"/><Opacity Value="0.0179028"/><Emission G="0" R="0" B="0"/></Node><Node><NormalizedIntensity Value="0.288578"/><Opacity Value="0.563501"/><Emission G="0" R="0" B="0"/></Node><Node><NormalizedIntensity Value="0.35417"/><Opacity Value="1"/><Emission G="0" R="0" B="0"/></Node><Node><NormalizedIntensity Value="1"/><Opacity Value="1"/><Emission G="0" R="0" B="0"/></Node></Nodes><DensityScale Value="100"/><ShadingType Value="2"/><GradientFactor Value="3"/></TsfunItem><TsfunItem Name="maxMode"><Nodes><Node><NormalizedIntensity Value="0"/><Opacity Value="0"/><Emission G="0" R="0" B="0"/></Node><Node><NormalizedIntensity Value="0.13597"/><Opacity Value="0"/><Emission G="0" R="0" B="0"/></Node><Node><NormalizedIntensity Value="0.188538"/><Opacity Value="0.0279028"/><Emission G="0" R="0" B="0"/></Node><Node><NormalizedIntensity Value="0.288578"/><Opacity Value="0.363502"/><Emission G="0" R="0" B="0"/></Node><Node><NormalizedIntensity Value="0.45417"/><Opacity Value="1"/><Emission G="0" R="0" B="0"/></Node><Node><NormalizedIntensity Value="1"/><Opacity Value="1"/><Emission G="0" R="0" B="0"/></Node></Nodes><DensityScale Value="100"/><ShadingType Value="2"/><GradientFactor Value="3"/></TsfunItem>
</TsfunGroup>

然后我们要做一个界面:

注意图中的6个节点,对应了上面xml文件的6个Node,然后,我们可以在底下自己选择节点,实现对单个节点的修改,通过设置diffuse,specular以及emission,我们可以设置参数。为了简单我们就不加diffuse和specular了,只保留一个emission。然后是opacity,intensity表示这个点的横纵坐标(从0—1映射到图中的-1000—3095)

绘制图元的场景上有格子,以及背景是一个曲线图,曲线图是干嘛用的,我们以后再慢慢解释。面板底下有三个长矩形,用来对应表示上面的各个节点之间不同的颜色之间的混合过渡形成的混合颜色,没看懂没关系,这个的作用以后我们也会慢慢解释。

这是软件exposureRender的传输函数效果。现在你们什么都不需要知道,你们只需要知道,通过我们设置不同的节点,我们可以显示不同的效果。

那我们下一节就进入正题,开始讲一下VTK与体渲染显示。大家放心,这个我只讲一节,充其量就是给大家一个模板程序,我们要实现可以通过自己设置传输函数来显示不同效果的医学图像三维可视化系统。

这篇关于QT传输函数控件设计1 引子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/883675

相关文章

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、

Qt实现发送HTTP请求的示例详解

《Qt实现发送HTTP请求的示例详解》这篇文章主要为大家详细介绍了如何通过Qt实现发送HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、添加network模块2、包含改头文件3、创建网络访问管理器4、创建接口5、创建网络请求对象6、创建一个回复对

golang panic 函数用法示例详解

《golangpanic函数用法示例详解》在Go语言中,panic用于触发不可恢复的错误,终止函数执行并逐层向上触发defer,最终若未被recover捕获,程序会崩溃,recover用于在def... 目录1. panic 的作用2. 基本用法3. recover 的使用规则4. 错误处理建议5. 常见错

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

Java function函数式接口的使用方法与实例

《Javafunction函数式接口的使用方法与实例》:本文主要介绍Javafunction函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感... 目录引言-当代码遇见诗性一、函数式接口的生物学解构1.1 函数式接口的基因密码1.2 六大核心接口的形态学

C#实现WinForm控件焦点的获取与失去

《C#实现WinForm控件焦点的获取与失去》在一个数据输入表单中,当用户从一个文本框切换到另一个文本框时,需要准确地判断焦点的转移,以便进行数据验证、提示信息显示等操作,本文将探讨Winform控件... 目录前言获取焦点改变TabIndex属性值调用Focus方法失去焦点总结最后前言在一个数据输入表单

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用