ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

PyVista+Trame模型在前端实现高亮

PyVista+Trame模型在前端实现高亮 Trame 是什么Trame是一个由KitwareVTK、ParaView 的开发公司开发的Python Web 应用框架用于将 PyVista、VTK、ParaView 的可视化结果发布到 Web 前端页面上支持交互。可以把 Trame 看成一个桥梁它让 Python 的 3D 可视化内容比如 PyVista通过WebSocket WebGL的方式渲染到浏览器里并添加按钮、滑块、点击等 Vue.js 组件实现“Python 后端 Vue 前端”的组合开发。 PyVista 是什么PyVista是一个开源的 Python 库用于 3D 可视化和网格分析。它基于VTK构建但提供了一个更简洁、更易于使用的接口使得科学家和工程师能够轻松地创建和操作 3D 数据的可视化。以下是一段完整的创建立方体并使用PyVista trame展示在前端的代码:from trame.app import get_server from trame.ui.vuetify3 import SinglePageLayout from trame.widgets import vtk as vtk_widgets import pyvista as pv # 初始化 Trame 服务器 server get_server() state, ctrl server.state, server.controller # 初始化 PyVista plotter plotter pv.Plotter(window_size[800, 600], off_screenTrue) plotter.enable_eye_dome_lighting() # 创建立方体并分面 cube pv.Cube() cube.compute_normals(inplaceTrue) face_actors [] face_meshes [] selected_actor {actor: None} for i in range(cube.n_cells): # 每个面是一个 cell face cube.extract_cells(i) actor plotter.add_mesh(face, colorwhite, namefface_{i}, pickableTrue) face_meshes.append(face) face_actors.append(actor) # 选中高亮回调函数 def on_pick(picked_actor): if picked_actor is None: print(❗ 没有选中任何 actor) return # 清除上一个高亮 if selected_actor[actor]: selected_actor[actor].GetProperty().SetColor(1.0, 1.0, 1.0) # 设置高亮颜色 picked_actor.GetProperty().SetColor(1.0, 0.0, 0.0) selected_actor[actor] picked_actor print(✅ 选中 actor id:, id(picked_actor)) ctrl.view_update() # 强制刷新 Trame 视图 # 启用拾取器 plotter.enable_mesh_picking( callbackon_pick, left_clickingTrue, use_actorTrue, show_messageTrue, showFalse, # 禁用原生提示框 ) # 居中视角 plotter.reset_camera() # Trame 页面布局 with SinglePageLayout(server) as layout: layout.title.set_text(Trame - Cube Face Picker) with layout.content: with vtk_widgets.VtkRemoteView(plotter.ren_win) as view: # 使用 RemoteView 而非 LocalView ctrl.view_update view.update ctrl.view_reset_camera view.reset_camera # 启动服务 if __name__ __main__: server.start()效果点击其中一面该面变成红色实现高亮需求。
返回列表