news 2026/4/23 12:34:03

StripFran 对比三角形带与数据抽取、采样模型的不同

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
StripFran 对比三角形带与数据抽取、采样模型的不同

一:主要的知识点

1、说明

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

2、知识点纪要

本段代码主要涉及的有①vtkMaskPolyData抽取点或单元格


二:代码及注释

import vtkmodules.vtkRenderingOpenGL2 import vtkmodules.vtkInteractionStyle from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkIOLegacy import vtkPolyDataReader from vtkmodules.vtkFiltersCore import vtkDecimatePro, vtkPolyDataNormals, vtkMaskPolyData, vtkStripper from vtkmodules.vtkRenderingCore import ( vtkActor, vtkCamera, vtkPolyDataMapper, vtkRenderWindow, vtkRenderWindowInteractor, vtkRenderer ) def main(): colors = vtkNamedColors() fileName = "Data/fran_cut.vtk" renderer1 = vtkRenderer() renderer1.SetViewport(0.0, 0.0, 0.5, 1.0) renderer2 = vtkRenderer() renderer2.SetViewport(0.5, 0.0, 1.0, 1.0) renderWindow = vtkRenderWindow() renderWindow.AddRenderer(renderer1) renderWindow.AddRenderer(renderer2) renderWindow.SetWindowName('StripFran') interactor = vtkRenderWindowInteractor() interactor.SetRenderWindow(renderWindow) cyber = vtkPolyDataReader() cyber.SetFileName(fileName) deci = vtkDecimatePro() deci.SetInputConnection(cyber.GetOutputPort()) deci.SetTargetReduction(0.7) deci.PreserveTopologyOn() normals = vtkPolyDataNormals() normals.SetInputConnection(deci.GetOutputPort()) """ vtkMaskPolyData 从一个 vtkPolyData(多边形数据集) 中,按一定规则抽取部分点或单元(cell),而不是使用全部数据 方法 | 功能 SetInputData(polydata)` 指定输入数据 SetOnRatio(n)` 抽样比例:每 n 个点取一个 RandomModeOn()` 开启随机抽样模式(非顺序) SetMaximumNumberOfPoints(m)` 限制输出最大点数 SetRandomSeed(seed)` 控制随机数种子,确保结果可重复 与vtkDecimatePro都是下采样,但是最大的不同在于vtkMaskPolyData无法保证原先的拓扑结构 """ mask = vtkMaskPolyData() mask.SetInputConnection(deci.GetOutputPort()) mask.SetOnRatio(2) cyberMapper = vtkPolyDataMapper() cyberMapper.SetInputConnection(mask.GetOutputPort()) cyberActor = vtkActor() cyberActor.SetMapper(cyberMapper) cyberActor.GetProperty().SetColor(colors.GetColor3d('Flesh')) stripper = vtkStripper() stripper.SetInputConnection(cyber.GetOutputPort()) stripperMask = vtkMaskPolyData() stripperMask.SetInputConnection(stripper.GetOutputPort()) stripperMask.SetOnRatio(2) stripperMapper = vtkPolyDataMapper() stripperMapper.SetInputConnection(stripperMask.GetOutputPort()) stripperActor = vtkActor() stripperActor.SetMapper(stripperMapper) stripperActor.GetProperty().SetColor(colors.GetColor3d('Flesh')) renderer1.AddActor(stripperActor) renderer2.AddActor(cyberActor) renderer1.SetBackground(colors.GetColor3d('Wheat')) renderer2.SetBackground(colors.GetColor3d('Papaya_Whip')) renderWindow.SetSize(1024, 640) cam1 = vtkCamera() cam1.SetFocalPoint(0, 0, 0) cam1.SetPosition(1, 0, 0) cam1.SetViewUp(0, 1, 0) renderer1.SetActiveCamera(cam1) renderer2.SetActiveCamera(cam1) renderer1.ResetCamera() cam1.Azimuth(30) cam1.Elevation(30) cam1.Dolly(1.4) renderer1.ResetCameraClippingRange() interactor.Start() if __name__ == '__main__': main()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 9:53:51

Docker Rollout配置实战(从入门到精通的3大核心要点)

第一章:Docker Rollout概述Docker Rollout 是一种基于容器化技术的应用部署策略,旨在实现应用版本的平滑升级与回滚。通过将应用程序及其依赖打包进轻量级、可移植的容器中,Docker Rollout 能够确保开发、测试与生产环境的一致性,…

作者头像 李华
网站建设 2026/4/23 9:56:32

Codeforces Rating提升秘籍:每天用VibeThinker练一道C题

Codeforces Rating提升秘籍:每天用VibeThinker练一道C题 在算法竞赛的世界里,Rating的每一次跃升背后,都是对思维极限的反复锤炼。无论是Codeforces上的红名梦,还是ICPC赛场上的金牌冲刺,选手们最常面对的问题从来不是…

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

基于Android的医院健康管理平台的设计与实现

本医院健康管理平台基于Android系统开发,综合运用Java语言、MySQL数据库以及协同过滤推荐算法等关键技术,旨在为患者和管理员提供高效、便捷的健康管理服务。在患者功能方面,支持注册登录后,利用协同过滤推荐算法实现健康文章与视…

作者头像 李华
网站建设 2026/4/23 11:33:50

金融风控模型移植中的压力测试:预测“黑天鹅事件”的系统崩溃风险

风控模型移植的挑战与“黑天鹅”威胁 金融风控模型是金融机构的核心防御系统,用于检测欺诈、信用风险和市场波动。当这些模型从旧系统移植到新平台(如云环境或微服务架构)时,数据兼容性、性能衰减和未知漏洞可能导致灾难性崩溃。…

作者头像 李华
网站建设 2026/4/19 8:20:01

‌区块链+测试溯源:不可篡改的缺陷生命周期管理模型‌

引言:缺陷管理的新范式需求 在敏捷开发与DevOps普及的当下,软件测试团队面临两大核心挑战: 溯源断层:缺陷在跨工具(JIRA/禅道/TestRail)流转时关键信息丢失 信任危机:33%的线上事故因缺陷状态…

作者头像 李华