Releases: variancelog/Mesh2SOFA
Release list
Version 1.6.0
repo reorg into core/, smarter DFHRTF weighting & cut-and-patch
Version 1.5.2
1. Tunnel viewer keyboard navigation (mesh_problem_viewer.py)
- Click-to-select removed; Space=toggle cut loop, Tab/Shift+Tab=cycle handles,
C=apply cut & cap — eliminates the drag-vs-pick conflict. - Qt
eventFilterintercepts Tab/Space before VTK or focus-traversal consumes them. on_successcallback: viewer auto-closes after a successful cut & cap.- Active-handle visual: wider/brighter rings; inactive handles tinted and thinner.
- On-canvas keyboard hint updates every redraw.
2. Post-cut-&-cap auto-revalidation (_project_manager_gui.py)
- Viewer writes
cutcap_report.jsonsentinel on success; GUI detects it in
_after_tunnel_viewer, runsrepair_aligned, then shows a good/bad popup. _after_cutcap_revalidatedreadsaligned_check.jsonand surfaces residual
issues or "All Clear" without requiring the user to re-open Inspect & Fix.
3. New-mesh import safety (_project_manager_gui.py, project_store.py)
- Before importing a new mesh, a confirmation dialog lists existing pipeline
artifacts (aligned mesh, check files, graded meshes, loop exports) and warns
they will be deleted. ProjectStore.list_mesh_artifacts()/reset_mesh_artifacts()enumerate and
delete derived files; basenames logged for traceability.
4. Sliver-collapse simplification (blender_scripts/bmesh_cleanup.py, mesh_inspector.py)
bmesh_cleanup.pyreduced from 5 passes to 2 (remove_doubles+triangulate); extradissolve_degeneratepasses were redundant.- Constants extracted:
MERGE_DETECT_THRESH = 0.295 mm,MERGE_FIX_THRESH = 0.305 mm. - Log messages updated to say "merge-by-distance" throughout.
Version 1.5.1
Fully updated README and minor bug fix to tunnel_loop_extractor.py
Version 1.5.0
v1.5.0 — Formal Mesh Import & Tunnel Repair (2026-06-20)
The biggest quality-of-life improvement to the pre-simulation mesh pipeline. Importing a raw scan is now a fully automated cleaning step, and the interactive tunnel cutter is more robust.
Formal mesh import (Browse → clean → repair)
When you Browse for a raw mesh, the app now automatically runs a full cleaning pipeline before the mesh enters the project: it inspects for defects, removes tiny sliver triangles via Blender, and runs a structural repair pass with pymeshfix. A popup summarizes the result, including a plain-language warning if a topological tunnel is detected (tunnels are noted for later — they can only be fixed after alignment).
Interactive tunnel cutter improvements
The Inspect & Fix viewer now reliably shows both candidate cut loops (green "Cut here" / red "Avoid") even on meshes that were heavily cleaned during import. The cut patches are also remeshed after capping for cleaner geometry.
Align step UI refresh
The alignment step has clearer on-screen instructions, an updated controls list, and corrected landmark labels (nose point is now correctly labelled "Nose Tip" instead of "Nose Bridge").
v1.4.x — Mesh Inspection, Tunnel Cutting & Pipeline Hardening (2026-06-17 – 19)
A major new stage added between "Align and Grade": an interactive mesh inspection and repair tool that ensures the mesh is clean before the BEM simulation.
New Step 2 — Inspect & Fix Mesh
After alignment, a new optional step checks the mesh for holes, non-manifold edges, self-intersections, and topological tunnels (genus > 0 scanning artifacts — "pierced-ear" see-through holes that break BEM). Results are shown in a dialog; you can repair geometry issues automatically or launch the tunnel viewer. Inspect is non-blocking — grading will still proceed with a warning if you skip it.
Interactive tunnel viewer
A dedicated 3D viewer shows all detected mesh problems overlaid on the surface. For tunnels, it draws both candidate cut loops and lets you click a ring to choose which one to cut. Pressing C cuts and caps the tunnel in-app — no Blender required. The window opens immediately and computes the loops in the background so you're never staring at a blank screen.
Re-alignment clears inspection state
Re-aligning a mesh now correctly resets the inspection result, so a freshly aligned mesh is always treated as uninspected.
Loop detection speed
The underlying tunnel loop computation is 3–4× faster on large meshes (~51 s → ~16 s on a 91k-vertex test mesh).
New dependencies since v1.3.0: pymeshfix, networkx (added to requirements.txt). Blender is now required for the mesh import step.
Version 1.3.0
- Integrated resolution mode selection directly into main UI.
- Started adding interactive tooltips to workflow buttons.
- Made project title clickable to open folder in explorer.
- Simplified branding and updated window title logic.
- Updated documentation and added IDEA.md for future tracking.
Version 1.2.1
Added missing requirements.txt. Previous readme installation instructions were incomplete!
Version 1.2.0
Portable Projects
Project folders can now be freely moved or renamed without breaking anything. project.json self-heals on load: base_path is re-derived from the file's own location, and the raw mesh path was already stored relative to it. Just open the JSON from its new location and the full pipeline picks up correctly.
Improved Dialogs
- NumCalc now prompts with three explicit options: Test Only (runs a stability test on both ears), Full Sim, or Cancel. Previously, dismissing the dialog silently started a full simulation.
- Open in Blender prompts when a
.blendalready exists: Open Existing or Overwrite (fresh re-import of graded meshes). Eliminates the duplicate-mesh.001issue on re-import.
Project Settings: Resolution Mode
The on/off toggle in the ⚙ settings dialog is replaced with two explicit radio buttons: Standard Mode (Max 18 kHz, High RAM) and Lowres Mode (Max 16 kHz, Lower RAM). The active mode is now unambiguous at a glance.
Blender Improvements
- Blender is now launched with
DETACHED_PROCESSso its built-in Window > Toggle System Console works on demand (previously blocked by the attached hidden console). - Add-on renamed:
blender_export_project.py→mesh2SOFA_blender_addon.py. Re-install from the new filename if you have the old one registered in Blender preferences. - Default Skin material colour changed from hideous green to warm tan.
Console Cleanup
The GUI console window is now hidden on startup while still allowing child processes (NumCalc, scripts) to run silently in the background.