四川宜宾建设局官方网站,教育机构加盟,佛山网页设计培训中心,网站的建设周期与阶段一#xff1a;主要的知识点
1、说明
本文只是教程内容的一小段#xff0c;因博客字数限制#xff0c;故进行拆分。主教程链接#xff1a;vtk教程——逐行解析官网所有Python示例-CSDN博客
2、知识点纪要
本段代码主要涉及的有①vtkMultiBlockDataSet复合数据的管理与渲…一主要的知识点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()