Finding either piece of documentation currently means knowing it exists and
going looking for it outside the application, which is the hardest moment to
do that: the panel has a lot of controls and the feature is new.
Add two borderless icon buttons to the panel header, next to the dock toggle,
opening the video walkthrough and the wiki page in the default browser. Both
icons follow the set's existing convention of a grey outline with a teal
accent, so they read as part of the same panel.
Unwrapped, it ran past the edge of the panel and pulled the layout with
it. Counts under a million now read in thousands, so a 119 k budget is
no longer shown as 0.1 M.
They described the implementation, and a few no longer matched the code.
Each now says what the control does and in what units; five controls that
had no tooltip have one. The catalogs need regenerating.
Relief preserved from an earlier bake is counted on top of the budget
instead of eating into it: baking a second area went from ~214 k
triangles to the ~1000 k it was given.
When the resolution needs more triangles than the budget allows, it is
said before the bake under Resolution and again afterwards.
A layer split into ~1000 colour fragments (a colour texture baked over a
large top face) made several per-fragment loops redo whole-layer ClipperLib
work, so slicing took ~33 min; it now takes ~3 min with the same output.
- make_fills: clip the layer's no-overlap area to each expolygon's box
before intersecting
- discover_vertical_shells: small-piece filter compares only against the
nearby part of the layer
- bridge_over_infill: whole-layer union/diff/intersections restricted to the
candidate's neighbourhood; fill boundary expanded once per spacing; anchor
tree built only from lines crossing the scan range; bbox pre-check in the
collision test; limiting outline taken directly instead of through
expand(..., 0.3 * flow.spacing()), which offsets by 0.135 scaled units
(flow.spacing() is in mm) and only cost a whole-layer pass per candidate
- Bake job: include GUI.hpp for show_error()
- Texture panel: select/erase whole model next to the paint tools, brush
size slider back on the same row
- Bake: each layer is sampled only on its own painted area; analytic
projections used to stack every layer over every painted region, so the
top layer's texture showed on all of them (colour sampler too)
- Auto resolution follows the texture's texel size and sharpness again
- Unwrap: charts cut by each face's own normal (a cube gives 6 islands, not
12 triangles); non-disk charts (tubes, closed shells) are split until they
flatten; connected nets test real triangle overlap, grow from the largest
chart and are packed side by side
- UV edits are stored per unwrapped copy, so dragging a seam vertex no
longer moves its copies in neighbouring islands
- UV pane: tool strip with unwrap settings moved in from the panel, sharp
HiDPI icons, clearer island/edge/selection drawing with hover, texture
picker from the thumbnail, texture no longer lost on reopen (GL state
from the 3D view, background upload retries)
- Panel: whole-model select/erase as icons in the tools row; inactive
layers' paint shown muted; colour textures shown in colour in the picker
- Built-in displacement texture library
- Tests for unwrap segmentation, connected nets, UV edits and per-layer
sampling