ZFORGE · SPECTRALMESH · MMXXVI
EIGENSPECTRUM · QUALITY · SCORE

SPECTRALMESH

A 0–100 mesh-quality score from the Laplacian eigenspectrum.

Hard numbers, no guesswork. Compare meshes, gate pipelines, prove the refactor was worth it.

MIT LICENSE BLENDER + CLI PURE NUMPY

FREE · NAME YOUR PRICE

§ 01 / 02

What ships

SpectralMesh Analyzer — Gumroad Product Listing

Product Name

SpectralMesh — Objective Mesh Quality Scoring via Eigenspectrum Analysis

Price

Free (addon + basic CLI) · $9 (Batch CLI Pro with CI integration)

Thumbnail

nostromo-deep/spectral/spec-analysis.svg on #070809 background. "SPECTRALMESH" in deep violet (#5A3A8B).

Short Description (Gumroad summary field, 160 chars)

0-100 mesh quality score via Laplacian eigenspectrum analysis. Blender N-panel + CLI for CI pipelines. The objective QA signal your asset pipeline needs.

Full Description

The problem

"Is this mesh good?" has no objective answer in most 3D workflows. Artists rely on visual inspection, studios rely on manual review, CI pipelines can't verify mesh quality at all. When a mesh fails in production — edges splitting under subdivision, UDIM packing rejecting it, physics sim producing artifacts — you learn about it downstream.

SpectralMesh gives you the answer. One number, 0-100, based on the mathematical fingerprint of your mesh's connectivity and geometry.

How the score is computed

The mesh's discrete Laplacian operator has an eigenspectrum — a sequence of eigenvalues that characterizes the mesh's shape independent of vertex count or tessellation. Different mesh types have different spectral signatures: a clean subdivision surface produces eigenvalues that decay smoothly with regular gaps. A boolean residue with interior faces produces irregular spectra with clumping and discontinuities. A non-manifold mesh produces entirely invalid eigenstructure.

From the eigenspectrum, SpectralMesh extracts three metrics:

Spectral gap (40 points): How well-separated are the mesh's topological features? High gap means clean geometric regions. Low gap means entangled topology.

Eigenvalue decay regularity (30 points): How smoothly does detail distribute across scales? Regular decay = subdivision-ready. Irregular decay = artifacts at specific frequencies.

Euler characteristic validity (30 points): Does the topology make mathematical sense? Closed manifold? Correct genus? Consistent orientation?

The three combine into a single 0-100 score:

  • 85+: Production-ready subdivision surface
  • 60-84: Workable, some cleanup needed
  • 30-59: Significant topology issues
  • Below 30: Broken — boolean residue, non-manifold, degenerate

Blender N-Panel (free)


┌──────────────────────────────────────┐
│  SPECTRALMESH                   v0.1 │
├──────────────────────────────────────┤
│                                      │
│  Quality Score                       │
│  ┌──────────────────────────────┐    │
│  │         ████████ 82          │    │
│  └──────────────────────────────┘    │
│  ■ Production-ready                  │
│                                      │
│  ▾ Breakdown                         │
│    Spectral Gap:     0.342  (40/40)  │
│    Decay Regular.:   0.78   (23/30)  │
│    Euler Valid:       Yes   (30/30)  │
│                                      │
│  ▾ Eigenvalues                       │
│    λ₀ = 0.000  ·                     │
│    λ₁ = 0.342  ████                  │
│    λ₂ = 1.120  ████████████          │
│    λ₃ = 2.870  ████████████████████  │
│                                      │
│  [▶ Analyze]   [Export JSON]         │
└──────────────────────────────────────┘

Select any mesh, click Analyze, get the score. Color-coded: red below 30, yellow 30-60, green above 60. Updates automatically as you edit.

CLI Mode (free, basic)


# Single file
python -m spectralmesh analyze model.obj

# Output
{
  "score": 82,
  "spectral_gap": 0.342,
  "decay_regularity": 0.78,
  "euler_valid": true,
  "eigenvalues": [0.000, 0.342, 1.120, 2.870, ...]
}

Batch CLI Pro ($9)

The Pro version adds batch processing with CI integration:


# Batch an entire asset library
python -m spectralmesh batch ./models/ --output scores.json --threshold 60

# Exit code: 0 if all files above threshold, 1 if any below
echo $?  # 0 or 1

# Generate HTML report
python -m spectralmesh batch ./models/ --format html --output report.html

# Watch mode: auto-rerun on file changes
python -m spectralmesh watch ./models/ --threshold 70

# Studio report: score trends over time
python -m spectralmesh trends ./.spectralmesh-history/ --days 30

This is the studio adoption vector. Drop SpectralMesh into your CI pipeline as a pre-commit hook. Every mesh commit gets a quality check. Below threshold = build fails. No more silently shipping broken meshes.

Real-world use cases

Asset library QA: Run SpectralMesh on every OBJ/FBX in your kitbash library. Filter out everything below 60. Now your library has a quality floor.

Retopology validation: After retopology, score before and after. Confirm the new mesh is objectively better, not just visually different.

Portfolio trust mark: Include the SpectralMesh score in your ArtStation/Gumroad product listings. "Certified by ZForge: 85/100." Buyers know the mesh isn't broken.

Teaching: Students see their decisions reflected in the score in real-time. Collapse a face → score drops. Add a support loop → score rises. Objective feedback replaces subjective critique.

Pipeline health: Track average scores across your studio's asset pool over time. Declining average = training needed. Rising average = process improvements working.

Why this wasn't possible before

The math for spectral mesh analysis has existed since the 1990s (Reuter, Wardetzky, Belkin). But computing eigenvalues of large sparse matrices was expensive and the scoring formulas were research-level. SpectralMesh packages this for practical use:

  • Vectorized cotangent Laplacian construction (150× speedup vs naive)
  • Sparse eigenvalue solver (scipy's eigsh with shift-invert)
  • Scoring calibrated against real-world mesh quality
  • Score stable across tessellation — remesh your mesh to 2× the vertex count, the score changes by less than 3 points

Requirements

  • Blender 4.0+ (for addon)
  • Python 3.10+ with scipy (for CLI)
  • numpy ≥ 1.24
  • zforge-core (bundled)

Tags

blender, addon, cli, mesh-quality, spectral-analysis, eigenspectrum, batch-processing, ci, quality-score, qa

Files

  • spectralmesh-v0.1.0.zip (Blender addon, free)
  • spectralmesh-pro-v0.1.0.zip (Batch CLI Pro, $9)

License

Free version: Personal, commercial, studio use — no restrictions Pro version: Per-seat or site license (contact for studio pricing)

§ 02 / 02

Get it

Primary
Gumroad
Staged. Awaiting Gumroad UI step + GUMROAD_API_TOKEN push.
▸ DRAFT Gumroad store →
Free + Open
zforge-core
Same math substrate. MIT-licensed Python package.
▸ Live · pip install pypi →
DCC marketplace
Unreal · ArtStation
Planned MotionMacro pack + reference frames.
Coming soon Watch this space