fix(tess): sample a solid's faces as finely as the edges drawn over them
The shaded surface of a curved solid was visibly coarser than its own wireframe: the wire ran along the true rim while the facets cut inside it. Two things were wrong, and only one was the tolerance. `facet_res` is a resolution multiplier — the same one `scale_lod` divides the fallback sampler's chord fraction by — and the kernel path was using it as a sag in world units. At the default that asks for a whole unit of departure, so nothing smaller than a metre subdivided at all and a face was only ever as round as its own boundary. It is a fraction of each surface's own radius now, which carries no assumption about the drawing's units. And it is the *edges'* fraction, shared from `EDGE_CHORD_FRAC` rather than copied. Those edges are drawn over these faces; sampling the two differently is what put the wire across a facet instead of along its corners. `facet_res` is deliberately not applied either, since the edges it must line up with are built once at highest detail and never scaled. A torus is measured by its tube rather than its ring — the tube is the tighter bend, and sampling to the ring leaves the section a hexagon. The primitive-volume test claimed a mesh can never read over its true size. That holds for a convex solid, where every chord lies inside; a torus is not one, and across the inside of its tube the chords fall outside the material. It passed before only because the sampling was too coarse to show it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
afb4fd4733
commit
60f5bca0d4
3 changed files with 110 additions and 10 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
|
@ -904,7 +904,7 @@ checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04"
|
|||
[[package]]
|
||||
name = "cadkernel"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/HakanSeven12/cadkernel.git#e3ff882a47c39104e04d07df8297ed02a4a657fe"
|
||||
source = "git+https://github.com/HakanSeven12/cadkernel.git#860b9df7e5fc4a495334a6329560a4cde33659db"
|
||||
dependencies = [
|
||||
"cavalier_contours",
|
||||
]
|
||||
|
|
|
|||
Loading…
Reference in a new issue