news 2026/2/4 15:15:22

AppendFilter使用AppendFilter合并两个不同的数据并展示

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AppendFilter使用AppendFilter合并两个不同的数据并展示

一:主要的知识点

1、说明

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

2、知识点纪要

本段代码主要涉及的有①vtkUnstructuredGrid无法显示点的原因,②使用appendfilter合并不同数据


二:代码及注释

#!/usr/bin/env python # noinspection PyUnresolvedReferences import vtkmodules.vtkInteractionStyle # noinspection PyUnresolvedReferences import vtkmodules.vtkRenderingOpenGL2 from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkCommonCore import vtkPoints from vtkmodules.vtkCommonDataModel import ( vtkPolyData, vtkUnstructuredGrid,vtkVertex ) from vtkmodules.vtkFiltersCore import vtkAppendFilter from vtkmodules.vtkFiltersSources import ( vtkPointSource, vtkSphereSource ) from vtkmodules.vtkRenderingCore import ( vtkActor, vtkDataSetMapper, vtkGlyph3DMapper, vtkRenderWindow, vtkRenderWindowInteractor, vtkRenderer ) def main(): colors = vtkNamedColors() # Create 5 points (vtkPolyData) """ vtkPointSource 快速生成一个包含随机点的 vtkPolyData 对象,以方便测试和演示 会自动在默认的坐标范围内(一个以原点为中心,半径为 0.5 的球体内部)随机生成点 """ pointSource = vtkPointSource() pointSource.SetNumberOfPoints(5) pointSource.Update() polydata = pointSource.GetOutput() print('There are', polydata.GetNumberOfPoints(), 'points in the polydata.') # Create 2 points in a vtkUnstructuredGrid points = vtkPoints() points.InsertNextPoint(0, 0, 0) points.InsertNextPoint(0, 0, 1) ug = vtkUnstructuredGrid() ug.SetPoints(points) print('There are', ug.GetNumberOfPoints(), 'points in the unstructured.') """ vtkDataSetMapper 默认会画出 几何单元 (cells),而不是裸的点 ug里面的点,并没有创建默认的vertex单元。所以当下面的 renderer.AddActor(sphereActor) 这一行代码被注释掉,就只能看到5个点 要想看看到完整的7个点,就要给ug中的各个点创建vertex单元 for i in range(points.GetNumberOfPoints()): vertex = vtkVertex() vertex.GetPointIds().SetId(0, i) ug.InsertNextCell(vertex.GetCellType(), vertex.GetPointIds()) """ # Combine the two data sets appendFilter = vtkAppendFilter() appendFilter.AddInputData(polydata) appendFilter.AddInputData(ug) appendFilter.Update() # combined = vtkUnstructuredGrid() combined = appendFilter.GetOutput() print('There are', combined.GetNumberOfPoints(), 'points combined.') # Create a mapper and actor mapper = vtkDataSetMapper() mapper.SetInputConnection(appendFilter.GetOutputPort()) actor = vtkActor() actor.SetMapper(mapper) actor.GetProperty().SetPointSize(5) # Map the points to spheres sphereActor = point_to_glyph(appendFilter.GetOutput().GetPoints(), 0.05) sphereActor.GetProperty().SetColor(colors.GetColor3d("Gold")) # Create a renderer, render window, and interactor renderer = vtkRenderer() renderWindow = vtkRenderWindow() renderWindow.AddRenderer(renderer) renderWindowInteractor = vtkRenderWindowInteractor() renderWindowInteractor.SetRenderWindow(renderWindow) # Add the actor to the scene renderer.AddActor(actor) renderer.AddActor(sphereActor) renderer.SetBackground(colors.GetColor3d('RoyalBlue')) # Render and interact renderWindow.SetWindowName('AppendFilter') renderWindow.Render() renderWindowInteractor.Start() def point_to_glyph(points, scale): """ Convert points to glyphs. :param points: The points to glyph. :param scale: The scale, used to determine the size of the glyph representing the point, expressed as a fraction of the largest side of the bounding box surrounding the points. e.g. 0.05 :return: The actor. """ bounds = points.GetBounds() max_len = 0.0 for i in range(0, 3): max_len = max(bounds[i + 1] - bounds[i], max_len) sphere_source = vtkSphereSource() sphere_source.SetRadius(scale * max_len) pd = vtkPolyData() pd.SetPoints(points) mapper = vtkGlyph3DMapper() mapper.SetInputData(pd) mapper.SetSourceConnection(sphere_source.GetOutputPort()) mapper.ScalarVisibilityOff() mapper.ScalingOff() actor = vtkActor() actor.SetMapper(mapper) return actor if __name__ == '__main__': main()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/2 3:07:54

BooleanOperationPolyDataFilter 布尔运算的演示

一:主要的知识点 1、说明 本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程——逐行解析官网所有Python示例-CSDN博客 2、知识点纪要 本段代码主要涉及的有①vtkTriangleFilter三角面化,②…

作者头像 李华
网站建设 2026/2/2 23:42:10

Bottle 一条曲线通过旋转形成一个瓶子的mesh

一:主要的知识点 1、说明 本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程——逐行解析官网所有Python示例-CSDN博客 2、知识点纪要 本段代码主要涉及的有①围绕某个轴旋转进行模型生成 二&#xff…

作者头像 李华
网站建设 2026/2/3 1:06:30

GalTransl完全攻略:10分钟掌握AI游戏翻译黑科技

还在为日文Galgame看不懂而烦恼?想要亲手汉化心仪的游戏却苦于技术门槛?GalTransl正是为你量身打造的AI自动化翻译解决方案,让游戏汉化变得前所未有的简单高效。 【免费下载链接】GalTransl 支持GPT-3.5/GPT-4/Newbing/Sakura等大语言模型的G…

作者头像 李华
网站建设 2026/2/2 23:34:35

11、Unix文本编辑与文件管理全解析

Unix文本编辑与文件管理全解析 1. vi基础入门 在Unix系统中,vi是一款强大的文本编辑器。下面我们来详细了解如何使用vi创建和编辑文本文件。 - 创建新文件 :若要创建一个名为 sample 的新文件,可在终端输入以下命令: $ vi sample执行该命令后,屏幕会显示类似图4 …

作者头像 李华
网站建设 2026/2/2 11:56:22

vue基于Spring Boot的校园体育器材租赁管理系统_142e9vt2

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作具体实现截图 本系统(程序源码数据库调试部署讲解)同时还支持java、ThinkPHP、Node.js、Spring B…

作者头像 李华
网站建设 2026/2/2 10:00:42

全行业AI智能体方案!500+实战案例,从医疗到金融,一站式解锁应用思路

一、项目介绍:全行业AI智能体的“灵感与实战宝库” 在AI智能体技术全面爆发的当下,开发者和企业往往面临“场景落地难、框架选型迷、案例参考少”的三重困境。而GitHub上的500-AI-Agents-Projects项目,正是为破解这些痛点而生的开源资源合集。 该项目由ashishpatel26维护,…

作者头像 李华