3.25.0
QtMeshEditor 3.25.0
This release completes the Paint v2 layer stack, adds stamp/tiling texture brushes, extends PartOps with explode/join, and cleans up AI segmentation splits for print-ready parts.
🎨 Paint v2 — texture layers (#546)
Replace the single-buffer MVP with a proper layer stack for texture painting.
- Named, reorderable layers with 8 blend modes (Normal, Multiply, Screen, Overlay, Add, Subtract, Soft Light, Hue), per-layer opacity, visibility, solo, and lock
- Inspector Layers panel with thumbnails, add / duplicate / move / merge / flatten / delete
- Live composite during strokes; per-layer stroke undo + structural layer-op undo
- MVP migration: existing painted textures become Layer 0 on first use — no data loss
- Export prompts to flatten multi-layer sessions before writing the texture to disk
- Fixes UV preview multi-stroke lag (stamp spacing reset + immediate GPU upload in the 2D editor)
🖌️ Paint v2 — stamp & tiling brushes (#545)
Builds on Slice A gradient ramps with image-based brush footprints.
- Stamp mode: spacing, scatter, size/opacity jitter, rotation; 6 bundled stamp PNGs under
media/paint/ - Tiling mode: Wood, Brick, and other repeating sources with scale, rotation, and UV offset
- Custom stamp/tiling import via drag-and-drop into
<AppData>/paint/; rename and delete supported - Gradient ramps can modulate stamp colour in the brush portal
🧩 PartOps — explode & join (#862)
Blender-style workflow for segmented meshes (after Split into Parts from 3.24.0).
- Explode: split a multi-submesh entity into independent, movable scene nodes, pushed outward by a configurable distance
- Join: fuse a multi-selection of part nodes back into one mesh, baking each node's world transform into the vertices
- Object-mode Inspector section with logarithmic distance slider; fully undoable (Ctrl+Z)
- Skeleton reconciliation on join is not attempted — merged output is static geometry
✂️ Cleaner AI segmentation splits (#863)
Two post-labelling cleanup passes (default ON) that run on both ONNX and geometric segmentation:
- De-island: reabsorbs small floating face fragments at part junctions into the neighbouring part
- De-fringe: shaves ragged zigzag boundary teeth for cleaner torso/limb seams
- Level leg cuts: pools leg↔torso boundary heights across both legs and applies a shared median cut — fixes lopsided leg splits from asymmetric model output (arms untouched)
📷 Performance Capture on Linux (#927)
Snap and .deb installs can now access the webcam for mocap preview.
- Snap:
cameraplug + bundled FFmpeg libs + corrected Qt multimedia plugin paths - One-time setup on Snap:
snap connect qtmesheditor:camera - Status line guides users when permission is missing
🛠️ Other
- QtMesh Cloud account badges formatted as a table in the welcome UI
Install: Releases · Windows installer / portable zip · macOS .dmg · Linux .deb · Snap
Cross-platform: Windows, Linux, macOS. Full CLI docs: qtmesh --help and in-repo CLAUDE.md.