pymomentum-cpu 0.1.77.post30__cp313-cp313-manylinux_2_39_x86_64.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 (555) 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/rerun_sdk/rerun_sdkConfig.cmake +70 -0
  454. lib/cmake/rerun_sdk/rerun_sdkConfigVersion.cmake +83 -0
  455. lib/cmake/rerun_sdk/rerun_sdkTargets-release.cmake +19 -0
  456. lib/cmake/rerun_sdk/rerun_sdkTargets.cmake +108 -0
  457. lib/libarrow.a +0 -0
  458. lib/libarrow_bundled_dependencies.a +0 -0
  459. lib/librerun_c__linux_x64.a +0 -0
  460. lib/librerun_sdk.a +0 -0
  461. lib64/cmake/axel/axel-config.cmake +45 -0
  462. lib64/cmake/axel/axelTargets-release.cmake +19 -0
  463. lib64/cmake/axel/axelTargets.cmake +108 -0
  464. lib64/cmake/momentum/Findre2.cmake +52 -0
  465. lib64/cmake/momentum/momentum-config.cmake +67 -0
  466. lib64/cmake/momentum/momentumTargets-release.cmake +259 -0
  467. lib64/cmake/momentum/momentumTargets.cmake +377 -0
  468. lib64/libaxel.a +0 -0
  469. lib64/libmomentum_app_utils.a +0 -0
  470. lib64/libmomentum_character.a +0 -0
  471. lib64/libmomentum_character_sequence_solver.a +0 -0
  472. lib64/libmomentum_character_solver.a +0 -0
  473. lib64/libmomentum_common.a +0 -0
  474. lib64/libmomentum_diff_ik.a +0 -0
  475. lib64/libmomentum_io.a +0 -0
  476. lib64/libmomentum_io_common.a +0 -0
  477. lib64/libmomentum_io_fbx.a +0 -0
  478. lib64/libmomentum_io_gltf.a +0 -0
  479. lib64/libmomentum_io_legacy_json.a +0 -0
  480. lib64/libmomentum_io_marker.a +0 -0
  481. lib64/libmomentum_io_motion.a +0 -0
  482. lib64/libmomentum_io_shape.a +0 -0
  483. lib64/libmomentum_io_skeleton.a +0 -0
  484. lib64/libmomentum_io_urdf.a +0 -0
  485. lib64/libmomentum_marker_tracker.a +0 -0
  486. lib64/libmomentum_math.a +0 -0
  487. lib64/libmomentum_online_qr.a +0 -0
  488. lib64/libmomentum_process_markers.a +0 -0
  489. lib64/libmomentum_rerun.a +0 -0
  490. lib64/libmomentum_simd_constraints.a +0 -0
  491. lib64/libmomentum_simd_generalized_loss.a +0 -0
  492. lib64/libmomentum_skeleton.a +0 -0
  493. lib64/libmomentum_solver.a +0 -0
  494. pymomentum/axel.cpython-313-x86_64-linux-gnu.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-x86_64-linux-gnu.so +0 -0
  500. pymomentum/marker_tracking.cpython-313-x86_64-linux-gnu.so +0 -0
  501. pymomentum/quaternion.py +740 -0
  502. pymomentum/skel_state.py +514 -0
  503. pymomentum/solver.cpython-313-x86_64-linux-gnu.so +0 -0
  504. pymomentum/solver2.cpython-313-x86_64-linux-gnu.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.post30.dist-info/METADATA +208 -0
  510. pymomentum_cpu-0.1.77.post30.dist-info/RECORD +555 -0
  511. pymomentum_cpu-0.1.77.post30.dist-info/WHEEL +5 -0
  512. pymomentum_cpu-0.1.77.post30.dist-info/licenses/LICENSE +21 -0
  513. pymomentum_cpu.libs/libabsl_base-86f3b38c.so.2505.0.0 +0 -0
  514. pymomentum_cpu.libs/libabsl_city-31b65ca2.so.2505.0.0 +0 -0
  515. pymomentum_cpu.libs/libabsl_debugging_internal-38680253.so.2505.0.0 +0 -0
  516. pymomentum_cpu.libs/libabsl_decode_rust_punycode-750652c3.so.2505.0.0 +0 -0
  517. pymomentum_cpu.libs/libabsl_demangle_internal-9a0351a3.so.2505.0.0 +0 -0
  518. pymomentum_cpu.libs/libabsl_demangle_rust-71629506.so.2505.0.0 +0 -0
  519. pymomentum_cpu.libs/libabsl_examine_stack-57661ecd.so.2505.0.0 +0 -0
  520. pymomentum_cpu.libs/libabsl_hash-8c523b7e.so.2505.0.0 +0 -0
  521. pymomentum_cpu.libs/libabsl_hashtablez_sampler-b5c3e343.so.2505.0.0 +0 -0
  522. pymomentum_cpu.libs/libabsl_int128-295bfed5.so.2505.0.0 +0 -0
  523. pymomentum_cpu.libs/libabsl_kernel_timeout_internal-29296ac1.so.2505.0.0 +0 -0
  524. pymomentum_cpu.libs/libabsl_log_globals-6cfa8af5.so.2505.0.0 +0 -0
  525. pymomentum_cpu.libs/libabsl_log_internal_format-a5c79460.so.2505.0.0 +0 -0
  526. pymomentum_cpu.libs/libabsl_log_internal_globals-481e9a7c.so.2505.0.0 +0 -0
  527. pymomentum_cpu.libs/libabsl_log_internal_log_sink_set-ac08f942.so.2505.0.0 +0 -0
  528. pymomentum_cpu.libs/libabsl_log_internal_message-7dfe150a.so.2505.0.0 +0 -0
  529. pymomentum_cpu.libs/libabsl_log_internal_nullguard-883adc72.so.2505.0.0 +0 -0
  530. pymomentum_cpu.libs/libabsl_log_internal_proto-a5da8c75.so.2505.0.0 +0 -0
  531. pymomentum_cpu.libs/libabsl_log_internal_structured_proto-e601fd9b.so.2505.0.0 +0 -0
  532. pymomentum_cpu.libs/libabsl_log_sink-894261b2.so.2505.0.0 +0 -0
  533. pymomentum_cpu.libs/libabsl_low_level_hash-a3284638.so.2505.0.0 +0 -0
  534. pymomentum_cpu.libs/libabsl_malloc_internal-814569de.so.2505.0.0 +0 -0
  535. pymomentum_cpu.libs/libabsl_raw_hash_set-922d64ad.so.2505.0.0 +0 -0
  536. pymomentum_cpu.libs/libabsl_raw_logging_internal-477f78ec.so.2505.0.0 +0 -0
  537. pymomentum_cpu.libs/libabsl_spinlock_wait-8b85a473.so.2505.0.0 +0 -0
  538. pymomentum_cpu.libs/libabsl_stacktrace-7369e71d.so.2505.0.0 +0 -0
  539. pymomentum_cpu.libs/libabsl_str_format_internal-98de729d.so.2505.0.0 +0 -0
  540. pymomentum_cpu.libs/libabsl_strerror-39a52998.so.2505.0.0 +0 -0
  541. pymomentum_cpu.libs/libabsl_strings-a57d5127.so.2505.0.0 +0 -0
  542. pymomentum_cpu.libs/libabsl_strings_internal-ed8c7c0d.so.2505.0.0 +0 -0
  543. pymomentum_cpu.libs/libabsl_symbolize-eba17dd1.so.2505.0.0 +0 -0
  544. pymomentum_cpu.libs/libabsl_synchronization-2f8cf326.so.2505.0.0 +0 -0
  545. pymomentum_cpu.libs/libabsl_time-066c0dde.so.2505.0.0 +0 -0
  546. pymomentum_cpu.libs/libabsl_time_zone-72867365.so.2505.0.0 +0 -0
  547. pymomentum_cpu.libs/libabsl_tracing_internal-021e37ee.so.2505.0.0 +0 -0
  548. pymomentum_cpu.libs/libabsl_utf8_for_code_point-de2a4d4a.so.2505.0.0 +0 -0
  549. pymomentum_cpu.libs/libconsole_bridge-f26e11cc.so.1.0 +0 -0
  550. pymomentum_cpu.libs/libdeflate-577b71e3.so.0 +0 -0
  551. pymomentum_cpu.libs/libdispenso-67ac1721.so.1.4.0 +0 -0
  552. pymomentum_cpu.libs/libezc3d-4a95ab2c.so +0 -0
  553. pymomentum_cpu.libs/libre2-985fb83c.so.11 +0 -0
  554. pymomentum_cpu.libs/libtinyxml2-8d10763c.so.11.0.0 +0 -0
  555. pymomentum_cpu.libs/liburdfdom_model-7b26ae88.so.4.0 +0 -0
@@ -0,0 +1,62 @@
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/character.h>
11
+ #include <momentum/character/marker.h>
12
+ #include <momentum/marker_tracking/marker_tracker.h>
13
+
14
+ #include <CLI/CLI.hpp>
15
+
16
+ namespace momentum {
17
+
18
+ struct IOOptions {
19
+ std::string inputFile;
20
+ std::string outputFile;
21
+ };
22
+
23
+ struct ModelOptions {
24
+ std::string model;
25
+ std::string parameters;
26
+ std::string locators;
27
+ };
28
+
29
+ void addIOOptions(CLI::App& app, std::shared_ptr<IOOptions> ioOptions);
30
+ void addModelOptions(CLI::App& app, std::shared_ptr<ModelOptions> modelOptions);
31
+ void addCalibrationOptions(CLI::App& app, std::shared_ptr<CalibrationConfig> config);
32
+ void addTrackingOptions(CLI::App& app, std::shared_ptr<TrackingConfig> config);
33
+ void addRefineOptions(CLI::App& app, std::shared_ptr<RefineConfig> config);
34
+
35
+ std::tuple<momentum::Character, momentum::ModelParameters> loadCalibratedModel(
36
+ const std::string& modelFile);
37
+
38
+ std::tuple<momentum::Character, momentum::ModelParameters> loadCharacterWithIdentity(
39
+ const ModelOptions& modelFiles);
40
+
41
+ /// Save the given character and motion to a GLB or FBX file.
42
+ ///
43
+ /// @param[in] outFile The GLB/FBX file to save to
44
+ /// @param[in] character The GLB/FBX file to save to
45
+ /// @param[in] identity The identity parameters used for the character
46
+ /// @param[in] finalMotion The motion save to the file. (Note: this may be modified to remove
47
+ /// scaling parameters if saveScaleToMotion is false)
48
+ /// @param[in] markerData Marker data to save to the file
49
+ /// @param[in] fps Framerate of the motion
50
+ /// @param[in] saveMarkerMesh (optional) Whether to save a visible cube mesh for the markers
51
+ /// @param[in] saveScaleToMotion (optional) Whether to save the scale parameters to the motion or
52
+ /// identity parameter vectors (saving to motion is preferred)
53
+ void saveMotion(
54
+ const std::string& outFile,
55
+ const momentum::Character& character,
56
+ const momentum::ModelParameters& identity,
57
+ Eigen::MatrixXf& finalMotion,
58
+ gsl::span<const std::vector<momentum::Marker>> markerData,
59
+ double fps,
60
+ bool saveMarkerMesh = true);
61
+
62
+ } // namespace momentum
@@ -0,0 +1,213 @@
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/character.h>
11
+ #include <momentum/character/marker.h>
12
+
13
+ namespace momentum {
14
+
15
+ /// Common configuration for a tracking problem
16
+ struct BaseConfig {
17
+ /// Minimum percentage of visible markers in a frame to consider for tracking. We will skip frames
18
+ /// with too few visible markers as they may be better filled in through a smoothing pass.
19
+ float minVisPercent = 0.f;
20
+ /// Parameter to control what loss function to use. Refer to comments in GeneralizedLoss class for
21
+ /// details. Use a smaller alpha when data is noisy; otherwise L2 is good.
22
+ float lossAlpha = 2.0;
23
+ /// Max number of solver iterations to run.
24
+ size_t maxIter = 30;
25
+ /// Regularization parameter (lambda) for Levenberg-Marquardt solver.
26
+ float regularization = 0.05f;
27
+ /// True to print and save debug information.
28
+ bool debug = false;
29
+ };
30
+
31
+ /// Configuration for running body and/or locator calibration
32
+ struct CalibrationConfig : public BaseConfig {
33
+ /// Number of frames used in calibration. It will be a uniform sample from the input.
34
+ size_t calibFrames = 100;
35
+ /// Number of iterations to run the main calibration loop. It could be larger if calibrating for
36
+ /// locators only.
37
+ size_t majorIter = 3;
38
+ /// True to only solve for a global body scale without changing individual bone length.
39
+ bool globalScaleOnly = false;
40
+ /// True to calibrate only the locators and not the body.
41
+ bool locatorsOnly = false;
42
+ /// Sample uniformly or do a greedy importance sampling
43
+ size_t greedySampling = 0;
44
+ /// True to lock the floor constraints to the floor in the first frame
45
+ bool enforceFloorInFirstFrame = false;
46
+ /// Name of a pose constraint set to use for the first frame
47
+ std::string firstFramePoseConstraintSet;
48
+ /// Calibrate the character's shape
49
+ bool calibShape = false;
50
+ };
51
+
52
+ /// Configuration for pose tracking given a calibrated body and locators
53
+ struct TrackingConfig : public BaseConfig {
54
+ /// The weight for the smoothness error function.
55
+ float smoothing = 0;
56
+ /// The weight for the collision error function.
57
+ float collisionErrorWeight = 0.0;
58
+ /// Smoothing weights per model parameter. The size of this vector should be equal to number of
59
+ /// model parameters and this overrides the value specific in smoothing
60
+ Eigen::VectorXf smoothingWeights{};
61
+ };
62
+
63
+ /// Configuration for refining an already tracked motion, eg. add smoothing and/or collision
64
+ /// handling; improve residuals with extra dofs etc.
65
+ struct RefineConfig : public TrackingConfig {
66
+ /// Minimize changes to calibration parameters when in calibration mode, by regularizing towards
67
+ /// the input value with this regularizer weight.
68
+ float regularizer = 0.0;
69
+ /// Calibrate identity parameters when refining the motion.
70
+ bool calibId = false;
71
+ /// Calibrate locators when refining the motion.
72
+ bool calibLocators = false;
73
+ };
74
+
75
+ /// Use multiple frames to solve for global parameters such as body proportions and/or marker
76
+ /// offsets together with the motion. It can also be used to smooth out a motion with or without
77
+ /// solving for global parameters, for example to fill gaps when there are missing markers.
78
+ ///
79
+ /// @param[in] markerData Marker data.
80
+ /// @param[in] character Character definition.
81
+ /// @param[in] globalParams Bitset to indicate global parameters to solve for; could be all zeros
82
+ /// for post-process a motion.
83
+ /// @param[in] initialMotion Initial values of all parameters. It should be the same length as
84
+ /// markerData, but only frames used in solving are used. Values in unused frames do not matter.
85
+ /// Number of parameters should be the same as defined in character.
86
+ /// @param[in] config Solving options.
87
+ /// @param[in] frameStride Frame stride to select solver frames (ie. uniform sample).
88
+ /// @param[in] enforceFloorInFirstFrame Flag to enforce the floor contact constraints in first frame
89
+ /// @param[in] firstFramePoseConstraintSet Name of a pose constraint set to use for the first frame
90
+ ///
91
+ /// @return The solved motion. It has the same length as markerData. It repeats the same solved pose
92
+ /// within a frame stride.
93
+ Eigen::MatrixXf trackSequence(
94
+ gsl::span<const std::vector<momentum::Marker>> markerData,
95
+ const momentum::Character& character,
96
+ const momentum::ParameterSet& globalParams,
97
+ const Eigen::MatrixXf& initialMotion,
98
+ const TrackingConfig& config,
99
+ float regularizer = 0.0,
100
+ size_t frameStride = 1,
101
+ bool enforceFloorInFirstFrame = false,
102
+ const std::string& firstFramePoseConstraintSet = "");
103
+
104
+ /// Use multiple frames to solve for global parameters such as body proportions and/or marker
105
+ /// offsets together with the motion.
106
+ ///
107
+ /// @param[in] markerData Marker data.
108
+ /// @param[in] character Character definition.
109
+ /// @param[in] globalParams Bitset to indicate global parameters to solve for; could be all zeros
110
+ /// for post-process a motion.
111
+ /// @param[in] initialMotion Initial values of all parameters. It should be the same length as
112
+ /// markerData, but only frames used in solving are used. Values in unused frames do not matter.
113
+ /// Number of parameters should be the same as defined in character.
114
+ /// @param[in] config Solving options.
115
+ /// @param[in] frames List of frames to solve for.
116
+ /// @param[in] enforceFloorInFirstFrame Flag to enforce the floor contact constraints in first frame
117
+ /// @param[in] firstFramePoseConstraintSet Name of a pose constraint set to use for the first frame
118
+ ///
119
+ /// @return The solved motion. It has the same length as markerData. It repeats the same solved pose
120
+ /// within a frame stride.
121
+ Eigen::MatrixXf trackSequence(
122
+ gsl::span<const std::vector<momentum::Marker>> markerData,
123
+ const momentum::Character& character,
124
+ const momentum::ParameterSet& globalParams,
125
+ const Eigen::MatrixXf& initialMotion,
126
+ const TrackingConfig& config,
127
+ const std::vector<size_t>& frames,
128
+ float regularizer = 0.0,
129
+ bool enforceFloorInFirstFrame = false,
130
+ const std::string& firstFramePoseConstraintSet = "");
131
+
132
+ /// Track poses per-frame given a calibrated character.
133
+ ///
134
+ /// @param[in] markerData Input marker data.
135
+ /// @param[in] character Character definition.
136
+ /// @param[in] globalParams Calibrated identity info; could be repurposed to pass in an initial pose
137
+ /// too.
138
+ /// @param[in] config Solving options.
139
+ /// @param[in] frameStride Frame stride to select solver frames (ie. uniform sample).
140
+ ///
141
+ /// @return The solved motion. It has the same length as markerData. It repeats the same solved pose
142
+ /// within a frame stride.
143
+ Eigen::MatrixXf trackPosesPerframe(
144
+ gsl::span<const std::vector<momentum::Marker>> markerData,
145
+ const momentum::Character& character,
146
+ const momentum::ModelParameters& globalParams,
147
+ const TrackingConfig& config,
148
+ size_t frameStride = 1);
149
+
150
+ /// Track poses for given frames.
151
+ ///
152
+ /// @param[in] markerData Input marker data.
153
+ /// @param[in] character Character definition.
154
+ /// @param[in] globalParams Calibrated identity info; could be repurposed to pass in an initial pose
155
+ /// too.
156
+ /// @param[in] config Solving options.
157
+ /// @param[in] frameIndices Frame indices of the frames to be solved.
158
+ ///
159
+ /// @return The solved motion. It has the same length as markerData. It repeats the same solved pose
160
+ /// within a frame stride.
161
+ Eigen::MatrixXf trackPosesForFrames(
162
+ gsl::span<const std::vector<momentum::Marker>> markerData,
163
+ const momentum::Character& character,
164
+ const Eigen::MatrixXf& initialMotion,
165
+ const TrackingConfig& config,
166
+ const std::vector<size_t>& frameIndices);
167
+
168
+ /// Calibrate body proportions and locator offsets of a character from input marker data.
169
+ ///
170
+ /// @param[in] markerData Input marker data.
171
+ /// @param[in] config Solving options.
172
+ /// @param[in,out] character Character definition. It provides input locators offsets which will get
173
+ /// updated in return.
174
+ /// @param[in,out] identity Initial identity parameters that get updated in return. It could also
175
+ /// hold the pose of the first frame for better initialization for tracking later.
176
+ void calibrateModel(
177
+ gsl::span<const std::vector<momentum::Marker>> markerData,
178
+ const CalibrationConfig& config,
179
+ momentum::Character& character,
180
+ momentum::ModelParameters& identity);
181
+
182
+ /// Calibrate locator offsets of a character from input identity and marker data.
183
+ ///
184
+ /// @param[in] markerData Input marker data.
185
+ /// @param[in] config Solving options.
186
+ /// @param[in] identity Identity parameters of the input character.
187
+ /// @param[in,out] character Character definition. It provides input locators offsets which will get
188
+ /// updated in return. We overwrite the locators in the input character so we don't have to
189
+ /// duplicate the character object inside the function.
190
+ void calibrateLocators(
191
+ gsl::span<const std::vector<momentum::Marker>> markerData,
192
+ const CalibrationConfig& config,
193
+ const momentum::ModelParameters& identity,
194
+ momentum::Character& character);
195
+
196
+ Eigen::MatrixXf refineMotion(
197
+ gsl::span<const std::vector<momentum::Marker>> markerData,
198
+ const Eigen::MatrixXf& motion,
199
+ const RefineConfig& config,
200
+ momentum::Character& character);
201
+
202
+ /// Get the error of the locator motion vs the markers
203
+ ///
204
+ /// @param[in] markerData Input marker data.
205
+ /// @param[in] motion Motion to compare against.
206
+ /// @param[in] character Character definition
207
+ /// @return average per frame error and max marker error
208
+ std::pair<float, float> getLocatorError(
209
+ gsl::span<const std::vector<momentum::Marker>> markerData,
210
+ const Eigen::MatrixXf& motion,
211
+ momentum::Character& character);
212
+
213
+ } // namespace momentum
@@ -0,0 +1,58 @@
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/marker_tracking/app_utils.h>
12
+ #include <momentum/marker_tracking/marker_tracker.h>
13
+
14
+ #include <string>
15
+
16
+ namespace momentum {
17
+
18
+ /// Processes marker data for a character model.
19
+ ///
20
+ /// It can calibrate the model and locators based on the calibrationConfig, and track the motion of
21
+ /// the markers.
22
+ ///
23
+ /// @param[in,out] character The input character definition with locators. It also holds the output
24
+ /// locators if locators are to be calibrated from the calibrationConfig.
25
+ /// @param[in,out] identity The input identity used for tracking. It also holds the solved identify
26
+ /// if identity is to be calibrated from the calibrationConfig.
27
+ /// @param[in] markerData The per-frame position targets to be tracked.
28
+ /// @param[in] trackingConfig The config for per-frame tracking after the correct identity and
29
+ /// locators are solved for (or from input).
30
+ /// @param[in] calibrationConfig The config for running calibration if calibrate is set to true.
31
+ /// @param[in] calibrate True to run calibration according to calibrationConfig.
32
+ /// @param[in] firstFrame The first frame to start solving. We pass in the first frame instead of
33
+ /// triming markerData to avoid data copy.
34
+ /// @param[in] maxFrames The maximum number of frames to process starting from firstFrame.
35
+ /// @returns The final motion matrix after tracking.
36
+ Eigen::MatrixXf processMarkers(
37
+ momentum::Character& character,
38
+ momentum::ModelParameters& identity,
39
+ const std::vector<std::vector<momentum::Marker>>& markerData,
40
+ const TrackingConfig& trackingConfig,
41
+ const CalibrationConfig& calibrationConfig,
42
+ bool calibrate = true,
43
+ size_t firstFrame = 0,
44
+ size_t maxFrames = 0);
45
+
46
+ /// Runs marker tracking on an input marker file (e.g. c3d) and writes the output motion (e.g. glb)
47
+ /// to outputFile
48
+ void processMarkerFile(
49
+ const std::string& inputMarkerFile,
50
+ const std::string& outputFile,
51
+ const TrackingConfig& trackingConfig,
52
+ const CalibrationConfig& calibrationConfig,
53
+ const ModelOptions& modelOptions,
54
+ bool calibrate,
55
+ size_t firstFrame = 0,
56
+ size_t maxFrames = 0);
57
+
58
+ } // namespace momentum
@@ -0,0 +1,90 @@
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/character.h>
11
+ #include <momentum/character/locator.h>
12
+ #include <momentum/character/marker.h>
13
+ #include <momentum/character_solver/fwd.h>
14
+ #include <momentum/character_solver/skinned_locator_triangle_error_function.h>
15
+
16
+ namespace momentum {
17
+
18
+ std::vector<std::vector<momentum::PositionData>> createConstraintData(
19
+ gsl::span<const std::vector<momentum::Marker>> markerData,
20
+ const momentum::LocatorList& locators);
21
+
22
+ std::vector<std::vector<momentum::SkinnedLocatorConstraint>> createSkinnedConstraintData(
23
+ gsl::span<const std::vector<momentum::Marker>> markerData,
24
+ const momentum::SkinnedLocatorList& locators);
25
+
26
+ // TODO: remove the one in momentum
27
+
28
+ // Create a LocatorCharacter where each locator is a bone in its skeleton. This character is used
29
+ // for calibrating locator offsets (as bone offset parameters).
30
+ momentum::Character createLocatorCharacter(
31
+ const momentum::Character& sourceCharacter,
32
+ const std::string& prefix);
33
+
34
+ /// Convert locators to skinned locators by finding the closest point on the mesh surface that
35
+ /// matches the correct bone index and using the skinned weights from that point. Does not add
36
+ /// parameters for the skinned locators, however, that should be a separate step if you are planning
37
+ /// to solve for their locations.
38
+ /// @param sourceCharacter Character with locators to convert
39
+ /// @param maxDistance Maximum distance to search for the closest point on the mesh surface. If the
40
+ /// locator is further than this distance, it will not be converted.
41
+ momentum::Character locatorsToSkinnedLocators(
42
+ const momentum::Character& sourceCharacter,
43
+ float maxDistance = 3.0f);
44
+
45
+ std::vector<momentum::SkinnedLocatorTriangleConstraintT<float>> createSkinnedLocatorMeshConstraints(
46
+ const momentum::Character& character,
47
+ float targetDepth = 1.0f);
48
+
49
+ // Extract locator offsets from a LocatorCharacter for a normal Character given input calibrated
50
+ // parameters
51
+ momentum::LocatorList extractLocatorsFromCharacter(
52
+ const momentum::Character& locatorCharacter,
53
+ const momentum::CharacterParameters& calibParams);
54
+
55
+ // TODO: move to momentum proper
56
+ momentum::ModelParameters extractParameters(
57
+ const momentum::ModelParameters& params,
58
+ const momentum::ParameterSet& parameterSet);
59
+
60
+ std::tuple<Eigen::VectorXf, momentum::LocatorList, momentum::SkinnedLocatorList>
61
+ extractIdAndLocatorsFromParams(
62
+ const momentum::ModelParameters& param,
63
+ const momentum::Character& sourceCharacter,
64
+ const momentum::Character& targetCharacter);
65
+
66
+ Mesh extractBlendShapeFromParams(
67
+ const momentum::ModelParameters& param,
68
+ const momentum::Character& sourceCharacter);
69
+
70
+ void fillIdentity(
71
+ const momentum::ParameterSet& idSet,
72
+ const momentum::ModelParameters& identity,
73
+ Eigen::MatrixXf& motion);
74
+
75
+ // convert from joint to model parameters using only the parameters active in idSet
76
+ ModelParameters jointIdentityToModelIdentity(
77
+ const Character& c,
78
+ const ParameterSet& idSet,
79
+ const JointParameters& jointIdentity);
80
+
81
+ void removeIdentity(
82
+ const momentum::ParameterSet& idSet,
83
+ const momentum::ModelParameters& identity,
84
+ Eigen::MatrixXf& motion);
85
+
86
+ std::vector<std::vector<momentum::Marker>> extractMarkersFromMotion(
87
+ const momentum::Character& character,
88
+ const Eigen::MatrixXf& motion);
89
+
90
+ } // namespace momentum
@@ -0,0 +1,82 @@
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 <limits>
11
+ #include <type_traits>
12
+
13
+ namespace momentum {
14
+
15
+ template <typename T = float>
16
+ [[nodiscard]] constexpr T nan() noexcept {
17
+ return std::numeric_limits<T>::quiet_NaN();
18
+ }
19
+
20
+ /// Returns the tolerance value based on the provided type T
21
+ template <typename T>
22
+ [[nodiscard]] constexpr T Eps(T FloatEps = T(1e-7), T DoubleEps = T(1e-16)) {
23
+ if constexpr (std::is_same_v<T, float>) {
24
+ return FloatEps;
25
+ } else if constexpr (std::is_same_v<T, double>) {
26
+ return DoubleEps;
27
+ }
28
+ }
29
+
30
+ template <typename T = float>
31
+ [[nodiscard]] constexpr T ln2() noexcept {
32
+ return 0.69314718055994530942; ///< log_e 2
33
+ }
34
+
35
+ template <typename T = float>
36
+ [[nodiscard]] constexpr T pi() noexcept {
37
+ return 3.14159265358979323846;
38
+ }
39
+
40
+ template <typename T = float>
41
+ [[nodiscard]] constexpr T twopi() noexcept {
42
+ return T(2) * pi<T>();
43
+ }
44
+
45
+ /// Converts the given angle x (in degrees) to radians.
46
+ ///
47
+ /// If called without an argument, it returns the conversion factor from degrees to radians.
48
+ template <typename T = float>
49
+ [[nodiscard]] constexpr T toRad(T x = T(1)) noexcept {
50
+ static_assert(std::is_floating_point_v<T>, "toRad requires a floating point argument.");
51
+ return x * pi<T>() / T(180);
52
+ }
53
+ // TODO: Support Eigen types to provide consistent conversion function usage with a single argument.
54
+
55
+ /// Converts the given angle x (in radians) to degrees.
56
+ ///
57
+ /// If called without an argument, it returns the conversion factor from radians to degrees.
58
+ template <typename T = float>
59
+ [[nodiscard]] constexpr T toDeg(T x = T(1)) noexcept {
60
+ static_assert(std::is_floating_point_v<T>, "toDeg requires a floating point argument.");
61
+ return x * T(180) / pi<T>();
62
+ }
63
+
64
+ /// Converts the given length x (in centimeters) to meters.
65
+ ///
66
+ /// If called without an argument, it returns the conversion factor from centimeters to meters.
67
+ template <typename T = float>
68
+ [[nodiscard]] constexpr T toM(T x = T(1)) noexcept {
69
+ static_assert(std::is_floating_point_v<T>, "toM requires a floating point argument.");
70
+ return x * T(0.01);
71
+ }
72
+
73
+ /// Converts the given length x (in meters) to centimeters.
74
+ ///
75
+ /// If called without an argument, it returns the conversion factor from meters to centimeters.
76
+ template <typename T = float>
77
+ [[nodiscard]] constexpr T toCm(T x = T(1)) noexcept {
78
+ static_assert(std::is_floating_point_v<T>, "toCm requires a floating point argument.");
79
+ return x * T(100);
80
+ }
81
+
82
+ } // namespace momentum
@@ -0,0 +1,84 @@
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/online_householder_qr.h>
11
+ #include <momentum/math/types.h>
12
+
13
+ namespace momentum {
14
+
15
+ //
16
+ // Efficient and numerically stable representation of the generalized
17
+ // Gaussian covariance
18
+ // C = (sigma^2 * I + A^T * A)
19
+ // providing access to the inverse covariance matrix (computed using
20
+ // QR factorization).
21
+ //
22
+ // Note the dimensionality here: C and I are [n x n], A is [m x n]
23
+ // where m can be either larger or smaller than n.
24
+ template <typename T>
25
+ class LowRankCovarianceMatrixT {
26
+ public:
27
+ LowRankCovarianceMatrixT() = default;
28
+
29
+ void reset(T sigma, Eigen::Ref<const Eigen::MatrixX<T>> A);
30
+
31
+ [[nodiscard]] Eigen::Index dimension() const;
32
+
33
+ [[nodiscard]] const Eigen::MatrixX<T>& basis() const;
34
+
35
+ [[nodiscard]] T sigma() const;
36
+
37
+ [[nodiscard]] Eigen::VectorX<T> inverse_times_vec(Eigen::Ref<const Eigen::VectorX<T>> rhs) const;
38
+ [[nodiscard]] Eigen::VectorX<T> times_vec(Eigen::Ref<const Eigen::VectorX<T>> rhs) const;
39
+
40
+ [[nodiscard]] Eigen::MatrixX<T> inverse_times_mat(Eigen::Ref<const Eigen::MatrixX<T>> rhs) const;
41
+ [[nodiscard]] Eigen::MatrixX<T> times_mat(Eigen::Ref<const Eigen::MatrixX<T>> rhs) const;
42
+
43
+ [[nodiscard]] const Eigen::MatrixX<T>& R() const;
44
+
45
+ // The log of the determinant of the covariance matrix
46
+ [[nodiscard]] T logDeterminant() const;
47
+
48
+ // The log of the determinant of the inverse covariance matrix
49
+ [[nodiscard]] T inverse_logDeterminant() const;
50
+
51
+ private:
52
+ // The QR factorization of A is defined by:
53
+ // A = Q*R
54
+ // where Q is orthonormal and R is upper triangular. This online QR solver
55
+ // used here happens to be particularly efficient for the case where the A
56
+ // matrix looks like:
57
+ // A = [ lambda*I ]
58
+ // [ B ]
59
+ // The reason for this is that it allows initialization of the R matrix by
60
+ // a diagonal, and hence only needs to process the rows in W. The
61
+ // resulting factorization is O(m*n^2) to compute, which may (for m << n)
62
+ // be a touch cheaper than the fully general O(n^3) that a "standard" QR
63
+ // factorization or Cholesky would require.
64
+ //
65
+ // Once we have A = Q*R, we can compute (A^T*A)^{-1} by
66
+ // (A^T * A)^{-1} = (R^T * Q^T * Q * R)^{-1}
67
+ // = (R^T * R)^{-1} by orthonormality
68
+ // = (R^{-1}) * R^{-T} distributing the inverse
69
+ //
70
+ // Note that OnlineHouseholderQR does _not_ store the Q matrix (or the
71
+ // information required to reconstruct it, as is more typical) because it
72
+ // assumes that it will be used to solve least squares problems of the form
73
+ // min |Ax - b|_2 and hence can apply Q to b as it is being computed. In
74
+ // our case, however, as noted above we won't be using the Q matrix so this
75
+ // is not a limitation.
76
+ OnlineHouseholderQR<T> qrFactorization_{0};
77
+
78
+ // Low-rank basis:
79
+ Eigen::MatrixX<T> A_;
80
+
81
+ T sigma_ = 0;
82
+ };
83
+
84
+ } // namespace momentum
@@ -0,0 +1,23 @@
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 <fmt/ostream.h>
11
+ #include <Eigen/Core>
12
+
13
+ #if FMT_VERSION > 100000
14
+
15
+ // https://stackoverflow.com/a/73755864
16
+ #ifndef MOMENTUM_FMT_EIGEN_SHARED_PTR_FORMATTER
17
+ #define MOMENTUM_FMT_EIGEN_SHARED_PTR_FORMATTER
18
+ template <typename T>
19
+ struct fmt::formatter<T, std::enable_if_t<std::is_base_of_v<Eigen::DenseBase<T>, T>, char>>
20
+ : ostream_formatter {};
21
+ #endif
22
+
23
+ #endif