Rerun C++ SDK
Loading...
Searching...
No Matches
rerun::archetypes::InstancePoses3D Struct Reference

Archetype: One or more transforms between the current entity and its parent. More...

#include <rerun/archetypes/instance_poses3d.hpp>

Public Types

using IndicatorComponent = rerun::components::IndicatorComponent< IndicatorComponentName >
 Indicator component, used to identify the archetype when converting to a list of components.
 

Public Member Functions

 InstancePoses3D (InstancePoses3D &&other)=default
 
 InstancePoses3D (const InstancePoses3D &other)=default
 
InstancePoses3Doperator= (const InstancePoses3D &other)=default
 
InstancePoses3Doperator= (InstancePoses3D &&other)=default
 
InstancePoses3D with_translations (const Collection< rerun::components::PoseTranslation3D > &_translations) &&
 Translation vectors.
 
InstancePoses3D with_rotation_axis_angles (const Collection< rerun::components::PoseRotationAxisAngle > &_rotation_axis_angles) &&
 Rotations via axis + angle.
 
InstancePoses3D with_quaternions (const Collection< rerun::components::PoseRotationQuat > &_quaternions) &&
 Rotations via quaternion.
 
InstancePoses3D with_scales (const Collection< rerun::components::PoseScale3D > &_scales) &&
 Scaling factors.
 
InstancePoses3D with_mat3x3 (const Collection< rerun::components::PoseTransformMat3x3 > &_mat3x3) &&
 3x3 transformation matrices.
 
Collection< ComponentColumncolumns (const Collection< uint32_t > &lengths_)
 Partitions the component data into multiple sub-batches.
 
Collection< ComponentColumncolumns ()
 Partitions the component data into unit-length sub-batches.
 

Static Public Member Functions

static InstancePoses3D update_fields ()
 Update only some specific fields of a InstancePoses3D.
 
static InstancePoses3D clear_fields ()
 Clear all the fields of a InstancePoses3D.
 

Public Attributes

std::optional< ComponentBatchtranslations
 Translation vectors.
 
std::optional< ComponentBatchrotation_axis_angles
 Rotations via axis + angle.
 
std::optional< ComponentBatchquaternions
 Rotations via quaternion.
 
std::optional< ComponentBatchscales
 Scaling factors.
 
std::optional< ComponentBatchmat3x3
 3x3 transformation matrices.
 

Static Public Attributes

static constexpr const char IndicatorComponentName []
 
static constexpr const char ArchetypeName [] = "rerun.archetypes.InstancePoses3D"
 The name of the archetype as used in ComponentDescriptors.
 
static constexpr auto Descriptor_translations
 ComponentDescriptor for the translations field.
 
static constexpr auto Descriptor_rotation_axis_angles
 ComponentDescriptor for the rotation_axis_angles field.
 
static constexpr auto Descriptor_quaternions
 ComponentDescriptor for the quaternions field.
 
static constexpr auto Descriptor_scales
 ComponentDescriptor for the scales field.
 
static constexpr auto Descriptor_mat3x3
 ComponentDescriptor for the mat3x3 field.
 

Detailed Description

Archetype: One or more transforms between the current entity and its parent.

Unlike archetypes::Transform3D, it is not propagated in the transform hierarchy.

If both archetypes::InstancePoses3D and archetypes::Transform3D are present, first the tree propagating archetypes::Transform3D is applied, then archetypes::InstancePoses3D.

From the point of view of the entity's coordinate system, all components are applied in the inverse order they are listed here. E.g. if both a translation and a max3x3 transform are present, the 3x3 matrix is applied first, followed by the translation.

Currently, many visualizers support only a single instance transform per entity. Check archetype documentations for details - if not otherwise specified, only the first instance transform is applied. Some visualizers like the mesh visualizer used for archetypes::Mesh3D, will draw an object for every pose, a behavior also known as "instancing".

Example

Regular & instance transforms in tandem

image

#include <rerun.hpp>
#include <rerun/demo_utils.hpp>
int main() {
const auto rec = rerun::RecordingStream("rerun_example_instance_pose3d_combined");
rec.set_time_sequence("frame", 0);
// Log a box and points further down in the hierarchy.
rec.log("world/box", rerun::Boxes3D::from_half_sizes({{1.0, 1.0, 1.0}}));
rec.log(
"world/box/points",
rerun::Points3D(rerun::demo::grid3d<rerun::Position3D, float>(-10.0f, 10.0f, 10))
);
for (int i = 0; i <180; ++i) {
rec.set_time_sequence("frame", i);
// Log a regular transform which affects both the box and the points.
rec.log(
"world/box",
rerun::Transform3D::from_rotation(rerun::RotationAxisAngle{
{0.0f, 0.0f, 1.0f},
rerun::Angle::degrees(static_cast<float>(i) * 2.0f)})
);
// Log an instance pose which affects only the box.
rec.log(
"world/box",
{{0.0f, 0.0f, std::abs(static_cast<float>(i) * 0.1f - 5.0f) - 5.0f}}
)
);
}
}
A RecordingStream handles everything related to logging data into Rerun.
Definition recording_stream.hpp:60
Archetype: One or more transforms between the current entity and its parent.
Definition instance_poses3d.hpp:79
InstancePoses3D with_translations(const Collection< rerun::components::PoseTranslation3D > &_translations) &&
Translation vectors.
Definition instance_poses3d.hpp:146
Archetype: A 3D point cloud with positions and optional colors, radii, labels, etc.
Definition points3d.hpp:175
static Angle degrees(float degrees_)
New angle in degrees.
Definition angle.hpp:40
Datatype: 3D rotation represented by a rotation around a given axis.
Definition rotation_axis_angle.hpp:22

Member Function Documentation

◆ columns() [1/2]

Collection< ComponentColumn > rerun::archetypes::InstancePoses3D::columns ( const Collection< uint32_t > &  lengths_)

Partitions the component data into multiple sub-batches.

Specifically, this transforms the existing ComponentBatch data into ComponentColumns instead, via ComponentBatch::partitioned.

This makes it possible to use RecordingStream::send_columns to send columnar data directly into Rerun.

The specified lengths must sum to the total length of the component batch.

◆ columns() [2/2]

Collection< ComponentColumn > rerun::archetypes::InstancePoses3D::columns ( )

Partitions the component data into unit-length sub-batches.

This is semantically similar to calling columns with std::vector<uint32_t>(n, 1), where n is automatically guessed.

Member Data Documentation

◆ IndicatorComponentName

constexpr const char rerun::archetypes::InstancePoses3D::IndicatorComponentName[]
staticconstexpr
Initial value:
=
"rerun.components.InstancePoses3DIndicator"

◆ Descriptor_translations

constexpr auto rerun::archetypes::InstancePoses3D::Descriptor_translations
staticconstexpr
Initial value:
= ComponentDescriptor(
ArchetypeName, "translations",
Loggable<rerun::components::PoseTranslation3D>::Descriptor.component_name
)
static constexpr const char ArchetypeName[]
The name of the archetype as used in ComponentDescriptors.
Definition instance_poses3d.hpp:102

ComponentDescriptor for the translations field.

◆ Descriptor_rotation_axis_angles

constexpr auto rerun::archetypes::InstancePoses3D::Descriptor_rotation_axis_angles
staticconstexpr
Initial value:
= ComponentDescriptor(
ArchetypeName, "rotation_axis_angles",
Loggable<rerun::components::PoseRotationAxisAngle>::Descriptor.component_name
)

ComponentDescriptor for the rotation_axis_angles field.

◆ Descriptor_quaternions

constexpr auto rerun::archetypes::InstancePoses3D::Descriptor_quaternions
staticconstexpr
Initial value:
= ComponentDescriptor(
ArchetypeName, "quaternions",
Loggable<rerun::components::PoseRotationQuat>::Descriptor.component_name
)

ComponentDescriptor for the quaternions field.

◆ Descriptor_scales

constexpr auto rerun::archetypes::InstancePoses3D::Descriptor_scales
staticconstexpr
Initial value:
= ComponentDescriptor(
ArchetypeName, "scales",
Loggable<rerun::components::PoseScale3D>::Descriptor.component_name
)

ComponentDescriptor for the scales field.

◆ Descriptor_mat3x3

constexpr auto rerun::archetypes::InstancePoses3D::Descriptor_mat3x3
staticconstexpr
Initial value:
= ComponentDescriptor(
ArchetypeName, "mat3x3",
Loggable<rerun::components::PoseTransformMat3x3>::Descriptor.component_name
)

ComponentDescriptor for the mat3x3 field.


The documentation for this struct was generated from the following file: