六盘水市住房和城乡建设局网站店铺推广策略
2026/4/18 12:38:30 网站建设 项目流程
六盘水市住房和城乡建设局网站,店铺推广策略,土巴兔全包装修怎么样,中建一局一#xff1a;主要的知识点 1、说明 本文只是教程内容的一小段#xff0c;因博客字数限制#xff0c;故进行拆分。主教程链接#xff1a;vtk教程——逐行解析官网所有Python示例-CSDN博客 2、知识点纪要 本段代码主要涉及的有①vtkCellPicker在3D场景中选取几何对象主要的知识点1、说明本文只是教程内容的一小段因博客字数限制故进行拆分。主教程链接vtk教程——逐行解析官网所有Python示例-CSDN博客2、知识点纪要本段代码主要涉及的有①vtkCellPicker在3D场景中选取几何对象②vtkExtractSelection与vtkSelection实现的选择与提取二代码及注释import vtkmodules.vtkRenderingOpenGL2 import vtkmodules.vtkInteractionStyle from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkFiltersSources import vtkPlaneSource from vtkmodules.vtkFiltersCore import vtkTriangleFilter from vtkmodules.vtkRenderingCore import vtkActor, vtkRenderer, vtkRenderWindow, vtkRenderWindowInteractor, \ vtkPolyDataMapper, vtkDataSetMapper, vtkCellPicker from vtkmodules.vtkInteractionStyle import vtkInteractorStyleTrackballCamera from vtkmodules.vtkCommonCore import vtkIdTypeArray from vtkmodules.vtkCommonDataModel import vtkSelection, vtkSelectionNode, vtkUnstructuredGrid from vtkmodules.vtkFiltersExtraction import vtkExtractSelection class MouseInteractorStyle(vtkInteractorStyleTrackballCamera): def __init__(self, data): self.AddObserver(LeftButtonPressEvent, self.left_button_press_event) self.data data self.selected_mapper vtkDataSetMapper() self.selected_actor vtkActor() def left_button_press_event(self, obj, event): colors vtkNamedColors() pos self.GetInteractor().GetEventPosition() vtkCellPicker 用于在3D 场景中通过鼠标点击选取几何对象cells 工作原理 将屏幕坐标 (x, y) 转换为 3D 世界坐标射线ray用这条射线与场景中的几何体逐个求交找到射线距离相机最近的相交点。 picker vtkCellPicker() picker.SetTolerance(0.00005) # 设置拾取容差默认 1e-6 picker.Pick(pos[0], pos[1], 0, self.GetDefaultRenderer()) # 执行拾取操作参数为窗口坐标 world_position picker.GetPickPosition() print(fCell id is: {picker.GetCellId()}) if picker.GetCellId() ! -1: # 表示点击到了某个网格面 print(fPick position is: ({world_position[0]:.6g}, {world_position[1]:.6g}, {world_position[2]:.6g})) 在vtk中不能直接讲一个索引id扔给过滤器进行提取需要一个包含ID、类型和域的完整的选择指令 # 作用存放所有被选中的元素的 ID 列表 ids vtkIdTypeArray() ids.SetNumberOfComponents(1) ids.InsertNextValue(picker.GetCellId()) # 作用定义这次选择的规则和内容这是对ID列表赋予意义的关键 selection_node vtkSelectionNode() selection_node.SetFieldType(vtkSelectionNode.CELL) # 告诉VTK选择的是几何单元(CELL) selection_node.SetContentType(vtkSelectionNode.INDICES) # 告诉VTK选择方法是基于索引而不是位置或者是范围 selection_node.SetSelectionList(ids) # 将前面准备好的 ID 数组 ids 放入这个节点 # 作用定义选择的对象顶级容器用来存储一个或多个选择节点 # 可能希望同时选择“单元 54”和“点 10”这时候就需要多个选择节点 selection vtkSelection() vtkSelection 它代表着 “被选中的一组元素点、单元、块、节点等”是执行选中、高亮、提取等操作的基础数据结构 selection.AddNode(selection_node) vtkExtractSelection vtkSelection 和 vtkExtractSelection 这两个类经常是配合使用的 它们一起构成了 VTK 中实现“选择与提取Selection Extraction”的核心机制 根据 selection 中定义的 ID从 self.data 中剪切出对应的几何体并生成一个新的、更小的数据集 extract_selection vtkExtractSelection() 端口0输入原始数据 端口1vtkSelection对象 extract_selection.SetInputData(0, self.data) extract_selection.SetInputData(1, selection) extract_selection.Update() 将过滤器产生的临时输出数据复制到一个持久的、可供渲染器使用的对象中 selected vtkUnstructuredGrid() selected.ShallowCopy(extract_selection.GetOutput()) print(fNumber of points in the selection: {selected.GetNumberOfPoints()}) print(fNumber of cells in the selection : {selected.GetNumberOfCells()}) self.selected_mapper.SetInputData(selected) self.selected_actor.SetMapper(self.selected_mapper) self.selected_actor.GetProperty().EdgeVisibilityOn() self.selected_actor.GetProperty().SetColor(colors.GetColor3d(Tomato)) self.selected_actor.GetProperty().SetLineWidth(3) self.GetInteractor().GetRenderWindow().GetRenderers().GetFirstRenderer().AddActor(self.selected_actor) 作用是恢复基类的默认交互行为 背景MouseInteractorStyle 继承自 vtkInteractorStyleTrackballCamera 鼠标左键在基类中负责旋转相机在子类中负责单元格的选取 当点集鼠标左键时会有限执行自定义的逻辑再执行self.OnLeftButtonDown()这里是调用了父类的OnLeftButtonDown()方法 保证了执行完自定义的拾取操作之后程序仍然能够执行基类的默认操作——即启动3D场景的旋转 self.OnLeftButtonDown() def main(): colors vtkNamedColors() plane_source vtkPlaneSource() plane_source.SetResolution(10, 10) plane_source.Update() triangle_filter vtkTriangleFilter() triangle_filter.SetInputConnection(plane_source.GetOutputPort()) triangle_filter.Update() mapper vtkPolyDataMapper() mapper.SetInputConnection(triangle_filter.GetOutputPort()) actor vtkActor() actor.SetMapper(mapper) actor.GetProperty().SetColor(colors.GetColor3d(SeaGreen)) actor.GetProperty().EdgeVisibilityOn() renderer vtkRenderer() ren_win vtkRenderWindow() ren_win.AddRenderer(renderer) ren_win.SetWindowName(CellPicking) iren vtkRenderWindowInteractor() iren.SetRenderWindow(ren_win) renderer.AddActor(actor) renderer.SetBackground(colors.GetColor3d(PaleTurquoise)) style MouseInteractorStyle(triangle_filter.GetOutput()) style.SetDefaultRenderer(renderer) iren.SetInteractorStyle(style) ren_win.Render() iren.Initialize() iren.Start() if __name__ __main__: main()

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询