These types mirror Python luxar.core.Mesh and enable type-safe handling of
triangle-surface data throughout the viewer. See
docs/specs/MESH_NODE_SPEC.md.
Two things here differ from the Points/Lines/GSplats siblings, and both are
structural rather than incidental:
No primary size scalar. Points carry radii, Lines widths, GSplats
cholesky_factors — a per-element extent that the loader must know about
because it pads query bounds and drives an instanced quad. A triangle's
extent comes from its own three vertices, so a mesh has nothing of the
kind and adds zero padding to scene bounds (spec §2.2).
Topology, not ranges.LoadedPointsData/LoadedLinesData describe a
subset selected by a spatial-index range query. A mesh is whole-node
resident (spec §7): LoadedMeshData is always the entire mesh, and
what varies with the slice is only which faces are indexed — see
data/mesh/projection.ts.
Mesh type definitions for luxar-viewer.
These types mirror Python
luxar.core.Meshand enable type-safe handling of triangle-surface data throughout the viewer. Seedocs/specs/MESH_NODE_SPEC.md.Two things here differ from the Points/Lines/GSplats siblings, and both are structural rather than incidental:
radii, Lineswidths, GSplatscholesky_factors— a per-element extent that the loader must know about because it pads query bounds and drives an instanced quad. A triangle's extent comes from its own three vertices, so a mesh has nothing of the kind and adds zero padding to scene bounds (spec §2.2).LoadedPointsData/LoadedLinesDatadescribe a subset selected by a spatial-index range query. A mesh is whole-node resident (spec §7): LoadedMeshData is always the entire mesh, and what varies with the slice is only which faces are indexed — seedata/mesh/projection.ts.