news 2026/6/9 2:08:48

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/6/9 21:09:24

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

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

作者头像 李华
网站建设 2026/6/9 0:59:40

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

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

作者头像 李华
网站建设 2026/6/9 1:55:03

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

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

作者头像 李华
网站建设 2026/5/31 4:53:04

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

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

作者头像 李华
网站建设 2026/6/9 22:29:39

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

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

作者头像 李华
网站建设 2026/6/8 6:36:05

硅橡胶密封胶703/704/705/706怎么选

卡夫特RTV硅橡胶K-703/704/705/706全系列产品解析与技术选型指南 一、产品矩阵与技术定位 型号核心特性耐温范围透明度典型应用场景703半流淌型,耐冷水性突出-60℃~200℃乳白色水下仪器密封、冷冻设备灌封704通用型,抗垂流优化-60℃~250℃乳白色/黑色车…

作者头像 李华