Struct re_types::archetypes::Boxes3D
source · pub struct Boxes3D {
pub half_sizes: Vec<HalfSizes3D>,
pub centers: Option<Vec<Position3D>>,
pub rotations: Option<Vec<Rotation3D>>,
pub colors: Option<Vec<Color>>,
pub radii: Option<Vec<Radius>>,
pub labels: Option<Vec<Text>>,
pub class_ids: Option<Vec<ClassId>>,
pub instance_keys: Option<Vec<InstanceKey>>,
}Expand description
Archetype: 3D boxes with half-extents and optional center, rotations, rotations, colors etc.
Example
Batch of 3D boxes
//! Log a batch of oriented bounding boxes.
fn main() -> Result<(), Box<dyn std::error::Error>> {
let (rec, storage) =
rerun::RecordingStreamBuilder::new("rerun_example_box3d_batch").memory()?;
rec.log(
"batch",
&rerun::Boxes3D::from_centers_and_half_sizes(
[(2.0, 0.0, 0.0), (-2.0, 0.0, 0.0), (0.0, 0.0, 2.0)],
[(2.0, 2.0, 1.0), (1.0, 1.0, 0.5), (2.0, 0.5, 1.0)],
)
.with_rotations([
rerun::Rotation3D::IDENTITY,
rerun::Quaternion::from_xyzw([0.0, 0.0, 0.382683, 0.923880]).into(), // 45 degrees around Z
rerun::RotationAxisAngle::new((0.0, 1.0, 0.0), rerun::Angle::Degrees(30.0)).into(),
])
.with_radii([0.025])
.with_colors([
rerun::Color::from_rgb(255, 0, 0),
rerun::Color::from_rgb(0, 255, 0),
rerun::Color::from_rgb(0, 0, 255),
])
.with_labels(["red", "green", "blue"]),
)?;
rerun::native_viewer::show(storage.take())?;
Ok(())
}Fields§
§half_sizes: Vec<HalfSizes3D>All half-extents that make up the batch of boxes.
centers: Option<Vec<Position3D>>Optional center positions of the boxes.
rotations: Option<Vec<Rotation3D>>§colors: Option<Vec<Color>>Optional colors for the boxes.
radii: Option<Vec<Radius>>Optional radii for the lines that make up the boxes.
labels: Option<Vec<Text>>Optional text labels for the boxes.
class_ids: Option<Vec<ClassId>>Optional ClassIds for the boxes.
The class ID provides colors and labels if not specified explicitly.
instance_keys: Option<Vec<InstanceKey>>Unique identifiers for each individual boxes in the batch.
Implementations§
source§impl Boxes3D
impl Boxes3D
pub fn with_centers( self, centers: impl IntoIterator<Item = impl Into<Position3D>> ) -> Self
pub fn with_rotations( self, rotations: impl IntoIterator<Item = impl Into<Rotation3D>> ) -> Self
pub fn with_colors( self, colors: impl IntoIterator<Item = impl Into<Color>> ) -> Self
pub fn with_radii( self, radii: impl IntoIterator<Item = impl Into<Radius>> ) -> Self
pub fn with_labels( self, labels: impl IntoIterator<Item = impl Into<Text>> ) -> Self
pub fn with_class_ids( self, class_ids: impl IntoIterator<Item = impl Into<ClassId>> ) -> Self
pub fn with_instance_keys( self, instance_keys: impl IntoIterator<Item = impl Into<InstanceKey>> ) -> Self
source§impl Boxes3D
impl Boxes3D
sourcepub fn from_half_sizes(
half_sizes: impl IntoIterator<Item = impl Into<HalfSizes3D>>
) -> Self
pub fn from_half_sizes( half_sizes: impl IntoIterator<Item = impl Into<HalfSizes3D>> ) -> Self
Creates new Boxes3D with Self::half_sizes centered around the local origin.
sourcepub fn from_centers_and_half_sizes(
centers: impl IntoIterator<Item = impl Into<Position3D>>,
half_sizes: impl IntoIterator<Item = impl Into<HalfSizes3D>>
) -> Self
pub fn from_centers_and_half_sizes( centers: impl IntoIterator<Item = impl Into<Position3D>>, half_sizes: impl IntoIterator<Item = impl Into<HalfSizes3D>> ) -> Self
Creates new Boxes3D with Self::centers and Self::half_sizes.
sourcepub fn from_sizes(sizes: impl IntoIterator<Item = impl Into<Vec3D>>) -> Self
pub fn from_sizes(sizes: impl IntoIterator<Item = impl Into<Vec3D>>) -> Self
Creates new Boxes3D with Self::half_sizes created from (full) sizes.
TODO(#3285): Does not preserve data as-is and instead creates half-sizes from the input data.
sourcepub fn from_centers_and_sizes(
centers: impl IntoIterator<Item = impl Into<Position3D>>,
sizes: impl IntoIterator<Item = impl Into<Vec3D>>
) -> Self
pub fn from_centers_and_sizes( centers: impl IntoIterator<Item = impl Into<Position3D>>, sizes: impl IntoIterator<Item = impl Into<Vec3D>> ) -> Self
Creates new Boxes3D with Self::centers and Self::half_sizes created from centers and (full) sizes.
TODO(#3285): Does not preserve data as-is and instead creates half-sizes from the input data.
sourcepub fn from_mins_and_sizes(
mins: impl IntoIterator<Item = impl Into<Vec3D>>,
sizes: impl IntoIterator<Item = impl Into<Vec3D>>
) -> Self
pub fn from_mins_and_sizes( mins: impl IntoIterator<Item = impl Into<Vec3D>>, sizes: impl IntoIterator<Item = impl Into<Vec3D>> ) -> Self
Creates new Boxes3D with Self::centers and Self::half_sizes created from minimums and (full) sizes.
TODO(#3285): Does not preserve data as-is and instead creates centers and half-sizes from the input data.
Trait Implementations§
source§impl Archetype for Boxes3D
impl Archetype for Boxes3D
§type Indicator = GenericIndicatorComponent<Boxes3D>
type Indicator = GenericIndicatorComponent<Boxes3D>
source§fn name() -> ArchetypeName
fn name() -> ArchetypeName
rerun.archetypes.Points2D.source§fn indicator() -> MaybeOwnedComponentBatch<'static>
fn indicator() -> MaybeOwnedComponentBatch<'static>
source§fn required_components() -> Cow<'static, [ComponentName]>
fn required_components() -> Cow<'static, [ComponentName]>
source§fn recommended_components() -> Cow<'static, [ComponentName]>
fn recommended_components() -> Cow<'static, [ComponentName]>
source§fn optional_components() -> Cow<'static, [ComponentName]>
fn optional_components() -> Cow<'static, [ComponentName]>
source§fn all_components() -> Cow<'static, [ComponentName]>
fn all_components() -> Cow<'static, [ComponentName]>
source§fn from_arrow(
arrow_data: impl IntoIterator<Item = (Field, Box<dyn Array>)>
) -> DeserializationResult<Self>
fn from_arrow( arrow_data: impl IntoIterator<Item = (Field, Box<dyn Array>)> ) -> DeserializationResult<Self>
source§impl AsComponents for Boxes3D
impl AsComponents for Boxes3D
source§fn as_component_batches(&self) -> Vec<MaybeOwnedComponentBatch<'_>>
fn as_component_batches(&self) -> Vec<MaybeOwnedComponentBatch<'_>>
ComponentBatchs. Read more