当前位置: 首页 > news >正文

CompositePolyDataMapper复合数据集的展示与渲染

一:主要的知识点

1、说明

本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程——逐行解析官网所有Python示例-CSDN博客

2、知识点纪要

本段代码主要涉及的有①vtkMultiBlockDataSet复合数据的管理与渲染


二:代码及注释

import vtkmodules.vtkRenderingOpenGL2 import vtkmodules.vtkInteractionStyle from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkRenderingCore import vtkActor, vtkCompositePolyDataMapper, vtkRenderWindow, \ vtkRenderWindowInteractor, vtkRenderer, vtkCompositeDataDisplayAttributes from vtkmodules.vtkFiltersSources import vtkSphereSource from vtkmodules.vtkCommonDataModel import vtkMultiBlockDataSet def main(): colors = vtkNamedColors() sphere1 = vtkSphereSource() sphere1.SetCenter(0, 0, 0) sphere1.SetRadius(3) sphere1.Update() sphere2 = vtkSphereSource() sphere2.SetCenter(2, 0, 0) sphere2.SetRadius(2) sphere2.Update() """ vtkMultiBlockDataSet 是一种 多块(multi-block)复合数据结构,可以在一个对象中 组织、管理多个 VTK 数据集(block) 例如:多个 vtkPolyData、vtkImageData、vtkUnstructuredGrid 等 vtkMultiBlockDataSet 本身是一个容器,它可以包含多个“Block”, 而每个 Block 又可以是: 一个独立的数据集(如 vtkPolyData),或者 另一个 vtkMultiBlockDataSet(也就是嵌套结构)。 你可以把它想象成一个 树形结构(Tree / Hierarchical dataset): vtkMultiBlockDataSet (Root) │ ├── Block 0 → vtkPolyData (比如飞机机身) ├── Block 1 → vtkPolyData (比如飞机机翼) ├── Block 2 → vtkImageData (比如流场) └── Block 3 → vtkMultiBlockDataSet (子模块) ├── Block 0 → vtkPolyData └── Block 1 → vtkPolyData """ mdbs = vtkMultiBlockDataSet() mdbs.SetNumberOfBlocks(3) # 设置有三个Block mdbs.SetBlock(0, sphere1.GetOutput()) mdbs.SetBlock(2, sphere2.GetOutput()) """ vtkCompositePolyDataMapper 专门为 复合数据(composite data) 可视化而设计的类 是一种能一次性渲染多个 vtkPolyData(或多块数据)的高效映射器(Mapper) """ mapper = vtkCompositePolyDataMapper() mapper.SetInputDataObject(mdbs) """ vtkCompositeDataDisplayAttributes 专门用于控制复合数据集中每个block的可视化属性 """ cdsa = vtkCompositeDataDisplayAttributes() mapper.SetCompositeDataDisplayAttributes(cdsa) """ 上面四行的代码的逻辑是 使用一个复合数据映射器(vtkCompositePolyDataMapper)来渲染一个复合数据集(vtkMultiBlockDataSet), 并通过 vtkCompositeDataDisplayAttributes 控制每个子块的显示属性(如颜色、透明度、可见性等) """ mapper.SetBlockColor(1, colors.GetColor3d("Red")) mapper.SetBlockColor(2, colors.GetColor3d("Blue")) mapper.SetBlockColor(3, colors.GetColor3d("Yellow")) """ 上面的索引之所以从1开始,而不是从0开始,是因为索引0对应的是整个MDBS容器,即所谓的根节点 1则是对应的sphere1, 2是一个NULL块,不会被渲染, 3对应的是sphere2 """ actor = vtkActor() actor.SetMapper(mapper) # Create the Renderer, RenderWindow, and RenderWindowInteractor. renderer = vtkRenderer() renderWindow = vtkRenderWindow() renderWindow.AddRenderer(renderer) renderWindowInteractor = vtkRenderWindowInteractor() renderWindowInteractor.SetRenderWindow(renderWindow) # Enable user interface interactor. renderer.AddActor(actor) renderer.SetBackground(colors.GetColor3d('SteelBlue')) renderWindow.SetWindowName('CompositePolyDataMapper') renderWindow.Render() renderWindowInteractor.Start() if __name__ == '__main__': main()
http://www.gsyq.cn/news/130595.html

相关文章:

  • 2025年深圳管道疏通联系方式汇总:全市专业服务商官方联系渠道与高效合作指引 - 品牌推荐
  • Excalidraw AI学术研究引用规范建议
  • Electron hello world 初体验 - 实践
  • Open-AutoGLM送礼怎么选?3大黄金法则+高分推荐清单速看
  • 事务管理de
  • 【AI笔记神器Open-AutoGLM】:5大核心功能解锁知识管理新范式
  • Excalidraw AI提升市场营销活动策划效率
  • Excalidraw AI协助安全合规体系建设
  • 制作餐厅食材新鲜度检测程序,识别食材外观,判断是否新鲜,保障食品安全。
  • Python有哪些冷门但好用的库?10个隐藏库推荐
  • CAN:STM32 CAN外设2 - 详解
  • day19-Trae开发微信小程序03
  • day18-Trae开发微信小程序02
  • 【高效阅读新范式】:基于Open-AutoGLM的7步书籍精读法
  • 【紧急通知】Open-AutoGLM远程权限漏洞曝光,立即检查你的配置!
  • Excalidraw AI模型更新频率及维护计划
  • Excalidraw AI助力中小企业降本增效案例
  • 揭秘Open-AutoGLM核心技术:如何实现文档自动识别与结构化存储
  • 24、深入探索SharePoint内容类型与Word文档集成
  • 移动应用性能评测指标体系构建
  • 37、SharePoint项目的可配置部署与自定义步骤实现
  • 告别问卷设计焦虑:百考通AI如何让调研变得“聪明”又高效
  • Excalidraw AI功能本地化部署的硬件要求
  • 你的数据分析副驾:百考通AI如何让洞察触手可及
  • Excalidraw AI增强投标方案呈现力
  • Excalidraw AI在敏捷会议中的即时绘图应用
  • 38、SharePoint开发:打包、部署与环境准备全解析
  • 运维成本PK:三大MQ(RabbitMQ/Kafka/RocketMQ)谁更省心?
  • Excalidraw AI降低非设计人员的绘图门槛
  • 【Open-AutoGLM指令集优化全解析】:揭秘下一代AI编译器性能飞跃核心技术