CloudReadering
MultiVarTransferFunctionWindow.cpp
GuiVarData 类的功能
GuiVarData 类负责管理单个变量的传输函数数据,包括颜色点和透明度点的定义、存储、插值和可视化。
-
XML 读写功能:
- writeToXml 方法将当前的颜色点和透明度点写入 XML 格式。
- saveTfToFile 方法将传输函数保存到文件。
- readFromXml 方法从 XML 文档中读取传输函数数据。
- loadTfFromFile 和 loadTfFromXmlString 提供了从文件或字符串加载传输函数的功能。
-
数据管理:
- setAttributeValues 方法设置变量的属性值,并计算数据范围和直方图。
- computeHistogram 方法计算属性值的直方图,用于可视化。
-
传输函数插值:
- rebuildTransferFunctionMap 和 rebuildTransferFunctionMapLocal 方法根据颜色空间(sRGB 或线性 RGB)重建传输函数。
- rebuildTransferFunctionMap_LinearRGB 和 rebuildTransferFunctionMap_sRGB 分别处理线性 RGB 和 sRGB 的插值。
-
用户交互:
- renderGui 方法使用 ImGui 渲染用户界面,允许用户调整颜色点、透明度点和其他参数。
- renderOpacityGraph 和 renderColorBar 分别绘制透明度图和颜色条。
- onOpacityGraphClick 和 onColorBarClick 处理用户点击事件,支持添加、删除和拖动点。
3. MultiVarTransferFunctionWindow
类的功能
MultiVarTransferFunctionWindow
类管理多个变量的传输函数,并提供全局的操作和可视化。
-
初始化和文件管理:
- 构造函数初始化保存目录和预设文件列表。
- updateAvailableFiles 方法更新可用的传输函数文件列表。
-
变量管理:
- setAttributeNames 设置变量名称并初始化相关数据结构。
addAttributeName
和removeAttribute
支持动态添加或删除变量。- setAttributeDataDirty 和 loadAttributeDataIfEmpty 用于标记和加载变量数据。
-
传输函数管理:
- rebuildTransferFunctionMapComplete 和 rebuildRangeSsbo 重建传输函数和范围缓冲区。
setTransferFunction
方法设置特定变量的传输函数。
-
用户界面:
- renderGui 方法渲染主窗口,允许用户选择变量并调整其传输函数。
4. 图形渲染支持
代码支持 OpenGL 和 Vulkan 两种渲染系统,通过条件编译分别实现了纹理和缓冲区的创建与更新。
总结
这段代码实现了一个功能全面的传输函数管理系统,集成了数据管理、插值计算、文件操作和用户界面。它适用于需要动态调整颜色和透明度映射的应用场景,如科学可视化或图形渲染。