iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >怎么用Python VTK映射三维模型表面距离
  • 704
分享到

怎么用Python VTK映射三维模型表面距离

2023-06-30 04:06:17 704人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍了怎么用python VTK映射三维模型表面距离的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Python VTK映射三维模型表面距离文章都会有所收获,下面我们一起来看

这篇文章主要介绍了怎么用python VTK映射三维模型表面距离的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Python VTK映射三维模型表面距离文章都会有所收获,下面我们一起来看看吧。

数据准备: 需要准备两个stl文件、Python需要安装vtk库

步骤一:数据读取 首先通过vtk.vtkSTLReader() 定义stl文件读取接口,再通过reader1.GetOutput() 就可以获得stl在vtk工作流的数据。

步骤二:去除重复点 通过vtk.vtkCleanPolyData() 可以去除模型中的重复点

步骤三:计算距离 使用 vtk.vtkDistancePolyDataFilter() ,使用上一步中过滤掉重复点后的数据作为输入。如distanceFilter.SetInputConnection(1, clean1.GetOutputPort()), 其中第一个参数就是输入数据的标号,从0开始计数;第二个参数就是输入的数据。我们将vtkDistancePolyDataFilter的输出到mapper就完成距离映射了。

步骤四:颜色配置 lut = vtk.vtkLookupTable() 相当于一个调色盘函数,通过对其参数改变可以,调整最终映射的颜色范围。 scalarBar = vtk.vtkScalarBarActor() 就是颜色条,按照前面的调色盘的结果将距离数值映射成颜色。

import vtkinput1 = vtk.vtkPolyData()reader1 = vtk.vtkSTLReader()reader1.SetFileName('model1.stl')reader1.Update()input1 = reader1.GetOutput()  # 读取模型ainput2 = vtk.vtkPolyData()reader2 = vtk.vtkSTLReader()reader2.SetFileName('model2.stl')reader2.Update()input2 = reader2.GetOutput()  # 读取模型B# 数据合并,可以合并显示两个模型clean1 = vtk.vtkCleanPolyData()clean1.SetInputData(input1)clean2 = vtk.vtkCleanPolyData()clean2.SetInputData(input2)distanceFilter = vtk.vtkDistancePolyDataFilter()distanceFilter.SetInputConnection(1, clean1.GetOutputPort())distanceFilter.SetInputConnection(0, clean2.GetOutputPort())distanceFilter.SignedDistanceOff()distanceFilter.Update()  # 计算距离distanceFilter.GetOutputPort()mapper = vtk.vtkPolyDataMapper()  # 配置mappermapper.SetInputConnection(distanceFilter.GetOutputPort())mapper.SetScalarRange(  # 设置颜色映射范围    distanceFilter.GetOutput().GetPointData().GetScalars().GetRange()[0],    distanceFilter.GetOutput().GetPointData().GetScalars().GetRange()[1])actor = vtk.vtkActor()actor.SetMapper(mapper)actor1 = vtk.vtkActor()actor1.SetMapper(mapper)lut = vtk.vtkLookupTable()lut.SetHueRange(0.2, 0.7)  # 映射的颜色变换参数(自己调颜色)# lut.SetAlphaRange(1.0, 1.0)# lut.SetValueRange(1.0, 1.0)# lut.SetSaturationRange(1.0, 1.0)# lut.SetNumberOfTableValues(256)mapper.SetLookupTable(lut)mapper2 = vtk.vtkPolyDataMapper()mapper2.SetInputData((distanceFilter.GetSecondDistanceOutput()))mapper2.SetScalarRange(  # 设置颜色映射范围    distanceFilter.GetSecondDistanceOutput().GetPointData().GetScalars().GetRange()[0],    distanceFilter.GetSecondDistanceOutput().GetPointData().GetScalars().GetRange()[1])actor2 = vtk.vtkActor()actor2.SetMapper(mapper2)scalarBar = vtk.vtkScalarBarActor()  # 设置color_barscalarBar.SetLookupTable(mapper.GetLookupTable())scalarBar.SetTitle("SD(mm)")scalarBar.SetNumberOfLabels(5)  # 设置要显示的刻度标签数。自己设定色带的位置scalarBar.SetMaximumNumberOfColors(10)# scalarBar.GetPositionCoordinate().SetCoordinateSystemToNORMalizedViewport()# scalarBar.GetPositionCoordinate().SetValue(0.01, 0.49)  # 参数越小越靠左,第二个参数越大越往上# scalarBar.SetWidth(0.16)# scalarBar.SetHeight(0.5)# scalarBar.SetTextPositionToPrecedeScalarBar()  # 标题和刻度标记是否应在标量栏之前(文字会出现在条形左边)# # 设置标题和条形之间的边距# scalarBar.SetVerticalTitleSeparation(10)# # 设置标题颜色scalarBar.DrawTickLabelsOn()scalarBar.GetTitleTextProperty().SetColor(0, 0, 0)scalarBar.GetLabelTextProperty().SetColor(0, 0, 0)arender = vtk.vtkRenderer()arender.SetViewport(0, 0.0, 1, 1.0)renWin = vtk.vtkRenderWindow()renWin.AddRenderer(arender)iren = vtk.vtkRenderWindowInteractor()iren.SetRenderWindow(renWin)style = vtk.vtkInteractorStyleTrackballActor()iren.SetInteractorStyle(style)aCamera = vtk.vtkCamera()aCamera.SetViewUp(0, 0, -1)aCamera.SetPosition(0, -1, 0)aCamera.ComputeViewPlaneNormal()aCamera.Azimuth(30.0)aCamera.Elevation(30.0)aCamera.Dolly(1.5)arender.AddActor(actor)# arender.AddActor(actor1)arender.SetActiveCamera(aCamera)arender.ResetCamera()arender.SetBackground(1, 1, 1)arender.ResetCameraClippingRange()arender.AddActor2D(scalarBar)renWin.Render()iren.Initialize()iren.Start()

结果示例:

怎么用Python VTK映射三维模型表面距离

关于“怎么用Python VTK映射三维模型表面距离”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“怎么用Python VTK映射三维模型表面距离”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网Python频道。

--结束END--

本文标题: 怎么用Python VTK映射三维模型表面距离

本文链接: https://www.lsjlt.com/news/327424.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python VTK映射三维模型表面距离
    数据准备: 需要准备两个stl文件、Python需要安装vtk库 步骤一:数据读取 首先通过vtk.vtkSTLReader() 定义stl文件读取接口...
    99+
    2024-04-02
  • 怎么用Python VTK映射三维模型表面距离
    这篇文章主要介绍了怎么用Python VTK映射三维模型表面距离的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Python VTK映射三维模型表面距离文章都会有所收获,下面我们一起来看...
    99+
    2023-06-30
  • Python-VTK怎么批量读取二维切片并显示三维模型
    这篇文章主要介绍“Python-VTK怎么批量读取二维切片并显示三维模型”,在日常操作中,相信很多人在Python-VTK怎么批量读取二维切片并显示三维模型问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Pyt...
    99+
    2023-06-30
  • Python映射类型中dict怎么用
    这篇文章给大家分享的是有关Python映射类型中dict怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。映射类型 - dict字典可用多种方式来创建:使用花括号内以逗号分隔键: 值对的方式: {&ls...
    99+
    2023-06-29
  • python怎么使用Evidently创建机器学习模型仪表板
    这篇文章主要讲解了“python怎么使用Evidently创建机器学习模型仪表板”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python怎么使用Evidently创建机器学习模型仪表板”吧...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作