科学可视化工具

viznoir是一个无头科学可视化工具,为AI代理提供VTK渲染管道的完整访问,支持从模拟数据到电影质量图像和动画的生成。

  • by kimimgo
  • Python
  • 本地部署
  • 19 星标
  • 更新于
在 GitHub 查看 kimimgo/viznoir

使用说明

维兹诺尔

VTK是您所需要的一切。AI代理的影院级科学可视化。


一个提示→ 物理分析→ 电影渲染→ LaTeX方程→ 准备出版的故事。


它的作用

一个MCP服务器,允许AI代理完全访问VTK的渲染管道——没有ParaView GUI,没有Jupyter笔记本,没有显示服务器。您的代理读取模拟数据,应用过滤器,渲染影院级图像,并导出动画,所有这些都是无头的。

适用于: Claude Code·Cursor·Windsurf·Gemini CLI·任何MCP客户端

快速开始

1.安装

pip install viznoir

# With optional extras
pip install "viznoir[mesh]"       # meshio + trimesh (50+ formats)
pip install "viznoir[composite]"  # Pillow + matplotlib (split_animate)
pip install "viznoir[all]"        # everything

要求Python≥3.10。自动安装VTK控制盘(支持EGL无头渲染)。

2.验证

mcp-server-viznoir --help    # server entry point
python -c "import viznoir; print(viznoir.__version__)"

3.与MCP客户端一起使用

添加到MCP客户端配置(claude_desktop_config.json, ~/.cursor/mcp.json等等):

{
  "mcpServers": {
    "viznoir": {
      "command": "mcp-server-viznoir",
      "env": {
        "VIZNOIR_DATA_DIR": "/path/to/your/simulation/data",
        "VIZNOIR_OUTPUT_DIR": "/path/to/output"
      }
    }
  }
}

然后问你的AI代理:

“打开cavity.oom,用电影般的灯光渲染压力场,然后创建一个物理分解故事。”

4.或者用作Python库(高级)

所有工具实现都是可导入的 async 功能。你提供一个 VTKRunner 和 await 结果:

import asyncio
from viznoir.core.runner import VTKRunner
from viznoir.tools.inspect import inspect_data_impl
from viznoir.tools.render import render_impl

async def main():
    runner = VTKRunner()

    meta = await inspect_data_impl(file_path="cavity.foam", runner=runner)
    print(meta["fields"], meta["timesteps"])

    result = await render_impl(
        file_path="cavity.foam",
        field_name="p",
        runner=runner,
        colormap="Cool to Warm",
        camera="isometric",
        width=1920, height=1080,
        output_filename="pressure.png",
    )
    print(result.file_path)

asyncio.run(main())

看 文档 以获取完整的工具参考。

能力

类别 工具
渲染 render · cinematic_render · batch_render · volume_render
过滤器 slice · contour · clip · streamlines · pv_isosurface
分析 inspect_data · inspect_physics · extract_stats · analyze_data
探测 plot_over_line · integrate_surface · probe_timeseries
动画 animate · split_animate
比较 compare · compose_assets
出口 preview_3d · execute_pipeline

22工具 · 12资源 · 4个提示 · 50+文件格式 (OpenFOAM、VTK、CGNS、Exodus、STL、glTF等)

Showcase——10个域,一个管道

下面的每一帧都是一个MCP工具调用。没有GUI,没有后处理,没有ParaView。 注释已呈现 3D场景内部 通过VTK原生文本演员和引导行——无需Photoshop,无需matplotlib叠加。

医学的
CT颅骨容积
计算流体动力学
燃烧流线
热的
散热器梯度
地球科学
地震波场
汽车
DrivAerML·8.8M细胞
分子
H₂O电子密度
血管的
脑动脉瘤MRA
行星的
贝努·196K三角形
结构性的
悬臂有限元分析应力
体积
热阈值

物理感知动画

七个预设将原始模拟数据转换为可发布的运动——每个预设都将渲染图元绑定到物理现象。

预设 物理 渲染
streamline_growth 拉格朗日平流 粒子路径线随时间的延伸
clip_sweep 压力梯度横截面 移动夹平面
layer_reveal CT密度分类 渐进式等值面叠加
iso_sweep 轨道拓扑 带相机轨道的等值线扫描
warp_oscillation 结构振型 矢量谐波位移翘曲
light_orbit 倾斜照明 旋转按键灯用于材料展示
threshold_reveal 特征层次 阈值从外部剥离→ in

故事构成(compose_assets)

检查→ 渲染→ 注释→ 作曲→ 叙述。一个提示使用LaTeX渲染的控制方程生成4面板物理分解。

布局: story (纵向叙述)· grid (N×M比较)· slides (16:9主题演讲)· video (带过渡的MP4)

完整的互动画廊: https://kimimgo.github.io/viznoir/#showcase

建筑

  prompt                    "Render pressure from cavity.foam"
    │
  MCP Server                22 tools · 12 resources · 4 prompts
    │
  VTK Engine                readers → filters → renderer → camera
    │                       EGL/OSMesa headless · cinematic lighting
  Physics Layer             topology analysis · context parsing
    │                       vortex detection · stagnation points
  Animation                 7 physics presets · easing · timeline
    │                       transitions · compositor · video export
  Output                    PNG · WebP · MP4 · GLTF · LaTeX

数字

22 MCP工具 24 VTK过滤器
10 域名 19 本机文件格式
6/6 VTK数据类型 50+ 通过meshio格式化

文档

主页: kimimgo.github.io/viznoir

开发者文档: kimimgo.github.io/viznoir/docs --完整的工具参考、领域库、架构指南

许可证

麻省理工学院