使用说明
维兹诺尔
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/docs --完整的工具参考、领域库、架构指南
许可证
麻省理工学院