news 2026/1/12 22:50:54

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/1/11 11:16:56

Happy LLM:Github爆火!手把手教你从0手搓个大模型!

最近刷 GitHub 时刷到一个挺有意思的开源项目:Happy LLM它在GitHub上十分火热,已经收获13.8k⭐。 它是 Datawhale 出品的,教你从0搭建一个215M的大模型!这套 LLM 学习材料啊,是从自然语言处理的基础知识开始讲的。之后…

作者头像 李华
网站建设 2026/1/8 13:31:08

SSM线上学习系统8e88w(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面

系统程序文件列表系统项目功能:学院,课程,教师,学生,课程信息,学习记录SSM线上学习系统开题报告一、课题背景与意义1.1 课题背景在“互联网教育”政策推动下,线上学习已成为教育模式的重要组成部分。然而当前部分线上学习工具存在功能单一、数据割裂等问…

作者头像 李华
网站建设 2026/1/12 12:37:54

深度解析:MindsDB与ChromaDB向量数据库集成的高效实战指南

深度解析:MindsDB与ChromaDB向量数据库集成的高效实战指南 【免费下载链接】mindsdb mindsdb/mindsdb: 是一个基于 SQLite 数据库的分布式数据库管理系统,它支持多种数据存储方式,包括 SQL 和 NoSQL。适合用于构建分布式数据库管理系统&#…

作者头像 李华
网站建设 2025/12/26 9:03:23

32、深入了解Samba与Linux安全策略

深入了解Samba与Linux安全策略 在当今复杂的网络环境中,无论是实现不同操作系统间的资源共享,还是保障系统的安全性,都是至关重要的任务。Samba作为实现Linux与Windows系统资源共享的关键工具,以及Linux系统安全策略的制定与实施,对于系统的稳定运行和数据安全起着举足轻…

作者头像 李华
网站建设 2026/1/4 9:47:28

26、调试 Shell 程序的实用方法

调试 Shell 程序的实用方法 在编程过程中,调试是不可或缺的环节。对于使用 bash 进行 UNIX 编程的开发者来说,虽然 bash 具备丰富的特性和控制结构,但缺乏像 C 和 C++ 那样强大且集成的编程支持工具。不过,bash 自身也提供了一些实用的调试功能,下面将详细介绍。 基本调…

作者头像 李华
网站建设 2025/12/28 4:37:38

Symbolic 英文单词学习

1️、基本信息单词:symbolic词性:形容词发音: 🇺🇸 /sɪmˈbɑː.lɪk/🇬🇧 /sɪmˈbɒl.ɪk/词源: 来自希腊语 symbolikos(象征的、符号的),由 s…

作者头像 李华