diff --git a/crates/re_types/definitions/rerun/archetypes/points2d.fbs b/crates/re_types/definitions/rerun/archetypes/points2d.fbs new file mode 100644 index 0000000000000..10d5c3361ca52 --- /dev/null +++ b/crates/re_types/definitions/rerun/archetypes/points2d.fbs @@ -0,0 +1,62 @@ +include "fbs/attributes.fbs"; + +include "rerun/datatypes.fbs"; +include "rerun/components.fbs"; + +namespace rerun.archetypes; + +// --- + +// TODO(cmc): archetype IDL definitions must always be tables +// TODO(cmc): archetype IDL definitions must refer to objects of kind component + +/// A 2D point cloud with positions and optional colors, radii, labels, etc. +table Points2D ( + "rust.attr.derive": "Debug, Clone, PartialEq", + order: 100 +) { + // --- Required --- + + /// All the actual 2D points that make up the point cloud. + points: [rerun.components.Point2D] ("rerun.attr.component_required", required, order: 1000); + + // --- Recommended --- + + /// Optional radii for the points, effectively turning them into circles. + radii: [rerun.components.Radius] ("rerun.attr.component_recommended", order: 2000); + + /// Optional colors for the points. + /// + /// \python The colors are interpreted as RGB or RGBA in sRGB gamma-space, + /// \python As either 0-1 floats or 0-255 integers, with separate alpha. + colors: [rerun.components.Color] ("rerun.attr.component_recommended", order: 2100); + + // --- Optional --- + + /// Optional text labels for the points. + labels: [rerun.components.Label] ("rerun.attr.component_optional", order: 3000); + + /// An optional floating point value that specifies the 2D drawing order. + /// Objects with higher values are drawn on top of those with lower values. + /// + /// The default for 2D points is 30.0. + draw_order: rerun.components.DrawOrder ("rerun.attr.component_optional", order: 3100); + + /// Optional class Ids for the points. + /// + /// The class ID provides colors and labels if not specified explicitly. + class_ids: [rerun.components.ClassId] ("rerun.attr.component_optional", order: 3200); + + /// Optional keypoint IDs for the points, identifying them within a class. + /// + /// If keypoint IDs are passed in but no class IDs were specified, the class ID will + /// default to 0. + /// This is useful to identify points within a single classification (which is identified + /// with `class_id`). + /// E.g. the classification might be 'Person' and the keypoints refer to joints on a + /// detected skeleton. + keypoint_ids: [rerun.components.KeypointId] ("rerun.attr.component_optional", order: 3300); + + /// Unique identifiers for each individual point in the batch. + instance_keys: [rerun.components.InstanceKey] ("rerun.attr.component_optional", order: 3400); +}