Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,15 @@ __pycache__/
.mypy_cache/

.tools/
.tmp-blender-user/
*.blend1
*.blend2
*.log

core_build/
build/
dist/
/artifacts/
*.pyd
*.so
*.dylib
45 changes: 45 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Changelog

## 0.4.0 hardening

- Normalize vertex-only bow-ties after QEM by deterministically duplicating
disconnected incident fans without moving geometry or changing face-corner
attributes; true edge-non-manifolds remain rejected.
- Make shrinkwrap projection transactional. Failed or gate-breaking projection
restores the validated candidate and records the rollback reason.
- Add adversarial topology, standalone engine, and Blender projection rollback
regressions grounded in multi-shell photogrammetry parts.

## 0.4.0 - 2026-07-16

- Added Atlas-Q scan analysis and solver portfolio.
- Added target-scale native QEM proxies and deterministic candidate ensembles.
- Added exact conforming PairClosure with UV-seam/material propagation.
- Added area/spatial/component-stratified symmetric RMS, p95, and maximum source
error with preset-specific hard gates.
- Added vertex-fan manifold, true boundary-cycle, component, duplicate-face,
winding, concave/crossed-quad, Jacobian, aspect, and target-count validation.
- Added exact-source versus exact-proxy topology proof status in output and UI.
- Moved area, diagonal, aspect, Jacobian, and fidelity gates into world space so
non-uniform object scale cannot hide stretched quads or large error.
- Added a 60-degree local quad-warpage ceiling and per-component Euler checks.
- Added target-scale preprocessing to direct PairClosure and mode-specific
field/pairing weights; unsafe concave triangle pairs now remain unpaired.
- Added ParityPath sparse quad transitions and deterministic target-aware
selection against the conservative global corner closure.
- Added a topology-gated edge-rotation/QEM unlock for irreducible low-budget
scan proxies; every round is transactional and signature preserving.
- Fixed the old collinear per-triangle pure-quad workaround.
- Fixed duplicate candidate recomputation in TRIAD-Q.
- Fixed boundary edges being reported as non-manifold.
- Fixed orphaned mesh data in Replace mode.
- Preserved material-slot order and isolated baked target materials.
- Made baking transactional: all settings and datablocks roll back on failure.
- Added real isolated install/enable smoke tests for both release zip layouts.
- Added algorithm and photogrammetry workflow documentation, unit coverage, and
release packaging.

## 0.3.0

- Added TRIAD-Q Lite, standalone OBJ I/O, seed-swept pairing, and Blender smoke
coverage.
351 changes: 248 additions & 103 deletions README.md

Large diffs are not rendered by default.

6 changes: 4 additions & 2 deletions __init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,19 @@
bl_info = {
"name": "CurioMesh Quad Remesher",
"author": "CurioCrafter",
"version": (0, 3, 0),
"version": (0, 4, 0),
"blender": (4, 3, 0),
"location": "3D View > N-panel > CurioMesh",
"category": "Mesh",
"description": "QuadriFlow remeshing plus experimental TRIAD-Q Lite quad-dominant retopology",
"description": "Atlas-Q scan-aware quad retopology with explicit validation",
"doc_url": "https://github.com/CurioCrafter/CurioMesh",
}

import bpy

from .operators import (
CURIOMESH_OT_apply_preset,
CURIOMESH_OT_analyze,
CURIOMESH_OT_compute_metrics,
CURIOMESH_OT_remesh,
)
Expand All @@ -23,6 +24,7 @@

classes = (
CURIOMESH_PG_settings,
CURIOMESH_OT_analyze,
CURIOMESH_OT_remesh,
CURIOMESH_OT_apply_preset,
CURIOMESH_OT_compute_metrics,
Expand Down
Loading