pymomentum-cpu 0.1.82.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 +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 +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 +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 +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 +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 +856 -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.82.post0.dist-info/METADATA +121 -0
  510. pymomentum_cpu-0.1.82.post0.dist-info/RECORD +512 -0
  511. pymomentum_cpu-0.1.82.post0.dist-info/WHEEL +5 -0
  512. pymomentum_cpu-0.1.82.post0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,181 @@
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/character/joint_state.h>
11
+ #include <momentum/character/types.h>
12
+ #include <momentum/math/types.h>
13
+
14
+ namespace momentum {
15
+
16
+ /// Measures of similarity between two skeleton states
17
+ ///
18
+ /// Contains both per-joint error metrics and aggregate statistics
19
+ struct StateSimilarity {
20
+ /// Position error for each joint (in distance units)
21
+ VectorXf positionError;
22
+
23
+ /// Orientation error for each joint (in radians)
24
+ VectorXf orientationError;
25
+
26
+ /// Root mean square of position errors across all joints
27
+ float positionRMSE;
28
+
29
+ /// Root mean square of orientation errors across all joints
30
+ float orientationRMSE;
31
+
32
+ /// Maximum position error across all joints
33
+ float positionMax;
34
+
35
+ /// Maximum orientation error across all joints
36
+ float orientationMax;
37
+ };
38
+
39
+ /// Represents the complete state of a skeleton
40
+ ///
41
+ /// Stores joint parameters and computed joint states for an entire skeleton.
42
+ /// Provides methods for updating the state based on new parameters and
43
+ /// comparing different skeleton states.
44
+ template <typename T>
45
+ struct SkeletonStateT {
46
+ /// Joint parameters for all joints in the skeleton
47
+ JointParametersT<T> jointParameters;
48
+
49
+ /// Computed joint states for all joints in the skeleton
50
+ JointStateListT<T> jointState;
51
+
52
+ /// Creates an empty skeleton state
53
+ SkeletonStateT() noexcept = default;
54
+
55
+ /// Creates a skeleton state from joint parameters and a reference skeleton
56
+ ///
57
+ /// @param parameters Joint parameters for all joints in the skeleton
58
+ /// @param referenceSkeleton The skeleton structure defining joint hierarchy
59
+ /// @param computeDeriv Whether to compute derivative information for the joints
60
+ SkeletonStateT(
61
+ const JointParametersT<T>& parameters,
62
+ const Skeleton& referenceSkeleton,
63
+ bool computeDeriv = true);
64
+
65
+ /// Creates a skeleton state from rvalue joint parameters and a reference skeleton
66
+ ///
67
+ /// @param parameters Joint parameters for all joints in the skeleton (moved from)
68
+ /// @param referenceSkeleton The skeleton structure defining joint hierarchy
69
+ /// @param computeDeriv Whether to compute derivative information for the joints
70
+ SkeletonStateT(
71
+ JointParametersT<T>&& parameters,
72
+ const Skeleton& referenceSkeleton,
73
+ bool computeDeriv = true);
74
+
75
+ /// Creates a skeleton state from another skeleton state with a different scalar type
76
+ ///
77
+ /// @tparam T2 Source scalar type
78
+ /// @param rhs Source skeleton state to copy from
79
+ template <typename T2>
80
+ explicit SkeletonStateT(const SkeletonStateT<T2>& rhs);
81
+
82
+ /// Updates the skeleton state with new joint parameters
83
+ ///
84
+ /// @param jointParameters New joint parameters for all joints
85
+ /// @param referenceSkeleton The skeleton structure defining joint hierarchy
86
+ /// @param computeDeriv Whether to compute derivative information for the joints
87
+ void set(
88
+ const JointParametersT<T>& jointParameters,
89
+ const Skeleton& referenceSkeleton,
90
+ bool computeDeriv = true);
91
+
92
+ /// Updates the skeleton state with new rvalue joint parameters
93
+ ///
94
+ /// @param jointParameters New joint parameters for all joints (moved from)
95
+ /// @param referenceSkeleton The skeleton structure defining joint hierarchy
96
+ /// @param computeDeriv Whether to compute derivative information for the joints
97
+ void set(
98
+ JointParametersT<T>&& jointParameters,
99
+ const Skeleton& referenceSkeleton,
100
+ bool computeDeriv = true);
101
+
102
+ /// Updates the skeleton state from another skeleton state with a different scalar type
103
+ ///
104
+ /// @tparam T2 Source scalar type
105
+ /// @param rhs Source skeleton state to copy from
106
+ template <typename T2>
107
+ void set(const SkeletonStateT<T2>& rhs);
108
+
109
+ /// Compares two skeleton states and returns similarity metrics
110
+ ///
111
+ /// @param state1 First skeleton state to compare
112
+ /// @param state2 Second skeleton state to compare
113
+ /// @return Similarity metrics between the two states
114
+ [[nodiscard]] static StateSimilarity compare(
115
+ const SkeletonStateT<T>& state1,
116
+ const SkeletonStateT<T>& state2);
117
+
118
+ /// Extracts global transforms for all joints in the skeleton
119
+ ///
120
+ /// @return List of global transforms for all joints
121
+ [[nodiscard]] TransformListT<T> toTransforms() const;
122
+
123
+ /// Converts the skeleton state to a different scalar type
124
+ ///
125
+ /// @tparam T2 Target scalar type
126
+ /// @return Skeleton state with the target scalar type
127
+ template <typename T2>
128
+ [[nodiscard]] SkeletonStateT<T2> cast() const {
129
+ SkeletonStateT<T2> result;
130
+ result.set(*this);
131
+ return result;
132
+ }
133
+
134
+ private:
135
+ /// Updates the joint states based on the current joint parameters
136
+ ///
137
+ /// @param referenceSkeleton The skeleton structure defining joint hierarchy
138
+ /// @param computeDeriv Whether to compute derivative information for the joints
139
+ void set(const Skeleton& referenceSkeleton, bool computeDeriv);
140
+
141
+ /// Copies joint states from another skeleton state with a different scalar type
142
+ ///
143
+ /// @tparam T2 Source scalar type
144
+ /// @param rhs Source skeleton state to copy from
145
+ template <typename T2>
146
+ void copy(const SkeletonStateT<T2>& rhs);
147
+ };
148
+
149
+ /// Computes the relative transform between two joints in a skeleton
150
+ ///
151
+ /// This transform maps points from joint A's local space to joint B's local space.
152
+ /// It is computed by finding the common ancestor of both joints and combining
153
+ /// the transforms along the path, which is more numerically stable than
154
+ /// computing (T_B)^{-1} * T_A directly.
155
+ ///
156
+ /// @param jointA Source joint index
157
+ /// @param jointB Target joint index
158
+ /// @param referenceSkeleton The skeleton structure defining joint hierarchy
159
+ /// @param skelState Current state of the skeleton
160
+ /// @return Transform from joint A's local space to joint B's local space
161
+ template <typename T>
162
+ TransformT<T> transformAtoB(
163
+ size_t jointA,
164
+ size_t jointB,
165
+ const Skeleton& referenceSkeleton,
166
+ const SkeletonStateT<T>& skelState);
167
+
168
+ /// Invert the skeleton state (global transforms in world space) back to joint parameters (Euler
169
+ /// angles in local space). Note that this conversion is not unique due to the non-uniqueness of
170
+ /// Euler angle conversion.
171
+ template <typename T>
172
+ [[nodiscard]] JointParametersT<T> skeletonStateToJointParameters(
173
+ const SkeletonStateT<T>& state,
174
+ const Skeleton& skeleton);
175
+
176
+ template <typename T>
177
+ [[nodiscard]] JointParametersT<T> skeletonStateToJointParameters(
178
+ const TransformListT<T>& state,
179
+ const Skeleton& skeleton);
180
+
181
+ } // namespace momentum
@@ -0,0 +1,38 @@
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/character/types.h>
11
+ #include <momentum/math/types.h>
12
+
13
+ namespace momentum {
14
+
15
+ inline constexpr float kDefaultExtrapolateFactor = 0.8f;
16
+ inline constexpr float kDefaultExtrapolateMaxDelta = 0.4f; // ~23 degrees
17
+
18
+ /// Extrapolates model parameters by first clamping the difference between current and previous
19
+ /// parameters to the range [-maxDelta, maxDelta], and then scaling this clamped difference by
20
+ /// `factor`. Returns the current parameters when sizes mismatch.
21
+ [[nodiscard]] ModelParameters extrapolateModelParameters(
22
+ const ModelParameters& previous,
23
+ const ModelParameters& current,
24
+ float factor = kDefaultExtrapolateFactor,
25
+ float maxDelta = kDefaultExtrapolateMaxDelta);
26
+
27
+ /// Extrapolates model parameters considering active parameters. The extrapolation is done by first
28
+ /// clamping the difference between current and previous parameters to the range [-maxDelta,
29
+ /// maxDelta] for each active parameter, and then scaling this clamped difference by `factor`.
30
+ /// Returns the current parameters when sizes mismatch.
31
+ [[nodiscard]] ModelParameters extrapolateModelParameters(
32
+ const ModelParameters& previous,
33
+ const ModelParameters& current,
34
+ const ParameterSet& activeParams,
35
+ float factor = kDefaultExtrapolateFactor,
36
+ float maxDelta = kDefaultExtrapolateMaxDelta);
37
+
38
+ } // namespace momentum
@@ -0,0 +1,67 @@
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/character/types.h>
11
+ #include <momentum/math/types.h>
12
+
13
+ #include <cstdint>
14
+ #include <vector>
15
+
16
+ namespace momentum {
17
+
18
+ /// Maximum number of joints that can influence a single vertex
19
+ inline static constexpr uint32_t kMaxSkinJoints = 8;
20
+
21
+ /// Matrix type for storing joint indices that influence each vertex
22
+ ///
23
+ /// Each row represents a vertex, and each column represents a joint influence.
24
+ /// The matrix has a fixed number of columns (kMaxSkinJoints) and a dynamic number of rows.
25
+ using IndexMatrix =
26
+ Eigen::Matrix<uint32_t, Eigen::Dynamic, kMaxSkinJoints, Eigen::AutoAlign | Eigen::RowMajor>;
27
+
28
+ /// Matrix type for storing weights of joint influences on each vertex
29
+ ///
30
+ /// Each row represents a vertex, and each column represents the weight of a joint influence.
31
+ /// The matrix has a fixed number of columns (kMaxSkinJoints) and a dynamic number of rows.
32
+ using WeightMatrix =
33
+ Eigen::Matrix<float, Eigen::Dynamic, kMaxSkinJoints, Eigen::AutoAlign | Eigen::RowMajor>;
34
+
35
+ /// Stores skinning weights and joint indices for character mesh deformation
36
+ struct SkinWeights {
37
+ /// Joint indices that influence each vertex
38
+ ///
39
+ /// Each row corresponds to a vertex, and each column contains the index of a joint
40
+ /// that influences that vertex. Unused influences are set to 0.
41
+ IndexMatrix index;
42
+
43
+ /// Weight of each joint's influence on each vertex
44
+ ///
45
+ /// Each row corresponds to a vertex, and each column contains the weight of a joint's
46
+ /// influence on that vertex. Weights for a vertex typically sum to 1.0. Unused influences
47
+ /// are set to 0.0.
48
+ WeightMatrix weight;
49
+
50
+ /// Sets the skin weights from vectors of joint indices and weights
51
+ ///
52
+ /// @param ind Vector of vectors containing joint indices for each vertex
53
+ /// @param wgt Vector of vectors containing weights for each vertex
54
+ /// @throws If ind.size() != wgt.size() (via MT_CHECK)
55
+ void set(const std::vector<std::vector<size_t>>& ind, const std::vector<std::vector<float>>& wgt);
56
+
57
+ /// Compares two SkinWeights objects for equality
58
+ ///
59
+ /// Two SkinWeights objects are considered equal if their index and weight matrices
60
+ /// are approximately equal (using Eigen's isApprox method).
61
+ ///
62
+ /// @param skinWeights The SkinWeights object to compare with
63
+ /// @return True if the objects are equal, false otherwise
64
+ bool operator==(const SkinWeights& skinWeights) const;
65
+ };
66
+
67
+ } // namespace momentum
@@ -0,0 +1,80 @@
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/character/skin_weights.h>
11
+ #include <momentum/character/types.h>
12
+ #include <momentum/math/utility.h>
13
+
14
+ namespace momentum {
15
+
16
+ /// A skinned locator is a locator which can be attached to multiple bones.
17
+ /// The locator's position is defined relative to the rest pose of the character (and not
18
+ /// local to a single parent bone as with a regular Locator) and its position at runtime is
19
+ /// determined by blending the skinning transforms (using LBS).
20
+ ///
21
+ /// The purpose of the SkinnedLocator is to model mocap markers attached to the actor's skin:
22
+ /// the location of points on e.g. the shoulder is more accurately modeled by blending
23
+ /// multiple transforms. In addition, the locator can be constrained to slide along the
24
+ /// surface of the mesh using e.g. the SkinnedLocatorTriangleErrorFunction.
25
+ ///
26
+ /// Locators can be used for various purposes such as tracking specific points
27
+ /// on a character, defining constraints, or serving as targets for inverse kinematics.
28
+ struct SkinnedLocator {
29
+ /// Name identifier for the locator
30
+ std::string name;
31
+
32
+ /// Index of the parent joints in the skeleton. The final position of the locator
33
+ /// is determined by blending the transforms from each (valid) parent.
34
+ Eigen::Matrix<uint32_t, kMaxSkinJoints, 1> parents;
35
+
36
+ /// Skinning weight for each parent joint.
37
+ Eigen::Matrix<float, kMaxSkinJoints, 1> skinWeights;
38
+
39
+ /// Position relative to rest pose of the character
40
+ Vector3f position;
41
+
42
+ /// Influence weight of this locator when used in constraints
43
+ float weight;
44
+
45
+ /// Creates a locator with the specified properties
46
+ ///
47
+ /// @param name Identifier for the locator
48
+ /// @param parents Indices of the parent joints
49
+ /// @param weights Skinning weights for the parent joints
50
+ /// @param weight Influence weight in constraints
51
+ SkinnedLocator(
52
+ const std::string& name = "uninitialized",
53
+ const Eigen::Matrix<uint32_t, kMaxSkinJoints, 1>& parents =
54
+ Eigen::Matrix<uint32_t, kMaxSkinJoints, 1>::Zero(),
55
+ const Eigen::Matrix<float, kMaxSkinJoints, 1>& skinWeights =
56
+ Eigen::Matrix<float, kMaxSkinJoints, 1>::Zero(),
57
+ const Vector3f& position = Vector3f::Zero(),
58
+ const float weight = 1.0f)
59
+ : name(name),
60
+ parents(parents),
61
+ skinWeights(skinWeights),
62
+ position(position),
63
+ weight(weight) {}
64
+
65
+ /// Compares two locators for equality, using approximate comparison for floating-point values
66
+ ///
67
+ /// @param locator The locator to compare with
68
+ /// @return True if all properties are equal (or approximately equal for floating-point values)
69
+ inline bool operator==(const SkinnedLocator& locator) const {
70
+ return (
71
+ (name == locator.name) && (parents == locator.parents) &&
72
+ skinWeights.isApprox(locator.skinWeights) && position.isApprox(locator.position) &&
73
+ isApprox(weight, locator.weight));
74
+ }
75
+ };
76
+
77
+ /// A collection of locators attached to a skeleton
78
+ using SkinnedLocatorList = std::vector<SkinnedLocator>;
79
+
80
+ } // namespace momentum
@@ -0,0 +1,202 @@
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
+ //------------------------------------------------------------------------------
11
+ // Momentum specific Eigen defines
12
+ //------------------------------------------------------------------------------
13
+
14
+ #include <momentum/character/fwd.h>
15
+
16
+ #include <Eigen/Dense>
17
+
18
+ #include <array>
19
+ #include <string>
20
+ #include <tuple>
21
+ #include <vector>
22
+
23
+ namespace momentum {
24
+
25
+ inline constexpr size_t kParametersPerJoint = 7;
26
+ enum JointParameterNames { TX = 0, TY, TZ, RX, RY, RZ, SC };
27
+ inline constexpr std::array<const char*, kParametersPerJoint>
28
+ kJointParameterNames{"tx", "ty", "tz", "rx", "ry", "rz", "sc"};
29
+
30
+ template <typename T>
31
+ using JointVectorT = Eigen::Matrix<T, kParametersPerJoint, 1>;
32
+ using JointVector = JointVectorT<float>;
33
+
34
+ template <template <typename> typename Derived, typename EigenType>
35
+ struct EigenStrongType {
36
+ using Scalar = typename EigenType::Scalar;
37
+
38
+ EigenType v;
39
+
40
+ EigenStrongType() : v() {}
41
+
42
+ explicit EigenStrongType(::Eigen::Index size) : v(size) {}
43
+
44
+ template <typename Other>
45
+ /* implicit */ EigenStrongType(const ::Eigen::EigenBase<Other>& o) : v(o) {}
46
+
47
+ template <typename Other>
48
+ /* implicit */ EigenStrongType(::Eigen::EigenBase<Other>&& o) : v(std::move(o)) {}
49
+
50
+ template <typename Other>
51
+ EigenStrongType& operator=(const ::Eigen::EigenBase<Other>& o) {
52
+ v = o;
53
+ return *this;
54
+ }
55
+
56
+ template <typename Other>
57
+ EigenStrongType& operator=(::Eigen::EigenBase<Other>&& o) {
58
+ v = std::move(o);
59
+ return *this;
60
+ }
61
+
62
+ EIGEN_DEVICE_FUNC
63
+ EIGEN_STRONG_INLINE
64
+ auto&& operator()(::Eigen::Index i) {
65
+ return v(i);
66
+ }
67
+
68
+ EIGEN_DEVICE_FUNC
69
+ EIGEN_STRONG_INLINE
70
+ auto&& operator()(::Eigen::Index i) const {
71
+ return v(i);
72
+ }
73
+
74
+ EIGEN_DEVICE_FUNC
75
+ EIGEN_STRONG_INLINE
76
+ auto&& operator[](::Eigen::Index i) {
77
+ return v[i];
78
+ }
79
+
80
+ EIGEN_DEVICE_FUNC
81
+ EIGEN_STRONG_INLINE
82
+ auto&& operator[](::Eigen::Index i) const {
83
+ return v[i];
84
+ }
85
+
86
+ template <typename NewScalar>
87
+ [[nodiscard]] EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived<NewScalar> cast() const {
88
+ return v.template cast<NewScalar>();
89
+ }
90
+
91
+ [[nodiscard]] EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE auto size() const {
92
+ return v.size();
93
+ }
94
+
95
+ EIGEN_DEVICE_FUNC
96
+ static Derived<Scalar> Zero(::Eigen::Index size) {
97
+ return Derived<Scalar>(EigenType::Zero(size));
98
+ }
99
+ };
100
+
101
+ // a vector describing model parameters
102
+ template <typename T>
103
+ struct ModelParametersT : public EigenStrongType<ModelParametersT, ::Eigen::VectorX<T>> {
104
+ using t = ::Eigen::VectorX<T>;
105
+ using EigenStrongType<ModelParametersT, t>::EigenStrongType;
106
+ using EigenStrongType<ModelParametersT, t>::operator=;
107
+ };
108
+
109
+ using ModelParameters = ModelParametersT<float>;
110
+ using ModelParametersd = ModelParametersT<double>;
111
+
112
+ template <typename T>
113
+ struct BlendWeightsT : public EigenStrongType<BlendWeightsT, ::Eigen::VectorX<T>> {
114
+ using t = ::Eigen::VectorX<T>;
115
+ using EigenStrongType<BlendWeightsT, t>::EigenStrongType;
116
+ using EigenStrongType<BlendWeightsT, t>::operator=;
117
+ };
118
+
119
+ using BlendWeights = BlendWeightsT<float>;
120
+ using BlendWeightsd = BlendWeightsT<double>;
121
+
122
+ static_assert(
123
+ sizeof(BlendWeights) == sizeof(Eigen::VectorXf),
124
+ "Missing Empty Base Class Optimization");
125
+ static_assert(
126
+ sizeof(BlendWeightsd) == sizeof(Eigen::VectorXd),
127
+ "Missing Empty Base Class Optimization");
128
+
129
+ // A vector describing joint parameters, the vector has size numSkeletonJoints * kParametersPerJoint
130
+ // e.g. in case of a character body model with 159 joints, the joint parameters vector will have the
131
+ // size 159 * 7 = 1113
132
+ template <typename T>
133
+ struct JointParametersT : public EigenStrongType<JointParametersT, ::Eigen::VectorX<T>> {
134
+ using t = ::Eigen::VectorX<T>;
135
+ using EigenStrongType<JointParametersT, t>::EigenStrongType;
136
+ using EigenStrongType<JointParametersT, t>::operator=;
137
+
138
+ [[nodiscard]] static ::Eigen::Vector3<T> fromRotationMatrix(const ::Eigen::Matrix3<T>& m) {
139
+ // From JointState::set(), we can see that localRotation = rz * ry * rx, but the order in
140
+ // JointParameters is [rx, ry, rz]. Therefore, the conversion should be
141
+ // rotationMatrixToEulerZYX.reverse.
142
+ return rotationMatrixToEulerZYX(m).reverse();
143
+ }
144
+
145
+ [[nodiscard]] static ::Eigen::Vector3<T> fromQuaternion(const ::Eigen::Quaternion<T>& q) {
146
+ return fromRotationMatrix(q.toRotationMatrix());
147
+ }
148
+ };
149
+
150
+ using JointParameters = JointParametersT<float>;
151
+ using JointParametersd = JointParametersT<double>;
152
+
153
+ static_assert(
154
+ sizeof(JointParameters) == sizeof(Eigen::VectorXf),
155
+ "Missing Empty Base Class Optimization");
156
+ static_assert(
157
+ sizeof(JointParametersd) == sizeof(Eigen::VectorXd),
158
+ "Missing Empty Base Class Optimization");
159
+
160
+ template <typename T>
161
+ using JointStateListT = std::vector<JointStateT<T>>;
162
+
163
+ using JointStateList = JointStateListT<float>;
164
+ using JointStateListd = JointStateListT<double>;
165
+
166
+ /// A struct that encapsulates both pose and identity parameters for a character.
167
+ ///
168
+ /// @note This structure implies, but does not enforce, that the pose vector should contain only
169
+ /// pose information with identity-related elements set to zero. Similarly, the identity vector
170
+ /// should exclusively contain bone length information, excluding any pose data.
171
+ template <typename T>
172
+ struct CharacterParametersT {
173
+ /// The model parameter vector representing the pose of the character. This vector should have a
174
+ /// size of numModelParams.
175
+
176
+ ModelParametersT<T> pose;
177
+ /// The joint parameter vector representing the unique bone lengths of the character, defining
178
+ /// the character's identity. This vector should have a size of numSkeletonJoints *
179
+ /// kParametersPerJoint.
180
+ JointParametersT<T> offsets;
181
+ };
182
+
183
+ using CharacterParameters = CharacterParametersT<float>;
184
+ using CharacterParametersd = CharacterParametersT<double>;
185
+
186
+ // The tuple of model parameter names and corresponding matrix representing the pose in a sequence
187
+ // of frames The poses are ordered in columns and the expected shape of motion matrix is
188
+ // (numModelParams, numFrames)
189
+
190
+ using MotionParameters = std::tuple<std::vector<std::string>, Eigen::MatrixXf>;
191
+
192
+ // The tuple containing the skeleton joint names and identity parameters. The identity parameters
193
+ // represent bone offsets and bone scales that are added to the joint states (local transform for
194
+ // each joint wrt parent joint) during FK step The identity parameters are expressed as a vector of
195
+ // size (numSkeletonJoints * momentum::kParametersPerJoint)
196
+
197
+ using IdentityParameters = std::tuple<std::vector<std::string>, Eigen::VectorXf>;
198
+
199
+ // define static kInvalidIndex for size_t
200
+ inline constexpr size_t kInvalidIndex = std::numeric_limits<size_t>::max();
201
+
202
+ } // namespace momentum