跳转到主要内容

trame的VTK小部件

项目描述

Test and Release

trame-vtk通过组件扩展trame,这些组件可以与VTK和/或ParaView接口。

trame中的VTK集成允许您通过利用VTK库的Python封装来创建丰富的可视化和数据处理应用程序。有多个组件可供选择,您可以使用VTK进行数据处理和/或渲染。trame允许您选择是否要利用远程渲染,或者客户端是否应该通过底层的vtk.js进行渲染。

安装

trame-vtk可以使用pip安装

pip install --upgrade trame-vtk

用法

前往Trame教程,学习如何使用此库并开始构建您自己的应用程序。

API参考文档提供了API级别的文档。

许可证

trame-vtk 采用 BSD-3-Clause 许可协议提供。更多详情,请参阅 LICENSE。选择此许可是为了与 VTKParaView 使用相同的许可,这些许可可以通过此库公开。

社区

Trame | 讨论 | 问题 | 路线图 | 联系我们

https://zenodo.org/badge/410108340.svg

喜欢 trame 吗?

分享您的体验 通过一个推荐信通过品牌认可

开发:在推送到 PyPI 之前获取客户端

要更新客户端代码,在更新目标版本时运行以下命令行

bash .fetch_externals.sh

Trame 小部件

VtkRemoteView

VtkRemoteView 组件依赖于服务器进行渲染,通过将您的 vtkRenderWindow 绑定到它来简单地通过发送图像到客户端。该组件提供了图像大小和质量的控制,以减少交互时的延迟。

如何使用它?

该组件允许您直接访问 vtk.js 交互器的事件,以便您可以将自己的 Python 方法绑定到它们。可用的事件列表可以在 此处 找到。

该组件还提供了一个方便的方法,在您在 Python 端修改场景时将新图像推送到客户端。

from trame.widgets import vtk

def end():
    pass

remote_view = vtk.vtkRemoteView(
    view=...,               # Instance of vtkRenderWindow (required)
    ref=...,                # Identifier for this component
    interactive_quality=60, # [0, 100] 0 for fastest render, 100 for best quality
    interactive_ratio=...,  # [0.1, 1] Image size scale factor while interacting
    interactor_events=(     # Enable vtk.js interactor events for method binding
        "events",
        ["EndAnimation"],
    ),
    EndAnimation=end,       # Bind method to the enabled event
)

remote_view.update()  # Force image to be pushed to client

示例

VtkLocalView

VtkLocalView 组件依赖于服务器来定义 vtkRenderWindow,但之后只与客户端交换几何形状。服务器不需要 GPU,因为没有在服务器上发生渲染。vtkRenderWindow 仅用于检索场景数据和参数(着色,表示等)。通过依赖相同的 vtkRenderWindow,您可以轻松地从 VtkRemoteView 切换到 VtkLocalView 或反之亦然。该组件提供了控制鼠标交互与摄像机映射的方法。默认设置模拟默认 VTK 交互器样式,因此您很少需要覆盖到 interactor_settings

如何使用它?

该组件允许您直接访问 vtk.js 交互器事件,以便您可以将自己的 Python 方法绑定到它们。可用的事件列表可以在 此处 找到。

该组件还提供了一个方便的方法,在您在 Python 端修改场景时将场景推送到客户端。

from trame.widgets import vtk

def end():
    pass

local_view = vtk.VtkLocalView(
    view=...,                # Instance of vtkRenderWindow (required)
    ref=...,                 # Identifier for this component
    context_name=...,        # Namespace for geometry cache
    interactor_settings=..., # Options for camera controls. See below.
    interactor_events=(      # Enable vtk.js interactor events for method binding
        "events",
        ['EndAnimation'],
    ),
    EndAnimation=end,        # Bind method to the enabled event
)

local_view.update()  # Force geometry to be pushed

交互器设置

对于 interactor_settings,我们期望一个鼠标事件类型列表,并将其链接到操作。以下示例是默认使用的内容

interactor_settings=[
  {
    button: 1,
    action: 'Rotate',
  }, {
    button: 2,
    action: 'Pan',
  }, {
    button: 3,
    action: 'Zoom',
    scrollEnabled: true,
  }, {
    button: 1,
    action: 'Pan',
    shift: true,
  }, {
    button: 1,
    action: 'Zoom',
    alt: true,
  }, {
    button: 1,
    action: 'ZoomToMouse',
    control: true,
  }, {
    button: 1,
    action: 'Roll',
    alt: true,
    shift: true,
  }
]

可以使用以下属性集来标识鼠标事件

属性

描述

button

1, 2, 3

哪个按钮应该按下

shift

true/false

是否按下了 Shift 键

alt

true/false

是否按下了 Alt 键

control

true/false

是否按下了 Ctrl 键

scrollEnabled

true/false

某些操作也可以通过滚动触发

dragEnabled

true/false

主要用于禁用默认的拖动行为

操作可以是以下之一

操作

描述

平移

将在与摄像机垂直的平面上平移对象

缩放

将根据拖动方向更靠近或远离对象进行缩放

旋转

将在视向方向上围绕对象旋转

ZoomToMouse

将在保持鼠标最初下方的位置不变的情况下进行缩放

示例

VtkRemoteLocalView

“VtkRemoteLocalView”组件是“VtkLocalView”和“VtkRemoteView”的结合,用户可以动态选择想要使用的模式。当实例化一个“VtkRemoteLocalView”时,会创建多个变量和触发器,以便更容易地控制视图。

如何使用它?

from trame.html import vtk

rl_view = vtk.VtkRemoteLocalView(
    view=...,                # Instance of vtkRenderWindow (required)

    # Just VtkRemoteLocalView params
    namespace=...,           # Prefix for variables and triggers. See below. (required)
    mode="local",            # Decide between local or remote. See below.

    # VtkRemoteView params
    **remote_view_params,

    # VtkLocalView params
    **local_view_params,
)

rl_view.update_geometry()  # Force update to geometry
rl_view.update_image()     # Force update to image
rl_view.view()             # Get linked vtkRenderWindow instance

命名空间参数

构建一个“VtkRemoteLocalView”会设置一些变量,这些变量以命名空间为前缀。以下示例中使用了“namespace="view"”。

变量

描述

viewId

str表示vtkRenderWindow的ID

viewMode

local`or `remote用于控制向用户显示哪个视图

构建一个“VtkRemoteLocalView”还会设置一些触发器。

触发器

描述

viewCamera

如果没有提供参数调用,服务器会将相机推送到客户端

viewAnimateStart

开始动画循环以持续渲染

viewAnimateStop

停止动画循环

命名空间也将用作ref=,除非用户提供了。

模式参数

模式由变量{namespace}Mode驱动,但可以在实例化时提供,以覆盖默认值并使用JavaScript表达式代替默认变量。此属性的行为与任何trame属性相同,除了我们不会将左侧注册为状态条目,因为我们已经在{namespace}Mode下有一个了。这意味着我们将评估表达式的左侧,假设提供了一个元组,元组的右侧用于设置其初始值。

示例

项目详情


下载文件

下载适用于您平台的应用程序。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

trame-vtk-2.8.10.tar.gz (732.0 kB 查看散列)

上传时间

构建分发

trame_vtk-2.8.10-py3-none-any.whl (747.5 kB 查看散列)

上传于 Python 3

由...支持