Variable geometryQualityConst

geometryQuality: inspect.sceneModel.Inspection = ...

Opt-in (InspectSceneModelParams.checkGeometryQuality). Five geometry-quality checks the SDK's createGeometry lifecycle gate doesn't enforce — these are quality concerns, not data-shape errors:

  • GEOMETRY_ZERO_VOLUME_AABB — AABB collapsed to a point or a line segment (one or more axes have zero extent). Likely a single-point / single-line geometry that won't render visibly.
  • GEOMETRY_DEGENERATE_TRIANGLES — one or more triangles have repeated indices (e.g. [7, 7, 12]) or near-zero cross-product magnitude. Render nothing but cost vertex / fragment work.
  • GEOMETRY_UNUSED_VERTICES — positions exist that no indices / edgeIndices entry references. Wasted vertex buffer + per-vertex shader work for non-indexed renders.
  • GEOMETRY_DUPLICATE_VERTICES — two or more vertex slots are byte-identical across every populated attribute (positions, normals, UVs). Coalescing them shrinks the vertex buffer without altering any rendered surface — vertex splitting for genuine seam / crease cases produces different normals or UVs, so those slots wouldn't match.
  • GEOMETRY_NON_WATERTIGHT — primitive is SolidPrimitive but at least one triangle edge is shared by != 2 faces. The geometry isn't actually a closed manifold; downstream pipelines that rely on solid semantics (back-face culling decisions, IFC inside / outside, BVH closed-cell containment) will misbehave.
  • GEOMETRY_INCONSISTENT_WINDING — two or more adjacent triangles traverse a shared edge in the same direction (manifold meshes have each edge traversed in opposite directions by its two faces). Causes backface-cull artefacts: faces randomly disappear depending on the camera side. Independent of GEOMETRY_NON_WATERTIGHT — both can fire on the same mesh.
  • GEOMETRY_AABB_NOT_TIGHT — the actual u16 range used in positionsCompressed covers less than minAabbFill of the available [0, 65535] quantisation grid on at least one axis. Wasted precision; loaders sometimes emit a generous AABB and never re-tighten it.
  • GEOMETRY_DUPLICATE_INDICES — the same triangle (same three vertex ids, in any rotation / winding) appears more than once in indices. Causes invisible overdraw. Distinct from GEOMETRY_DUPLICATE_VERTICES (different vertex slots with identical attribute bytes).

Pure read pass — no mutation. Each issue carries a highlight.objectIds payload built from findSceneObjectsForGeometry so the example UI can locate the affected SceneObjects in the Viewer.