Convert a SceneNode to a SceneGraphNode. Recursive: children are
converted via the same function so the whole tree gets the same
shape.
Per-type stats:
points → pointCount from attrs.n_points
lines → segmentCount + vertexCount from attrs.n_*
gsplats → splatCount from attrs.n_splats
mesh → faceCount + vertexCount from attrs.n_*
other → no extra stats
Specialized groups (kind=lod / kind=partition) additionally carry
kind, the resolved geometry displayType, and a lodGroupChildCount
/ partCount so the monitor tree can render a kind badge + icon (mirrors
ui/layers/layer-state.ts). The node's type stays 'group' so the
stats aggregator keeps treating it as a container — substitutive-LOD
de-duplication lives in calculateSceneGraphStats, keyed off kind.
Convert a
SceneNodeto aSceneGraphNode. Recursive: children are converted via the same function so the whole tree gets the same shape.Per-type stats:
pointCountfromattrs.n_pointssegmentCount+vertexCountfromattrs.n_*splatCountfromattrs.n_splatsfaceCount+vertexCountfromattrs.n_*Specialized groups (
kind=lod/kind=partition) additionally carrykind, the resolved geometrydisplayType, and alodGroupChildCount/partCountso the monitor tree can render a kind badge + icon (mirrorsui/layers/layer-state.ts). The node'stypestays'group'so the stats aggregator keeps treating it as a container — substitutive-LOD de-duplication lives incalculateSceneGraphStats, keyed offkind.