cad_visible_faces — CADMAP visibility op

• Data kinds: mesh → indices

• Call: import fullseye as fs; fs.ledger.cad_visible_faces(mesh, K=None, R=None, t=None, width=64, height=64, cull_backfaces=True, strict=True) (to call the implementation directly, import cadmap; cadmap.cad_visible_faces(mesh, K=None, R=None, t=None, width=64, height=64, cull_backfaces=True, strict=True); from the registry, opscadmap.get("cad_visible_faces"))

Usage

IDs of the faces actually visible from this camera (ascending, indices sort).

Casts rays onto the image grid (width x height, pixel centres at integer coordinates) and collects the nearest faces. Back faces (normal not facing the camera) and faces completely hidden behind nearer faces are not included. It directly returns the inspection coverage -- "which faces of the CAD count as seen from this viewpoint" -- and combined with mesh_area it gives "the uninspected area".

Faces that image smaller than the grid resolution are missed (naturally, since it is sampling). So that a miss is not relabelled as "hidden", what is returned is "the faces that were seen", not "the complement of the unseen faces".

★Only here is the default of strict True (the other 3 use False). The return is a bare index array, so there is nowhere to record the fact that the winding was fixed, and to avoid "silently fixing" the only option here is to reject. Passing an inward-wound closed mesh with cull_backfaces=True left as is raises ValueError. If you want the auto-fix, state strict=False explicitly on the caller's side -- then the user asked for the fix, so even though it is not in the return value, nothing is silent. With cull_backfaces=False the winding direction does not affect the result, so it is not checked either.

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

• The canonical algorithm (author, year) and its uses are named in the family usage guide above.

Runnable examples (verified samples that actually call this op)

• defect_to_cad — py -3.11 examples/defect_to_cad.py

Ops the type connects to (they accept indices as input)

—

Same category (visibility)

—


*Provenance: cadmap.py — CADMAP operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.