mesh_process op• Data kinds: mesh → curvature
• Call: import fullseye as fs; fs.ledger.vertex_curvature(mesh) -> 'np.ndarray' (to call the implementation directly, import mesh_props; mesh_props.vertex_curvature(mesh) -> 'np.ndarray'; from the registry, ops3d.get("vertex_curvature"))
The mean curvature magnitude at each vertex of a triangle mesh. → (N,).
The discrete Laplace-Beltrami operator of Meyer et al. (2003):
K(x_i) = (1 / (2·A_mixed_i)) · Σ_{j∈1-ring} (cot α_ij + cot β_ij)·(x_i − x_j)
equals the mean-curvature normal vector K = 2·H·n (H = mean curvature, n = unit normal). Here the orientation-independent magnitude H_i = |K(x_i)| / 2 is returned. α_ij, β_ij are the 2 angles opposite edge (i,j), and A_mixed is Meyer's mixed area (Voronoi area for non-obtuse triangles, 1/2 or 1/4 of the area for obtuse triangles), which makes the curvature estimate more accurate than the naive barycentric area.
On a sphere of radius R (a closed manifold), H ≈ 1/R at every vertex (within discretisation error). At interior vertices of a plane, H ≈ 0. Limitation (honest): the cotangent Laplace-Beltrami is valid only on closed manifolds / at interior vertices; at the boundary vertices of an open mesh (where the 1-ring does not close) the values become divergently inaccurate. It is meaningful only for closed meshes, or for the interior vertices of an open mesh.
Args:
mesh: tuple of (vertices (N,3), faces (M,3)).
Returns:
(N,) mean-curvature magnitudes (non-negative). Values at boundary vertices are unreliable for the reason above.
Raises:
ValueError: invalid shape, out-of-range index, or a vertex whose mixed area is zero (degenerate).
• blender_interop — Using Blender alongside — build the shape, measure it with fullseye (pitfalls: axes, units, ground truth)
• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).
• Operator provenance and references — the sources of the research/methods this op family came from.
• dl_mesh_curvature — py -3.11 examples_3d/dl_mesh_curvature.py
• mesh_props — py -3.11 examples_3d/mesh_props.py
• minimal_surfaces — py -3.11 examples_3d/minimal_surfaces.py
curvature as input)mesh_process)laplacian_smooth · taubin_smooth · decimate_qem · face_normals · vertex_normals · mesh_area · face_areas · mesh_volume
*Provenance: mesh_props.py — 3D operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.