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.

Files changed (512) hide show
  1. include/axel/BoundingBox.h +59 -0
  2. include/axel/Bvh.h +708 -0
  3. include/axel/BvhBase.h +75 -0
  4. include/axel/BvhCommon.h +43 -0
  5. include/axel/BvhEmbree.h +86 -0
  6. include/axel/BvhFactory.h +34 -0
  7. include/axel/Checks.h +21 -0
  8. include/axel/DualContouring.h +79 -0
  9. include/axel/KdTree.h +199 -0
  10. include/axel/Log.h +22 -0
  11. include/axel/MeshToSdf.h +123 -0
  12. include/axel/Profile.h +64 -0
  13. include/axel/Ray.h +45 -0
  14. include/axel/SignedDistanceField.h +248 -0
  15. include/axel/SimdKdTree.h +515 -0
  16. include/axel/TriBvh.h +157 -0
  17. include/axel/TriBvhEmbree.h +57 -0
  18. include/axel/common/Constants.h +27 -0
  19. include/axel/common/Types.h +21 -0
  20. include/axel/common/VectorizationTypes.h +58 -0
  21. include/axel/math/BoundingBoxUtils.h +54 -0
  22. include/axel/math/ContinuousCollisionDetection.h +48 -0
  23. include/axel/math/CoplanarityCheck.h +30 -0
  24. include/axel/math/EdgeEdgeDistance.h +31 -0
  25. include/axel/math/MeshHoleFilling.h +117 -0
  26. include/axel/math/PointTriangleProjection.h +34 -0
  27. include/axel/math/PointTriangleProjectionDefinitions.h +209 -0
  28. include/axel/math/RayTriangleIntersection.h +36 -0
  29. include/momentum/character/blend_shape.h +91 -0
  30. include/momentum/character/blend_shape_base.h +70 -0
  31. include/momentum/character/blend_shape_skinning.h +96 -0
  32. include/momentum/character/character.h +272 -0
  33. include/momentum/character/character_state.h +108 -0
  34. include/momentum/character/character_utility.h +128 -0
  35. include/momentum/character/collision_geometry.h +80 -0
  36. include/momentum/character/collision_geometry_state.h +130 -0
  37. include/momentum/character/fwd.h +262 -0
  38. include/momentum/character/inverse_parameter_transform.h +58 -0
  39. include/momentum/character/joint.h +82 -0
  40. include/momentum/character/joint_state.h +241 -0
  41. include/momentum/character/linear_skinning.h +139 -0
  42. include/momentum/character/locator.h +82 -0
  43. include/momentum/character/locator_state.h +43 -0
  44. include/momentum/character/marker.h +48 -0
  45. include/momentum/character/mesh_state.h +71 -0
  46. include/momentum/character/parameter_limits.h +144 -0
  47. include/momentum/character/parameter_transform.h +250 -0
  48. include/momentum/character/pose_shape.h +65 -0
  49. include/momentum/character/skeleton.h +85 -0
  50. include/momentum/character/skeleton_state.h +227 -0
  51. include/momentum/character/skeleton_utility.h +38 -0
  52. include/momentum/character/skin_weights.h +67 -0
  53. include/momentum/character/skinned_locator.h +80 -0
  54. include/momentum/character/types.h +202 -0
  55. include/momentum/character_sequence_solver/fwd.h +200 -0
  56. include/momentum/character_sequence_solver/model_parameters_sequence_error_function.h +65 -0
  57. include/momentum/character_sequence_solver/multipose_solver.h +65 -0
  58. include/momentum/character_sequence_solver/multipose_solver_function.h +82 -0
  59. include/momentum/character_sequence_solver/sequence_error_function.h +104 -0
  60. include/momentum/character_sequence_solver/sequence_solver.h +144 -0
  61. include/momentum/character_sequence_solver/sequence_solver_function.h +134 -0
  62. include/momentum/character_sequence_solver/state_sequence_error_function.h +109 -0
  63. include/momentum/character_sequence_solver/vertex_sequence_error_function.h +123 -0
  64. include/momentum/character_solver/aim_error_function.h +112 -0
  65. include/momentum/character_solver/collision_error_function.h +92 -0
  66. include/momentum/character_solver/collision_error_function_stateless.h +75 -0
  67. include/momentum/character_solver/constraint_error_function-inl.h +324 -0
  68. include/momentum/character_solver/constraint_error_function.h +248 -0
  69. include/momentum/character_solver/distance_error_function.h +77 -0
  70. include/momentum/character_solver/error_function_utils.h +60 -0
  71. include/momentum/character_solver/fixed_axis_error_function.h +139 -0
  72. include/momentum/character_solver/fwd.h +924 -0
  73. include/momentum/character_solver/gauss_newton_solver_qr.h +64 -0
  74. include/momentum/character_solver/limit_error_function.h +57 -0
  75. include/momentum/character_solver/model_parameters_error_function.h +64 -0
  76. include/momentum/character_solver/normal_error_function.h +73 -0
  77. include/momentum/character_solver/orientation_error_function.h +74 -0
  78. include/momentum/character_solver/plane_error_function.h +102 -0
  79. include/momentum/character_solver/point_triangle_vertex_error_function.h +141 -0
  80. include/momentum/character_solver/pose_prior_error_function.h +80 -0
  81. include/momentum/character_solver/position_error_function.h +75 -0
  82. include/momentum/character_solver/projection_error_function.h +93 -0
  83. include/momentum/character_solver/simd_collision_error_function.h +99 -0
  84. include/momentum/character_solver/simd_normal_error_function.h +157 -0
  85. include/momentum/character_solver/simd_plane_error_function.h +164 -0
  86. include/momentum/character_solver/simd_position_error_function.h +165 -0
  87. include/momentum/character_solver/skeleton_error_function.h +151 -0
  88. include/momentum/character_solver/skeleton_solver_function.h +94 -0
  89. include/momentum/character_solver/skinned_locator_error_function.h +166 -0
  90. include/momentum/character_solver/skinned_locator_triangle_error_function.h +146 -0
  91. include/momentum/character_solver/skinning_weight_iterator.h +80 -0
  92. include/momentum/character_solver/state_error_function.h +94 -0
  93. include/momentum/character_solver/transform_pose.h +80 -0
  94. include/momentum/character_solver/trust_region_qr.h +80 -0
  95. include/momentum/character_solver/vertex_error_function.h +155 -0
  96. include/momentum/character_solver/vertex_projection_error_function.h +117 -0
  97. include/momentum/character_solver/vertex_vertex_distance_error_function.h +147 -0
  98. include/momentum/common/aligned.h +155 -0
  99. include/momentum/common/checks.h +27 -0
  100. include/momentum/common/exception.h +70 -0
  101. include/momentum/common/filesystem.h +20 -0
  102. include/momentum/common/fwd.h +27 -0
  103. include/momentum/common/log.h +173 -0
  104. include/momentum/common/log_channel.h +17 -0
  105. include/momentum/common/memory.h +71 -0
  106. include/momentum/common/profile.h +79 -0
  107. include/momentum/common/progress_bar.h +37 -0
  108. include/momentum/common/string.h +52 -0
  109. include/momentum/diff_ik/ceres_utility.h +73 -0
  110. include/momentum/diff_ik/fully_differentiable_body_ik.h +58 -0
  111. include/momentum/diff_ik/fully_differentiable_distance_error_function.h +69 -0
  112. include/momentum/diff_ik/fully_differentiable_motion_error_function.h +46 -0
  113. include/momentum/diff_ik/fully_differentiable_orientation_error_function.h +114 -0
  114. include/momentum/diff_ik/fully_differentiable_pose_prior_error_function.h +76 -0
  115. include/momentum/diff_ik/fully_differentiable_position_error_function.h +138 -0
  116. include/momentum/diff_ik/fully_differentiable_projection_error_function.h +65 -0
  117. include/momentum/diff_ik/fully_differentiable_skeleton_error_function.h +160 -0
  118. include/momentum/diff_ik/fully_differentiable_state_error_function.h +54 -0
  119. include/momentum/diff_ik/fwd.h +385 -0
  120. include/momentum/diff_ik/union_error_function.h +67 -0
  121. include/momentum/gui/rerun/eigen_adapters.h +70 -0
  122. include/momentum/gui/rerun/logger.h +102 -0
  123. include/momentum/gui/rerun/logging_redirect.h +27 -0
  124. include/momentum/io/character_io.h +56 -0
  125. include/momentum/io/common/gsl_utils.h +50 -0
  126. include/momentum/io/common/stream_utils.h +65 -0
  127. include/momentum/io/fbx/fbx_io.h +161 -0
  128. include/momentum/io/fbx/fbx_memory_stream.h +66 -0
  129. include/momentum/io/fbx/openfbx_loader.h +62 -0
  130. include/momentum/io/fbx/polygon_data.h +60 -0
  131. include/momentum/io/gltf/gltf_builder.h +132 -0
  132. include/momentum/io/gltf/gltf_file_format.h +19 -0
  133. include/momentum/io/gltf/gltf_io.h +148 -0
  134. include/momentum/io/gltf/utils/accessor_utils.h +299 -0
  135. include/momentum/io/gltf/utils/coordinate_utils.h +60 -0
  136. include/momentum/io/gltf/utils/json_utils.h +102 -0
  137. include/momentum/io/legacy_json/legacy_json_io.h +70 -0
  138. include/momentum/io/marker/c3d_io.h +30 -0
  139. include/momentum/io/marker/conversions.h +57 -0
  140. include/momentum/io/marker/coordinate_system.h +30 -0
  141. include/momentum/io/marker/marker_io.h +56 -0
  142. include/momentum/io/marker/trc_io.h +27 -0
  143. include/momentum/io/motion/mmo_io.h +97 -0
  144. include/momentum/io/shape/blend_shape_io.h +70 -0
  145. include/momentum/io/shape/pose_shape_io.h +21 -0
  146. include/momentum/io/skeleton/locator_io.h +41 -0
  147. include/momentum/io/skeleton/mppca_io.h +26 -0
  148. include/momentum/io/skeleton/parameter_limits_io.h +25 -0
  149. include/momentum/io/skeleton/parameter_transform_io.h +41 -0
  150. include/momentum/io/skeleton/parameters_io.h +20 -0
  151. include/momentum/io/urdf/urdf_io.h +26 -0
  152. include/momentum/io/usd/usd_io.h +36 -0
  153. include/momentum/marker_tracking/app_utils.h +62 -0
  154. include/momentum/marker_tracking/marker_tracker.h +213 -0
  155. include/momentum/marker_tracking/process_markers.h +58 -0
  156. include/momentum/marker_tracking/tracker_utils.h +90 -0
  157. include/momentum/math/constants.h +82 -0
  158. include/momentum/math/covariance_matrix.h +84 -0
  159. include/momentum/math/fmt_eigen.h +23 -0
  160. include/momentum/math/fwd.h +132 -0
  161. include/momentum/math/generalized_loss.h +61 -0
  162. include/momentum/math/intersection.h +32 -0
  163. include/momentum/math/mesh.h +84 -0
  164. include/momentum/math/mppca.h +67 -0
  165. include/momentum/math/online_householder_qr.h +516 -0
  166. include/momentum/math/random-inl.h +404 -0
  167. include/momentum/math/random.h +310 -0
  168. include/momentum/math/simd_generalized_loss.h +40 -0
  169. include/momentum/math/transform.h +229 -0
  170. include/momentum/math/types.h +461 -0
  171. include/momentum/math/utility.h +282 -0
  172. include/momentum/rasterizer/camera.h +453 -0
  173. include/momentum/rasterizer/fwd.h +102 -0
  174. include/momentum/rasterizer/geometry.h +83 -0
  175. include/momentum/rasterizer/image.h +18 -0
  176. include/momentum/rasterizer/rasterizer.h +583 -0
  177. include/momentum/rasterizer/tensor.h +140 -0
  178. include/momentum/rasterizer/utility.h +268 -0
  179. include/momentum/simd/simd.h +221 -0
  180. include/momentum/solver/fwd.h +131 -0
  181. include/momentum/solver/gauss_newton_solver.h +136 -0
  182. include/momentum/solver/gradient_descent_solver.h +65 -0
  183. include/momentum/solver/solver.h +155 -0
  184. include/momentum/solver/solver_function.h +126 -0
  185. include/momentum/solver/subset_gauss_newton_solver.h +109 -0
  186. include/rerun/archetypes/annotation_context.hpp +157 -0
  187. include/rerun/archetypes/arrows2d.hpp +271 -0
  188. include/rerun/archetypes/arrows3d.hpp +257 -0
  189. include/rerun/archetypes/asset3d.hpp +262 -0
  190. include/rerun/archetypes/asset_video.hpp +275 -0
  191. include/rerun/archetypes/bar_chart.hpp +261 -0
  192. include/rerun/archetypes/boxes2d.hpp +293 -0
  193. include/rerun/archetypes/boxes3d.hpp +369 -0
  194. include/rerun/archetypes/capsules3d.hpp +333 -0
  195. include/rerun/archetypes/clear.hpp +180 -0
  196. include/rerun/archetypes/depth_image.hpp +425 -0
  197. include/rerun/archetypes/ellipsoids3d.hpp +384 -0
  198. include/rerun/archetypes/encoded_image.hpp +250 -0
  199. include/rerun/archetypes/geo_line_strings.hpp +166 -0
  200. include/rerun/archetypes/geo_points.hpp +177 -0
  201. include/rerun/archetypes/graph_edges.hpp +152 -0
  202. include/rerun/archetypes/graph_nodes.hpp +206 -0
  203. include/rerun/archetypes/image.hpp +434 -0
  204. include/rerun/archetypes/instance_poses3d.hpp +221 -0
  205. include/rerun/archetypes/line_strips2d.hpp +289 -0
  206. include/rerun/archetypes/line_strips3d.hpp +270 -0
  207. include/rerun/archetypes/mesh3d.hpp +387 -0
  208. include/rerun/archetypes/pinhole.hpp +385 -0
  209. include/rerun/archetypes/points2d.hpp +333 -0
  210. include/rerun/archetypes/points3d.hpp +369 -0
  211. include/rerun/archetypes/recording_properties.hpp +132 -0
  212. include/rerun/archetypes/scalar.hpp +170 -0
  213. include/rerun/archetypes/scalars.hpp +153 -0
  214. include/rerun/archetypes/segmentation_image.hpp +305 -0
  215. include/rerun/archetypes/series_line.hpp +274 -0
  216. include/rerun/archetypes/series_lines.hpp +271 -0
  217. include/rerun/archetypes/series_point.hpp +265 -0
  218. include/rerun/archetypes/series_points.hpp +251 -0
  219. include/rerun/archetypes/tensor.hpp +213 -0
  220. include/rerun/archetypes/text_document.hpp +200 -0
  221. include/rerun/archetypes/text_log.hpp +211 -0
  222. include/rerun/archetypes/transform3d.hpp +925 -0
  223. include/rerun/archetypes/video_frame_reference.hpp +295 -0
  224. include/rerun/archetypes/view_coordinates.hpp +393 -0
  225. include/rerun/archetypes.hpp +43 -0
  226. include/rerun/arrow_utils.hpp +32 -0
  227. include/rerun/as_components.hpp +90 -0
  228. include/rerun/blueprint/archetypes/background.hpp +113 -0
  229. include/rerun/blueprint/archetypes/container_blueprint.hpp +259 -0
  230. include/rerun/blueprint/archetypes/dataframe_query.hpp +178 -0
  231. include/rerun/blueprint/archetypes/entity_behavior.hpp +130 -0
  232. include/rerun/blueprint/archetypes/force_center.hpp +115 -0
  233. include/rerun/blueprint/archetypes/force_collision_radius.hpp +141 -0
  234. include/rerun/blueprint/archetypes/force_link.hpp +136 -0
  235. include/rerun/blueprint/archetypes/force_many_body.hpp +124 -0
  236. include/rerun/blueprint/archetypes/force_position.hpp +132 -0
  237. include/rerun/blueprint/archetypes/line_grid3d.hpp +178 -0
  238. include/rerun/blueprint/archetypes/map_background.hpp +104 -0
  239. include/rerun/blueprint/archetypes/map_zoom.hpp +103 -0
  240. include/rerun/blueprint/archetypes/near_clip_plane.hpp +109 -0
  241. include/rerun/blueprint/archetypes/panel_blueprint.hpp +95 -0
  242. include/rerun/blueprint/archetypes/plot_legend.hpp +118 -0
  243. include/rerun/blueprint/archetypes/scalar_axis.hpp +116 -0
  244. include/rerun/blueprint/archetypes/tensor_scalar_mapping.hpp +146 -0
  245. include/rerun/blueprint/archetypes/tensor_slice_selection.hpp +167 -0
  246. include/rerun/blueprint/archetypes/tensor_view_fit.hpp +95 -0
  247. include/rerun/blueprint/archetypes/view_blueprint.hpp +170 -0
  248. include/rerun/blueprint/archetypes/view_contents.hpp +142 -0
  249. include/rerun/blueprint/archetypes/viewport_blueprint.hpp +200 -0
  250. include/rerun/blueprint/archetypes/visible_time_ranges.hpp +116 -0
  251. include/rerun/blueprint/archetypes/visual_bounds2d.hpp +109 -0
  252. include/rerun/blueprint/archetypes/visualizer_overrides.hpp +113 -0
  253. include/rerun/blueprint/archetypes.hpp +29 -0
  254. include/rerun/blueprint/components/active_tab.hpp +82 -0
  255. include/rerun/blueprint/components/apply_latest_at.hpp +79 -0
  256. include/rerun/blueprint/components/auto_layout.hpp +77 -0
  257. include/rerun/blueprint/components/auto_views.hpp +77 -0
  258. include/rerun/blueprint/components/background_kind.hpp +66 -0
  259. include/rerun/blueprint/components/column_share.hpp +78 -0
  260. include/rerun/blueprint/components/component_column_selector.hpp +81 -0
  261. include/rerun/blueprint/components/container_kind.hpp +65 -0
  262. include/rerun/blueprint/components/corner2d.hpp +64 -0
  263. include/rerun/blueprint/components/enabled.hpp +77 -0
  264. include/rerun/blueprint/components/filter_by_range.hpp +74 -0
  265. include/rerun/blueprint/components/filter_is_not_null.hpp +77 -0
  266. include/rerun/blueprint/components/force_distance.hpp +82 -0
  267. include/rerun/blueprint/components/force_iterations.hpp +82 -0
  268. include/rerun/blueprint/components/force_strength.hpp +82 -0
  269. include/rerun/blueprint/components/grid_columns.hpp +78 -0
  270. include/rerun/blueprint/components/grid_spacing.hpp +78 -0
  271. include/rerun/blueprint/components/included_content.hpp +86 -0
  272. include/rerun/blueprint/components/lock_range_during_zoom.hpp +82 -0
  273. include/rerun/blueprint/components/map_provider.hpp +64 -0
  274. include/rerun/blueprint/components/near_clip_plane.hpp +82 -0
  275. include/rerun/blueprint/components/panel_state.hpp +61 -0
  276. include/rerun/blueprint/components/query_expression.hpp +89 -0
  277. include/rerun/blueprint/components/root_container.hpp +77 -0
  278. include/rerun/blueprint/components/row_share.hpp +78 -0
  279. include/rerun/blueprint/components/selected_columns.hpp +76 -0
  280. include/rerun/blueprint/components/tensor_dimension_index_slider.hpp +90 -0
  281. include/rerun/blueprint/components/timeline_name.hpp +76 -0
  282. include/rerun/blueprint/components/view_class.hpp +76 -0
  283. include/rerun/blueprint/components/view_fit.hpp +61 -0
  284. include/rerun/blueprint/components/view_maximized.hpp +79 -0
  285. include/rerun/blueprint/components/view_origin.hpp +81 -0
  286. include/rerun/blueprint/components/viewer_recommendation_hash.hpp +82 -0
  287. include/rerun/blueprint/components/visible_time_range.hpp +77 -0
  288. include/rerun/blueprint/components/visual_bounds2d.hpp +74 -0
  289. include/rerun/blueprint/components/visualizer_override.hpp +86 -0
  290. include/rerun/blueprint/components/zoom_level.hpp +78 -0
  291. include/rerun/blueprint/components.hpp +41 -0
  292. include/rerun/blueprint/datatypes/component_column_selector.hpp +61 -0
  293. include/rerun/blueprint/datatypes/filter_by_range.hpp +59 -0
  294. include/rerun/blueprint/datatypes/filter_is_not_null.hpp +61 -0
  295. include/rerun/blueprint/datatypes/selected_columns.hpp +62 -0
  296. include/rerun/blueprint/datatypes/tensor_dimension_index_slider.hpp +63 -0
  297. include/rerun/blueprint/datatypes.hpp +9 -0
  298. include/rerun/c/arrow_c_data_interface.h +111 -0
  299. include/rerun/c/compiler_utils.h +10 -0
  300. include/rerun/c/rerun.h +627 -0
  301. include/rerun/c/sdk_info.h +28 -0
  302. include/rerun/collection.hpp +496 -0
  303. include/rerun/collection_adapter.hpp +43 -0
  304. include/rerun/collection_adapter_builtins.hpp +138 -0
  305. include/rerun/compiler_utils.hpp +61 -0
  306. include/rerun/component_batch.hpp +163 -0
  307. include/rerun/component_column.hpp +111 -0
  308. include/rerun/component_descriptor.hpp +142 -0
  309. include/rerun/component_type.hpp +35 -0
  310. include/rerun/components/aggregation_policy.hpp +76 -0
  311. include/rerun/components/albedo_factor.hpp +74 -0
  312. include/rerun/components/annotation_context.hpp +102 -0
  313. include/rerun/components/axis_length.hpp +74 -0
  314. include/rerun/components/blob.hpp +73 -0
  315. include/rerun/components/class_id.hpp +71 -0
  316. include/rerun/components/clear_is_recursive.hpp +75 -0
  317. include/rerun/components/color.hpp +99 -0
  318. include/rerun/components/colormap.hpp +99 -0
  319. include/rerun/components/depth_meter.hpp +84 -0
  320. include/rerun/components/draw_order.hpp +79 -0
  321. include/rerun/components/entity_path.hpp +83 -0
  322. include/rerun/components/fill_mode.hpp +72 -0
  323. include/rerun/components/fill_ratio.hpp +79 -0
  324. include/rerun/components/gamma_correction.hpp +80 -0
  325. include/rerun/components/geo_line_string.hpp +63 -0
  326. include/rerun/components/graph_edge.hpp +75 -0
  327. include/rerun/components/graph_node.hpp +79 -0
  328. include/rerun/components/graph_type.hpp +57 -0
  329. include/rerun/components/half_size2d.hpp +91 -0
  330. include/rerun/components/half_size3d.hpp +95 -0
  331. include/rerun/components/image_buffer.hpp +86 -0
  332. include/rerun/components/image_format.hpp +84 -0
  333. include/rerun/components/image_plane_distance.hpp +77 -0
  334. include/rerun/components/interactive.hpp +76 -0
  335. include/rerun/components/keypoint_id.hpp +74 -0
  336. include/rerun/components/lat_lon.hpp +89 -0
  337. include/rerun/components/length.hpp +77 -0
  338. include/rerun/components/line_strip2d.hpp +73 -0
  339. include/rerun/components/line_strip3d.hpp +73 -0
  340. include/rerun/components/magnification_filter.hpp +63 -0
  341. include/rerun/components/marker_shape.hpp +82 -0
  342. include/rerun/components/marker_size.hpp +74 -0
  343. include/rerun/components/media_type.hpp +157 -0
  344. include/rerun/components/name.hpp +83 -0
  345. include/rerun/components/opacity.hpp +77 -0
  346. include/rerun/components/pinhole_projection.hpp +94 -0
  347. include/rerun/components/plane3d.hpp +75 -0
  348. include/rerun/components/pose_rotation_axis_angle.hpp +73 -0
  349. include/rerun/components/pose_rotation_quat.hpp +71 -0
  350. include/rerun/components/pose_scale3d.hpp +102 -0
  351. include/rerun/components/pose_transform_mat3x3.hpp +87 -0
  352. include/rerun/components/pose_translation3d.hpp +96 -0
  353. include/rerun/components/position2d.hpp +86 -0
  354. include/rerun/components/position3d.hpp +90 -0
  355. include/rerun/components/radius.hpp +98 -0
  356. include/rerun/components/range1d.hpp +75 -0
  357. include/rerun/components/resolution.hpp +88 -0
  358. include/rerun/components/rotation_axis_angle.hpp +72 -0
  359. include/rerun/components/rotation_quat.hpp +71 -0
  360. include/rerun/components/scalar.hpp +76 -0
  361. include/rerun/components/scale3d.hpp +102 -0
  362. include/rerun/components/series_visible.hpp +76 -0
  363. include/rerun/components/show_labels.hpp +79 -0
  364. include/rerun/components/stroke_width.hpp +74 -0
  365. include/rerun/components/tensor_data.hpp +94 -0
  366. include/rerun/components/tensor_dimension_index_selection.hpp +77 -0
  367. include/rerun/components/tensor_height_dimension.hpp +71 -0
  368. include/rerun/components/tensor_width_dimension.hpp +71 -0
  369. include/rerun/components/texcoord2d.hpp +101 -0
  370. include/rerun/components/text.hpp +83 -0
  371. include/rerun/components/text_log_level.hpp +110 -0
  372. include/rerun/components/timestamp.hpp +76 -0
  373. include/rerun/components/transform_mat3x3.hpp +92 -0
  374. include/rerun/components/transform_relation.hpp +66 -0
  375. include/rerun/components/translation3d.hpp +96 -0
  376. include/rerun/components/triangle_indices.hpp +85 -0
  377. include/rerun/components/value_range.hpp +78 -0
  378. include/rerun/components/vector2d.hpp +92 -0
  379. include/rerun/components/vector3d.hpp +96 -0
  380. include/rerun/components/video_timestamp.hpp +120 -0
  381. include/rerun/components/view_coordinates.hpp +346 -0
  382. include/rerun/components/visible.hpp +74 -0
  383. include/rerun/components.hpp +77 -0
  384. include/rerun/config.hpp +52 -0
  385. include/rerun/datatypes/angle.hpp +76 -0
  386. include/rerun/datatypes/annotation_info.hpp +76 -0
  387. include/rerun/datatypes/blob.hpp +67 -0
  388. include/rerun/datatypes/bool.hpp +57 -0
  389. include/rerun/datatypes/channel_datatype.hpp +87 -0
  390. include/rerun/datatypes/class_description.hpp +92 -0
  391. include/rerun/datatypes/class_description_map_elem.hpp +69 -0
  392. include/rerun/datatypes/class_id.hpp +62 -0
  393. include/rerun/datatypes/color_model.hpp +68 -0
  394. include/rerun/datatypes/dvec2d.hpp +76 -0
  395. include/rerun/datatypes/entity_path.hpp +60 -0
  396. include/rerun/datatypes/float32.hpp +62 -0
  397. include/rerun/datatypes/float64.hpp +62 -0
  398. include/rerun/datatypes/image_format.hpp +107 -0
  399. include/rerun/datatypes/keypoint_id.hpp +63 -0
  400. include/rerun/datatypes/keypoint_pair.hpp +65 -0
  401. include/rerun/datatypes/mat3x3.hpp +105 -0
  402. include/rerun/datatypes/mat4x4.hpp +119 -0
  403. include/rerun/datatypes/pixel_format.hpp +142 -0
  404. include/rerun/datatypes/plane3d.hpp +60 -0
  405. include/rerun/datatypes/quaternion.hpp +110 -0
  406. include/rerun/datatypes/range1d.hpp +59 -0
  407. include/rerun/datatypes/range2d.hpp +55 -0
  408. include/rerun/datatypes/rgba32.hpp +94 -0
  409. include/rerun/datatypes/rotation_axis_angle.hpp +67 -0
  410. include/rerun/datatypes/tensor_buffer.hpp +529 -0
  411. include/rerun/datatypes/tensor_data.hpp +100 -0
  412. include/rerun/datatypes/tensor_dimension_index_selection.hpp +58 -0
  413. include/rerun/datatypes/tensor_dimension_selection.hpp +56 -0
  414. include/rerun/datatypes/time_int.hpp +62 -0
  415. include/rerun/datatypes/time_range.hpp +55 -0
  416. include/rerun/datatypes/time_range_boundary.hpp +175 -0
  417. include/rerun/datatypes/uint16.hpp +62 -0
  418. include/rerun/datatypes/uint32.hpp +62 -0
  419. include/rerun/datatypes/uint64.hpp +62 -0
  420. include/rerun/datatypes/utf8.hpp +76 -0
  421. include/rerun/datatypes/utf8pair.hpp +62 -0
  422. include/rerun/datatypes/uuid.hpp +60 -0
  423. include/rerun/datatypes/uvec2d.hpp +76 -0
  424. include/rerun/datatypes/uvec3d.hpp +80 -0
  425. include/rerun/datatypes/uvec4d.hpp +59 -0
  426. include/rerun/datatypes/vec2d.hpp +76 -0
  427. include/rerun/datatypes/vec3d.hpp +80 -0
  428. include/rerun/datatypes/vec4d.hpp +84 -0
  429. include/rerun/datatypes/video_timestamp.hpp +67 -0
  430. include/rerun/datatypes/view_coordinates.hpp +87 -0
  431. include/rerun/datatypes/visible_time_range.hpp +57 -0
  432. include/rerun/datatypes.hpp +51 -0
  433. include/rerun/demo_utils.hpp +75 -0
  434. include/rerun/entity_path.hpp +20 -0
  435. include/rerun/error.hpp +180 -0
  436. include/rerun/half.hpp +10 -0
  437. include/rerun/image_utils.hpp +187 -0
  438. include/rerun/indicator_component.hpp +59 -0
  439. include/rerun/loggable.hpp +54 -0
  440. include/rerun/recording_stream.hpp +960 -0
  441. include/rerun/rerun_sdk_export.hpp +25 -0
  442. include/rerun/result.hpp +86 -0
  443. include/rerun/rotation3d.hpp +33 -0
  444. include/rerun/sdk_info.hpp +20 -0
  445. include/rerun/spawn.hpp +21 -0
  446. include/rerun/spawn_options.hpp +57 -0
  447. include/rerun/string_utils.hpp +16 -0
  448. include/rerun/third_party/cxxopts.hpp +2198 -0
  449. include/rerun/time_column.hpp +288 -0
  450. include/rerun/timeline.hpp +38 -0
  451. include/rerun/type_traits.hpp +40 -0
  452. include/rerun.hpp +86 -0
  453. lib/cmake/axel/axel-config.cmake +45 -0
  454. lib/cmake/axel/axelTargets-release.cmake +19 -0
  455. lib/cmake/axel/axelTargets.cmake +108 -0
  456. lib/cmake/momentum/Findre2.cmake +52 -0
  457. lib/cmake/momentum/momentum-config.cmake +67 -0
  458. lib/cmake/momentum/momentumTargets-release.cmake +259 -0
  459. lib/cmake/momentum/momentumTargets.cmake +377 -0
  460. lib/cmake/rerun_sdk/rerun_sdkConfig.cmake +70 -0
  461. lib/cmake/rerun_sdk/rerun_sdkConfigVersion.cmake +83 -0
  462. lib/cmake/rerun_sdk/rerun_sdkTargets-release.cmake +19 -0
  463. lib/cmake/rerun_sdk/rerun_sdkTargets.cmake +108 -0
  464. lib/libarrow.a +0 -0
  465. lib/libarrow_bundled_dependencies.a +0 -0
  466. lib/libaxel.a +0 -0
  467. lib/libmomentum_app_utils.a +0 -0
  468. lib/libmomentum_character.a +0 -0
  469. lib/libmomentum_character_sequence_solver.a +0 -0
  470. lib/libmomentum_character_solver.a +0 -0
  471. lib/libmomentum_common.a +0 -0
  472. lib/libmomentum_diff_ik.a +0 -0
  473. lib/libmomentum_io.a +0 -0
  474. lib/libmomentum_io_common.a +0 -0
  475. lib/libmomentum_io_fbx.a +0 -0
  476. lib/libmomentum_io_gltf.a +0 -0
  477. lib/libmomentum_io_legacy_json.a +0 -0
  478. lib/libmomentum_io_marker.a +0 -0
  479. lib/libmomentum_io_motion.a +0 -0
  480. lib/libmomentum_io_shape.a +0 -0
  481. lib/libmomentum_io_skeleton.a +0 -0
  482. lib/libmomentum_io_urdf.a +0 -0
  483. lib/libmomentum_marker_tracker.a +0 -0
  484. lib/libmomentum_math.a +0 -0
  485. lib/libmomentum_online_qr.a +0 -0
  486. lib/libmomentum_process_markers.a +0 -0
  487. lib/libmomentum_rerun.a +0 -0
  488. lib/libmomentum_simd_constraints.a +0 -0
  489. lib/libmomentum_simd_generalized_loss.a +0 -0
  490. lib/libmomentum_skeleton.a +0 -0
  491. lib/libmomentum_solver.a +0 -0
  492. lib/librerun_c__macos_arm64.a +0 -0
  493. lib/librerun_sdk.a +0 -0
  494. pymomentum/axel.cpython-313-darwin.so +0 -0
  495. pymomentum/backend/__init__.py +16 -0
  496. pymomentum/backend/skel_state_backend.py +631 -0
  497. pymomentum/backend/trs_backend.py +889 -0
  498. pymomentum/backend/utils.py +224 -0
  499. pymomentum/geometry.cpython-313-darwin.so +0 -0
  500. pymomentum/marker_tracking.cpython-313-darwin.so +0 -0
  501. pymomentum/quaternion.py +740 -0
  502. pymomentum/skel_state.py +514 -0
  503. pymomentum/solver.cpython-313-darwin.so +0 -0
  504. pymomentum/solver2.cpython-313-darwin.so +0 -0
  505. pymomentum/torch/character.py +863 -0
  506. pymomentum/torch/parameter_limits.py +494 -0
  507. pymomentum/torch/utility.py +20 -0
  508. pymomentum/trs.py +535 -0
  509. pymomentum_cpu-0.1.84.post0.dist-info/METADATA +126 -0
  510. pymomentum_cpu-0.1.84.post0.dist-info/RECORD +512 -0
  511. pymomentum_cpu-0.1.84.post0.dist-info/WHEEL +5 -0
  512. 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
+ /// ![image](https://static.rerun.io/transform3d_simple/141368b07360ce3fcb1553079258ae3f42bdb9ac/full.png)
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
+ /// ![image](https://static.rerun.io/transform_hierarchy/cb7be7a5a31fcb2efc02ba38e434849248f87554/full.png)
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
+ /// ![image](https://static.rerun.io/transform3d_column_updates/80634e1c7c7a505387e975f25ea8b6bc1d4eb9db/full.png)
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
+ /// ![image](https://static.rerun.io/transform3d_column_updates/80634e1c7c7a505387e975f25ea8b6bc1d4eb9db/full.png)
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
+ /// ![image](https://static.rerun.io/transform3d_partial_updates/11815bebc69ae400847896372b496cdd3e9b19fb/full.png)
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