Skip to content

signed_deviation_heatmap: sign is unreliable against OPEN thin-walled reference meshes (inner/outer wall flips sign per flank) — document + add robust mode #72

Description

@gsdali

Finding (empirical, kiha40 carbody vs a lofted STEP)

The heatmap rendered one entire body flank +4.5mm proud (red) and the opposite flank −4.5mm shy (blue) — reading as a dramatic roll/registration error. Two independent positional instruments (a dedicated flank-split metric + a synthetic-validated roll estimator, OCCTReconstruct PR #166) measure the same pair of bodies near-symmetric (−0.076mm). The heatmap's SIGN was the artifact:

The reference is an open, thin-walled mesh whose sections contain BOTH the outer skin and inner wall surfaces. For a solid sample point, the nearest reference triangle is sometimes the outer skin (normal outward → one sign) and sometimes the inner wall (normal toward the solid → opposite sign). Winding-number sign is undefined on an open mesh; pseudonormal sign flips per nearest-surface. Result: large, spatially-coherent (per-flank) sign patterns with no real positional asymmetry — the worst kind of artifact, because it looks like a systematic shape error.

Ask

  1. Document the caveat in the tool description: signed output is only trustworthy against watertight/single-surface references; against open thin-wall meshes prefer magnitude + section overlays.
  2. Robust mode: e.g. sign from the reference's OUTER envelope only (filter inner surfaces by ray/visibility or largest-shell), or an explicit unsigned: true render, or per-sample nearest-surface-normal agreement check that greys out sign-ambiguous regions instead of colouring them.

Magnitudes remain useful; it's the sign channel that lies. (Reported from the OCCTReconstruct deep review; the false "roll" diagnosis cost one dispatch cycle.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions