Any additional attributes
OptionaltypeNode type (points, group, etc.)
OptionaltransformTransformation matrix (16 elements for a column-major 4x4 matrix). Typed as a wider readonly number array on the input side because zarr metadata is parsed dynamically; the hasTransform guard narrows it to Matrix4x4 once the length-16 invariant has been verified.
Optionalnd_Per-dimension transforms for non-displayed dimensions
OptionalopacityRendering attributes
OptionalabsorptionOptionalgammaOptionalintensityOptionaloffsetOptionalblending_Optionalpoint_Optionaln_Points metadata
Optionalmax_Optionalposition_Position bounds (nD bounding box)
Optionalextend_Dimensions to extend visibility across (points visible at all values of these dimensions)
Optionalaudio_Sound node attrs (type: "sound", heard not drawn) — the plain store key
holding the clip and whether a positions array exists. The playback and
panner knobs are read through audio/sound-attrs.ts::parseSoundNodeAttrs.
Optionalhas_Optionaln_OptionalarraysArrays in this group
Optionalchild_Insertion order among siblings, stamped by the Python Node on add.
The scene graph is rebuilt from zarr consolidated metadata, whose
enumeration is alphabetical; the loader sorts siblings by this index
to restore napari-style addition order (e.g. the layers panel).
OptionalunitsPhysical units
OptionalcolormapColormap name. Built-in (e.g. 'viridis', 'magma') OR 'custom' — the
latter pairs with a colormap_lut zarr array sibling.
Optionalhas_Whether per-element scalar values are present for colormap lookup.
Optionalscalar_[min, max] range used to normalise scalars before LUT lookup.
Optionalcustombytes loaded from the node's colormap_lut zarr array when
colormap === 'custom'. Populated by SceneLoader.buildSceneGraph
and consumed by NodeFactory via
getColormapTexture('custom', customLutBytes). Not authored at the
zarr level — purely a runtime hand-off.
Zarr group attributes for nodes in the scene graph