news 2026/4/22 22:33:06

BooleanOperationPolyDataFilter 布尔运算的演示

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
BooleanOperationPolyDataFilter 布尔运算的演示

一:主要的知识点

1、说明

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

2、知识点纪要

本段代码主要涉及的有①vtkTriangleFilter三角面化,②布尔运算


二:代码及注释

import vtkmodules.vtkRenderingOpenGL2 from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkFiltersCore import vtkCleanPolyData, vtkTriangleFilter from vtkmodules.vtkFiltersGeneral import vtkBooleanOperationPolyDataFilter from vtkmodules.vtkFiltersSources import vtkSphereSource from vtkmodules.vtkRenderingCore import ( vtkActor, vtkPolyDataMapper, vtkRenderWindow, vtkRenderWindowInteractor, vtkRenderer ) if __name__ == '__main__': colors = vtkNamedColors() operation = "intersection" # "intersection" "difference" # 没有找到示例代码中示意图的mesh模型,故采用球体去生成展示模型 """ # 展示vtkTriangleFilter和vtkCleanPolyData的用法 poly1 = ReadPolyData(fn1) tri1 = vtkTriangleFilter() tri1.SetInputData(poly1) clean1 = vtkCleanPolyData() clean1.SetInputConnection(tri1.GetOutputPort()) clean1.Update() input1 = clean1.GetOutput() vtkTriangleFilter:把 vtkPolyData 中所有的多边形(四边形、多边形等)统一转换成三角形 vtkCleanPolyData: 作用主要是 清理 / 合并重复或无效的几何数据,让 vtkPolyData 更加规整 """ sphereSource1 = vtkSphereSource() sphereSource1.SetCenter(0.25, 0, 0) sphereSource1.SetThetaResolution(21) sphereSource1.SetPhiResolution(21) sphereSource1.Update() input1 = sphereSource1.GetOutput() sphereSource2 = vtkSphereSource() sphereSource2.Update() input2 = sphereSource2.GetOutput() input1Mapper = vtkPolyDataMapper() input1Mapper.SetInputData(input1) input1Mapper.ScalarVisibilityOff() input1Actor = vtkActor() input1Actor.SetMapper(input1Mapper) input1Actor.GetProperty().SetDiffuseColor(colors.GetColor3d('Tomato')) input1Actor.GetProperty().SetSpecular(0.6) input1Actor.GetProperty().SetSpecularPower(20) input1Actor.SetPosition(input1.GetBounds()[1] - input1.GetBounds()[0], 0, 0) input2Mapper = vtkPolyDataMapper() input2Mapper.SetInputData(input2) input2Mapper.ScalarVisibilityOff() input2Actor = vtkActor() input2Actor.SetMapper(input2Mapper) input2Actor.GetProperty().SetDiffuseColor(colors.GetColor3d('Mint')) input2Actor.GetProperty().SetSpecular(0.6) input2Actor.GetProperty().SetSpecularPower(20) input2Actor.SetPosition(-(input1.GetBounds()[1] - input1.GetBounds()[0]), 0, 0) booleanOperation = vtkBooleanOperationPolyDataFilter() if operation == "union": booleanOperation.SetOperationToUnion() elif operation == "intersection": booleanOperation.SetOperationToIntersection() else: booleanOperation.SetOperationToDifference() booleanOperation.SetInputData(0, input1) booleanOperation.SetInputData(1, input2) booleanOperationMapper = vtkPolyDataMapper() booleanOperationMapper.SetInputConnection(booleanOperation.GetOutputPort()) booleanOperationMapper.ScalarVisibilityOff() booleanOperationActor = vtkActor() booleanOperationActor.SetMapper(booleanOperationMapper) booleanOperationActor.GetProperty().SetDiffuseColor(colors.GetColor3d('Banana')) booleanOperationActor.GetProperty().SetSpecular(0.6) booleanOperationActor.GetProperty().SetSpecularPower(20) renderer = vtkRenderer() renderer.AddViewProp(input1Actor) renderer.AddViewProp(input2Actor) renderer.AddViewProp(booleanOperationActor) renderer.SetBackground(colors.GetColor3d('Silver')) renderWindow = vtkRenderWindow() renderWindow.AddRenderer(renderer) renderWindow.SetSize(640, 480) renderWindow.SetWindowName('BooleanOperationPolyDataFilter') viewUp = [0.0, 0.0, 1.0] position = [0.0, -1.0, 0.0] renderer.GetActiveCamera().SetViewUp(viewUp) renderer.GetActiveCamera().SetPosition(position) renderer.ResetCamera() renderer.GetActiveCamera().Dolly(1.4) renderer.ResetCameraClippingRange() renWinInteractor = vtkRenderWindowInteractor() renWinInteractor.SetRenderWindow(renderWindow) renderWindow.Render() renWinInteractor.Start()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 12:52:14

15、探索 Spotlight 与 I/O 重定向的强大功能

探索 Spotlight 与 I/O 重定向的强大功能 1. 认识元数据与 mdls 命令 在计算机的日常使用中,我们常常会接触到与文件相关的数据,例如文件名、文件大小和创建日期等。但实际上,很多文件还包含了额外的补充信息,这些信息被称为元数据。元数据在 Spotlight 中起着核心作用。…

作者头像 李华
网站建设 2026/4/23 12:53:34

Qt 入门实战(二):HelloWorld 的两种方式与控件内存管理

Qt 学起来挺有意思的,但初学者往往会被一些细节绕晕。 在上一篇博客里,我们讲了 Qt 的环境搭建和基础概念,这篇我们直接来动手做一个最简单的 HelloWorld,顺便把控件的生命周期、堆栈分配、QString 这些关键点顺便梳理一下。一、H…

作者头像 李华
网站建设 2026/4/18 11:30:46

一体化负氧离子传感器:支持24小时连续在线监测,可实时输出数据

一体化负氧离子传感器是一款功能强大且高度集成的环境监测设备,在众多领域发挥着至关重要的作用。从功能上看,它以精准测量负氧离子浓度为核心,同时还能同步监测多种环境参数。像温度、湿度、PM2.5、PM10、气压、氧含量、噪声、风速、风向等&…

作者头像 李华
网站建设 2026/4/22 15:46:29

护网入门平民化挖掘技巧分享(思路+例子)

【网络安全干货】护网行动实战经验分享:漏洞挖掘到内网渗透的完整流程,新手必藏 文章分享了护网行动中的漏洞挖掘和渗透测试经验,包括0day、Nday漏洞利用,白盒与黑盒审计方法,以及普通人可用的指纹识别和接口泄露等技…

作者头像 李华
网站建设 2026/4/23 12:47:07

AI时代产品经理的救命稻草:零基础入门AI产品,薪资暴涨40-60%!

简介 传统产品经理技能在AI时代迅速贬值,63%企业转型AI产品,AI产品人才稀缺且薪资上涨40-60%。文章推广"零基础入门AI产品经理"课程,内容包括AI产品应用原理、行业案例解析和求职辅导,适合产品经理、创业者、程序员等人…

作者头像 李华