news 2026/4/16 19:09:56

DisplacementPlot 结构动态可视化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DisplacementPlot 结构动态可视化

一:主要的知识点

1、说明

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

2、知识点纪要

本段代码主要涉及的有①vtkWarpVector 根据向量场对几何体进行形变


二:代码及注释

import vtkmodules.vtkInteractionStyle import vtkmodules.vtkRenderingOpenGL2 from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkIOLegacy import vtkPolyDataReader from vtkmodules.vtkFiltersGeneral import vtkWarpVector from vtkmodules.vtkFiltersCore import vtkPolyDataNormals, vtkVectorDot from vtkmodules.vtkCommonCore import vtkLookupTable from vtkmodules.vtkRenderingCore import vtkColorTransferFunction, vtkActor, vtkDataSetMapper, vtkRenderer, \ vtkRenderWindow, vtkRenderWindowInteractor def main(): colors = vtkNamedColors() file_name, color_scheme = "Data/plate.vtk", 0 plate = vtkPolyDataReader() plate.SetFileName(file_name) plate.SetVectorsName("mode8") # 指定从输入的 .vtk 文件中读取哪个数据数组作为主要的矢量数据 plate.Update() """ vtkWarpVector 根据向量场对几何体进行形变 """ warp = vtkWarpVector() warp.SetInputConnection(plate.GetOutputPort()) warp.SetScaleFactor(0.5) normals = vtkPolyDataNormals() normals.SetInputConnection(warp.GetOutputPort()) """ vtkVectorDot 主要用于计算两个向量场之间的点积,并把结果作为一个新的标量场输出 """ color = vtkVectorDot() # 在这里只有一个输入,因此计算的是法向矢量与活动矢量之间的点积 color.SetInputConnection(normals.GetOutputPort()) lut = vtkLookupTable() MakeLUT(color_scheme, lut) plateMapper = vtkDataSetMapper() plateMapper.SetInputConnection(color.GetOutputPort()) plateMapper.SetLookupTable(lut) plateMapper.SetScalarRange(-1, 1) plateActor = vtkActor() plateActor.SetMapper(plateMapper) ren = vtkRenderer() renWin = vtkRenderWindow() renWin.AddRenderer(ren) iren = vtkRenderWindowInteractor() iren.SetRenderWindow(renWin) ren.AddActor(plateActor) ren.SetBackground(colors.GetColor3d("Wheat")) renWin.SetSize(512, 512) renWin.SetWindowName('DisplacementPlot') ren.GetActiveCamera().SetPosition(13.3991, 14.0764, 9.97787) ren.GetActiveCamera().SetFocalPoint(1.50437, 0.481517, 4.52992) ren.GetActiveCamera().SetViewAngle(30) ren.GetActiveCamera().SetViewUp(- 0.120861, 0.458556, - 0.880408) ren.GetActiveCamera().SetClippingRange(12.5724, 26.8374) renWin.Render() iren.Start() def MakeLUT(colorScheme, lut): nc = 256 ctf = vtkColorTransferFunction() if colorScheme == 1: ctf.SetColorSpaceToDiverging() ctf.AddRGBPoint(0.0, 0.085, 0.532, 0.201) ctf.AddRGBPoint(0.5, 0.865, 0.865, 0.865) ctf.AddRGBPoint(1.0, 0.436, 0.308, 0.631) lut.SetNumberOfTableValues(nc) lut.Build() for i in range(0, nc): rgb = list(ctf.GetColor(float(i) / nc)) rgb.append(1) lut.SetTableValue(i, *rgb) elif colorScheme == 2: nc2 = nc / 2.0 lut.SetNumberOfColors(nc) lut.Build() for i in range(0, int(nc2)): # White to black. v = (nc2 - i) / nc2 lut.SetTableValue(i, v, v, v, 1) for i in range(int(nc2), nc): # Black to white. v = (i - nc2) / nc2 lut.SetTableValue(i, v, v, v, 1) else: ctf.SetColorSpaceToDiverging() ctf.AddRGBPoint(0.0, 0.230, 0.299, 0.754) ctf.AddRGBPoint(1.0, 0.706, 0.016, 0.150) lut.SetNumberOfTableValues(nc) lut.Build() for i in range(0, nc): rgb = list(ctf.GetColor(float(i) / nc)) rgb.append(1.0) lut.SetTableValue(i, *rgb) if __name__ == '__main__': main()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 13:02:17

ResNet18技术解析:ImageNet预训练模型的应用

ResNet18技术解析:ImageNet预训练模型的应用 1. 通用物体识别中的ResNet18:从理论到落地 1.1 深度学习时代的图像分类演进 在计算机视觉的发展历程中,图像分类是最早被深度神经网络攻克的核心任务之一。2012年AlexNet的横空出世标志着卷积…

作者头像 李华
网站建设 2026/4/16 11:16:01

ResNet18实战指南:构建智能农业监测系统

ResNet18实战指南:构建智能农业监测系统 1. 引言:通用物体识别在智能农业中的价值 随着人工智能技术的普及,通用物体识别正成为智能农业系统的核心能力之一。从田间作物生长状态监测、病虫害识别,到农机设备自动巡检、牲畜行为分…

作者头像 李华
网站建设 2026/4/16 15:33:38

ResNet18实战案例:打造稳定物体识别服务

ResNet18实战案例:打造稳定物体识别服务 1. 引言:通用物体识别中的ResNet18价值 在当前AI应用快速落地的背景下,通用物体识别已成为智能监控、内容审核、辅助交互等场景的核心能力。然而,许多开发者面临模型依赖外部API、响应延…

作者头像 李华
网站建设 2026/4/15 15:23:19

嵌入式Linux中ioctl接口的完整指南

嵌入式Linux中ioctl接口的实战解析:从入门到避坑 你有没有遇到过这样的场景?想通过程序设置串口波特率,却发现 write() 函数无能为力;或者要读取一个传感器的状态寄存器,但 read() 只能返回原始数据流。这时候&…

作者头像 李华
网站建设 2026/4/16 12:21:49

三极管开关模式详解:超详细版硬件设计指南

三极管开关设计实战指南:从原理到避坑全解析在嵌入式和电源系统中,你可能已经用过无数个MOSFET、DC-DC芯片甚至智能栅极驱动器。但当你翻开发烧友的电路板或拆开一台老式家电时,总会发现那个熟悉的身影——一个小小的三极管,正默默…

作者头像 李华
网站建设 2026/4/16 11:08:01

ResNet18应用场景:从日用品到自然风景识别

ResNet18应用场景:从日用品到自然风景识别 1. 引言:通用物体识别中的ResNet18价值 在计算机视觉领域,图像分类是基础且关键的任务之一。无论是智能相册自动打标签、电商平台商品识别,还是安防系统中的异常物品检测,背…

作者头像 李华