chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
"""Shows how to implement custom archetypes and components."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
from typing import Any
|
||||
|
||||
import numpy as np
|
||||
import numpy.typing as npt
|
||||
import pyarrow as pa
|
||||
|
||||
import rerun as rr
|
||||
|
||||
|
||||
class ConfidenceBatch(rr.ComponentBatchMixin): # type: ignore[misc]
|
||||
"""A batch of confidence data."""
|
||||
|
||||
def __init__(self: Any, confidence: npt.ArrayLike) -> None:
|
||||
self.confidence = confidence
|
||||
|
||||
def as_arrow_array(self) -> pa.Array:
|
||||
"""The arrow batch representing the custom component."""
|
||||
return pa.array(self.confidence, type=pa.float32())
|
||||
|
||||
|
||||
class CustomPoints3D(rr.AsComponents): # type: ignore[misc]
|
||||
"""A custom archetype extending the builtin `Points3D` with extra data."""
|
||||
|
||||
def __init__(
|
||||
self: Any, positions: npt.ArrayLike, confidences: npt.ArrayLike
|
||||
) -> None:
|
||||
self.points3d = rr.Points3D(positions)
|
||||
self.confidences = ConfidenceBatch(confidences).described(
|
||||
rr.ComponentDescriptor(
|
||||
"user.CustomPoints3D:confidences",
|
||||
archetype="user.CustomPoints3D",
|
||||
component_type="user.Confidence",
|
||||
)
|
||||
)
|
||||
|
||||
def as_component_batches(self) -> list[rr.DescribedComponentBatch]:
|
||||
return [
|
||||
# The components from Points3D
|
||||
*self.points3d.as_component_batches(),
|
||||
# Custom confidence data
|
||||
self.confidences,
|
||||
]
|
||||
|
||||
|
||||
def log_custom_data() -> None:
|
||||
lin = np.linspace(-5, 5, 3)
|
||||
z, y, x = np.meshgrid(lin, lin, lin, indexing="ij")
|
||||
point_grid = np.vstack([x.flatten(), y.flatten(), z.flatten()]).T
|
||||
|
||||
rr.log(
|
||||
"left/my_confident_point_cloud",
|
||||
CustomPoints3D(
|
||||
positions=point_grid,
|
||||
confidences=[42],
|
||||
),
|
||||
)
|
||||
|
||||
rr.log(
|
||||
"right/my_polarized_point_cloud",
|
||||
CustomPoints3D(
|
||||
positions=point_grid, confidences=np.arange(0, len(point_grid))
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Logs rich data using the Rerun SDK."
|
||||
)
|
||||
rr.script_add_args(parser)
|
||||
args = parser.parse_args()
|
||||
|
||||
rr.script_setup(args, "rerun_example_custom_data")
|
||||
log_custom_data()
|
||||
rr.script_teardown(args)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user