pymomentum-cpu 0.1.84.post0__cp313-cp313-macosx_14_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pymomentum-cpu might be problematic. Click here for more details.
- include/axel/BoundingBox.h +59 -0
- include/axel/Bvh.h +708 -0
- include/axel/BvhBase.h +75 -0
- include/axel/BvhCommon.h +43 -0
- include/axel/BvhEmbree.h +86 -0
- include/axel/BvhFactory.h +34 -0
- include/axel/Checks.h +21 -0
- include/axel/DualContouring.h +79 -0
- include/axel/KdTree.h +199 -0
- include/axel/Log.h +22 -0
- include/axel/MeshToSdf.h +123 -0
- include/axel/Profile.h +64 -0
- include/axel/Ray.h +45 -0
- include/axel/SignedDistanceField.h +248 -0
- include/axel/SimdKdTree.h +515 -0
- include/axel/TriBvh.h +157 -0
- include/axel/TriBvhEmbree.h +57 -0
- include/axel/common/Constants.h +27 -0
- include/axel/common/Types.h +21 -0
- include/axel/common/VectorizationTypes.h +58 -0
- include/axel/math/BoundingBoxUtils.h +54 -0
- include/axel/math/ContinuousCollisionDetection.h +48 -0
- include/axel/math/CoplanarityCheck.h +30 -0
- include/axel/math/EdgeEdgeDistance.h +31 -0
- include/axel/math/MeshHoleFilling.h +117 -0
- include/axel/math/PointTriangleProjection.h +34 -0
- include/axel/math/PointTriangleProjectionDefinitions.h +209 -0
- include/axel/math/RayTriangleIntersection.h +36 -0
- include/momentum/character/blend_shape.h +91 -0
- include/momentum/character/blend_shape_base.h +70 -0
- include/momentum/character/blend_shape_skinning.h +96 -0
- include/momentum/character/character.h +272 -0
- include/momentum/character/character_state.h +108 -0
- include/momentum/character/character_utility.h +128 -0
- include/momentum/character/collision_geometry.h +80 -0
- include/momentum/character/collision_geometry_state.h +130 -0
- include/momentum/character/fwd.h +262 -0
- include/momentum/character/inverse_parameter_transform.h +58 -0
- include/momentum/character/joint.h +82 -0
- include/momentum/character/joint_state.h +241 -0
- include/momentum/character/linear_skinning.h +139 -0
- include/momentum/character/locator.h +82 -0
- include/momentum/character/locator_state.h +43 -0
- include/momentum/character/marker.h +48 -0
- include/momentum/character/mesh_state.h +71 -0
- include/momentum/character/parameter_limits.h +144 -0
- include/momentum/character/parameter_transform.h +250 -0
- include/momentum/character/pose_shape.h +65 -0
- include/momentum/character/skeleton.h +85 -0
- include/momentum/character/skeleton_state.h +227 -0
- include/momentum/character/skeleton_utility.h +38 -0
- include/momentum/character/skin_weights.h +67 -0
- include/momentum/character/skinned_locator.h +80 -0
- include/momentum/character/types.h +202 -0
- include/momentum/character_sequence_solver/fwd.h +200 -0
- include/momentum/character_sequence_solver/model_parameters_sequence_error_function.h +65 -0
- include/momentum/character_sequence_solver/multipose_solver.h +65 -0
- include/momentum/character_sequence_solver/multipose_solver_function.h +82 -0
- include/momentum/character_sequence_solver/sequence_error_function.h +104 -0
- include/momentum/character_sequence_solver/sequence_solver.h +144 -0
- include/momentum/character_sequence_solver/sequence_solver_function.h +134 -0
- include/momentum/character_sequence_solver/state_sequence_error_function.h +109 -0
- include/momentum/character_sequence_solver/vertex_sequence_error_function.h +123 -0
- include/momentum/character_solver/aim_error_function.h +112 -0
- include/momentum/character_solver/collision_error_function.h +92 -0
- include/momentum/character_solver/collision_error_function_stateless.h +75 -0
- include/momentum/character_solver/constraint_error_function-inl.h +324 -0
- include/momentum/character_solver/constraint_error_function.h +248 -0
- include/momentum/character_solver/distance_error_function.h +77 -0
- include/momentum/character_solver/error_function_utils.h +60 -0
- include/momentum/character_solver/fixed_axis_error_function.h +139 -0
- include/momentum/character_solver/fwd.h +924 -0
- include/momentum/character_solver/gauss_newton_solver_qr.h +64 -0
- include/momentum/character_solver/limit_error_function.h +57 -0
- include/momentum/character_solver/model_parameters_error_function.h +64 -0
- include/momentum/character_solver/normal_error_function.h +73 -0
- include/momentum/character_solver/orientation_error_function.h +74 -0
- include/momentum/character_solver/plane_error_function.h +102 -0
- include/momentum/character_solver/point_triangle_vertex_error_function.h +141 -0
- include/momentum/character_solver/pose_prior_error_function.h +80 -0
- include/momentum/character_solver/position_error_function.h +75 -0
- include/momentum/character_solver/projection_error_function.h +93 -0
- include/momentum/character_solver/simd_collision_error_function.h +99 -0
- include/momentum/character_solver/simd_normal_error_function.h +157 -0
- include/momentum/character_solver/simd_plane_error_function.h +164 -0
- include/momentum/character_solver/simd_position_error_function.h +165 -0
- include/momentum/character_solver/skeleton_error_function.h +151 -0
- include/momentum/character_solver/skeleton_solver_function.h +94 -0
- include/momentum/character_solver/skinned_locator_error_function.h +166 -0
- include/momentum/character_solver/skinned_locator_triangle_error_function.h +146 -0
- include/momentum/character_solver/skinning_weight_iterator.h +80 -0
- include/momentum/character_solver/state_error_function.h +94 -0
- include/momentum/character_solver/transform_pose.h +80 -0
- include/momentum/character_solver/trust_region_qr.h +80 -0
- include/momentum/character_solver/vertex_error_function.h +155 -0
- include/momentum/character_solver/vertex_projection_error_function.h +117 -0
- include/momentum/character_solver/vertex_vertex_distance_error_function.h +147 -0
- include/momentum/common/aligned.h +155 -0
- include/momentum/common/checks.h +27 -0
- include/momentum/common/exception.h +70 -0
- include/momentum/common/filesystem.h +20 -0
- include/momentum/common/fwd.h +27 -0
- include/momentum/common/log.h +173 -0
- include/momentum/common/log_channel.h +17 -0
- include/momentum/common/memory.h +71 -0
- include/momentum/common/profile.h +79 -0
- include/momentum/common/progress_bar.h +37 -0
- include/momentum/common/string.h +52 -0
- include/momentum/diff_ik/ceres_utility.h +73 -0
- include/momentum/diff_ik/fully_differentiable_body_ik.h +58 -0
- include/momentum/diff_ik/fully_differentiable_distance_error_function.h +69 -0
- include/momentum/diff_ik/fully_differentiable_motion_error_function.h +46 -0
- include/momentum/diff_ik/fully_differentiable_orientation_error_function.h +114 -0
- include/momentum/diff_ik/fully_differentiable_pose_prior_error_function.h +76 -0
- include/momentum/diff_ik/fully_differentiable_position_error_function.h +138 -0
- include/momentum/diff_ik/fully_differentiable_projection_error_function.h +65 -0
- include/momentum/diff_ik/fully_differentiable_skeleton_error_function.h +160 -0
- include/momentum/diff_ik/fully_differentiable_state_error_function.h +54 -0
- include/momentum/diff_ik/fwd.h +385 -0
- include/momentum/diff_ik/union_error_function.h +67 -0
- include/momentum/gui/rerun/eigen_adapters.h +70 -0
- include/momentum/gui/rerun/logger.h +102 -0
- include/momentum/gui/rerun/logging_redirect.h +27 -0
- include/momentum/io/character_io.h +56 -0
- include/momentum/io/common/gsl_utils.h +50 -0
- include/momentum/io/common/stream_utils.h +65 -0
- include/momentum/io/fbx/fbx_io.h +161 -0
- include/momentum/io/fbx/fbx_memory_stream.h +66 -0
- include/momentum/io/fbx/openfbx_loader.h +62 -0
- include/momentum/io/fbx/polygon_data.h +60 -0
- include/momentum/io/gltf/gltf_builder.h +132 -0
- include/momentum/io/gltf/gltf_file_format.h +19 -0
- include/momentum/io/gltf/gltf_io.h +148 -0
- include/momentum/io/gltf/utils/accessor_utils.h +299 -0
- include/momentum/io/gltf/utils/coordinate_utils.h +60 -0
- include/momentum/io/gltf/utils/json_utils.h +102 -0
- include/momentum/io/legacy_json/legacy_json_io.h +70 -0
- include/momentum/io/marker/c3d_io.h +30 -0
- include/momentum/io/marker/conversions.h +57 -0
- include/momentum/io/marker/coordinate_system.h +30 -0
- include/momentum/io/marker/marker_io.h +56 -0
- include/momentum/io/marker/trc_io.h +27 -0
- include/momentum/io/motion/mmo_io.h +97 -0
- include/momentum/io/shape/blend_shape_io.h +70 -0
- include/momentum/io/shape/pose_shape_io.h +21 -0
- include/momentum/io/skeleton/locator_io.h +41 -0
- include/momentum/io/skeleton/mppca_io.h +26 -0
- include/momentum/io/skeleton/parameter_limits_io.h +25 -0
- include/momentum/io/skeleton/parameter_transform_io.h +41 -0
- include/momentum/io/skeleton/parameters_io.h +20 -0
- include/momentum/io/urdf/urdf_io.h +26 -0
- include/momentum/io/usd/usd_io.h +36 -0
- include/momentum/marker_tracking/app_utils.h +62 -0
- include/momentum/marker_tracking/marker_tracker.h +213 -0
- include/momentum/marker_tracking/process_markers.h +58 -0
- include/momentum/marker_tracking/tracker_utils.h +90 -0
- include/momentum/math/constants.h +82 -0
- include/momentum/math/covariance_matrix.h +84 -0
- include/momentum/math/fmt_eigen.h +23 -0
- include/momentum/math/fwd.h +132 -0
- include/momentum/math/generalized_loss.h +61 -0
- include/momentum/math/intersection.h +32 -0
- include/momentum/math/mesh.h +84 -0
- include/momentum/math/mppca.h +67 -0
- include/momentum/math/online_householder_qr.h +516 -0
- include/momentum/math/random-inl.h +404 -0
- include/momentum/math/random.h +310 -0
- include/momentum/math/simd_generalized_loss.h +40 -0
- include/momentum/math/transform.h +229 -0
- include/momentum/math/types.h +461 -0
- include/momentum/math/utility.h +282 -0
- include/momentum/rasterizer/camera.h +453 -0
- include/momentum/rasterizer/fwd.h +102 -0
- include/momentum/rasterizer/geometry.h +83 -0
- include/momentum/rasterizer/image.h +18 -0
- include/momentum/rasterizer/rasterizer.h +583 -0
- include/momentum/rasterizer/tensor.h +140 -0
- include/momentum/rasterizer/utility.h +268 -0
- include/momentum/simd/simd.h +221 -0
- include/momentum/solver/fwd.h +131 -0
- include/momentum/solver/gauss_newton_solver.h +136 -0
- include/momentum/solver/gradient_descent_solver.h +65 -0
- include/momentum/solver/solver.h +155 -0
- include/momentum/solver/solver_function.h +126 -0
- include/momentum/solver/subset_gauss_newton_solver.h +109 -0
- include/rerun/archetypes/annotation_context.hpp +157 -0
- include/rerun/archetypes/arrows2d.hpp +271 -0
- include/rerun/archetypes/arrows3d.hpp +257 -0
- include/rerun/archetypes/asset3d.hpp +262 -0
- include/rerun/archetypes/asset_video.hpp +275 -0
- include/rerun/archetypes/bar_chart.hpp +261 -0
- include/rerun/archetypes/boxes2d.hpp +293 -0
- include/rerun/archetypes/boxes3d.hpp +369 -0
- include/rerun/archetypes/capsules3d.hpp +333 -0
- include/rerun/archetypes/clear.hpp +180 -0
- include/rerun/archetypes/depth_image.hpp +425 -0
- include/rerun/archetypes/ellipsoids3d.hpp +384 -0
- include/rerun/archetypes/encoded_image.hpp +250 -0
- include/rerun/archetypes/geo_line_strings.hpp +166 -0
- include/rerun/archetypes/geo_points.hpp +177 -0
- include/rerun/archetypes/graph_edges.hpp +152 -0
- include/rerun/archetypes/graph_nodes.hpp +206 -0
- include/rerun/archetypes/image.hpp +434 -0
- include/rerun/archetypes/instance_poses3d.hpp +221 -0
- include/rerun/archetypes/line_strips2d.hpp +289 -0
- include/rerun/archetypes/line_strips3d.hpp +270 -0
- include/rerun/archetypes/mesh3d.hpp +387 -0
- include/rerun/archetypes/pinhole.hpp +385 -0
- include/rerun/archetypes/points2d.hpp +333 -0
- include/rerun/archetypes/points3d.hpp +369 -0
- include/rerun/archetypes/recording_properties.hpp +132 -0
- include/rerun/archetypes/scalar.hpp +170 -0
- include/rerun/archetypes/scalars.hpp +153 -0
- include/rerun/archetypes/segmentation_image.hpp +305 -0
- include/rerun/archetypes/series_line.hpp +274 -0
- include/rerun/archetypes/series_lines.hpp +271 -0
- include/rerun/archetypes/series_point.hpp +265 -0
- include/rerun/archetypes/series_points.hpp +251 -0
- include/rerun/archetypes/tensor.hpp +213 -0
- include/rerun/archetypes/text_document.hpp +200 -0
- include/rerun/archetypes/text_log.hpp +211 -0
- include/rerun/archetypes/transform3d.hpp +925 -0
- include/rerun/archetypes/video_frame_reference.hpp +295 -0
- include/rerun/archetypes/view_coordinates.hpp +393 -0
- include/rerun/archetypes.hpp +43 -0
- include/rerun/arrow_utils.hpp +32 -0
- include/rerun/as_components.hpp +90 -0
- include/rerun/blueprint/archetypes/background.hpp +113 -0
- include/rerun/blueprint/archetypes/container_blueprint.hpp +259 -0
- include/rerun/blueprint/archetypes/dataframe_query.hpp +178 -0
- include/rerun/blueprint/archetypes/entity_behavior.hpp +130 -0
- include/rerun/blueprint/archetypes/force_center.hpp +115 -0
- include/rerun/blueprint/archetypes/force_collision_radius.hpp +141 -0
- include/rerun/blueprint/archetypes/force_link.hpp +136 -0
- include/rerun/blueprint/archetypes/force_many_body.hpp +124 -0
- include/rerun/blueprint/archetypes/force_position.hpp +132 -0
- include/rerun/blueprint/archetypes/line_grid3d.hpp +178 -0
- include/rerun/blueprint/archetypes/map_background.hpp +104 -0
- include/rerun/blueprint/archetypes/map_zoom.hpp +103 -0
- include/rerun/blueprint/archetypes/near_clip_plane.hpp +109 -0
- include/rerun/blueprint/archetypes/panel_blueprint.hpp +95 -0
- include/rerun/blueprint/archetypes/plot_legend.hpp +118 -0
- include/rerun/blueprint/archetypes/scalar_axis.hpp +116 -0
- include/rerun/blueprint/archetypes/tensor_scalar_mapping.hpp +146 -0
- include/rerun/blueprint/archetypes/tensor_slice_selection.hpp +167 -0
- include/rerun/blueprint/archetypes/tensor_view_fit.hpp +95 -0
- include/rerun/blueprint/archetypes/view_blueprint.hpp +170 -0
- include/rerun/blueprint/archetypes/view_contents.hpp +142 -0
- include/rerun/blueprint/archetypes/viewport_blueprint.hpp +200 -0
- include/rerun/blueprint/archetypes/visible_time_ranges.hpp +116 -0
- include/rerun/blueprint/archetypes/visual_bounds2d.hpp +109 -0
- include/rerun/blueprint/archetypes/visualizer_overrides.hpp +113 -0
- include/rerun/blueprint/archetypes.hpp +29 -0
- include/rerun/blueprint/components/active_tab.hpp +82 -0
- include/rerun/blueprint/components/apply_latest_at.hpp +79 -0
- include/rerun/blueprint/components/auto_layout.hpp +77 -0
- include/rerun/blueprint/components/auto_views.hpp +77 -0
- include/rerun/blueprint/components/background_kind.hpp +66 -0
- include/rerun/blueprint/components/column_share.hpp +78 -0
- include/rerun/blueprint/components/component_column_selector.hpp +81 -0
- include/rerun/blueprint/components/container_kind.hpp +65 -0
- include/rerun/blueprint/components/corner2d.hpp +64 -0
- include/rerun/blueprint/components/enabled.hpp +77 -0
- include/rerun/blueprint/components/filter_by_range.hpp +74 -0
- include/rerun/blueprint/components/filter_is_not_null.hpp +77 -0
- include/rerun/blueprint/components/force_distance.hpp +82 -0
- include/rerun/blueprint/components/force_iterations.hpp +82 -0
- include/rerun/blueprint/components/force_strength.hpp +82 -0
- include/rerun/blueprint/components/grid_columns.hpp +78 -0
- include/rerun/blueprint/components/grid_spacing.hpp +78 -0
- include/rerun/blueprint/components/included_content.hpp +86 -0
- include/rerun/blueprint/components/lock_range_during_zoom.hpp +82 -0
- include/rerun/blueprint/components/map_provider.hpp +64 -0
- include/rerun/blueprint/components/near_clip_plane.hpp +82 -0
- include/rerun/blueprint/components/panel_state.hpp +61 -0
- include/rerun/blueprint/components/query_expression.hpp +89 -0
- include/rerun/blueprint/components/root_container.hpp +77 -0
- include/rerun/blueprint/components/row_share.hpp +78 -0
- include/rerun/blueprint/components/selected_columns.hpp +76 -0
- include/rerun/blueprint/components/tensor_dimension_index_slider.hpp +90 -0
- include/rerun/blueprint/components/timeline_name.hpp +76 -0
- include/rerun/blueprint/components/view_class.hpp +76 -0
- include/rerun/blueprint/components/view_fit.hpp +61 -0
- include/rerun/blueprint/components/view_maximized.hpp +79 -0
- include/rerun/blueprint/components/view_origin.hpp +81 -0
- include/rerun/blueprint/components/viewer_recommendation_hash.hpp +82 -0
- include/rerun/blueprint/components/visible_time_range.hpp +77 -0
- include/rerun/blueprint/components/visual_bounds2d.hpp +74 -0
- include/rerun/blueprint/components/visualizer_override.hpp +86 -0
- include/rerun/blueprint/components/zoom_level.hpp +78 -0
- include/rerun/blueprint/components.hpp +41 -0
- include/rerun/blueprint/datatypes/component_column_selector.hpp +61 -0
- include/rerun/blueprint/datatypes/filter_by_range.hpp +59 -0
- include/rerun/blueprint/datatypes/filter_is_not_null.hpp +61 -0
- include/rerun/blueprint/datatypes/selected_columns.hpp +62 -0
- include/rerun/blueprint/datatypes/tensor_dimension_index_slider.hpp +63 -0
- include/rerun/blueprint/datatypes.hpp +9 -0
- include/rerun/c/arrow_c_data_interface.h +111 -0
- include/rerun/c/compiler_utils.h +10 -0
- include/rerun/c/rerun.h +627 -0
- include/rerun/c/sdk_info.h +28 -0
- include/rerun/collection.hpp +496 -0
- include/rerun/collection_adapter.hpp +43 -0
- include/rerun/collection_adapter_builtins.hpp +138 -0
- include/rerun/compiler_utils.hpp +61 -0
- include/rerun/component_batch.hpp +163 -0
- include/rerun/component_column.hpp +111 -0
- include/rerun/component_descriptor.hpp +142 -0
- include/rerun/component_type.hpp +35 -0
- include/rerun/components/aggregation_policy.hpp +76 -0
- include/rerun/components/albedo_factor.hpp +74 -0
- include/rerun/components/annotation_context.hpp +102 -0
- include/rerun/components/axis_length.hpp +74 -0
- include/rerun/components/blob.hpp +73 -0
- include/rerun/components/class_id.hpp +71 -0
- include/rerun/components/clear_is_recursive.hpp +75 -0
- include/rerun/components/color.hpp +99 -0
- include/rerun/components/colormap.hpp +99 -0
- include/rerun/components/depth_meter.hpp +84 -0
- include/rerun/components/draw_order.hpp +79 -0
- include/rerun/components/entity_path.hpp +83 -0
- include/rerun/components/fill_mode.hpp +72 -0
- include/rerun/components/fill_ratio.hpp +79 -0
- include/rerun/components/gamma_correction.hpp +80 -0
- include/rerun/components/geo_line_string.hpp +63 -0
- include/rerun/components/graph_edge.hpp +75 -0
- include/rerun/components/graph_node.hpp +79 -0
- include/rerun/components/graph_type.hpp +57 -0
- include/rerun/components/half_size2d.hpp +91 -0
- include/rerun/components/half_size3d.hpp +95 -0
- include/rerun/components/image_buffer.hpp +86 -0
- include/rerun/components/image_format.hpp +84 -0
- include/rerun/components/image_plane_distance.hpp +77 -0
- include/rerun/components/interactive.hpp +76 -0
- include/rerun/components/keypoint_id.hpp +74 -0
- include/rerun/components/lat_lon.hpp +89 -0
- include/rerun/components/length.hpp +77 -0
- include/rerun/components/line_strip2d.hpp +73 -0
- include/rerun/components/line_strip3d.hpp +73 -0
- include/rerun/components/magnification_filter.hpp +63 -0
- include/rerun/components/marker_shape.hpp +82 -0
- include/rerun/components/marker_size.hpp +74 -0
- include/rerun/components/media_type.hpp +157 -0
- include/rerun/components/name.hpp +83 -0
- include/rerun/components/opacity.hpp +77 -0
- include/rerun/components/pinhole_projection.hpp +94 -0
- include/rerun/components/plane3d.hpp +75 -0
- include/rerun/components/pose_rotation_axis_angle.hpp +73 -0
- include/rerun/components/pose_rotation_quat.hpp +71 -0
- include/rerun/components/pose_scale3d.hpp +102 -0
- include/rerun/components/pose_transform_mat3x3.hpp +87 -0
- include/rerun/components/pose_translation3d.hpp +96 -0
- include/rerun/components/position2d.hpp +86 -0
- include/rerun/components/position3d.hpp +90 -0
- include/rerun/components/radius.hpp +98 -0
- include/rerun/components/range1d.hpp +75 -0
- include/rerun/components/resolution.hpp +88 -0
- include/rerun/components/rotation_axis_angle.hpp +72 -0
- include/rerun/components/rotation_quat.hpp +71 -0
- include/rerun/components/scalar.hpp +76 -0
- include/rerun/components/scale3d.hpp +102 -0
- include/rerun/components/series_visible.hpp +76 -0
- include/rerun/components/show_labels.hpp +79 -0
- include/rerun/components/stroke_width.hpp +74 -0
- include/rerun/components/tensor_data.hpp +94 -0
- include/rerun/components/tensor_dimension_index_selection.hpp +77 -0
- include/rerun/components/tensor_height_dimension.hpp +71 -0
- include/rerun/components/tensor_width_dimension.hpp +71 -0
- include/rerun/components/texcoord2d.hpp +101 -0
- include/rerun/components/text.hpp +83 -0
- include/rerun/components/text_log_level.hpp +110 -0
- include/rerun/components/timestamp.hpp +76 -0
- include/rerun/components/transform_mat3x3.hpp +92 -0
- include/rerun/components/transform_relation.hpp +66 -0
- include/rerun/components/translation3d.hpp +96 -0
- include/rerun/components/triangle_indices.hpp +85 -0
- include/rerun/components/value_range.hpp +78 -0
- include/rerun/components/vector2d.hpp +92 -0
- include/rerun/components/vector3d.hpp +96 -0
- include/rerun/components/video_timestamp.hpp +120 -0
- include/rerun/components/view_coordinates.hpp +346 -0
- include/rerun/components/visible.hpp +74 -0
- include/rerun/components.hpp +77 -0
- include/rerun/config.hpp +52 -0
- include/rerun/datatypes/angle.hpp +76 -0
- include/rerun/datatypes/annotation_info.hpp +76 -0
- include/rerun/datatypes/blob.hpp +67 -0
- include/rerun/datatypes/bool.hpp +57 -0
- include/rerun/datatypes/channel_datatype.hpp +87 -0
- include/rerun/datatypes/class_description.hpp +92 -0
- include/rerun/datatypes/class_description_map_elem.hpp +69 -0
- include/rerun/datatypes/class_id.hpp +62 -0
- include/rerun/datatypes/color_model.hpp +68 -0
- include/rerun/datatypes/dvec2d.hpp +76 -0
- include/rerun/datatypes/entity_path.hpp +60 -0
- include/rerun/datatypes/float32.hpp +62 -0
- include/rerun/datatypes/float64.hpp +62 -0
- include/rerun/datatypes/image_format.hpp +107 -0
- include/rerun/datatypes/keypoint_id.hpp +63 -0
- include/rerun/datatypes/keypoint_pair.hpp +65 -0
- include/rerun/datatypes/mat3x3.hpp +105 -0
- include/rerun/datatypes/mat4x4.hpp +119 -0
- include/rerun/datatypes/pixel_format.hpp +142 -0
- include/rerun/datatypes/plane3d.hpp +60 -0
- include/rerun/datatypes/quaternion.hpp +110 -0
- include/rerun/datatypes/range1d.hpp +59 -0
- include/rerun/datatypes/range2d.hpp +55 -0
- include/rerun/datatypes/rgba32.hpp +94 -0
- include/rerun/datatypes/rotation_axis_angle.hpp +67 -0
- include/rerun/datatypes/tensor_buffer.hpp +529 -0
- include/rerun/datatypes/tensor_data.hpp +100 -0
- include/rerun/datatypes/tensor_dimension_index_selection.hpp +58 -0
- include/rerun/datatypes/tensor_dimension_selection.hpp +56 -0
- include/rerun/datatypes/time_int.hpp +62 -0
- include/rerun/datatypes/time_range.hpp +55 -0
- include/rerun/datatypes/time_range_boundary.hpp +175 -0
- include/rerun/datatypes/uint16.hpp +62 -0
- include/rerun/datatypes/uint32.hpp +62 -0
- include/rerun/datatypes/uint64.hpp +62 -0
- include/rerun/datatypes/utf8.hpp +76 -0
- include/rerun/datatypes/utf8pair.hpp +62 -0
- include/rerun/datatypes/uuid.hpp +60 -0
- include/rerun/datatypes/uvec2d.hpp +76 -0
- include/rerun/datatypes/uvec3d.hpp +80 -0
- include/rerun/datatypes/uvec4d.hpp +59 -0
- include/rerun/datatypes/vec2d.hpp +76 -0
- include/rerun/datatypes/vec3d.hpp +80 -0
- include/rerun/datatypes/vec4d.hpp +84 -0
- include/rerun/datatypes/video_timestamp.hpp +67 -0
- include/rerun/datatypes/view_coordinates.hpp +87 -0
- include/rerun/datatypes/visible_time_range.hpp +57 -0
- include/rerun/datatypes.hpp +51 -0
- include/rerun/demo_utils.hpp +75 -0
- include/rerun/entity_path.hpp +20 -0
- include/rerun/error.hpp +180 -0
- include/rerun/half.hpp +10 -0
- include/rerun/image_utils.hpp +187 -0
- include/rerun/indicator_component.hpp +59 -0
- include/rerun/loggable.hpp +54 -0
- include/rerun/recording_stream.hpp +960 -0
- include/rerun/rerun_sdk_export.hpp +25 -0
- include/rerun/result.hpp +86 -0
- include/rerun/rotation3d.hpp +33 -0
- include/rerun/sdk_info.hpp +20 -0
- include/rerun/spawn.hpp +21 -0
- include/rerun/spawn_options.hpp +57 -0
- include/rerun/string_utils.hpp +16 -0
- include/rerun/third_party/cxxopts.hpp +2198 -0
- include/rerun/time_column.hpp +288 -0
- include/rerun/timeline.hpp +38 -0
- include/rerun/type_traits.hpp +40 -0
- include/rerun.hpp +86 -0
- lib/cmake/axel/axel-config.cmake +45 -0
- lib/cmake/axel/axelTargets-release.cmake +19 -0
- lib/cmake/axel/axelTargets.cmake +108 -0
- lib/cmake/momentum/Findre2.cmake +52 -0
- lib/cmake/momentum/momentum-config.cmake +67 -0
- lib/cmake/momentum/momentumTargets-release.cmake +259 -0
- lib/cmake/momentum/momentumTargets.cmake +377 -0
- lib/cmake/rerun_sdk/rerun_sdkConfig.cmake +70 -0
- lib/cmake/rerun_sdk/rerun_sdkConfigVersion.cmake +83 -0
- lib/cmake/rerun_sdk/rerun_sdkTargets-release.cmake +19 -0
- lib/cmake/rerun_sdk/rerun_sdkTargets.cmake +108 -0
- lib/libarrow.a +0 -0
- lib/libarrow_bundled_dependencies.a +0 -0
- lib/libaxel.a +0 -0
- lib/libmomentum_app_utils.a +0 -0
- lib/libmomentum_character.a +0 -0
- lib/libmomentum_character_sequence_solver.a +0 -0
- lib/libmomentum_character_solver.a +0 -0
- lib/libmomentum_common.a +0 -0
- lib/libmomentum_diff_ik.a +0 -0
- lib/libmomentum_io.a +0 -0
- lib/libmomentum_io_common.a +0 -0
- lib/libmomentum_io_fbx.a +0 -0
- lib/libmomentum_io_gltf.a +0 -0
- lib/libmomentum_io_legacy_json.a +0 -0
- lib/libmomentum_io_marker.a +0 -0
- lib/libmomentum_io_motion.a +0 -0
- lib/libmomentum_io_shape.a +0 -0
- lib/libmomentum_io_skeleton.a +0 -0
- lib/libmomentum_io_urdf.a +0 -0
- lib/libmomentum_marker_tracker.a +0 -0
- lib/libmomentum_math.a +0 -0
- lib/libmomentum_online_qr.a +0 -0
- lib/libmomentum_process_markers.a +0 -0
- lib/libmomentum_rerun.a +0 -0
- lib/libmomentum_simd_constraints.a +0 -0
- lib/libmomentum_simd_generalized_loss.a +0 -0
- lib/libmomentum_skeleton.a +0 -0
- lib/libmomentum_solver.a +0 -0
- lib/librerun_c__macos_arm64.a +0 -0
- lib/librerun_sdk.a +0 -0
- pymomentum/axel.cpython-313-darwin.so +0 -0
- pymomentum/backend/__init__.py +16 -0
- pymomentum/backend/skel_state_backend.py +631 -0
- pymomentum/backend/trs_backend.py +889 -0
- pymomentum/backend/utils.py +224 -0
- pymomentum/geometry.cpython-313-darwin.so +0 -0
- pymomentum/marker_tracking.cpython-313-darwin.so +0 -0
- pymomentum/quaternion.py +740 -0
- pymomentum/skel_state.py +514 -0
- pymomentum/solver.cpython-313-darwin.so +0 -0
- pymomentum/solver2.cpython-313-darwin.so +0 -0
- pymomentum/torch/character.py +863 -0
- pymomentum/torch/parameter_limits.py +494 -0
- pymomentum/torch/utility.py +20 -0
- pymomentum/trs.py +535 -0
- pymomentum_cpu-0.1.84.post0.dist-info/METADATA +126 -0
- pymomentum_cpu-0.1.84.post0.dist-info/RECORD +512 -0
- pymomentum_cpu-0.1.84.post0.dist-info/WHEEL +5 -0
- pymomentum_cpu-0.1.84.post0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,925 @@
|
|
|
1
|
+
// DO NOT EDIT! This file was auto-generated by crates/build/re_types_builder/src/codegen/cpp/mod.rs
|
|
2
|
+
// Based on "crates/store/re_types/definitions/rerun/archetypes/transform3d.fbs".
|
|
3
|
+
|
|
4
|
+
#pragma once
|
|
5
|
+
|
|
6
|
+
#include "../collection.hpp"
|
|
7
|
+
#include "../compiler_utils.hpp"
|
|
8
|
+
#include "../component_batch.hpp"
|
|
9
|
+
#include "../component_column.hpp"
|
|
10
|
+
#include "../components/axis_length.hpp"
|
|
11
|
+
#include "../components/rotation_axis_angle.hpp"
|
|
12
|
+
#include "../components/rotation_quat.hpp"
|
|
13
|
+
#include "../components/scale3d.hpp"
|
|
14
|
+
#include "../components/transform_mat3x3.hpp"
|
|
15
|
+
#include "../components/transform_relation.hpp"
|
|
16
|
+
#include "../components/translation3d.hpp"
|
|
17
|
+
#include "../indicator_component.hpp"
|
|
18
|
+
#include "../rerun_sdk_export.hpp"
|
|
19
|
+
#include "../result.hpp"
|
|
20
|
+
#include "../rotation3d.hpp"
|
|
21
|
+
|
|
22
|
+
#include <cstdint>
|
|
23
|
+
#include <optional>
|
|
24
|
+
#include <utility>
|
|
25
|
+
#include <vector>
|
|
26
|
+
|
|
27
|
+
namespace rerun::archetypes {
|
|
28
|
+
/// **Archetype**: A transform between two 3D spaces, i.e. a pose.
|
|
29
|
+
///
|
|
30
|
+
/// From the point of view of the entity's coordinate system,
|
|
31
|
+
/// all components are applied in the inverse order they are listed here.
|
|
32
|
+
/// E.g. if both a translation and a max3x3 transform are present,
|
|
33
|
+
/// the 3x3 matrix is applied first, followed by the translation.
|
|
34
|
+
///
|
|
35
|
+
/// Whenever you log this archetype, it will write all components, even if you do not explicitly set them.
|
|
36
|
+
/// This means that if you first log a transform with only a translation, and then log one with only a rotation,
|
|
37
|
+
/// it will be resolved to a transform with only a rotation.
|
|
38
|
+
///
|
|
39
|
+
/// For transforms that affect only a single entity and do not propagate along the entity tree refer to `archetypes::InstancePoses3D`.
|
|
40
|
+
///
|
|
41
|
+
/// ## Examples
|
|
42
|
+
///
|
|
43
|
+
/// ### Variety of 3D transforms
|
|
44
|
+
/// 
|
|
45
|
+
///
|
|
46
|
+
/// ```cpp
|
|
47
|
+
/// #include <rerun.hpp>
|
|
48
|
+
///
|
|
49
|
+
/// constexpr float TAU = 6.28318530717958647692528676655900577f;
|
|
50
|
+
///
|
|
51
|
+
/// int main() {
|
|
52
|
+
/// const auto rec = rerun::RecordingStream("rerun_example_transform3d");
|
|
53
|
+
/// rec.spawn().exit_on_failure();
|
|
54
|
+
///
|
|
55
|
+
/// auto arrow =
|
|
56
|
+
/// rerun::Arrows3D::from_vectors({{0.0f, 1.0f, 0.0f}}).with_origins({{0.0f, 0.0f, 0.0f}});
|
|
57
|
+
///
|
|
58
|
+
/// rec.log("base", arrow);
|
|
59
|
+
///
|
|
60
|
+
/// rec.log("base/translated", rerun::Transform3D::from_translation({1.0f, 0.0f, 0.0f}));
|
|
61
|
+
/// rec.log("base/translated", arrow);
|
|
62
|
+
///
|
|
63
|
+
/// rec.log(
|
|
64
|
+
/// "base/rotated_scaled",
|
|
65
|
+
/// rerun::Transform3D::from_rotation_scale(
|
|
66
|
+
/// rerun::RotationAxisAngle({0.0f, 0.0f, 1.0f}, rerun::Angle::radians(TAU / 8.0f)),
|
|
67
|
+
/// 2.0f
|
|
68
|
+
/// )
|
|
69
|
+
/// );
|
|
70
|
+
/// rec.log("base/rotated_scaled", arrow);
|
|
71
|
+
/// }
|
|
72
|
+
/// ```
|
|
73
|
+
///
|
|
74
|
+
/// ### Transform hierarchy
|
|
75
|
+
/// 
|
|
76
|
+
///
|
|
77
|
+
/// ```cpp
|
|
78
|
+
/// #include <rerun.hpp>
|
|
79
|
+
///
|
|
80
|
+
/// constexpr float TAU = 6.28318530717958647692528676655900577f;
|
|
81
|
+
///
|
|
82
|
+
/// int main() {
|
|
83
|
+
/// const auto rec = rerun::RecordingStream("rerun_example_transform3d_hierarchy");
|
|
84
|
+
/// rec.spawn().exit_on_failure();
|
|
85
|
+
///
|
|
86
|
+
/// // TODO(#5521): log two views as in the python example
|
|
87
|
+
///
|
|
88
|
+
/// rec.set_time_duration_secs("sim_time", 0.0);
|
|
89
|
+
///
|
|
90
|
+
/// // Planetary motion is typically in the XY plane.
|
|
91
|
+
/// rec.log_static("/", rerun::ViewCoordinates::RIGHT_HAND_Z_UP);
|
|
92
|
+
///
|
|
93
|
+
/// // Setup points, all are in the center of their own space:
|
|
94
|
+
/// rec.log(
|
|
95
|
+
/// "sun",
|
|
96
|
+
/// rerun::Points3D({{0.0f, 0.0f, 0.0f}})
|
|
97
|
+
/// .with_radii({1.0f})
|
|
98
|
+
/// .with_colors({rerun::Color(255, 200, 10)})
|
|
99
|
+
/// );
|
|
100
|
+
/// rec.log(
|
|
101
|
+
/// "sun/planet",
|
|
102
|
+
/// rerun::Points3D({{0.0f, 0.0f, 0.0f}})
|
|
103
|
+
/// .with_radii({0.4f})
|
|
104
|
+
/// .with_colors({rerun::Color(40, 80, 200)})
|
|
105
|
+
/// );
|
|
106
|
+
/// rec.log(
|
|
107
|
+
/// "sun/planet/moon",
|
|
108
|
+
/// rerun::Points3D({{0.0f, 0.0f, 0.0f}})
|
|
109
|
+
/// .with_radii({0.15f})
|
|
110
|
+
/// .with_colors({rerun::Color(180, 180, 180)})
|
|
111
|
+
/// );
|
|
112
|
+
///
|
|
113
|
+
/// // Draw fixed paths where the planet & moon move.
|
|
114
|
+
/// float d_planet = 6.0f;
|
|
115
|
+
/// float d_moon = 3.0f;
|
|
116
|
+
/// std::vector<std::array<float, 3>> planet_path, moon_path;
|
|
117
|
+
/// for (int i = 0; i <= 100; i++) {
|
|
118
|
+
/// float angle = static_cast<float>(i) * 0.01f * TAU;
|
|
119
|
+
/// float circle_x = std::sin(angle);
|
|
120
|
+
/// float circle_y = std::cos(angle);
|
|
121
|
+
/// planet_path.push_back({circle_x * d_planet, circle_y * d_planet, 0.0f});
|
|
122
|
+
/// moon_path.push_back({circle_x * d_moon, circle_y * d_moon, 0.0f});
|
|
123
|
+
/// }
|
|
124
|
+
/// rec.log("sun/planet_path", rerun::LineStrips3D(rerun::LineStrip3D(planet_path)));
|
|
125
|
+
/// rec.log("sun/planet/moon_path", rerun::LineStrips3D(rerun::LineStrip3D(moon_path)));
|
|
126
|
+
///
|
|
127
|
+
/// // Movement via transforms.
|
|
128
|
+
/// for (int i = 0; i <6 * 120; i++) {
|
|
129
|
+
/// float time = static_cast<float>(i) / 120.0f;
|
|
130
|
+
/// rec.set_time_duration_secs("sim_time", time);
|
|
131
|
+
/// float r_moon = time * 5.0f;
|
|
132
|
+
/// float r_planet = time * 2.0f;
|
|
133
|
+
///
|
|
134
|
+
/// rec.log(
|
|
135
|
+
/// "sun/planet",
|
|
136
|
+
/// rerun::Transform3D::from_translation_rotation(
|
|
137
|
+
/// {std::sin(r_planet) * d_planet, std::cos(r_planet) * d_planet, 0.0f},
|
|
138
|
+
/// rerun::RotationAxisAngle{
|
|
139
|
+
/// {1.0, 0.0f, 0.0f},
|
|
140
|
+
/// rerun::Angle::degrees(20.0f),
|
|
141
|
+
/// }
|
|
142
|
+
/// )
|
|
143
|
+
/// );
|
|
144
|
+
/// rec.log(
|
|
145
|
+
/// "sun/planet/moon",
|
|
146
|
+
/// rerun::Transform3D::from_translation(
|
|
147
|
+
/// {std::cos(r_moon) * d_moon, std::sin(r_moon) * d_moon, 0.0f}
|
|
148
|
+
/// )
|
|
149
|
+
/// .with_relation(rerun::components::TransformRelation::ChildFromParent)
|
|
150
|
+
/// );
|
|
151
|
+
/// }
|
|
152
|
+
/// }
|
|
153
|
+
/// ```
|
|
154
|
+
///
|
|
155
|
+
/// ### Update a transform over time
|
|
156
|
+
/// 
|
|
157
|
+
///
|
|
158
|
+
/// ```cpp
|
|
159
|
+
/// #include <rerun.hpp>
|
|
160
|
+
///
|
|
161
|
+
/// float truncated_radians(int deg) {
|
|
162
|
+
/// auto degf = static_cast<float>(deg);
|
|
163
|
+
/// const auto pi = 3.14159265358979323846f;
|
|
164
|
+
/// return static_cast<float>(static_cast<int>(degf * pi / 180.0f * 1000.0f)) / 1000.0f;
|
|
165
|
+
/// }
|
|
166
|
+
///
|
|
167
|
+
/// int main() {
|
|
168
|
+
/// const auto rec = rerun::RecordingStream("rerun_example_transform3d_row_updates");
|
|
169
|
+
/// rec.spawn().exit_on_failure();
|
|
170
|
+
///
|
|
171
|
+
/// rec.set_time_sequence("tick", 0);
|
|
172
|
+
/// rec.log(
|
|
173
|
+
/// "box",
|
|
174
|
+
/// rerun::Boxes3D::from_half_sizes({{4.f, 2.f, 1.0f}}).with_fill_mode(rerun::FillMode::Solid),
|
|
175
|
+
/// rerun::Transform3D().with_axis_length(10.0)
|
|
176
|
+
/// );
|
|
177
|
+
///
|
|
178
|
+
/// for (int t = 0; t <100; t++) {
|
|
179
|
+
/// rec.set_time_sequence("tick", t + 1);
|
|
180
|
+
/// rec.log(
|
|
181
|
+
/// "box",
|
|
182
|
+
/// rerun::Transform3D()
|
|
183
|
+
/// .with_translation({0.0f, 0.0f, static_cast<float>(t) / 10.0f})
|
|
184
|
+
/// .with_rotation_axis_angle(rerun::RotationAxisAngle(
|
|
185
|
+
/// {0.0f, 1.0f, 0.0f},
|
|
186
|
+
/// rerun::Angle::radians(truncated_radians(t * 4))
|
|
187
|
+
/// ))
|
|
188
|
+
/// );
|
|
189
|
+
/// }
|
|
190
|
+
/// }
|
|
191
|
+
/// ```
|
|
192
|
+
///
|
|
193
|
+
/// ### Update a transform over time, in a single operation
|
|
194
|
+
/// 
|
|
195
|
+
///
|
|
196
|
+
/// ```cpp
|
|
197
|
+
/// #include <cmath>
|
|
198
|
+
/// #include <numeric>
|
|
199
|
+
/// #include <vector>
|
|
200
|
+
///
|
|
201
|
+
/// #include <rerun.hpp>
|
|
202
|
+
///
|
|
203
|
+
/// float truncated_radians(int deg) {
|
|
204
|
+
/// auto degf = static_cast<float>(deg);
|
|
205
|
+
/// const auto pi = 3.14159265358979323846f;
|
|
206
|
+
/// return static_cast<float>(static_cast<int>(degf * pi / 180.0f * 1000.0f)) / 1000.0f;
|
|
207
|
+
/// }
|
|
208
|
+
///
|
|
209
|
+
/// int main() {
|
|
210
|
+
/// const auto rec = rerun::RecordingStream("rerun_example_transform3d_column_updates");
|
|
211
|
+
/// rec.spawn().exit_on_failure();
|
|
212
|
+
///
|
|
213
|
+
/// rec.set_time_sequence("tick", 0);
|
|
214
|
+
/// rec.log(
|
|
215
|
+
/// "box",
|
|
216
|
+
/// rerun::Boxes3D::from_half_sizes({{4.f, 2.f, 1.0f}}).with_fill_mode(rerun::FillMode::Solid),
|
|
217
|
+
/// rerun::Transform3D().with_axis_length(10.0)
|
|
218
|
+
/// );
|
|
219
|
+
///
|
|
220
|
+
/// std::vector<std::array<float, 3>> translations;
|
|
221
|
+
/// std::vector<rerun::RotationAxisAngle> rotations;
|
|
222
|
+
/// for (int t = 0; t <100; t++) {
|
|
223
|
+
/// translations.push_back({0.0f, 0.0f, static_cast<float>(t) / 10.0f});
|
|
224
|
+
/// rotations.push_back(rerun::RotationAxisAngle(
|
|
225
|
+
/// {0.0f, 1.0f, 0.0f},
|
|
226
|
+
/// rerun::Angle::radians(truncated_radians(t * 4))
|
|
227
|
+
/// ));
|
|
228
|
+
/// }
|
|
229
|
+
///
|
|
230
|
+
/// std::vector<int64_t> ticks(100);
|
|
231
|
+
/// std::iota(ticks.begin(), ticks.end(), 1);
|
|
232
|
+
///
|
|
233
|
+
/// rec.send_columns(
|
|
234
|
+
/// "box",
|
|
235
|
+
/// rerun::TimeColumn::from_sequence("tick", ticks),
|
|
236
|
+
/// rerun::Transform3D()
|
|
237
|
+
/// .with_many_translation(translations)
|
|
238
|
+
/// .with_many_rotation_axis_angle(rotations)
|
|
239
|
+
/// .columns()
|
|
240
|
+
/// );
|
|
241
|
+
/// }
|
|
242
|
+
/// ```
|
|
243
|
+
///
|
|
244
|
+
/// ### Update specific properties of a transform over time
|
|
245
|
+
/// 
|
|
246
|
+
///
|
|
247
|
+
/// ```cpp
|
|
248
|
+
/// #include <rerun.hpp>
|
|
249
|
+
///
|
|
250
|
+
/// float truncated_radians(int deg) {
|
|
251
|
+
/// auto degf = static_cast<float>(deg);
|
|
252
|
+
/// const auto pi = 3.14159265358979323846f;
|
|
253
|
+
/// return static_cast<float>(static_cast<int>(degf * pi / 180.0f * 1000.0f)) / 1000.0f;
|
|
254
|
+
/// }
|
|
255
|
+
///
|
|
256
|
+
/// int main() {
|
|
257
|
+
/// const auto rec = rerun::RecordingStream("rerun_example_transform3d_partial_updates");
|
|
258
|
+
/// rec.spawn().exit_on_failure();
|
|
259
|
+
///
|
|
260
|
+
/// // Set up a 3D box.
|
|
261
|
+
/// rec.log(
|
|
262
|
+
/// "box",
|
|
263
|
+
/// rerun::Boxes3D::from_half_sizes({{4.f, 2.f, 1.0f}}).with_fill_mode(rerun::FillMode::Solid),
|
|
264
|
+
/// rerun::Transform3D().with_axis_length(10.0)
|
|
265
|
+
/// );
|
|
266
|
+
///
|
|
267
|
+
/// // Update only the rotation of the box.
|
|
268
|
+
/// for (int deg = 0; deg <= 45; deg++) {
|
|
269
|
+
/// auto rad = truncated_radians(deg * 4);
|
|
270
|
+
/// rec.log(
|
|
271
|
+
/// "box",
|
|
272
|
+
/// rerun::Transform3D::update_fields().with_rotation_axis_angle(
|
|
273
|
+
/// rerun::RotationAxisAngle({0.0f, 1.0f, 0.0f}, rerun::Angle::radians(rad))
|
|
274
|
+
/// )
|
|
275
|
+
/// );
|
|
276
|
+
/// }
|
|
277
|
+
///
|
|
278
|
+
/// // Update only the position of the box.
|
|
279
|
+
/// for (int t = 0; t <= 50; t++) {
|
|
280
|
+
/// rec.log(
|
|
281
|
+
/// "box",
|
|
282
|
+
/// rerun::Transform3D::update_fields().with_translation(
|
|
283
|
+
/// {0.0f, 0.0f, static_cast<float>(t) / 10.0f}
|
|
284
|
+
/// )
|
|
285
|
+
/// );
|
|
286
|
+
/// }
|
|
287
|
+
///
|
|
288
|
+
/// // Update only the rotation of the box.
|
|
289
|
+
/// for (int deg = 0; deg <= 45; deg++) {
|
|
290
|
+
/// auto rad = truncated_radians((deg + 45) * 4);
|
|
291
|
+
/// rec.log(
|
|
292
|
+
/// "box",
|
|
293
|
+
/// rerun::Transform3D::update_fields().with_rotation_axis_angle(
|
|
294
|
+
/// rerun::RotationAxisAngle({0.0f, 1.0f, 0.0f}, rerun::Angle::radians(rad))
|
|
295
|
+
/// )
|
|
296
|
+
/// );
|
|
297
|
+
/// }
|
|
298
|
+
///
|
|
299
|
+
/// // Clear all of the box's attributes, and reset its axis length.
|
|
300
|
+
/// rec.log("box", rerun::Transform3D::clear_fields().with_axis_length(15.0));
|
|
301
|
+
/// }
|
|
302
|
+
/// ```
|
|
303
|
+
struct Transform3D {
|
|
304
|
+
/// Translation vector.
|
|
305
|
+
std::optional<ComponentBatch> translation;
|
|
306
|
+
|
|
307
|
+
/// Rotation via axis + angle.
|
|
308
|
+
std::optional<ComponentBatch> rotation_axis_angle;
|
|
309
|
+
|
|
310
|
+
/// Rotation via quaternion.
|
|
311
|
+
std::optional<ComponentBatch> quaternion;
|
|
312
|
+
|
|
313
|
+
/// Scaling factor.
|
|
314
|
+
std::optional<ComponentBatch> scale;
|
|
315
|
+
|
|
316
|
+
/// 3x3 transformation matrix.
|
|
317
|
+
std::optional<ComponentBatch> mat3x3;
|
|
318
|
+
|
|
319
|
+
/// Specifies the relation this transform establishes between this entity and its parent.
|
|
320
|
+
std::optional<ComponentBatch> relation;
|
|
321
|
+
|
|
322
|
+
/// Visual length of the 3 axes.
|
|
323
|
+
///
|
|
324
|
+
/// The length is interpreted in the local coordinate system of the transform.
|
|
325
|
+
/// If the transform is scaled, the axes will be scaled accordingly.
|
|
326
|
+
std::optional<ComponentBatch> axis_length;
|
|
327
|
+
|
|
328
|
+
public:
|
|
329
|
+
static constexpr const char IndicatorComponentName[] =
|
|
330
|
+
"rerun.components.Transform3DIndicator";
|
|
331
|
+
|
|
332
|
+
/// Indicator component, used to identify the archetype when converting to a list of components.
|
|
333
|
+
using IndicatorComponent = rerun::components::IndicatorComponent<IndicatorComponentName>;
|
|
334
|
+
/// The name of the archetype as used in `ComponentDescriptor`s.
|
|
335
|
+
static constexpr const char ArchetypeName[] = "rerun.archetypes.Transform3D";
|
|
336
|
+
|
|
337
|
+
/// `ComponentDescriptor` for the `translation` field.
|
|
338
|
+
static constexpr auto Descriptor_translation = ComponentDescriptor(
|
|
339
|
+
ArchetypeName, "translation",
|
|
340
|
+
Loggable<rerun::components::Translation3D>::Descriptor.component_name
|
|
341
|
+
);
|
|
342
|
+
/// `ComponentDescriptor` for the `rotation_axis_angle` field.
|
|
343
|
+
static constexpr auto Descriptor_rotation_axis_angle = ComponentDescriptor(
|
|
344
|
+
ArchetypeName, "rotation_axis_angle",
|
|
345
|
+
Loggable<rerun::components::RotationAxisAngle>::Descriptor.component_name
|
|
346
|
+
);
|
|
347
|
+
/// `ComponentDescriptor` for the `quaternion` field.
|
|
348
|
+
static constexpr auto Descriptor_quaternion = ComponentDescriptor(
|
|
349
|
+
ArchetypeName, "quaternion",
|
|
350
|
+
Loggable<rerun::components::RotationQuat>::Descriptor.component_name
|
|
351
|
+
);
|
|
352
|
+
/// `ComponentDescriptor` for the `scale` field.
|
|
353
|
+
static constexpr auto Descriptor_scale = ComponentDescriptor(
|
|
354
|
+
ArchetypeName, "scale", Loggable<rerun::components::Scale3D>::Descriptor.component_name
|
|
355
|
+
);
|
|
356
|
+
/// `ComponentDescriptor` for the `mat3x3` field.
|
|
357
|
+
static constexpr auto Descriptor_mat3x3 = ComponentDescriptor(
|
|
358
|
+
ArchetypeName, "mat3x3",
|
|
359
|
+
Loggable<rerun::components::TransformMat3x3>::Descriptor.component_name
|
|
360
|
+
);
|
|
361
|
+
/// `ComponentDescriptor` for the `relation` field.
|
|
362
|
+
static constexpr auto Descriptor_relation = ComponentDescriptor(
|
|
363
|
+
ArchetypeName, "relation",
|
|
364
|
+
Loggable<rerun::components::TransformRelation>::Descriptor.component_name
|
|
365
|
+
);
|
|
366
|
+
/// `ComponentDescriptor` for the `axis_length` field.
|
|
367
|
+
static constexpr auto Descriptor_axis_length = ComponentDescriptor(
|
|
368
|
+
ArchetypeName, "axis_length",
|
|
369
|
+
Loggable<rerun::components::AxisLength>::Descriptor.component_name
|
|
370
|
+
);
|
|
371
|
+
|
|
372
|
+
public: // START of extensions from transform3d_ext.cpp:
|
|
373
|
+
/// Identity transformation.
|
|
374
|
+
///
|
|
375
|
+
/// Applying this transform does not alter an entity's transformation.
|
|
376
|
+
RERUN_SDK_EXPORT static const Transform3D IDENTITY;
|
|
377
|
+
|
|
378
|
+
/// Invalid transformation.
|
|
379
|
+
///
|
|
380
|
+
/// Applying this transform will cause this entity and the entire subtree not to be visualized.
|
|
381
|
+
RERUN_SDK_EXPORT static const Transform3D INVALID;
|
|
382
|
+
|
|
383
|
+
/// Creates a new 3D transform from translation and matrix provided as 3 columns.
|
|
384
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
385
|
+
///
|
|
386
|
+
/// \param translation_ \çopydoc Transform3D::translation
|
|
387
|
+
/// \param columns Column vectors of 3x3 matrix.
|
|
388
|
+
/// \param from_parent If true, the transform relation to `TransformRelation::ChildFromParent`.
|
|
389
|
+
///
|
|
390
|
+
/// _Implementation note:_ This overload is necessary, otherwise the array may be
|
|
391
|
+
/// interpreted as bool and call the wrong overload.
|
|
392
|
+
Transform3D(
|
|
393
|
+
const components::Translation3D& translation_, const datatypes::Vec3D (&columns)[3],
|
|
394
|
+
bool from_parent = false
|
|
395
|
+
)
|
|
396
|
+
: Transform3D(translation_, components::TransformMat3x3(columns), from_parent) {}
|
|
397
|
+
|
|
398
|
+
/// Creates a new 3D transform from translation/matrix.
|
|
399
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
400
|
+
///
|
|
401
|
+
/// \param translation_ \çopydoc Transform3D::translation
|
|
402
|
+
/// \param mat3x3_ \copydoc Transform3D::mat3x3
|
|
403
|
+
/// \param from_parent If true, the transform relation to `TransformRelation::ChildFromParent`.
|
|
404
|
+
Transform3D(
|
|
405
|
+
const components::Translation3D& translation_,
|
|
406
|
+
const components::TransformMat3x3& mat3x3_, bool from_parent = false
|
|
407
|
+
) {
|
|
408
|
+
*this = Transform3D::clear_fields().with_translation(translation_).with_mat3x3(mat3x3_);
|
|
409
|
+
if (from_parent) {
|
|
410
|
+
*this =
|
|
411
|
+
std::move(*this).with_relation(components::TransformRelation::ChildFromParent);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
/// From a translation applied after a 3x3 matrix.
|
|
416
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
417
|
+
///
|
|
418
|
+
/// \param translation \çopydoc Transform3D::translation
|
|
419
|
+
/// \param mat3x3 \copydoc Transform3D::mat3x3
|
|
420
|
+
static Transform3D from_translation_mat3x3(
|
|
421
|
+
const components::Translation3D& translation, const components::TransformMat3x3& mat3x3
|
|
422
|
+
) {
|
|
423
|
+
return Transform3D(translation, mat3x3, false);
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
/// From a translation applied after a 3x3 matrix provided as 3 columns.
|
|
427
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
428
|
+
///
|
|
429
|
+
/// \param translation \çopydoc Transform3D::translation
|
|
430
|
+
/// \param columns Column vectors of 3x3 matrix.
|
|
431
|
+
static Transform3D from_translation_mat3x3(
|
|
432
|
+
const components::Translation3D& translation, const datatypes::Vec3D (&columns)[3]
|
|
433
|
+
) {
|
|
434
|
+
return Transform3D::from_translation_mat3x3(
|
|
435
|
+
translation,
|
|
436
|
+
components::TransformMat3x3(columns)
|
|
437
|
+
);
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
/// From translation only.
|
|
441
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
442
|
+
///
|
|
443
|
+
/// \param translation_ \çopydoc Transform3D::translation
|
|
444
|
+
/// \param from_parent If true, the transform relation to `TransformRelation::ChildFromParent`.
|
|
445
|
+
Transform3D(const components::Translation3D& translation_, bool from_parent = false) {
|
|
446
|
+
*this = Transform3D::clear_fields().with_translation(translation_);
|
|
447
|
+
if (from_parent) {
|
|
448
|
+
*this =
|
|
449
|
+
std::move(*this).with_relation(components::TransformRelation::ChildFromParent);
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
/// From a translation.
|
|
454
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
455
|
+
///
|
|
456
|
+
/// \param translation \çopydoc Transform3D::translation
|
|
457
|
+
static Transform3D from_translation(const components::Translation3D& translation) {
|
|
458
|
+
return Transform3D(translation, false);
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
/// From 3x3 matrix only.
|
|
462
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
463
|
+
///
|
|
464
|
+
/// \param mat3x3_ \copydoc Transform3D::mat3x3
|
|
465
|
+
/// \param from_parent If true, the transform relation to `TransformRelation::ChildFromParent`.
|
|
466
|
+
Transform3D(const components::TransformMat3x3& mat3x3_, bool from_parent = false) {
|
|
467
|
+
*this = Transform3D::clear_fields().with_mat3x3(mat3x3_);
|
|
468
|
+
if (from_parent) {
|
|
469
|
+
*this =
|
|
470
|
+
std::move(*this).with_relation(components::TransformRelation::ChildFromParent);
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
/// From 3x3 matrix only.
|
|
475
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
476
|
+
///
|
|
477
|
+
/// \param mat3x3 \copydoc Transform3D::mat3x3
|
|
478
|
+
static Transform3D from_mat3x3(const components::TransformMat3x3& mat3x3) {
|
|
479
|
+
return Transform3D(mat3x3, false);
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
/// From 3x3 matrix provided as 3 columns only.
|
|
483
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
484
|
+
///
|
|
485
|
+
/// \param columns Column vectors of 3x3 matrix.
|
|
486
|
+
/// \param from_parent If true, the transform relation to `TransformRelation::ChildFromParent`.
|
|
487
|
+
Transform3D(const datatypes::Vec3D (&columns)[3], bool from_parent = false)
|
|
488
|
+
: Transform3D(components::TransformMat3x3(columns), from_parent) {}
|
|
489
|
+
|
|
490
|
+
/// From 3x3 matrix provided as 3 columns only.
|
|
491
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
492
|
+
///
|
|
493
|
+
/// \param columns Column vectors of 3x3 matrix.
|
|
494
|
+
static Transform3D from_mat3x3(const datatypes::Vec3D (&columns)[3]) {
|
|
495
|
+
return Transform3D(components::TransformMat3x3(columns), false);
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
/// Creates a new 3D transform from translation/rotation/scale.
|
|
499
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
500
|
+
///
|
|
501
|
+
/// \param translation_ \copydoc Transform3D::translation
|
|
502
|
+
/// \param rotation Rotation represented either as a quaternion or axis + angle rotation.
|
|
503
|
+
/// \param scale_ \copydoc Transform3D::scale
|
|
504
|
+
/// \param from_parent If true, the transform relation to `TransformRelation::ChildFromParent`.
|
|
505
|
+
Transform3D(
|
|
506
|
+
const components::Translation3D& translation_, const Rotation3D& rotation,
|
|
507
|
+
const components::Scale3D& scale_, bool from_parent = false
|
|
508
|
+
) {
|
|
509
|
+
*this = Transform3D::clear_fields()
|
|
510
|
+
.with_translation(translation_)
|
|
511
|
+
.with_scale(scale_)
|
|
512
|
+
.with_rotation(rotation);
|
|
513
|
+
if (from_parent) {
|
|
514
|
+
*this =
|
|
515
|
+
std::move(*this).with_relation(components::TransformRelation::ChildFromParent);
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
/// Creates a new 3D transform from translation/rotation/uniform-scale.
|
|
520
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
521
|
+
///
|
|
522
|
+
/// \param translation_ \copydoc Transform3D::translation
|
|
523
|
+
/// \param rotation Rotation represented either as a quaternion or axis + angle rotation.
|
|
524
|
+
/// \param uniform_scale Uniform scale factor that is applied to all axis equally.
|
|
525
|
+
/// \param from_parent If true, the transform relation to `TransformRelation::ChildFromParent`.
|
|
526
|
+
///
|
|
527
|
+
/// _Implementation note:_ This explicit overload prevents interpretation of the float as
|
|
528
|
+
/// bool, leading to a call to the wrong overload.
|
|
529
|
+
Transform3D(
|
|
530
|
+
const components::Translation3D& translation_, const Rotation3D& rotation,
|
|
531
|
+
float uniform_scale, bool from_parent = false
|
|
532
|
+
)
|
|
533
|
+
: Transform3D(translation_, rotation, components::Scale3D(uniform_scale), from_parent) {
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
/// From a translation, applied after a rotation & scale, known as an affine transformation.
|
|
537
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
538
|
+
///
|
|
539
|
+
/// \param translation \copydoc Transform3D::translation
|
|
540
|
+
/// \param rotation Rotation represented either as a quaternion or axis + angle rotation.
|
|
541
|
+
/// \param scale \copydoc Transform3D::scale
|
|
542
|
+
static Transform3D from_translation_rotation_scale(
|
|
543
|
+
const components::Translation3D& translation, const Rotation3D& rotation,
|
|
544
|
+
const components::Scale3D& scale
|
|
545
|
+
) {
|
|
546
|
+
return Transform3D(translation, rotation, scale, false);
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
/// From a translation, applied after a rotation & scale, known as an affine transformation.
|
|
550
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
551
|
+
///
|
|
552
|
+
/// \param translation \copydoc Transform3D::translation
|
|
553
|
+
/// \param rotation Rotation represented either as a quaternion or axis + angle rotation.
|
|
554
|
+
/// \param uniform_scale Uniform scale factor that is applied to all axis equally.
|
|
555
|
+
static Transform3D from_translation_rotation_scale(
|
|
556
|
+
const components::Translation3D& translation, const Rotation3D& rotation,
|
|
557
|
+
float uniform_scale
|
|
558
|
+
) {
|
|
559
|
+
return Transform3D(translation, rotation, components::Scale3D(uniform_scale), false);
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
/// Creates a new rigid transform (translation & rotation only).
|
|
563
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
564
|
+
///
|
|
565
|
+
/// \param translation_ \copydoc Transform3D::translation
|
|
566
|
+
/// \param rotation Rotation represented either as a quaternion or axis + angle rotation.
|
|
567
|
+
/// \param from_parent If true, the transform relation to `TransformRelation::ChildFromParent`.
|
|
568
|
+
Transform3D(
|
|
569
|
+
const components::Translation3D& translation_, const Rotation3D& rotation,
|
|
570
|
+
bool from_parent = false
|
|
571
|
+
) {
|
|
572
|
+
*this =
|
|
573
|
+
Transform3D::clear_fields().with_translation(translation_).with_rotation(rotation);
|
|
574
|
+
if (from_parent) {
|
|
575
|
+
*this =
|
|
576
|
+
std::move(*this).with_relation(components::TransformRelation::ChildFromParent);
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
/// From a rotation & scale.
|
|
581
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
582
|
+
///
|
|
583
|
+
/// \param translation \copydoc Transform3D::translation
|
|
584
|
+
/// \param rotation Rotation represented either as a quaternion or axis + angle rotation.
|
|
585
|
+
static Transform3D from_translation_rotation(
|
|
586
|
+
const components::Translation3D& translation, const Rotation3D& rotation
|
|
587
|
+
) {
|
|
588
|
+
return Transform3D(translation, rotation, false);
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
/// From translation & scale only.
|
|
592
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
593
|
+
///
|
|
594
|
+
/// \param translation_ \copydoc Transform3D::translation
|
|
595
|
+
/// \param scale_ Transform3D::scale
|
|
596
|
+
/// \param from_parent If true, the transform relation to `TransformRelation::ChildFromParent`.
|
|
597
|
+
Transform3D(
|
|
598
|
+
const components::Translation3D& translation_, const components::Scale3D& scale_,
|
|
599
|
+
bool from_parent = false
|
|
600
|
+
) {
|
|
601
|
+
*this = Transform3D::clear_fields().with_translation(translation_).with_scale(scale_);
|
|
602
|
+
if (from_parent) {
|
|
603
|
+
*this =
|
|
604
|
+
std::move(*this).with_relation(components::TransformRelation::ChildFromParent);
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
/// From a translation applied after a scale.
|
|
609
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
610
|
+
///
|
|
611
|
+
/// \param translation \copydoc Transform3D::translation
|
|
612
|
+
/// \param scale Transform3D::scale
|
|
613
|
+
static Transform3D from_translation_scale(
|
|
614
|
+
const components::Translation3D& translation, const components::Scale3D& scale
|
|
615
|
+
) {
|
|
616
|
+
return Transform3D(translation, scale, false);
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
/// From translation & uniform scale only.
|
|
620
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
621
|
+
///
|
|
622
|
+
/// \param translation_ \copydoc Transform3D::translation
|
|
623
|
+
/// \param uniform_scale Uniform scale factor that is applied to all axis equally.
|
|
624
|
+
/// \param from_parent If true, the transform relation to `TransformRelation::ChildFromParent`.
|
|
625
|
+
///
|
|
626
|
+
/// _Implementation note:_ This explicit overload prevents interpretation of the float as
|
|
627
|
+
/// bool, leading to a call to the wrong overload.
|
|
628
|
+
Transform3D(
|
|
629
|
+
const components::Translation3D& translation_, float uniform_scale,
|
|
630
|
+
bool from_parent = false
|
|
631
|
+
)
|
|
632
|
+
: Transform3D(translation_, components::Scale3D(uniform_scale), from_parent) {}
|
|
633
|
+
|
|
634
|
+
/// From rotation & scale.
|
|
635
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
636
|
+
///
|
|
637
|
+
/// \param rotation Rotation represented either as a quaternion or axis + angle rotation.
|
|
638
|
+
/// \param scale_ Transform3D::scale
|
|
639
|
+
/// \param from_parent If true, the transform relation to `TransformRelation::ChildFromParent`.
|
|
640
|
+
Transform3D(
|
|
641
|
+
const Rotation3D& rotation, const components::Scale3D& scale_, bool from_parent = false
|
|
642
|
+
) {
|
|
643
|
+
*this = Transform3D::clear_fields().with_scale(scale_).with_rotation(rotation);
|
|
644
|
+
if (from_parent) {
|
|
645
|
+
*this =
|
|
646
|
+
std::move(*this).with_relation(components::TransformRelation::ChildFromParent);
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
/// From rotation & uniform scale.
|
|
651
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
652
|
+
///
|
|
653
|
+
/// \param rotation Rotation represented either as a quaternion or axis + angle rotation.
|
|
654
|
+
/// \param uniform_scale Uniform scale factor that is applied to all axis equally.
|
|
655
|
+
/// \param from_parent If true, the transform relation to `TransformRelation::ChildFromParent`.
|
|
656
|
+
///
|
|
657
|
+
/// _Implementation note:_ This explicit overload prevents interpretation of the float as
|
|
658
|
+
/// bool, leading to a call to the wrong overload.
|
|
659
|
+
Transform3D(const Rotation3D& rotation, float uniform_scale, bool from_parent = false)
|
|
660
|
+
: Transform3D(rotation, components::Scale3D(uniform_scale), from_parent) {}
|
|
661
|
+
|
|
662
|
+
/// From a rotation & scale.
|
|
663
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
664
|
+
///
|
|
665
|
+
/// \param rotation Rotation represented either as a quaternion or axis + angle rotation.
|
|
666
|
+
/// \param scale Transform3D::scale
|
|
667
|
+
static Transform3D from_rotation_scale(
|
|
668
|
+
const Rotation3D& rotation, const components::Scale3D& scale
|
|
669
|
+
) {
|
|
670
|
+
return Transform3D(rotation, scale, false);
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
/// From a rotation & uniform scale.
|
|
674
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
675
|
+
///
|
|
676
|
+
/// \param rotation Rotation represented either as a quaternion or axis + angle rotation.
|
|
677
|
+
/// \param uniform_scale Uniform scale factor that is applied to all axis equally.
|
|
678
|
+
static Transform3D from_rotation_scale(const Rotation3D& rotation, float uniform_scale) {
|
|
679
|
+
return Transform3D(rotation, components::Scale3D(uniform_scale), false);
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
/// From rotation only.
|
|
683
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
684
|
+
///
|
|
685
|
+
/// \param rotation Rotation represented either as a quaternion or axis + angle rotation.
|
|
686
|
+
/// \param from_parent If true, the transform relation to `TransformRelation::ChildFromParent`.
|
|
687
|
+
Transform3D(const Rotation3D& rotation, bool from_parent = false) {
|
|
688
|
+
*this = Transform3D::clear_fields().with_rotation(rotation);
|
|
689
|
+
if (from_parent) {
|
|
690
|
+
*this =
|
|
691
|
+
std::move(*this).with_relation(components::TransformRelation::ChildFromParent);
|
|
692
|
+
}
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
/// From rotation only.
|
|
696
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
697
|
+
///
|
|
698
|
+
/// \param rotation Rotation represented either as a quaternion or axis + angle rotation.
|
|
699
|
+
static Transform3D from_rotation(const Rotation3D& rotation) {
|
|
700
|
+
return Transform3D(rotation, false);
|
|
701
|
+
}
|
|
702
|
+
|
|
703
|
+
/// From scale only.
|
|
704
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
705
|
+
///
|
|
706
|
+
/// \param scale_ If true, the transform relation to `TransformRelation::ChildFromParent`.
|
|
707
|
+
/// \param from_parent \copydoc Transform3D::scale
|
|
708
|
+
Transform3D(const components::Scale3D& scale_, bool from_parent = false) {
|
|
709
|
+
*this = Transform3D::clear_fields().with_scale(scale_);
|
|
710
|
+
if (from_parent) {
|
|
711
|
+
*this =
|
|
712
|
+
std::move(*this).with_relation(components::TransformRelation::ChildFromParent);
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
|
|
716
|
+
/// From scale only.
|
|
717
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
718
|
+
///
|
|
719
|
+
/// \param scale Transform3D::scale
|
|
720
|
+
static Transform3D from_scale(const components::Scale3D& scale) {
|
|
721
|
+
return Transform3D(scale, false);
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
/// From scale only.
|
|
725
|
+
/// Clears out all other components like `Transform3D::clear_fields`.
|
|
726
|
+
///
|
|
727
|
+
/// \param uniform_scale Uniform scale factor that is applied to all axis equally.
|
|
728
|
+
static Transform3D from_scale(float uniform_scale) {
|
|
729
|
+
return Transform3D(components::Scale3D(uniform_scale), false);
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
/// Set the rotation component of the transform using the `rerun::Rotation3D` utility.
|
|
733
|
+
Transform3D with_rotation(const Rotation3D& rotation) && {
|
|
734
|
+
if (rotation.axis_angle.has_value()) {
|
|
735
|
+
*this = std::move(*this).with_rotation_axis_angle(rotation.axis_angle.value());
|
|
736
|
+
}
|
|
737
|
+
if (rotation.quaternion.has_value()) {
|
|
738
|
+
*this = std::move(*this).with_quaternion(rotation.quaternion.value());
|
|
739
|
+
}
|
|
740
|
+
return std::move(*this);
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
// END of extensions from transform3d_ext.cpp, start of generated code:
|
|
744
|
+
|
|
745
|
+
public:
|
|
746
|
+
Transform3D() = default;
|
|
747
|
+
Transform3D(Transform3D&& other) = default;
|
|
748
|
+
Transform3D(const Transform3D& other) = default;
|
|
749
|
+
Transform3D& operator=(const Transform3D& other) = default;
|
|
750
|
+
Transform3D& operator=(Transform3D&& other) = default;
|
|
751
|
+
|
|
752
|
+
/// Update only some specific fields of a `Transform3D`.
|
|
753
|
+
static Transform3D update_fields() {
|
|
754
|
+
return Transform3D();
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
/// Clear all the fields of a `Transform3D`.
|
|
758
|
+
static Transform3D clear_fields();
|
|
759
|
+
|
|
760
|
+
/// Translation vector.
|
|
761
|
+
Transform3D with_translation(const rerun::components::Translation3D& _translation) && {
|
|
762
|
+
translation = ComponentBatch::from_loggable(_translation, Descriptor_translation)
|
|
763
|
+
.value_or_throw();
|
|
764
|
+
return std::move(*this);
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
/// This method makes it possible to pack multiple `translation` in a single component batch.
|
|
768
|
+
///
|
|
769
|
+
/// This only makes sense when used in conjunction with `columns`. `with_translation` should
|
|
770
|
+
/// be used when logging a single row's worth of data.
|
|
771
|
+
Transform3D with_many_translation(
|
|
772
|
+
const Collection<rerun::components::Translation3D>& _translation
|
|
773
|
+
) && {
|
|
774
|
+
translation = ComponentBatch::from_loggable(_translation, Descriptor_translation)
|
|
775
|
+
.value_or_throw();
|
|
776
|
+
return std::move(*this);
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
/// Rotation via axis + angle.
|
|
780
|
+
Transform3D with_rotation_axis_angle(
|
|
781
|
+
const rerun::components::RotationAxisAngle& _rotation_axis_angle
|
|
782
|
+
) && {
|
|
783
|
+
rotation_axis_angle =
|
|
784
|
+
ComponentBatch::from_loggable(_rotation_axis_angle, Descriptor_rotation_axis_angle)
|
|
785
|
+
.value_or_throw();
|
|
786
|
+
return std::move(*this);
|
|
787
|
+
}
|
|
788
|
+
|
|
789
|
+
/// This method makes it possible to pack multiple `rotation_axis_angle` in a single component batch.
|
|
790
|
+
///
|
|
791
|
+
/// This only makes sense when used in conjunction with `columns`. `with_rotation_axis_angle` should
|
|
792
|
+
/// be used when logging a single row's worth of data.
|
|
793
|
+
Transform3D with_many_rotation_axis_angle(
|
|
794
|
+
const Collection<rerun::components::RotationAxisAngle>& _rotation_axis_angle
|
|
795
|
+
) && {
|
|
796
|
+
rotation_axis_angle =
|
|
797
|
+
ComponentBatch::from_loggable(_rotation_axis_angle, Descriptor_rotation_axis_angle)
|
|
798
|
+
.value_or_throw();
|
|
799
|
+
return std::move(*this);
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
/// Rotation via quaternion.
|
|
803
|
+
Transform3D with_quaternion(const rerun::components::RotationQuat& _quaternion) && {
|
|
804
|
+
quaternion =
|
|
805
|
+
ComponentBatch::from_loggable(_quaternion, Descriptor_quaternion).value_or_throw();
|
|
806
|
+
return std::move(*this);
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
/// This method makes it possible to pack multiple `quaternion` in a single component batch.
|
|
810
|
+
///
|
|
811
|
+
/// This only makes sense when used in conjunction with `columns`. `with_quaternion` should
|
|
812
|
+
/// be used when logging a single row's worth of data.
|
|
813
|
+
Transform3D with_many_quaternion(
|
|
814
|
+
const Collection<rerun::components::RotationQuat>& _quaternion
|
|
815
|
+
) && {
|
|
816
|
+
quaternion =
|
|
817
|
+
ComponentBatch::from_loggable(_quaternion, Descriptor_quaternion).value_or_throw();
|
|
818
|
+
return std::move(*this);
|
|
819
|
+
}
|
|
820
|
+
|
|
821
|
+
/// Scaling factor.
|
|
822
|
+
Transform3D with_scale(const rerun::components::Scale3D& _scale) && {
|
|
823
|
+
scale = ComponentBatch::from_loggable(_scale, Descriptor_scale).value_or_throw();
|
|
824
|
+
return std::move(*this);
|
|
825
|
+
}
|
|
826
|
+
|
|
827
|
+
/// This method makes it possible to pack multiple `scale` in a single component batch.
|
|
828
|
+
///
|
|
829
|
+
/// This only makes sense when used in conjunction with `columns`. `with_scale` should
|
|
830
|
+
/// be used when logging a single row's worth of data.
|
|
831
|
+
Transform3D with_many_scale(const Collection<rerun::components::Scale3D>& _scale) && {
|
|
832
|
+
scale = ComponentBatch::from_loggable(_scale, Descriptor_scale).value_or_throw();
|
|
833
|
+
return std::move(*this);
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
/// 3x3 transformation matrix.
|
|
837
|
+
Transform3D with_mat3x3(const rerun::components::TransformMat3x3& _mat3x3) && {
|
|
838
|
+
mat3x3 = ComponentBatch::from_loggable(_mat3x3, Descriptor_mat3x3).value_or_throw();
|
|
839
|
+
return std::move(*this);
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
/// This method makes it possible to pack multiple `mat3x3` in a single component batch.
|
|
843
|
+
///
|
|
844
|
+
/// This only makes sense when used in conjunction with `columns`. `with_mat3x3` should
|
|
845
|
+
/// be used when logging a single row's worth of data.
|
|
846
|
+
Transform3D with_many_mat3x3(const Collection<rerun::components::TransformMat3x3>& _mat3x3
|
|
847
|
+
) && {
|
|
848
|
+
mat3x3 = ComponentBatch::from_loggable(_mat3x3, Descriptor_mat3x3).value_or_throw();
|
|
849
|
+
return std::move(*this);
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
/// Specifies the relation this transform establishes between this entity and its parent.
|
|
853
|
+
Transform3D with_relation(const rerun::components::TransformRelation& _relation) && {
|
|
854
|
+
relation =
|
|
855
|
+
ComponentBatch::from_loggable(_relation, Descriptor_relation).value_or_throw();
|
|
856
|
+
return std::move(*this);
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
/// This method makes it possible to pack multiple `relation` in a single component batch.
|
|
860
|
+
///
|
|
861
|
+
/// This only makes sense when used in conjunction with `columns`. `with_relation` should
|
|
862
|
+
/// be used when logging a single row's worth of data.
|
|
863
|
+
Transform3D with_many_relation(
|
|
864
|
+
const Collection<rerun::components::TransformRelation>& _relation
|
|
865
|
+
) && {
|
|
866
|
+
relation =
|
|
867
|
+
ComponentBatch::from_loggable(_relation, Descriptor_relation).value_or_throw();
|
|
868
|
+
return std::move(*this);
|
|
869
|
+
}
|
|
870
|
+
|
|
871
|
+
/// Visual length of the 3 axes.
|
|
872
|
+
///
|
|
873
|
+
/// The length is interpreted in the local coordinate system of the transform.
|
|
874
|
+
/// If the transform is scaled, the axes will be scaled accordingly.
|
|
875
|
+
Transform3D with_axis_length(const rerun::components::AxisLength& _axis_length) && {
|
|
876
|
+
axis_length = ComponentBatch::from_loggable(_axis_length, Descriptor_axis_length)
|
|
877
|
+
.value_or_throw();
|
|
878
|
+
return std::move(*this);
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
/// This method makes it possible to pack multiple `axis_length` in a single component batch.
|
|
882
|
+
///
|
|
883
|
+
/// This only makes sense when used in conjunction with `columns`. `with_axis_length` should
|
|
884
|
+
/// be used when logging a single row's worth of data.
|
|
885
|
+
Transform3D with_many_axis_length(
|
|
886
|
+
const Collection<rerun::components::AxisLength>& _axis_length
|
|
887
|
+
) && {
|
|
888
|
+
axis_length = ComponentBatch::from_loggable(_axis_length, Descriptor_axis_length)
|
|
889
|
+
.value_or_throw();
|
|
890
|
+
return std::move(*this);
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
/// Partitions the component data into multiple sub-batches.
|
|
894
|
+
///
|
|
895
|
+
/// Specifically, this transforms the existing `ComponentBatch` data into `ComponentColumn`s
|
|
896
|
+
/// instead, via `ComponentBatch::partitioned`.
|
|
897
|
+
///
|
|
898
|
+
/// This makes it possible to use `RecordingStream::send_columns` to send columnar data directly into Rerun.
|
|
899
|
+
///
|
|
900
|
+
/// The specified `lengths` must sum to the total length of the component batch.
|
|
901
|
+
Collection<ComponentColumn> columns(const Collection<uint32_t>& lengths_);
|
|
902
|
+
|
|
903
|
+
/// Partitions the component data into unit-length sub-batches.
|
|
904
|
+
///
|
|
905
|
+
/// This is semantically similar to calling `columns` with `std::vector<uint32_t>(n, 1)`,
|
|
906
|
+
/// where `n` is automatically guessed.
|
|
907
|
+
Collection<ComponentColumn> columns();
|
|
908
|
+
};
|
|
909
|
+
|
|
910
|
+
} // namespace rerun::archetypes
|
|
911
|
+
|
|
912
|
+
namespace rerun {
|
|
913
|
+
/// \private
|
|
914
|
+
template <typename T>
|
|
915
|
+
struct AsComponents;
|
|
916
|
+
|
|
917
|
+
/// \private
|
|
918
|
+
template <>
|
|
919
|
+
struct AsComponents<archetypes::Transform3D> {
|
|
920
|
+
/// Serialize all set component batches.
|
|
921
|
+
static Result<Collection<ComponentBatch>> as_batches(
|
|
922
|
+
const archetypes::Transform3D& archetype
|
|
923
|
+
);
|
|
924
|
+
};
|
|
925
|
+
} // namespace rerun
|