news 2026/8/8 0:59:34

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/7/24 15:21:41

问答系统十年演进(2015–2025)

问答系统十年演进(2015–2025) 一句话总论: 2015年问答系统还是“检索规则匹配浅层阅读理解”的信息检索时代,2025年已进化成“万亿级多模态VLA大模型实时意图级推理量子鲁棒自进化全域知识/具身行动问答”的通用智能时代&#xf…

作者头像 李华
网站建设 2026/7/24 2:38:36

对比GPT-4 Turbo:VibeThinker在特定任务上更具性价比

VibeThinker:小模型如何在数学与编程推理中逆袭? 在AI竞赛日益白热化的今天,参数规模似乎成了衡量语言模型能力的“硬通货”——GPT-4 Turbo、Claude 3、Gemini等动辄数百亿甚至上千亿参数的巨无霸们占据了主流视野。它们无所不能&#xff0c…

作者头像 李华
网站建设 2026/8/2 10:59:30

模型加速十年演进(2015–2025)

模型加速十年演进(2015–2025) 一句话总论: 2015年模型加速还是“手工CUDA内核FP32全精度单机多卡”的专家时代,2025年已进化成“端到端编译器量子混合精度自适应VLA大模型实时推理亿级自进化优化”的普惠终极时代,中国…

作者头像 李华
网站建设 2026/7/24 14:30:03

还在手动启停容器?:5分钟实现Docker多容器一键部署与自动恢复

第一章:Docker多容器运行的核心挑战在现代应用架构中,单体服务逐渐被微服务取代,Docker 多容器部署成为常态。然而,多个容器协同工作带来了新的复杂性,涉及网络通信、数据共享、启动顺序和资源隔离等多个方面。容器间网…

作者头像 李华
网站建设 2026/7/26 15:51:46

Keepalived主备切换:VibeThinker编写健康检查脚本

Keepalived主备切换:VibeThinker编写健康检查脚本 在高可用系统架构中,一次误判的主备切换可能比宕机本身更危险——它不仅可能导致服务短暂中断,还可能引发脑裂、数据不一致等连锁问题。传统基于 ping 或进程存活的健康检查方式,…

作者头像 李华