当前位置: 首页 > news >正文

ImplicitPolyDataDistance 隐式距离显示

一:主要的知识点

1、说明

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

2、知识点纪要

本段代码主要涉及的有①vtkImplicitPolyDataDistance计算任意点到几何体表面的符号距离


二:代码及注释

import numpy as np import vtkmodules.vtkRenderingOpenGL2 import vtkmodules.vtkInteractionStyle from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkCommonCore import vtkFloatArray, vtkPoints from vtkmodules.vtkFiltersSources import vtkSphereSource from vtkmodules.vtkFiltersCore import vtkImplicitPolyDataDistance from vtkmodules.vtkCommonDataModel import vtkPolyData from vtkmodules.vtkFiltersGeneral import vtkVertexGlyphFilter from vtkmodules.vtkRenderingCore import ( vtkActor, vtkPolyDataMapper, vtkRenderWindow, vtkRenderWindowInteractor, vtkRenderer ) def main(): colors = vtkNamedColors() sphereSource = vtkSphereSource() sphereSource.SetCenter(0, 0, 0) sphereSource.SetRadius(1.0) sphereSource.Update() sphereMapper = vtkPolyDataMapper() sphereMapper.SetInputConnection(sphereSource.GetOutputPort()) sphereMapper.ScalarVisibilityOff() sphereActor = vtkActor() sphereActor.SetMapper(sphereMapper) # SetOpacity 设置模型是否透明,1完全不透明,0完全透明 sphereActor.GetProperty().SetOpacity(0.3) sphereActor.GetProperty().SetColor(1, 0, 0) """ vtkImplicitPolyDataDistance 计算空间中任意一点到这个多边形几何体表面的符号距离 """ implicitPolyDataDistance = vtkImplicitPolyDataDistance() implicitPolyDataDistance.SetInput(sphereSource.GetOutput()) # 设置隐式距离函数 points = vtkPoints() step = 0.1 for x in np.arange(-2, 2, step): for y in np.arange(-2, 2, step): for z in np.arange(-2, 2, step): points.InsertNextPoint(x, y, z) signedDistance = vtkFloatArray() signedDistance.SetNumberOfComponents(1) signedDistance.SetName("") for pointId in range(points.GetNumberOfPoints()): p = points.GetPoint(pointId) dist_ = implicitPolyDataDistance.EvaluateFunction(p) signedDistance.InsertNextValue(dist_) polyData = vtkPolyData() polyData.SetPoints(points) polyData.GetPointData().SetScalars(signedDistance) """ vtkVertexGlyphFilter 把点集转换成可渲染的几何体 """ vertexGlyphFilter = vtkVertexGlyphFilter() vertexGlyphFilter.SetInputData(polyData) vertexGlyphFilter.Update() signedDistanceMapper = vtkPolyDataMapper() signedDistanceMapper.SetInputConnection(vertexGlyphFilter.GetOutputPort()) signedDistanceMapper.ScalarVisibilityOn() # 根据标量进行着色 signedDistanceActor = vtkActor() signedDistanceActor.SetMapper(signedDistanceMapper) renderer = vtkRenderer() renderer.AddViewProp(sphereActor) renderer.AddViewProp(signedDistanceActor) renderer.SetBackground(colors.GetColor3d('SlateGray')) renderWindow = vtkRenderWindow() renderWindow.AddRenderer(renderer) renderWindow.SetWindowName('ImplicitPolyDataDistance') renWinInteractor = vtkRenderWindowInteractor() renWinInteractor.SetRenderWindow(renderWindow) renderWindow.Render() renWinInteractor.Start() if __name__ == '__main__': main()
http://www.cnnetsun.cn/news/143722.html

相关文章:

  • 57、SQL 网络与分布式数据库全解析
  • MeshLabelImageColor 读取医学标签图像数据(MetaImage 格式)
  • 61、SQL 中的抽象数据类型与继承机制
  • 69、SQL 的现状与未来:专业数据库与市场趋势洞察
  • 68、专业数据库:低延迟、内存与流处理的应用与发展
  • eRPC数据中心网络高效RPC终极配置指南
  • 零基础玩转Moondream2:智能看图说话神器快速上手指南
  • Hasklig编程字体:用连字技术彻底改变你的代码阅读体验
  • 深度解析 Redisson:不仅仅是 Redis 客户端,更是分布式协作利器
  • Kubernetes可视化管理新体验:告别命令行,拥抱kubeasz Dashboard
  • 实战指南:构建基于Google API的自动化SEO监控系统
  • Recon-ng数据导出终极指南:5分钟掌握情报呈现技巧
  • PostHog容器化部署终极方案:从业务价值到技术实现的高效配置指南
  • Rust Web开发完整教程:realworld-axum-sqlx实战指南
  • Tuya-Local终极指南:如何快速配置本地涂鸦设备实现全屋智能控制
  • 基于SpringBoot的高校科研工作管理系统(源码+lw+部署文档+讲解等)
  • 基于springboot + vue电影院购票管理系统
  • Hasklig字体:为什么它能让你的代码阅读体验提升300%?
  • Neovim LSP配置终极指南:快速搭建现代化开发环境
  • IT-Tools终极指南:Vue 3 + TypeScript打造开发者效率神器
  • Weylus 终极指南:3步将平板变身手绘板
  • WeasyPrint终极指南:从HTML到PDF的完整解决方案
  • 基于java + vue校园外卖系统(源码+数据库+文档)
  • Flutter炫酷UI设计模板教程:打造专业级移动应用界面
  • 计算机毕业设计|基于springboot + vue作业管理系统(源码+数据库+文档)
  • 终极MCP测试指南:7天掌握协议全功能验证
  • 为什么Vkvg是下一代2D图形渲染的颠覆者?
  • 基于VUE的客房订房系统[VUE]-计算机毕业设计源码+LW文档
  • DiffSynth-Engine终极指南:构建高性能扩散模型推理管道的完整方案
  • 5层防护构建容器运行时安全屏障:从内核隔离到应用沙箱的深度防御实践