pymomentum-cpu 0.1.77.post26__cp313-cp313-macosx_15_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 +58 -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 +181 -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 +128 -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 +126 -0
  97. include/momentum/character_solver/vertex_vertex_distance_error_function.h +151 -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 +109 -0
  128. include/momentum/io/fbx/fbx_memory_stream.h +66 -0
  129. include/momentum/io/fbx/openfbx_loader.h +49 -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 +29 -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 +54 -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 +251 -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 +614 -0
  497. pymomentum/backend/trs_backend.py +871 -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 +809 -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.77.post26.dist-info/METADATA +208 -0
  510. pymomentum_cpu-0.1.77.post26.dist-info/RECORD +512 -0
  511. pymomentum_cpu-0.1.77.post26.dist-info/WHEEL +5 -0
  512. pymomentum_cpu-0.1.77.post26.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,310 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #include <momentum/math/types.h>
11
+
12
+ #include <random>
13
+
14
+ namespace momentum {
15
+
16
+ /// A consolidated random number generator to provide convenient APIs wrapping around the random
17
+ /// library of C++ standard library <random>.
18
+ ///
19
+ /// The default engine used in this class is std::mt19937, but it can be replaced, by specifying the
20
+ /// template argument, with any preferable engines (see:
21
+ /// https://en.cppreference.com/w/cpp/numeric/random).
22
+ template <typename Generator_ = std::mt19937>
23
+ class Random final {
24
+ public:
25
+ using Generator = Generator_;
26
+
27
+ /// Returns the singleton instance
28
+ [[nodiscard]] static Random& GetSingleton();
29
+
30
+ /// Constructor
31
+ explicit Random(uint32_t seed = std::random_device{}());
32
+
33
+ /// Generates a random scalar/vector/matrix from the uniform distribution
34
+ ///
35
+ /// The supported types are scalar, vector, or matrix where the elements can be either integer or
36
+ /// real. The supported integer types are whichever supported by std::uniform_int_distribution<T>
37
+ /// (see: https://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution), and the
38
+ /// supported real types are whichever std::is_floating_point<T>::value is true (see:
39
+ /// https://en.cppreference.com/w/cpp/types/is_floating_point).
40
+ ///
41
+ /// The generated random number is in the range of [min, max] for integer types or [min, max) for
42
+ /// real types. However, when built with the -ffast-math flag, the range for real types could be
43
+ /// [min, max] instead.
44
+ ///
45
+ /// @warning While the upper bound is typically exclusive for real types according to
46
+ /// std::uniform_real_distribution, there may be instances where the sampled value equals the
47
+ /// upper bound, depending on the platform and compiler specifics.
48
+ ///
49
+ /// For vector/matrix types, the bounds can be specified in either scalar or (the same dimension
50
+ /// of) vector/matrix. Use this function to specify the bounds in vector/matrix to apply different
51
+ /// bounds for each element in the generated vector/matrix. Use other versions of uniform() that
52
+ /// specify the bounds in scalar to apply the same bounds to all the elements of the generated
53
+ /// vector/matrix.
54
+ ///
55
+ /// @code
56
+ /// Random rand;
57
+ /// auto r0 = rand.uniform(0.0, 1.0); // random double in [0, 1)
58
+ /// auto r1 = rand.uniform(0.f, 1.f); // random float in [0, 1)
59
+ /// auto r3 = rand.uniform(0, 10); // random int in [0, 10]
60
+ /// auto r4 = rand.uniform(Vector2f(0, 1), Vector2f(2, 3)); // random Vector2f in ([0, 2], [1, 3))
61
+ /// @endcode
62
+ ///
63
+ /// @tparam T The random number type to be generated
64
+ /// @param[in] min The lower bound of the random number
65
+ /// @param[in] max The upper bound of the random number
66
+ template <typename T>
67
+ [[nodiscard]] T uniform(const T& min, const T& max);
68
+
69
+ /// Generates a random vector/matrix from the uniform distribution, where the size is fixed
70
+ ///
71
+ /// This is a special case of T uniform(const T&, const T&) where the random number type is fixed
72
+ /// size of vector/matrix and the bounds are specified by the scalar type.
73
+ ///
74
+ /// @code
75
+ /// Random rand;
76
+ /// auto r0 = rand.uniform<Vector2f>(0, 1); // random Vector2f in ([0, 1], [0, 1))
77
+ /// @endcode
78
+ ///
79
+ /// @tparam FixedSizeT The random vector/matrix type to be generated
80
+ /// @param[in] min The lower bound in scalar.
81
+ /// @param[in] max The upper bound in scalar.
82
+ template <typename FixedSizeT>
83
+ [[nodiscard]] FixedSizeT uniform(
84
+ typename FixedSizeT::Scalar min,
85
+ typename FixedSizeT::Scalar max);
86
+
87
+ /// Generates a random vector from the uniform distribution, where the size is dynamic
88
+ ///
89
+ /// This is a special case of T uniform(const T&, const T&) where the random number type is
90
+ /// dynamic size of vector and the bounds are specified by the scalar type.
91
+ ///
92
+ /// @code
93
+ /// Random rand;
94
+ /// auto r0 = rand.uniform<VectorXf>(2, 0, 1); // random VectorXf of dimension 2 where each
95
+ /// element is in [0, 1)
96
+ /// @endcode
97
+ ///
98
+ /// @tparam DynamicVector The random vector type to be generated
99
+ /// @param[in] size The size of the vector.
100
+ /// @param[in] min The lower bound in scalar.
101
+ /// @param[in] max The upper bound in scalar.
102
+ template <typename DynamicVector>
103
+ [[nodiscard]] DynamicVector uniform(
104
+ Eigen::Index size,
105
+ typename DynamicVector::Scalar min,
106
+ typename DynamicVector::Scalar max);
107
+
108
+ /// Generates a random matrix from the uniform distribution, where the size is dynamic
109
+ ///
110
+ /// This is a special case of T uniform(const T&, const T&) where the random number type is
111
+ /// dynamic size of matrix and the bounds are specified by the scalar type.
112
+ ///
113
+ /// @code
114
+ /// Random rand;
115
+ /// auto r0 = rand.uniform<MatrixXf>(2, 3, 0, 1); // random MatrixXf of dimension 2x3 where each
116
+ /// element is in [0, 1)
117
+ /// @endcode
118
+ ///
119
+ /// @tparam DynamicMatrix The random matrix type to be generated
120
+ /// @param[in] rows The row size of the matrix.
121
+ /// @param[in] cols The column size of the matrix.
122
+ /// @param[in] min The lower bound in scalar.
123
+ /// @param[in] max The upper bound in scalar.
124
+ template <typename DynamicMatrix>
125
+ [[nodiscard]] DynamicMatrix uniform(
126
+ Eigen::Index rows,
127
+ Eigen::Index cols,
128
+ typename DynamicMatrix::Scalar min,
129
+ typename DynamicMatrix::Scalar max);
130
+
131
+ /// Generates a random quaternion from a uniform distribution on SO(3)
132
+ template <typename T>
133
+ [[nodiscard]] Quaternion<T> uniformQuaternion();
134
+
135
+ /// Generates a random rotation matrix from a uniform distribution on SO(3)
136
+ template <typename T>
137
+ [[nodiscard]] Matrix3<T> uniformRotationMatrix();
138
+
139
+ /// Generates a random isometry (rigid transformation) from a uniform distribution on SE(3)
140
+ /// based on input minimum and maximum 3D vectors for the translation part.
141
+ ///
142
+ /// @tparam Generator The type of random number generator.
143
+ /// @tparam T The type of isometry component, typically a float or double.
144
+ /// @param min The minimum 3D vector for the translation part.
145
+ /// @param max The maximum 3D vector for the translation part.
146
+ /// @return A random Isometry3 of type T.
147
+ template <typename T>
148
+ [[nodiscard]] Isometry3<T> uniformIsometry3(
149
+ const Vector3<T>& min = Vector3<T>::Zero(),
150
+ const Vector3<T>& max = Vector3<T>::Ones());
151
+
152
+ /// Generates a random affine transformation from a uniform distribution on the space of all
153
+ /// affine transformations.
154
+ ///
155
+ /// The transformation is created based on input minimum and maximum 3D vectors for the
156
+ /// translation part, and minimum and maximum scale factors for the linear part.
157
+ ///
158
+ /// @tparam Generator The type of random number generator.
159
+ /// @tparam T The type of affine transformation component, typically a float or double.
160
+ /// @param scaleMin The minimum scale factor for the linear part.
161
+ /// @param scaleMax The maximum scale factor for the linear part.
162
+ /// @param min The minimum 3D vector for the translation part.
163
+ /// @param max The maximum 3D vector for the translation part.
164
+ /// @return A random Affine3 of type T.
165
+ template <typename T>
166
+ [[nodiscard]] Affine3<T> uniformAffine3(
167
+ T scaleMin = 0.1,
168
+ T scaleMax = 10.0,
169
+ const Vector3<T>& min = Vector3<T>::Zero(),
170
+ const Vector3<T>& max = Vector3<T>::Ones());
171
+
172
+ /// Generates a random value from the Gaussian distribution
173
+ ///
174
+ /// @tparam T The random number type to be generated
175
+ /// @param[in] mean The mean of the Gaussian distribution
176
+ /// @param[in] sigma The standard deviation of the Gaussian distribution
177
+ template <typename T>
178
+ [[nodiscard]] T normal(const T& mean, const T& sigma);
179
+
180
+ /// Generates a random value from the Gaussian distribution
181
+ ///
182
+ /// @tparam FixedSizeT The random vector/matrix type to be generated
183
+ /// @param[in] mean The mean of the Gaussian distribution
184
+ /// @param[in] sigma The standard deviation of the Gaussian distribution
185
+ template <typename FixedSizeT>
186
+ [[nodiscard]] FixedSizeT normal(
187
+ typename FixedSizeT::Scalar mean,
188
+ typename FixedSizeT::Scalar sigma);
189
+
190
+ /// Generates a random value from the Gaussian distribution
191
+ ///
192
+ /// @tparam DynamicVector The random vector type to be generated
193
+ /// @param[in] size The size of the vector.
194
+ /// @param[in] mean The mean of the Gaussian distribution
195
+ /// @param[in] sigma The standard deviation of the Gaussian distribution
196
+ template <typename DynamicVector>
197
+ [[nodiscard]] DynamicVector normal(
198
+ Eigen::Index size,
199
+ typename DynamicVector::Scalar mean,
200
+ typename DynamicVector::Scalar sigma);
201
+
202
+ /// Generates a random value from the Gaussian distribution
203
+ ///
204
+ /// @tparam DynamicMatrix The random matrix type to be generated
205
+ /// @param[in] rows The row size of the matrix.
206
+ /// @param[in] cols The column size of the matrix.
207
+ /// @param[in] mean The mean of the Gaussian distribution
208
+ /// @param[in] sigma The standard deviation of the Gaussian distribution
209
+ template <typename DynamicMatrix>
210
+ [[nodiscard]] DynamicMatrix normal(
211
+ Eigen::Index rows,
212
+ Eigen::Index cols,
213
+ typename DynamicMatrix::Scalar mean,
214
+ typename DynamicMatrix::Scalar sigma);
215
+
216
+ /// Returns the seed.
217
+ [[nodiscard]] uint32_t getSeed() const;
218
+
219
+ /// Sets a new seed for the internal random number engine.
220
+ void setSeed(uint32_t seed);
221
+
222
+ private:
223
+ /// The seed used for the internal random number engine.
224
+ uint32_t seed_;
225
+
226
+ /// The internal random number engine.
227
+ Generator generator_;
228
+ };
229
+
230
+ /// Generates a random type T from the uniform distribution, using the global random number
231
+ /// generator Random
232
+ template <typename T>
233
+ [[nodiscard]] T uniform(const T& min, const T& max);
234
+
235
+ /// Generates a random fixed size vector/matrix from the uniform distribution, using the global
236
+ /// random number generator Random
237
+ template <typename FixedSizeT>
238
+ [[nodiscard]] FixedSizeT uniform(typename FixedSizeT::Scalar min, typename FixedSizeT::Scalar max);
239
+
240
+ /// Generates a random dynamic size vector from the uniform distribution, using the global random
241
+ /// number generator Random
242
+ template <typename DynamicVector>
243
+ [[nodiscard]] DynamicVector
244
+ uniform(Eigen::Index size, typename DynamicVector::Scalar min, typename DynamicVector::Scalar max);
245
+
246
+ /// Generates a random type dynamic size matrix from the uniform distribution, using the global
247
+ /// random number generator Random
248
+ template <typename DynamicMatrix>
249
+ [[nodiscard]] DynamicMatrix uniform(
250
+ Eigen::Index rows,
251
+ Eigen::Index cols,
252
+ typename DynamicMatrix::Scalar min,
253
+ typename DynamicMatrix::Scalar max);
254
+
255
+ /// Generates a random quaternion from a uniform distribution on SO(3)
256
+ template <typename T>
257
+ [[nodiscard]] Quaternion<T> uniformQuaternion();
258
+
259
+ /// Generates a random rotation matrix from a uniform distribution on SO(3)
260
+ template <typename T>
261
+ [[nodiscard]] Matrix3<T> uniformRotationMatrix();
262
+
263
+ /// Generates a random isometry (rigid transformation) from a uniform distribution on SE(3)
264
+ /// based on input minimum and maximum 3D vectors for the translation part.
265
+ template <typename T>
266
+ [[nodiscard]] Isometry3<T> uniformIsometry3(
267
+ const Vector3<T>& min = Vector3<T>::Zero(),
268
+ const Vector3<T>& max = Vector3<T>::Ones());
269
+
270
+ /// Generates a random affine transformation from a uniform distribution on the space of all
271
+ /// affine transformations.
272
+ template <typename T>
273
+ [[nodiscard]] Affine3<T> uniformAffine3(
274
+ T scaleMin = 0.1,
275
+ T scaleMax = 10.0,
276
+ const Vector3<T>& min = Vector3<T>::Zero(),
277
+ const Vector3<T>& max = Vector3<T>::Ones());
278
+
279
+ /// Generates a random type T from the Gaussian distribution, using the global random number
280
+ /// generator Random
281
+ template <typename T>
282
+ [[nodiscard]] T normal(const T& mean, const T& sigma);
283
+
284
+ /// Generates a random fixed size vector/matrix from the Gaussian distribution, using the global
285
+ /// random number generator Random
286
+ template <typename FixedSizeT>
287
+ [[nodiscard]] FixedSizeT normal(
288
+ typename FixedSizeT::Scalar mean,
289
+ typename FixedSizeT::Scalar sigma);
290
+
291
+ /// Generates a random dynamic size vector from the Gaussian distribution, using the global random
292
+ /// number generator Random
293
+ template <typename DynamicVector>
294
+ [[nodiscard]] DynamicVector normal(
295
+ Eigen::Index size,
296
+ typename DynamicVector::Scalar mean,
297
+ typename DynamicVector::Scalar sigma);
298
+
299
+ /// Generates a random dynamic size matrix from the Gaussian distribution, using the global random
300
+ /// number generator Random
301
+ template <typename DynamicMatrix>
302
+ [[nodiscard]] DynamicMatrix normal(
303
+ Eigen::Index rows,
304
+ Eigen::Index cols,
305
+ typename DynamicMatrix::Scalar mean,
306
+ typename DynamicMatrix::Scalar sigma);
307
+
308
+ } // namespace momentum
309
+
310
+ #include <momentum/math/random-inl.h>
@@ -0,0 +1,40 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #include <momentum/math/generalized_loss.h>
11
+ #include <momentum/simd/simd.h>
12
+
13
+ namespace momentum {
14
+
15
+ /// SIMD version of the generalized loss function.
16
+ template <typename T>
17
+ class SimdGeneralizedLossT : public GeneralizedLossT<T> {
18
+ public:
19
+ using Base = GeneralizedLossT<T>;
20
+
21
+ /// Constructs a SIMD generalized loss function
22
+ ///
23
+ /// @param a Alpha parameter controlling the shape of the loss function
24
+ /// @param c Scale parameter controlling the width of the quadratic region
25
+ explicit SimdGeneralizedLossT(const T& a = Base::kL2, const T& c = T(1));
26
+
27
+ /// Computes the loss value for a given squared error
28
+ ///
29
+ /// @param sqrError Squared error term (SIMD packet)
30
+ /// @return Loss value as a SIMD packet
31
+ [[nodiscard]] Packet<T> value(const Packet<T>& sqrError) const;
32
+
33
+ /// Computes the derivative of the loss function
34
+ ///
35
+ /// @param sqrError Squared error term (SIMD packet)
36
+ /// @return Derivative value as a SIMD packet
37
+ [[nodiscard]] Packet<T> deriv(const Packet<T>& sqrError) const;
38
+ };
39
+
40
+ } // namespace momentum
@@ -0,0 +1,229 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #include <momentum/math/types.h>
11
+
12
+ #include <Eigen/Core>
13
+ #include <Eigen/Geometry>
14
+
15
+ namespace momentum {
16
+
17
+ /// Lightweight transform with separate rotation, translation, and uniform scaling
18
+ ///
19
+ /// This class provides a more efficient alternative to Eigen's Affine3 for transformations
20
+ /// that only involve rotation, translation, and uniform scaling. It stores these components
21
+ /// separately, which allows for more efficient operations and memory usage.
22
+ ///
23
+ /// @tparam T The scalar type (float or double)
24
+ template <typename T>
25
+ struct TransformT {
26
+ Quaternion<T> rotation;
27
+ Vector3<T> translation;
28
+ T scale;
29
+
30
+ /// Creates a transform with only rotation
31
+ [[nodiscard]] static TransformT<T> makeRotation(const Quaternion<T>& rotation_in);
32
+
33
+ /// Creates a transform with only translation
34
+ [[nodiscard]] static TransformT<T> makeTranslation(const Vector3<T>& translation_in);
35
+
36
+ /// Creates a transform with only scaling
37
+ [[nodiscard]] static TransformT<T> makeScale(const T& scale_in);
38
+
39
+ /// Creates a random transform
40
+ ///
41
+ /// @param[in] translation If true, use random translation (-1 to 1)
42
+ /// @param[in] rotation If true, use random rotation
43
+ /// @param[in] scale If true, use random scale (0.5 to 2.0)
44
+ [[nodiscard]] static TransformT<T>
45
+ makeRandom(bool translation = true, bool rotation = true, bool scale = true);
46
+
47
+ /// Converts from Eigen's Affine3
48
+ [[nodiscard]] static TransformT<T> fromAffine3(const Affine3<T>& other);
49
+
50
+ /// Converts from 4x4 matrix
51
+ [[nodiscard]] static TransformT<T> fromMatrix(const Matrix4<T>& other);
52
+
53
+ /// Creates identity transform
54
+ TransformT() : rotation(Quaternion<T>::Identity()), translation(Vector3<T>::Zero()), scale(1) {
55
+ // Empty
56
+ }
57
+
58
+ /// Copy constructor with type conversion
59
+ ///
60
+ /// @tparam T2 Source scalar type
61
+ template <typename T2>
62
+ explicit TransformT(const TransformT<T2>& other)
63
+ : rotation(other.rotation.template cast<T>()),
64
+ translation(other.translation.template cast<T>()),
65
+ scale(other.scale) {
66
+ // Empty
67
+ }
68
+
69
+ /// Constructor with components
70
+ explicit TransformT(
71
+ const Vector3<T>& translation_in,
72
+ const Quaternion<T>& rotation_in = Quaternion<T>::Identity(),
73
+ const T& scale_in = T(1))
74
+ : rotation(rotation_in), translation(translation_in), scale(scale_in) {
75
+ // Empty
76
+ }
77
+
78
+ /// Move constructor
79
+ explicit TransformT(
80
+ Vector3<T>&& translation_in,
81
+ Quaternion<T>&& rotation_in = Quaternion<T>::Identity(),
82
+ T&& scale_in = T(1))
83
+ : rotation(std::move(rotation_in)),
84
+ translation(std::move(translation_in)),
85
+ scale(std::move(scale_in)) {
86
+ // Empty
87
+ }
88
+
89
+ /// Constructor from Affine3
90
+ explicit TransformT(const Affine3<T>& other) {
91
+ *this = fromAffine3(other);
92
+ }
93
+
94
+ /// Constructor from 4x4 matrix
95
+ explicit TransformT(const Matrix4<T>& other) {
96
+ *this = fromMatrix(other);
97
+ }
98
+
99
+ /// Assignment from Affine3
100
+ TransformT<T>& operator=(const Affine3<T>& other) {
101
+ *this = fromAffine3(other);
102
+ return *this;
103
+ }
104
+
105
+ /// Assignment from 4x4 matrix
106
+ TransformT<T>& operator=(const Matrix4<T>& other) {
107
+ *this = fromMatrix(other);
108
+ return *this;
109
+ }
110
+
111
+ /// Combines transforms (applies other first, then this)
112
+ [[nodiscard]] TransformT<T> operator*(const TransformT<T>& other) const {
113
+ // [ s_1*R_1 t_1 ] * [ s_2*R_2 t_2 ] = [ s_1*s_2*R_1*R_2 s_1*R_1*t_2 + t_1 ]
114
+ // [ 0 1 ] [ 0 1 ] [ 0 1 ]
115
+ const Vector3<T> trans = translation + rotation * (scale * other.translation);
116
+ const Quaternion<T> rot = rotation * other.rotation;
117
+ const T newScale = scale * other.scale;
118
+ return TransformT<T>(std::move(trans), std::move(rot), std::move(newScale));
119
+ }
120
+
121
+ /// Multiplies with Affine3
122
+ [[nodiscard]] Affine3<T> operator*(const Affine3<T>& other) const {
123
+ Affine3<T> out = Affine3<T>::Identity();
124
+ out.linear().noalias() = toLinear() * other.linear();
125
+ out.translation().noalias() = rotation * (scale * other.translation()) + translation;
126
+ return out;
127
+ }
128
+
129
+ /// Transforms a point
130
+ [[nodiscard]] Vector3<T> operator*(const Vector3<T>& other) const {
131
+ return transformPoint(other);
132
+ }
133
+
134
+ /// Converts to Affine3
135
+ explicit operator Affine3<T>() const {
136
+ return toAffine3();
137
+ }
138
+
139
+ /// Converts to Affine3
140
+ [[nodiscard]] Affine3<T> toAffine3() const;
141
+
142
+ /// Converts to 4x4 matrix
143
+ [[nodiscard]] Matrix4<T> toMatrix() const {
144
+ Matrix4<T> out = Matrix4<T>::Zero();
145
+ out.template topLeftCorner<3, 3>().noalias() = rotation.toRotationMatrix() * scale;
146
+ out.template topRightCorner<3, 1>() = translation;
147
+ out(3, 3) = T(1);
148
+ return out;
149
+ }
150
+
151
+ /// Returns rotation as 3x3 matrix
152
+ [[nodiscard]] Matrix3<T> toRotationMatrix() const {
153
+ return rotation.toRotationMatrix();
154
+ }
155
+
156
+ /// Returns rotation*scale as 3x3 matrix
157
+ [[nodiscard]] Matrix3<T> toLinear() const {
158
+ return toRotationMatrix() * scale;
159
+ }
160
+
161
+ /// Gets the X axis of the rotation
162
+ [[nodiscard]] Vector3<T> getAxisX() const {
163
+ // Optimized version of Eigen::Quaternion::toRotationMatrix()
164
+ Vector3<T> axis;
165
+
166
+ const T ty = T(2) * rotation.y();
167
+ const T tz = T(2) * rotation.z();
168
+ const T twy = ty * rotation.w();
169
+ const T twz = tz * rotation.w();
170
+ const T txy = ty * rotation.x();
171
+ const T txz = tz * rotation.x();
172
+ const T tyy = ty * rotation.y();
173
+ const T tzz = tz * rotation.z();
174
+
175
+ axis[0] = T(1) - (tyy + tzz);
176
+ axis[1] = txy + twz;
177
+ axis[2] = txz - twy;
178
+
179
+ return axis;
180
+ }
181
+
182
+ /// Applies full transform to a point
183
+ [[nodiscard]] Vector3<T> transformPoint(const Vector3<T>& pt) const {
184
+ return translation + rotation * (scale * pt).eval();
185
+ }
186
+
187
+ /// Applies only rotation to a vector
188
+ [[nodiscard]] Vector3<T> rotate(const Vector3<T>& vec) const;
189
+
190
+ /// Computes inverse transform
191
+ [[nodiscard]] TransformT<T> inverse() const;
192
+
193
+ /// Converts to different scalar type
194
+ ///
195
+ /// @tparam T2 Target scalar type
196
+ template <typename T2>
197
+ [[nodiscard]] TransformT<T2> cast() const {
198
+ return TransformT<T2>(
199
+ this->translation.template cast<T2>(),
200
+ this->rotation.template cast<T2>(),
201
+ static_cast<T2>(this->scale));
202
+ }
203
+
204
+ /// Checks if this transform is approximately equal to another
205
+ [[nodiscard]] bool isApprox(
206
+ const TransformT<T>& other,
207
+ T tol = Eigen::NumTraits<T>::dummy_precision()) const {
208
+ // TODO: Improve
209
+ return toAffine3().isApprox(other.toAffine3(), tol);
210
+ }
211
+ };
212
+
213
+ template <typename T>
214
+ using TransformListT =
215
+ std::vector<TransformT<T>>; // structure describing a the state of all joints in a skeleton
216
+
217
+ template <typename T>
218
+ TransformT<T> blendTransforms(
219
+ gsl::span<const TransformT<T>> transforms,
220
+ gsl::span<const T> weights);
221
+
222
+ /// Spherical linear interpolation between two transforms
223
+ template <typename T>
224
+ TransformT<T> slerp(const TransformT<T>& t1, const TransformT<T>& t2, T weight);
225
+
226
+ using Transform = TransformT<float>;
227
+ using TransformList = TransformListT<float>;
228
+
229
+ } // namespace momentum