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

HardwareSelector 单元网格面鼠标选择

一:主要的知识点

1、说明

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

2、知识点纪要

本段代码主要涉及的有①vtkHardwareSelector网格面的UI交互选择


二:代码及注释

import vtkmodules.vtkInteractionStyle import vtkmodules.vtkRenderingOpenGL2 from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkFiltersSources import vtkSphereSource from vtkmodules.vtkCommonDataModel import vtkDataObject from vtkmodules.vtkInteractionStyle import vtkInteractorStyleTrackballCamera from vtkmodules.vtkRenderingCore import ( vtkActor, vtkHardwareSelector, vtkPolyDataMapper, vtkRenderWindow, vtkRenderWindowInteractor, vtkRenderer ) from vtkmodules.util.numpy_support import vtk_to_numpy ren1 = vtkRenderer() def main(): colors = vtkNamedColors() sphere = vtkSphereSource() sphere.SetCenter(0, 0, 0) sphere.SetRadius(5.0) sphere.SetThetaResolution(32) sphere.SetPhiResolution(32) mapper = vtkPolyDataMapper() mapper.SetInputConnection(sphere.GetOutputPort()) actor = vtkActor() actor.SetMapper(mapper) actor.GetProperty().SetColor(colors.GetColor3d('Bisque')) ren1.AddActor(actor) ren1.GetActiveCamera().ParallelProjectionOn() ren1.SetBackground(colors.GetColor3d('Navy')) renWin = vtkRenderWindow() renWin.AddRenderer(ren1) renWin.SetSize(400, 400) renWin.SetWindowName('Hardware Selector Example') iren = vtkRenderWindowInteractor() iren.SetRenderWindow(renWin) style = vtkInteractorStyleTrackballCamera() iren.SetInteractorStyle(style) iren.AddObserver("LeftButtonPressEvent", selectionCallback) ren1.ResetCamera() renWin.Render() iren.Initialize() iren.Start() def selectionCallback(caller, ev): click_pos = caller.GetEventPosition() # 获取鼠标在二维渲染平面的坐标 x, y = click_pos print(f"Mouse clicked at: {x}, {y}") """ vtkHardwareSelector 是一个利用 GPU(硬件渲染管线)来快速确定“屏幕上哪个对象被选中”的类 它用显卡的渲染结果来“反查”哪个几何体(actor、cell 或 point)在某个屏幕像素位置。 """ hsel = vtkHardwareSelector() hsel.SetRenderer(ren1) hsel.SetFieldAssociation(vtkDataObject.FIELD_ASSOCIATION_CELLS) # 区域内所有单元 # vtkDataObject.FIELD_ASSOCIATION_POINTS 区域内所有顶点 # vtkDataObject.FIELD_ASSOCIATION_NONE 区域内的所有对象(整几何体) hsel.SetArea(x-2, y-2, x+2, y+2) ren1.GetRenderWindow().Render() res = hsel.Select() if res is None or res.GetNumberOfNodes() < 1: print("No visible cells selected.") return sel_node = res.GetNode(0) """ 在 VTK 中,如果你想做 对象选择(Picking / Selection),通常会用: vtkSelection:表示整个选择结果,可能包含多个节点(Node) vtkSelectionNode:表示一个选择节点,包含具体的选择类型、IDs 等信息 """ sel_list = sel_node.GetSelectionList() if sel_list is None or sel_list.GetNumberOfTuples() == 0: print("Selection list empty.") return ids = vtk_to_numpy(sel_list) print("Visible cell IDs:", ids.tolist()) if __name__ == '__main__': main()
http://www.jsqmd.com/news/232065/

相关文章:

  • ResNet18实战案例:服装品类识别系统部署
  • ResNet18应用指南:智能家居安防系统
  • ResNet18部署教程:集成WebUI的完整步骤
  • 896785
  • ResNet18实战教程:工业缺陷检测系统搭建指南
  • CreateBFont 2D图像的高斯平滑并转化为3D几何体
  • 3541365413
  • ResNet18实战案例:工业机器人视觉
  • ResNet18实战教程:工业缺陷检测系统
  • ResNet18实战:构建高精度图像分类服务
  • ResNet18优化实战:推理吞吐量提升
  • ResNet18部署详解:Serverless架构图像识别
  • Multisim14使用教程:傅里叶分析功能操作指南
  • CubeAxesActor 为几何体添加边框和坐标轴
  • MOSFET基本工作原理图解:开关状态转换详解
  • ResNet18代码详解:从模型加载到推理全流程
  • ResNet18实战指南:构建智能农业监测系统
  • ResNet18部署案例:教育场景应用开发指南
  • USB_Burning_Tool批量模式下固件一致性保障方案
  • DisplacementPlot 结构动态可视化
  • ResNet18实战:5分钟搭建高精度图像分类系统
  • ExponentialCosine 复杂的二维数学函数映射为3D曲面
  • STC89C52控制蜂鸣器演奏乐曲完整指南
  • ResNet18实战:教育智能教具识别系统
  • ResNet18优化实战:量化加速推理的完整步骤
  • 通俗解释波形发生器设计中的频率控制
  • ResNet18实战:智能监控系统物体识别部署案例
  • ResNet18实战:构建高稳定性识别服务的关键
  • ResNet18应用解析:智能交通管理系统
  • ResNet18实战教程:服装分类系统开发