Surface Mesh — v1.0.6 Changelog

Reworked: Fillet Prep - OFFSET CURVE

Offset Curve on Surface existed in 1.0.5, but you had to point it at a reference surface by hand, and Distance/Samples could only be adjusted afterwards in the F9 "Adjust Last Operation" panel. It's been reworked into a proper workflow for laying out fillet/radius trims at a sharp crease between two panels.

  • Automatic surface and direction detection. If the curve already belongs to one or two panels, the surface and the offset direction are worked out automatically — no manual picking, no sign-guessing. A crease shared by two panels gets both sides' offset curves in a single click.
  • Manual Surface A / Surface B fields remain as a fallback for a freestanding curve that isn't part of a panel yet — this is the old 1.0.5 behaviour, kept for cases auto-detection can't cover.
  • Distance and Samples moved to the sidebar and now update the offset curve live, instead of being buried in the F9 panel where they only applied to the last run.
  • Multi-curve chains. Select two or more connected curves instead of one and they're automatically ordered and oriented into a single continuous chain before offsetting — useful for a crease drawn as several separate pieces.
  • Trim to Boundary Edge (optional) cuts each end of the offset curve exactly where it meets the panel's adjacent boundary edge, so it neither overhangs past that edge nor stops short of it. It extends the curve along its own end tangent first if it falls short, and does nothing at an end that already sits on the edge.
  • Distance is now capped at 0.2. This tool is for the continuous panel gaps a fillet bridges; past that the offset stops tracking the surface usefully.

New: Trim Panel to Offset

  • Trims a panel's boundary back to its offset curve, splitting and reconnecting the two adjacent boundary curves automatically, which makes room for a bridging fillet panel. Select one or both offset curves (for a two-sided crease) and run once.

New: Hermite patch method

At the top of the sidebar, Patch method switches how a panel's surface is built between the original Bilinear Coons and the new Hermite.

  • Bilinear Coons interpolates straight across the panel, which makes it effectively a ruled surface between opposite edges. That has two consequences: the panel can't be tangent-continuous with its neighbours no matter how carefully the edges are placed, and on a narrow panel it amplifies any wobble in those edges — a 0.005 deviation tilts the surface normal by about 0.6° across a 0.5-wide panel but by nearly 6° across a 0.05-wide one, and zebra stripes visibly kink well under a degree. That is why a thin fillet bridging strip looked bumpy while the large panels either side looked fine.
  • Hermite uses the boundary curves' own tangents as well as their positions, so the surface leaves each edge in the direction that edge's curve is actually heading. Match the handle tangents of the short cross curves to the neighbouring panels and the bridge becomes G1-continuous along the whole seam, which Bilinear Coons cannot express at all.
  • Hermite currently requires each boundary to be a single 2-point Bezier segment; anything longer falls back to Bilinear Coons for that panel and says so in the console. Coons remains the default, so nothing changes until you switch.

New: Zebra Stripe Analysis

  • Toggle Zebra Stripes applies a stripe-analysis material to generated panels — the same continuity check used in professional Class-A surfacing tools. A stripe that bends smoothly across a seam means good tangent continuity there; any kink or step means it isn't smooth, regardless of what the numbers say.
  • Zebra Mode chooses how the stripes are anchored:
    • Dynamic measures the normal against the view, so the stripes sweep across the surface as you orbit — the sweeping itself is what makes a break obvious. Because it's camera-relative, it reads correctly from any angle with no per-shot axis picking.
    • Static measures it against a fixed world axis instead, so the bands sit still on the surface however you move the view. Useful for comparing two states or taking a screenshot, where sweeping stripes get in the way.
  • Zebra Axis rotates the stripe direction when a seam runs parallel to them and isn't crossing them clearly. In Dynamic mode this is Horizontal / Vertical relative to the view; in Static mode it's a world X / Y / Z axis, since the view no longer has a say.
  • Three stripe colours, each with its own picker — the lit stripe, a middle band, and the gap. Defaults to a warm amber through dark red to near-black, which reads like a light-booth reflection and is easier on the eyes than plain white over long sessions.
  • Softness blends the edges between those three colours, from perfectly hard (sharpest read, the default) to a soft gradient that looks more like a real reflection. The boundary where the pattern repeats is softened along with the other two, so no single edge stays hard while the rest blur.
  • Zebra Density controls stripe fineness. Every one of these settings updates live.
  • Applies to the selected panel(s), or every generated panel if none are selected. Running it again removes the stripes. Automatically switches the viewport to Material Preview shading so the result is visible immediately.

New: Live preview resolution toggle

  • "Live preview uses export resolution" — when enabled, Auto-update (and undo/redo) regenerate panels at full export quality instead of the faster preview mesh. Useful when fine-tuning highlights or a fillet blend, where the coarser preview mesh can hide or exaggerate problems that aren't really there.

New: Quick-access pie menu

  • Alt+Q in the 3D Viewport opens a pie menu with the 8 most-used actions: New curve, Curve between points, Create surface from selection, Generate all patches, Auto-fix Curve Directions, Merge Endpoints, Toggle Surfaces, Toggle Zebra Stripes. Works from Object Mode or Curve Edit Mode.

New: per-panel curve direction

  • Each panel now stores its own read direction for each of its four boundary curves, shown as a small flip button next to each entry under Boundary curves info. Auto-fix sets these automatically; the buttons let you override any single edge by hand if needed.
  • This is what lets Auto-fix Curve Directions correct a shared edge without duplicating it — see Fixed below.

Changed

  • The Tools section (Auto-fix Curve Directions, Merge Endpoints, Dup shared/Dup all) moved from deep inside the Body Panels list up to the New Surface panel, right under Generate all patches — it's used often enough to deserve to be closer to hand.
  • The Generate and Mirror section moved from Body Panels up to the New Surface panel too, right under Tools, and now shows which panel it's acting on in its header (since it's no longer next to the panel list for context).
  • Each of the three main panels (New surface, Fillet Prep, Body panels) now shows a small icon in its header for faster visual scanning.
  • Section headers (Tools, Generate and Mirror, Boundary curves info, etc.) are slightly taller and use capital letters for better orientation when scanning the sidebar.
  • Removed several static "Info" hint labels from the Fillet Prep panel that were cluttering it without adding ongoing value; the one dynamic hint (which changes based on what's selected) stays.

Fixed

  • Auto-fix Curve Directions duplicated shared curves, breaking the join between panels. Reversing a curve flips it for every panel that shares it, so Auto-fix used to make a private copy for the panel it was fixing. That copy broke the shared edge: the two panels no longer moved together when a point was edited, they drifted apart, and the transition between them degraded. Auto-fix now records a per-panel read direction instead, leaving the curve object — and every neighbour using it — completely untouched. Panels sharing an edge stay joined.
  • Trim Panel to Offset kinked the curve at the trim point. When snapping a trimmed boundary curve onto the offset curve's endpoint, only the point itself was moved and its handles were left behind. Since a Bezier point's shape is defined by its handles relative to itself, this distorted the curve right at the join — a sharp reversal in some cases. The handles now move with the point by the same amount, preserving the curve's shape exactly. This is also why the surrounding mesh looked crushed or folded near a trimmed corner.
  • Offset curve rippling, and the panel built from it rippling with it. Every sample taken along the surface became its own control point on the resulting curve, so tiny errors in where each one landed were reproduced exactly as visible waves — and the patch inherited them. The samples are now least-squares fitted with the same number of cubic spans as the crease curve they came from, which averages the noise out instead of copying it. Measured against a dense reference offset on real panel geometry, the fitted curve was about three times more accurate at low sample counts (0.007 against 0.023). A side effect worth knowing: Samples now means only how finely the surface is measured, and no longer quietly controls how many control points come out, so raising it costs nothing in curve complexity.
  • Offset curve drifting off the surface near a corner or a sharp kink. Three separate causes, all addressed: sampling the surface exactly at a mesh corner, where several boundary faces meet and the reported normal is ambiguous (now sampled slightly inside the corner, where the surface is well defined); a near-degenerate perpendicular direction at a sharp kink in the source curve, where normalizing amplifies noise into an unreliable direction (now rejected rather than trusted); and a surface match landing unexpectedly far from where it was asked for (now rejected). Any point rejected by these checks is filled in by interpolating from its good neighbours, rather than left un-offset.
  • Circle and Half circle created with Free handles. Both primitives set every handle to Free, which never follows later edits to neighbouring points — the same trap as the split-point bug below. A full circle now uses Auto, which reproduces the circle exactly (and is what Blender's own Bezier Circle primitive uses). A half circle uses Auto on its middle point but Aligned on its two ends: Auto at an open end aims the handle along the chord to its only neighbour, a 45-degree swing away from the true tangent that visibly flattens the ends of the arc. Aligned keeps the handles locked to each other exactly as Auto would when dragged, while preserving the precise quarter-arc tangent.
  • Handle type permanently downgraded to Free. Add Point by Click (and the internal splitting logic Trim Panel to Offset uses) used to force the handles next to a new split point to Free, which never follows later edits to neighboring points. Switched to Aligned instead — mathematically identical at the moment of the split, but stays responsive to future edits instead of freezing in place. This was the main cause of seams that looked fine right after a split but "broke" the more the curve network was edited afterward.
  • Curve between points snapping to a hidden, stale corner. After Trim Panel to Offset, the curves it replaces are hidden rather than deleted. The corner-picker used to include hidden objects as valid targets, occasionally snapping a new curve to a leftover corner instead of the visible one that was actually clicked. It now only considers visible curves.
  • Offset direction flips back to wrong when Distance goes negative. With auto-detected direction, dragging Distance past zero into negative values used to undo the detection and push the offset curve back off the surface. Distance is now treated as a pure magnitude whenever the direction is auto-detected; sign no longer has any effect there.
  • Trim Panel to Offset wrongly rejected the normal two-panel case. A crease shared by two panels was being treated as an ambiguous error instead of the expected case; it's now disambiguated using the offset curve's own _a / _b suffix, matching how Offset Curve on Surface created them.
  • Zebra stripes formed a target/bullseye pattern on curved panels, instead of clean parallel bands. Caused by building the stripes from the reflection vector, which traces a specular-highlight-style ring around whatever point directly faces the camera on any domed surface — regardless of axis. Rebuilt using the surface normal in camera space instead, which doesn't have this effect.
  • Zebra Density slider silently doing nothing on a Zebra material created before the density slider (or the later camera-space rework) existed. It now detects an out-of-date material and rebuilds it automatically instead of failing quietly.
  • Crash: NameError: name 'Matrix' is not defined in Offset Curve on Surface, from a missing import.
  • Crash: object not in the active View Layer when updating an offset curve that had been moved to an excluded collection or otherwise unlinked. It's now relinked automatically before being touched.

Upgrading

Existing .blend files open normally — no conversion step. Panels made in 1.0.5 keep their curve assignments, and the new per-panel direction flags default to "not flipped", which is exactly how 1.0.5 already read every curve.

If a panel that Auto-fix repaired in 1.0.5 left behind a duplicated curve (named ..._copy), that copy is still there and still in use. To restore the shared edge, point the panel back at the original curve under Boundary curves info and run Auto-fix again — it will now set a direction flag instead of copying.

Requires Blender 4.5 or newer. If you have an older version of the addon installed, remove it and restart Blender before installing 1.0.6.

New Features

  • Slide Handle Along Axis — new modal tool: select a single handle, drag with the mouse, and it moves strictly along its own current axis (only the length changes, direction stays fixed). On confirm, it restores a sensible handle type (Free/Aligned stay as they were; Automatic/Vector get upgraded to Aligned — matching what native Blender does).
  • Align to View for New Curve and Circle/Half Circle — new curves/circles now orient to the current viewport view by default instead of a fixed world axis. Adjustable afterward via Blender's built-in "Adjust Last Operation" panel (F9).
  • Offset Curve on Surface + new Fillet Prep panel — generates a curve offset from a given crease curve by a chosen distance, following the curvature of a selected reference surface. Used to lay out trim boundaries around sharp creases/character lines.

Bug Fixes

  • Auto-fix Curve Directions — completely reworked algorithm: instead of a greedy, direction-only search, it now checks 384 combinations (curve role assignment × direction) and applies the one that actually connects all 4 corners. This also catches the case where a curve was assigned to the wrong role entirely, not just reversed in direction.
  • Fixed a crash (AttributeError) caused by show_panel_info in the UI panel.
  • Removed the confusing red viewport diagnostics and the distance-listing text box in the panel — replaced with a simple status-bar message.
  • Mirror modifier — fixed a bug where the mirrored half disappeared after Apply. Added Apply Mirror (in place) (safely bakes the result and marks the panel as static so regeneration never overwrites it) and Un-apply (reverts to a live mesh).
  • Removed a duplicate definition of the COONS_OT_generate_all class.
  • Split Curve at Point — no longer hides the original curve if a panel still uses it (which used to silently break that panel's regeneration); still hides it automatically otherwise.
  • Dup shared / Dup all — same fix, since hiding the original was guaranteed to break regeneration on the other panel sharing that curve.
  • Add Point by Click — the point now lands exactly where you click (previously it always landed at the segment midpoint regardless of click position). Uses an exact De Casteljau split.
  • Merge Endpoints — now preserves each point's original handle type (e.g. Automatic) when merging.
$9

Support Period Included

Includes 12 months of

Extend this product’s Support Period +12 months: 25% of product price

Have questions before purchasing?
Login to message

Details
Blender Extension Compatible Yes
Sales 30+
Published about 2 months ago
Blender Version 4.5 - 5.2
Extension Type Add-on
License GPL