news 2026/2/28 15:40:49

Rainbow读取和渲染 PLOT3D 格式的流体动力学(CFD)仿真数据

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Rainbow读取和渲染 PLOT3D 格式的流体动力学(CFD)仿真数据

一:主要的知识点

1、说明

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

2、知识点纪要

本段代码主要涉及的有①vtkStructuredGridGeometryFilter网格到几何的过滤器


二:代码及注释

from vtkmodules.vtkIOParallel import vtkMultiBlockPLOT3DReader from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkFiltersGeometry import vtkStructuredGridGeometryFilter from vtkmodules.vtkCommonCore import vtkLookupTable from vtkmodules.vtkRenderingCore import vtkPolyDataMapper, vtkActor, vtkRenderer, vtkRenderWindow, vtkRenderWindowInteractor from vtkmodules.vtkFiltersCore import vtkStructuredGridOutlineFilter def main(): xyzFn, qFn = "Data/combxyz.bin", "Data/combq.bin" colors = vtkNamedColors() pl3d = vtkMultiBlockPLOT3DReader() pl3d.SetXYZFileName(xyzFn) pl3d.SetQFileName(qFn) pl3d.SetScalarFunctionNumber(100) # 使用编号为 100 的数据数组(例如,可能是压力或温度)为提取的平面上色 pl3d.SetVectorFunctionNumber(202) #使用编号为 202 的数据数组(通常是 U, V, $ 速度分量)作为矢量场数据 pl3d.Update() pl3dOutput = pl3d.GetOutput().GetBlock(0) """ vtkStructuredGridGeometryFilter VTK 里一个网格到几何(geometry)转换的过滤器 用于把 vtkStructuredGrid(结构化网格)提取成可以渲染的表面几何数据(vtkPolyData) 它允许你从三维结构化数据中 抽取一个“层面”(比如 i=0 面、j=5 面等), 以便:显示网格表面;可视化内部结构;做切片渲染或剖面可视化 """ plane = vtkStructuredGridGeometryFilter() plane.SetInputData(pl3dOutput) plane.SetExtent(1, 100, 1, 100, 7, 7) lut = vtkLookupTable() lut.SetNumberOfColors(256) lut.SetHueRange(0.0, 0.667) planeMapper = vtkPolyDataMapper() planeMapper.SetLookupTable(lut) plane.SetInputData(pl3dOutput) planeMapper.SetScalarRange(pl3dOutput.GetScalarRange()) planeActor = vtkActor() planeActor.SetMapper(planeMapper) """ vtkStructuredGridOutlineFilter 为一个 vtkStructuredGrid 数据集生成“外框线(outline)”几何模型,用于显示该网格的边界范围 输入:vtkStructuredGrid, 输出:vtkPolyData """ outline = vtkStructuredGridOutlineFilter() outline.SetInputData(pl3dOutput) outlineMapper = vtkPolyDataMapper() outlineMapper.SetInputConnection(outline.GetOutputPort()) outlineActor = vtkActor() outlineActor.SetMapper(outlineMapper) ren1 = vtkRenderer() renWin = vtkRenderWindow() renWin.AddRenderer(ren1) iren = vtkRenderWindowInteractor() iren.SetRenderWindow(renWin) # Add the actors to the renderer, set the background and size. # ren1.AddActor(outlineActor) ren1.AddActor(planeActor) ren1.SetBackground(colors.GetColor3d('SlateGray')) ren1.TwoSidedLightingOff() renWin.SetSize(512, 512) renWin.SetWindowName('Rainbow') iren.Initialize() cam1 = ren1.GetActiveCamera() cam1.SetClippingRange(3.95297, 50) cam1.SetFocalPoint(8.88908, 0.595038, 29.3342) cam1.SetPosition(-12.3332, 31.7479, 41.2387) cam1.SetViewUp(0.060772, -0.319905, 0.945498) iren.Start() if __name__ == '__main__': main()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/28 9:23:37

HeyGem系统能否对接Zoom会议录制视频做后续处理?

HeyGem系统能否对接Zoom会议录制视频做后续处理? 在企业数字化转型的浪潮中,一场普通的Zoom高管会议结束后,如何让这段视频不再沉睡于服务器角落,而是转化为可传播、可复用、多语言适配的标准化数字资产?这正是当前智能…

作者头像 李华
网站建设 2026/2/28 1:59:32

C# 12顶级语句到底有多强:3个你必须掌握的核心用法

第一章:C# 12顶级语句概述C# 12 引入的顶级语句(Top-level statements)特性极大简化了应用程序的入口点定义,使开发者能够以更简洁的方式编写控制台或脚本式程序,无需显式定义类和主方法。简化程序结构 在传统 C# 程序…

作者头像 李华
网站建设 2026/2/28 15:35:25

为什么你的C#程序在Linux上崩溃?(跨平台兼容性深度剖析)

第一章:Shell脚本的基本语法和命令Shell脚本是Linux/Unix系统中自动化任务的核心工具,通过编写一系列命令语句,实现批处理操作、系统监控和运维管理。脚本通常以#!/bin/bash开头,声明解释器路径,确保正确执行。变量定义…

作者头像 李华
网站建设 2026/2/28 15:21:15

知乎答主将热门回答变成HeyGem视频内容

知乎答主将热门回答变成HeyGem视频内容 在信息爆炸的今天,一个优质内容能否被看见,早已不只取决于它的深度,更取决于它是否“适配”当前主流用户的消费习惯。短视频平台日活数亿,用户平均停留时间以分钟计,而一篇知乎高…

作者头像 李华
网站建设 2026/2/27 2:43:31

360快传文件分享HeyGem生成视频给客户查看

HeyGem 数字人视频生成与360快传协同交付实践 在企业数字化内容生产日益高频的今天,如何快速、安全地向客户交付高质量的个性化视频,已成为市场、培训和客服团队面临的核心挑战。传统依赖真人出镜的视频制作方式,不仅周期长、成本高&#xff…

作者头像 李华
网站建设 2026/2/26 22:40:13

网易号作者利用HeyGem打造专属播报形象

HeyGem:如何让普通创作者拥有专属AI播报员? 在内容为王的时代,自媒体人每天都在与时间赛跑。写稿、配音、剪辑、发布——一套流程下来,哪怕只是几分钟的视频,也常常耗费数小时。尤其是像网易号这类图文转视频需求旺盛的…

作者头像 李华