Nodes/ComfyUI libigl/ParaView Filter
ComfyUI Node

ParaView Filter

Scientific visualization filters on your meshes, without ParaView

By PozzettiAndrea·Created 10 months ago·Updated 4 days ago· 218
ParaView Filter
  • trimesh
  • filtered_mesh
filter_typecurvature_gaussian
axisZ
factor1.0
scalar_field
angle30

If your 3D work ever crosses into "how curved is this surface?" or "show me the elevation gradient" territory, you're doing scientific visualization, and the tool for that is ParaView's family of VTK filters. ParaView Filter brings a handful of those filters into the graph via PyVista, computes them on your mesh, and stashes the results as vertex/face attributes - which the pack's field-aware preview nodes will happily colorize for you.

It's part of ComfyUI-GeometryPack ("ComfyUI libigl") by Andrea Pozzetti. If you're coming from pure image-generation ComfyUI, this is the node that marks where this pack stops being "image but 3D" and starts being an engineering toolkit.

How it works

The node converts your TRIMESH to a PyVista mesh, runs the chosen VTK filter, and converts back - carrying the computed fields along as vertex_attributes. The filter_type combo is the whole show:

  • curvature_gaussian (default) and curvature_mean - compute curvature per vertex and write it to a curvature attribute. Gaussian finds the "how bendy is the surface" signal; mean curvature is smoother and more forgiving. This is the classic dent/feature detector.
  • cell_sizes - per-face area, written to the face attributes. Handy for spotting stretched or degenerate triangles.
  • elevation - a height ramp along an axis (axis, default Z). Pure coloring, great for topology-style reads of a surface.
  • feature_edges - extracts the sharp edges using an angle threshold (angle, default 30°). Returns an edge mesh with a feature_edge marker, useful for finding creases and boundaries.
  • warp_by_scalar - displaces vertices along a scalar_field you name, scaled by factor. The one that actually changes geometry instead of just analyzing it; it needs a pre-existing vertex attribute to warp by.

The supporting inputs are all contextual: axis for elevation/warp direction, factor for warp strength, scalar_field for warp_by_scalar (must match an existing attribute name or it errors, helpfully listing what's available), and angle for feature edges. The output is a single filtered_mesh TRIMESH.

The catch

It needs PyVista, which the pack installs as part of its environment. That's a heavyweight dependency, and the code will throw a clear ImportError telling you to pip install pyvista if it's missing. Also note it requires a mesh with faces - feed it a point cloud and it refuses.

Install

Same as the rest of the pack: search "GeometryPack" in ComfyUI Manager, or:

cd ComfyUI/custom_nodes
git clone https://github.com/PozzettiAndrea/ComfyUI-GeometryPack.git
cd ComfyUI-GeometryPack
pip install -r requirements.txt --upgrade
python install.py

Restart after. The pack's comfy-env installer drags in pixi and the heavy 3D environment; PyVista arrives with it, so if this node 404s from your menu, check the console for the skipped-import warning before reinstalling.

Where it fits

The intended flow is filter → preview: run curvature, then drop the result into Preview Mesh (Analysis) or Preview Mesh (Dual) in fields mode and the computed attribute renders as a colormap. That combination is where "look at my mesh" turns into "look at my mesh's Gaussian curvature distribution," which is a real analytical step, not decoration. The pack is WIP with fast releases, and this node in particular leans on a lot of third-party surface area - if a filter misbehaves after an update, report it on GitHub Discussions, that's the author's stated channel.

Categorygeompack/paraview

Inputs (6)

NameTypeDefaultDescription
trimeshTRIMESH
filter_typeCOMBOcurvature_gaussian6 options: curvature_gaussian, curvature_mean, cell_sizes, elevation, feature_edges, warp_by_scalar
axisoptCOMBOZAxis for elevation or warp direction
factoroptFLOAT1.0-100–100Scale factor for warp_by_scalar
scalar_fieldoptSTRINGVertex attribute name for warp_by_scalar
angleoptFLOAT300–180Feature edge angle threshold (degrees)

Outputs (1)

NameTypeDescription
filtered_meshTRIMESH