pymomentum-cpu 0.1.93.post0__cp312-cp312-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.
Files changed (517) hide show
  1. include/axel/BoundingBox.h +59 -0
  2. include/axel/Bvh.h +708 -0
  3. include/axel/BvhBase.h +75 -0
  4. include/axel/BvhCommon.h +43 -0
  5. include/axel/BvhEmbree.h +87 -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 +208 -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 +97 -0
  30. include/momentum/character/blend_shape_base.h +86 -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 +94 -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 +207 -0
  48. include/momentum/character/pose_shape.h +65 -0
  49. include/momentum/character/skeleton.h +85 -0
  50. include/momentum/character/skeleton_state.h +227 -0
  51. include/momentum/character/skeleton_utility.h +38 -0
  52. include/momentum/character/skin_weights.h +67 -0
  53. include/momentum/character/skinned_locator.h +80 -0
  54. include/momentum/character/types.h +202 -0
  55. include/momentum/character_sequence_solver/fwd.h +200 -0
  56. include/momentum/character_sequence_solver/model_parameters_sequence_error_function.h +65 -0
  57. include/momentum/character_sequence_solver/multipose_solver.h +65 -0
  58. include/momentum/character_sequence_solver/multipose_solver_function.h +82 -0
  59. include/momentum/character_sequence_solver/sequence_error_function.h +104 -0
  60. include/momentum/character_sequence_solver/sequence_solver.h +155 -0
  61. include/momentum/character_sequence_solver/sequence_solver_function.h +158 -0
  62. include/momentum/character_sequence_solver/state_sequence_error_function.h +117 -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 +943 -0
  73. include/momentum/character_solver/gauss_newton_solver_qr.h +64 -0
  74. include/momentum/character_solver/height_error_function.h +176 -0
  75. include/momentum/character_solver/joint_to_joint_distance_error_function.h +111 -0
  76. include/momentum/character_solver/limit_error_function.h +57 -0
  77. include/momentum/character_solver/model_parameters_error_function.h +64 -0
  78. include/momentum/character_solver/normal_error_function.h +73 -0
  79. include/momentum/character_solver/orientation_error_function.h +74 -0
  80. include/momentum/character_solver/plane_error_function.h +102 -0
  81. include/momentum/character_solver/point_triangle_vertex_error_function.h +141 -0
  82. include/momentum/character_solver/pose_prior_error_function.h +80 -0
  83. include/momentum/character_solver/position_error_function.h +75 -0
  84. include/momentum/character_solver/projection_error_function.h +93 -0
  85. include/momentum/character_solver/simd_collision_error_function.h +99 -0
  86. include/momentum/character_solver/simd_normal_error_function.h +157 -0
  87. include/momentum/character_solver/simd_plane_error_function.h +164 -0
  88. include/momentum/character_solver/simd_position_error_function.h +165 -0
  89. include/momentum/character_solver/skeleton_error_function.h +151 -0
  90. include/momentum/character_solver/skeleton_solver_function.h +94 -0
  91. include/momentum/character_solver/skinned_locator_error_function.h +166 -0
  92. include/momentum/character_solver/skinned_locator_triangle_error_function.h +146 -0
  93. include/momentum/character_solver/skinning_weight_iterator.h +80 -0
  94. include/momentum/character_solver/state_error_function.h +119 -0
  95. include/momentum/character_solver/transform_pose.h +80 -0
  96. include/momentum/character_solver/trust_region_qr.h +80 -0
  97. include/momentum/character_solver/vertex_error_function.h +155 -0
  98. include/momentum/character_solver/vertex_projection_error_function.h +117 -0
  99. include/momentum/character_solver/vertex_vertex_distance_error_function.h +147 -0
  100. include/momentum/common/aligned.h +155 -0
  101. include/momentum/common/checks.h +27 -0
  102. include/momentum/common/exception.h +70 -0
  103. include/momentum/common/filesystem.h +20 -0
  104. include/momentum/common/fwd.h +27 -0
  105. include/momentum/common/log.h +173 -0
  106. include/momentum/common/log_channel.h +17 -0
  107. include/momentum/common/memory.h +71 -0
  108. include/momentum/common/profile.h +79 -0
  109. include/momentum/common/progress_bar.h +37 -0
  110. include/momentum/common/string.h +52 -0
  111. include/momentum/diff_ik/ceres_utility.h +73 -0
  112. include/momentum/diff_ik/fully_differentiable_body_ik.h +58 -0
  113. include/momentum/diff_ik/fully_differentiable_distance_error_function.h +69 -0
  114. include/momentum/diff_ik/fully_differentiable_motion_error_function.h +46 -0
  115. include/momentum/diff_ik/fully_differentiable_orientation_error_function.h +114 -0
  116. include/momentum/diff_ik/fully_differentiable_pose_prior_error_function.h +76 -0
  117. include/momentum/diff_ik/fully_differentiable_position_error_function.h +138 -0
  118. include/momentum/diff_ik/fully_differentiable_projection_error_function.h +65 -0
  119. include/momentum/diff_ik/fully_differentiable_skeleton_error_function.h +160 -0
  120. include/momentum/diff_ik/fully_differentiable_state_error_function.h +54 -0
  121. include/momentum/diff_ik/fwd.h +385 -0
  122. include/momentum/diff_ik/union_error_function.h +67 -0
  123. include/momentum/gui/rerun/eigen_adapters.h +70 -0
  124. include/momentum/gui/rerun/logger.h +102 -0
  125. include/momentum/gui/rerun/logging_redirect.h +27 -0
  126. include/momentum/io/character_io.h +98 -0
  127. include/momentum/io/common/gsl_utils.h +50 -0
  128. include/momentum/io/common/stream_utils.h +65 -0
  129. include/momentum/io/fbx/fbx_io.h +135 -0
  130. include/momentum/io/fbx/fbx_memory_stream.h +70 -0
  131. include/momentum/io/fbx/openfbx_loader.h +62 -0
  132. include/momentum/io/fbx/polygon_data.h +60 -0
  133. include/momentum/io/file_save_options.h +107 -0
  134. include/momentum/io/gltf/gltf_builder.h +141 -0
  135. include/momentum/io/gltf/gltf_io.h +149 -0
  136. include/momentum/io/gltf/utils/accessor_utils.h +299 -0
  137. include/momentum/io/gltf/utils/coordinate_utils.h +60 -0
  138. include/momentum/io/gltf/utils/json_utils.h +102 -0
  139. include/momentum/io/legacy_json/legacy_json_io.h +70 -0
  140. include/momentum/io/marker/c3d_io.h +30 -0
  141. include/momentum/io/marker/conversions.h +57 -0
  142. include/momentum/io/marker/coordinate_system.h +30 -0
  143. include/momentum/io/marker/marker_io.h +56 -0
  144. include/momentum/io/marker/trc_io.h +27 -0
  145. include/momentum/io/motion/mmo_io.h +97 -0
  146. include/momentum/io/shape/blend_shape_io.h +82 -0
  147. include/momentum/io/shape/pose_shape_io.h +21 -0
  148. include/momentum/io/skeleton/locator_io.h +41 -0
  149. include/momentum/io/skeleton/mppca_io.h +26 -0
  150. include/momentum/io/skeleton/parameter_limits_io.h +38 -0
  151. include/momentum/io/skeleton/parameter_transform_io.h +80 -0
  152. include/momentum/io/skeleton/parameters_io.h +20 -0
  153. include/momentum/io/skeleton/utility.h +67 -0
  154. include/momentum/io/urdf/urdf_io.h +26 -0
  155. include/momentum/io/usd/usd_io.h +36 -0
  156. include/momentum/marker_tracking/app_utils.h +64 -0
  157. include/momentum/marker_tracking/marker_tracker.h +221 -0
  158. include/momentum/marker_tracking/process_markers.h +58 -0
  159. include/momentum/marker_tracking/tracker_utils.h +99 -0
  160. include/momentum/math/constants.h +82 -0
  161. include/momentum/math/covariance_matrix.h +84 -0
  162. include/momentum/math/fmt_eigen.h +23 -0
  163. include/momentum/math/fwd.h +132 -0
  164. include/momentum/math/generalized_loss.h +61 -0
  165. include/momentum/math/intersection.h +32 -0
  166. include/momentum/math/mesh.h +84 -0
  167. include/momentum/math/mppca.h +67 -0
  168. include/momentum/math/online_householder_qr.h +516 -0
  169. include/momentum/math/random-inl.h +404 -0
  170. include/momentum/math/random.h +310 -0
  171. include/momentum/math/simd_generalized_loss.h +40 -0
  172. include/momentum/math/transform.h +229 -0
  173. include/momentum/math/types.h +461 -0
  174. include/momentum/math/utility.h +324 -0
  175. include/momentum/rasterizer/camera.h +453 -0
  176. include/momentum/rasterizer/fwd.h +102 -0
  177. include/momentum/rasterizer/geometry.h +83 -0
  178. include/momentum/rasterizer/image.h +18 -0
  179. include/momentum/rasterizer/rasterizer.h +583 -0
  180. include/momentum/rasterizer/tensor.h +140 -0
  181. include/momentum/rasterizer/text_rasterizer.h +89 -0
  182. include/momentum/rasterizer/utility.h +268 -0
  183. include/momentum/simd/simd.h +221 -0
  184. include/momentum/solver/fwd.h +131 -0
  185. include/momentum/solver/gauss_newton_solver.h +136 -0
  186. include/momentum/solver/gradient_descent_solver.h +65 -0
  187. include/momentum/solver/solver.h +155 -0
  188. include/momentum/solver/solver_function.h +126 -0
  189. include/momentum/solver/subset_gauss_newton_solver.h +109 -0
  190. include/rerun/archetypes/annotation_context.hpp +157 -0
  191. include/rerun/archetypes/arrows2d.hpp +271 -0
  192. include/rerun/archetypes/arrows3d.hpp +257 -0
  193. include/rerun/archetypes/asset3d.hpp +262 -0
  194. include/rerun/archetypes/asset_video.hpp +275 -0
  195. include/rerun/archetypes/bar_chart.hpp +261 -0
  196. include/rerun/archetypes/boxes2d.hpp +293 -0
  197. include/rerun/archetypes/boxes3d.hpp +369 -0
  198. include/rerun/archetypes/capsules3d.hpp +333 -0
  199. include/rerun/archetypes/clear.hpp +180 -0
  200. include/rerun/archetypes/depth_image.hpp +425 -0
  201. include/rerun/archetypes/ellipsoids3d.hpp +384 -0
  202. include/rerun/archetypes/encoded_image.hpp +250 -0
  203. include/rerun/archetypes/geo_line_strings.hpp +166 -0
  204. include/rerun/archetypes/geo_points.hpp +177 -0
  205. include/rerun/archetypes/graph_edges.hpp +152 -0
  206. include/rerun/archetypes/graph_nodes.hpp +206 -0
  207. include/rerun/archetypes/image.hpp +434 -0
  208. include/rerun/archetypes/instance_poses3d.hpp +221 -0
  209. include/rerun/archetypes/line_strips2d.hpp +289 -0
  210. include/rerun/archetypes/line_strips3d.hpp +270 -0
  211. include/rerun/archetypes/mesh3d.hpp +387 -0
  212. include/rerun/archetypes/pinhole.hpp +385 -0
  213. include/rerun/archetypes/points2d.hpp +333 -0
  214. include/rerun/archetypes/points3d.hpp +369 -0
  215. include/rerun/archetypes/recording_properties.hpp +132 -0
  216. include/rerun/archetypes/scalar.hpp +170 -0
  217. include/rerun/archetypes/scalars.hpp +153 -0
  218. include/rerun/archetypes/segmentation_image.hpp +305 -0
  219. include/rerun/archetypes/series_line.hpp +274 -0
  220. include/rerun/archetypes/series_lines.hpp +271 -0
  221. include/rerun/archetypes/series_point.hpp +265 -0
  222. include/rerun/archetypes/series_points.hpp +251 -0
  223. include/rerun/archetypes/tensor.hpp +213 -0
  224. include/rerun/archetypes/text_document.hpp +200 -0
  225. include/rerun/archetypes/text_log.hpp +211 -0
  226. include/rerun/archetypes/transform3d.hpp +925 -0
  227. include/rerun/archetypes/video_frame_reference.hpp +295 -0
  228. include/rerun/archetypes/view_coordinates.hpp +393 -0
  229. include/rerun/archetypes.hpp +43 -0
  230. include/rerun/arrow_utils.hpp +32 -0
  231. include/rerun/as_components.hpp +90 -0
  232. include/rerun/blueprint/archetypes/background.hpp +113 -0
  233. include/rerun/blueprint/archetypes/container_blueprint.hpp +259 -0
  234. include/rerun/blueprint/archetypes/dataframe_query.hpp +178 -0
  235. include/rerun/blueprint/archetypes/entity_behavior.hpp +130 -0
  236. include/rerun/blueprint/archetypes/force_center.hpp +115 -0
  237. include/rerun/blueprint/archetypes/force_collision_radius.hpp +141 -0
  238. include/rerun/blueprint/archetypes/force_link.hpp +136 -0
  239. include/rerun/blueprint/archetypes/force_many_body.hpp +124 -0
  240. include/rerun/blueprint/archetypes/force_position.hpp +132 -0
  241. include/rerun/blueprint/archetypes/line_grid3d.hpp +178 -0
  242. include/rerun/blueprint/archetypes/map_background.hpp +104 -0
  243. include/rerun/blueprint/archetypes/map_zoom.hpp +103 -0
  244. include/rerun/blueprint/archetypes/near_clip_plane.hpp +109 -0
  245. include/rerun/blueprint/archetypes/panel_blueprint.hpp +95 -0
  246. include/rerun/blueprint/archetypes/plot_legend.hpp +118 -0
  247. include/rerun/blueprint/archetypes/scalar_axis.hpp +116 -0
  248. include/rerun/blueprint/archetypes/tensor_scalar_mapping.hpp +146 -0
  249. include/rerun/blueprint/archetypes/tensor_slice_selection.hpp +167 -0
  250. include/rerun/blueprint/archetypes/tensor_view_fit.hpp +95 -0
  251. include/rerun/blueprint/archetypes/view_blueprint.hpp +170 -0
  252. include/rerun/blueprint/archetypes/view_contents.hpp +142 -0
  253. include/rerun/blueprint/archetypes/viewport_blueprint.hpp +200 -0
  254. include/rerun/blueprint/archetypes/visible_time_ranges.hpp +116 -0
  255. include/rerun/blueprint/archetypes/visual_bounds2d.hpp +109 -0
  256. include/rerun/blueprint/archetypes/visualizer_overrides.hpp +113 -0
  257. include/rerun/blueprint/archetypes.hpp +29 -0
  258. include/rerun/blueprint/components/active_tab.hpp +82 -0
  259. include/rerun/blueprint/components/apply_latest_at.hpp +79 -0
  260. include/rerun/blueprint/components/auto_layout.hpp +77 -0
  261. include/rerun/blueprint/components/auto_views.hpp +77 -0
  262. include/rerun/blueprint/components/background_kind.hpp +66 -0
  263. include/rerun/blueprint/components/column_share.hpp +78 -0
  264. include/rerun/blueprint/components/component_column_selector.hpp +81 -0
  265. include/rerun/blueprint/components/container_kind.hpp +65 -0
  266. include/rerun/blueprint/components/corner2d.hpp +64 -0
  267. include/rerun/blueprint/components/enabled.hpp +77 -0
  268. include/rerun/blueprint/components/filter_by_range.hpp +74 -0
  269. include/rerun/blueprint/components/filter_is_not_null.hpp +77 -0
  270. include/rerun/blueprint/components/force_distance.hpp +82 -0
  271. include/rerun/blueprint/components/force_iterations.hpp +82 -0
  272. include/rerun/blueprint/components/force_strength.hpp +82 -0
  273. include/rerun/blueprint/components/grid_columns.hpp +78 -0
  274. include/rerun/blueprint/components/grid_spacing.hpp +78 -0
  275. include/rerun/blueprint/components/included_content.hpp +86 -0
  276. include/rerun/blueprint/components/lock_range_during_zoom.hpp +82 -0
  277. include/rerun/blueprint/components/map_provider.hpp +64 -0
  278. include/rerun/blueprint/components/near_clip_plane.hpp +82 -0
  279. include/rerun/blueprint/components/panel_state.hpp +61 -0
  280. include/rerun/blueprint/components/query_expression.hpp +89 -0
  281. include/rerun/blueprint/components/root_container.hpp +77 -0
  282. include/rerun/blueprint/components/row_share.hpp +78 -0
  283. include/rerun/blueprint/components/selected_columns.hpp +76 -0
  284. include/rerun/blueprint/components/tensor_dimension_index_slider.hpp +90 -0
  285. include/rerun/blueprint/components/timeline_name.hpp +76 -0
  286. include/rerun/blueprint/components/view_class.hpp +76 -0
  287. include/rerun/blueprint/components/view_fit.hpp +61 -0
  288. include/rerun/blueprint/components/view_maximized.hpp +79 -0
  289. include/rerun/blueprint/components/view_origin.hpp +81 -0
  290. include/rerun/blueprint/components/viewer_recommendation_hash.hpp +82 -0
  291. include/rerun/blueprint/components/visible_time_range.hpp +77 -0
  292. include/rerun/blueprint/components/visual_bounds2d.hpp +74 -0
  293. include/rerun/blueprint/components/visualizer_override.hpp +86 -0
  294. include/rerun/blueprint/components/zoom_level.hpp +78 -0
  295. include/rerun/blueprint/components.hpp +41 -0
  296. include/rerun/blueprint/datatypes/component_column_selector.hpp +61 -0
  297. include/rerun/blueprint/datatypes/filter_by_range.hpp +59 -0
  298. include/rerun/blueprint/datatypes/filter_is_not_null.hpp +61 -0
  299. include/rerun/blueprint/datatypes/selected_columns.hpp +62 -0
  300. include/rerun/blueprint/datatypes/tensor_dimension_index_slider.hpp +63 -0
  301. include/rerun/blueprint/datatypes.hpp +9 -0
  302. include/rerun/c/arrow_c_data_interface.h +111 -0
  303. include/rerun/c/compiler_utils.h +10 -0
  304. include/rerun/c/rerun.h +627 -0
  305. include/rerun/c/sdk_info.h +28 -0
  306. include/rerun/collection.hpp +496 -0
  307. include/rerun/collection_adapter.hpp +43 -0
  308. include/rerun/collection_adapter_builtins.hpp +138 -0
  309. include/rerun/compiler_utils.hpp +61 -0
  310. include/rerun/component_batch.hpp +163 -0
  311. include/rerun/component_column.hpp +111 -0
  312. include/rerun/component_descriptor.hpp +142 -0
  313. include/rerun/component_type.hpp +35 -0
  314. include/rerun/components/aggregation_policy.hpp +76 -0
  315. include/rerun/components/albedo_factor.hpp +74 -0
  316. include/rerun/components/annotation_context.hpp +102 -0
  317. include/rerun/components/axis_length.hpp +74 -0
  318. include/rerun/components/blob.hpp +73 -0
  319. include/rerun/components/class_id.hpp +71 -0
  320. include/rerun/components/clear_is_recursive.hpp +75 -0
  321. include/rerun/components/color.hpp +99 -0
  322. include/rerun/components/colormap.hpp +99 -0
  323. include/rerun/components/depth_meter.hpp +84 -0
  324. include/rerun/components/draw_order.hpp +79 -0
  325. include/rerun/components/entity_path.hpp +83 -0
  326. include/rerun/components/fill_mode.hpp +72 -0
  327. include/rerun/components/fill_ratio.hpp +79 -0
  328. include/rerun/components/gamma_correction.hpp +80 -0
  329. include/rerun/components/geo_line_string.hpp +63 -0
  330. include/rerun/components/graph_edge.hpp +75 -0
  331. include/rerun/components/graph_node.hpp +79 -0
  332. include/rerun/components/graph_type.hpp +57 -0
  333. include/rerun/components/half_size2d.hpp +91 -0
  334. include/rerun/components/half_size3d.hpp +95 -0
  335. include/rerun/components/image_buffer.hpp +86 -0
  336. include/rerun/components/image_format.hpp +84 -0
  337. include/rerun/components/image_plane_distance.hpp +77 -0
  338. include/rerun/components/interactive.hpp +76 -0
  339. include/rerun/components/keypoint_id.hpp +74 -0
  340. include/rerun/components/lat_lon.hpp +89 -0
  341. include/rerun/components/length.hpp +77 -0
  342. include/rerun/components/line_strip2d.hpp +73 -0
  343. include/rerun/components/line_strip3d.hpp +73 -0
  344. include/rerun/components/magnification_filter.hpp +63 -0
  345. include/rerun/components/marker_shape.hpp +82 -0
  346. include/rerun/components/marker_size.hpp +74 -0
  347. include/rerun/components/media_type.hpp +157 -0
  348. include/rerun/components/name.hpp +83 -0
  349. include/rerun/components/opacity.hpp +77 -0
  350. include/rerun/components/pinhole_projection.hpp +94 -0
  351. include/rerun/components/plane3d.hpp +75 -0
  352. include/rerun/components/pose_rotation_axis_angle.hpp +73 -0
  353. include/rerun/components/pose_rotation_quat.hpp +71 -0
  354. include/rerun/components/pose_scale3d.hpp +102 -0
  355. include/rerun/components/pose_transform_mat3x3.hpp +87 -0
  356. include/rerun/components/pose_translation3d.hpp +96 -0
  357. include/rerun/components/position2d.hpp +86 -0
  358. include/rerun/components/position3d.hpp +90 -0
  359. include/rerun/components/radius.hpp +98 -0
  360. include/rerun/components/range1d.hpp +75 -0
  361. include/rerun/components/resolution.hpp +88 -0
  362. include/rerun/components/rotation_axis_angle.hpp +72 -0
  363. include/rerun/components/rotation_quat.hpp +71 -0
  364. include/rerun/components/scalar.hpp +76 -0
  365. include/rerun/components/scale3d.hpp +102 -0
  366. include/rerun/components/series_visible.hpp +76 -0
  367. include/rerun/components/show_labels.hpp +79 -0
  368. include/rerun/components/stroke_width.hpp +74 -0
  369. include/rerun/components/tensor_data.hpp +94 -0
  370. include/rerun/components/tensor_dimension_index_selection.hpp +77 -0
  371. include/rerun/components/tensor_height_dimension.hpp +71 -0
  372. include/rerun/components/tensor_width_dimension.hpp +71 -0
  373. include/rerun/components/texcoord2d.hpp +101 -0
  374. include/rerun/components/text.hpp +83 -0
  375. include/rerun/components/text_log_level.hpp +110 -0
  376. include/rerun/components/timestamp.hpp +76 -0
  377. include/rerun/components/transform_mat3x3.hpp +92 -0
  378. include/rerun/components/transform_relation.hpp +66 -0
  379. include/rerun/components/translation3d.hpp +96 -0
  380. include/rerun/components/triangle_indices.hpp +85 -0
  381. include/rerun/components/value_range.hpp +78 -0
  382. include/rerun/components/vector2d.hpp +92 -0
  383. include/rerun/components/vector3d.hpp +96 -0
  384. include/rerun/components/video_timestamp.hpp +120 -0
  385. include/rerun/components/view_coordinates.hpp +346 -0
  386. include/rerun/components/visible.hpp +74 -0
  387. include/rerun/components.hpp +77 -0
  388. include/rerun/config.hpp +52 -0
  389. include/rerun/datatypes/angle.hpp +76 -0
  390. include/rerun/datatypes/annotation_info.hpp +76 -0
  391. include/rerun/datatypes/blob.hpp +67 -0
  392. include/rerun/datatypes/bool.hpp +57 -0
  393. include/rerun/datatypes/channel_datatype.hpp +87 -0
  394. include/rerun/datatypes/class_description.hpp +92 -0
  395. include/rerun/datatypes/class_description_map_elem.hpp +69 -0
  396. include/rerun/datatypes/class_id.hpp +62 -0
  397. include/rerun/datatypes/color_model.hpp +68 -0
  398. include/rerun/datatypes/dvec2d.hpp +76 -0
  399. include/rerun/datatypes/entity_path.hpp +60 -0
  400. include/rerun/datatypes/float32.hpp +62 -0
  401. include/rerun/datatypes/float64.hpp +62 -0
  402. include/rerun/datatypes/image_format.hpp +107 -0
  403. include/rerun/datatypes/keypoint_id.hpp +63 -0
  404. include/rerun/datatypes/keypoint_pair.hpp +65 -0
  405. include/rerun/datatypes/mat3x3.hpp +105 -0
  406. include/rerun/datatypes/mat4x4.hpp +119 -0
  407. include/rerun/datatypes/pixel_format.hpp +142 -0
  408. include/rerun/datatypes/plane3d.hpp +60 -0
  409. include/rerun/datatypes/quaternion.hpp +110 -0
  410. include/rerun/datatypes/range1d.hpp +59 -0
  411. include/rerun/datatypes/range2d.hpp +55 -0
  412. include/rerun/datatypes/rgba32.hpp +94 -0
  413. include/rerun/datatypes/rotation_axis_angle.hpp +67 -0
  414. include/rerun/datatypes/tensor_buffer.hpp +529 -0
  415. include/rerun/datatypes/tensor_data.hpp +100 -0
  416. include/rerun/datatypes/tensor_dimension_index_selection.hpp +58 -0
  417. include/rerun/datatypes/tensor_dimension_selection.hpp +56 -0
  418. include/rerun/datatypes/time_int.hpp +62 -0
  419. include/rerun/datatypes/time_range.hpp +55 -0
  420. include/rerun/datatypes/time_range_boundary.hpp +175 -0
  421. include/rerun/datatypes/uint16.hpp +62 -0
  422. include/rerun/datatypes/uint32.hpp +62 -0
  423. include/rerun/datatypes/uint64.hpp +62 -0
  424. include/rerun/datatypes/utf8.hpp +76 -0
  425. include/rerun/datatypes/utf8pair.hpp +62 -0
  426. include/rerun/datatypes/uuid.hpp +60 -0
  427. include/rerun/datatypes/uvec2d.hpp +76 -0
  428. include/rerun/datatypes/uvec3d.hpp +80 -0
  429. include/rerun/datatypes/uvec4d.hpp +59 -0
  430. include/rerun/datatypes/vec2d.hpp +76 -0
  431. include/rerun/datatypes/vec3d.hpp +80 -0
  432. include/rerun/datatypes/vec4d.hpp +84 -0
  433. include/rerun/datatypes/video_timestamp.hpp +67 -0
  434. include/rerun/datatypes/view_coordinates.hpp +87 -0
  435. include/rerun/datatypes/visible_time_range.hpp +57 -0
  436. include/rerun/datatypes.hpp +51 -0
  437. include/rerun/demo_utils.hpp +75 -0
  438. include/rerun/entity_path.hpp +20 -0
  439. include/rerun/error.hpp +180 -0
  440. include/rerun/half.hpp +10 -0
  441. include/rerun/image_utils.hpp +187 -0
  442. include/rerun/indicator_component.hpp +59 -0
  443. include/rerun/loggable.hpp +54 -0
  444. include/rerun/recording_stream.hpp +960 -0
  445. include/rerun/rerun_sdk_export.hpp +25 -0
  446. include/rerun/result.hpp +86 -0
  447. include/rerun/rotation3d.hpp +33 -0
  448. include/rerun/sdk_info.hpp +20 -0
  449. include/rerun/spawn.hpp +21 -0
  450. include/rerun/spawn_options.hpp +57 -0
  451. include/rerun/string_utils.hpp +16 -0
  452. include/rerun/third_party/cxxopts.hpp +2198 -0
  453. include/rerun/time_column.hpp +288 -0
  454. include/rerun/timeline.hpp +38 -0
  455. include/rerun/type_traits.hpp +40 -0
  456. include/rerun.hpp +86 -0
  457. lib/cmake/axel/axel-config.cmake +45 -0
  458. lib/cmake/axel/axelTargets-release.cmake +19 -0
  459. lib/cmake/axel/axelTargets.cmake +108 -0
  460. lib/cmake/momentum/FindFbxSdk.cmake +115 -0
  461. lib/cmake/momentum/Findre2.cmake +52 -0
  462. lib/cmake/momentum/momentum-config.cmake +67 -0
  463. lib/cmake/momentum/momentumTargets-release.cmake +259 -0
  464. lib/cmake/momentum/momentumTargets.cmake +385 -0
  465. lib/cmake/rerun_sdk/rerun_sdkConfig.cmake +70 -0
  466. lib/cmake/rerun_sdk/rerun_sdkConfigVersion.cmake +83 -0
  467. lib/cmake/rerun_sdk/rerun_sdkTargets-release.cmake +19 -0
  468. lib/cmake/rerun_sdk/rerun_sdkTargets.cmake +108 -0
  469. lib/libarrow.a +0 -0
  470. lib/libarrow_bundled_dependencies.a +0 -0
  471. lib/libaxel.a +0 -0
  472. lib/libmomentum_app_utils.a +0 -0
  473. lib/libmomentum_character.a +0 -0
  474. lib/libmomentum_character_sequence_solver.a +0 -0
  475. lib/libmomentum_character_solver.a +0 -0
  476. lib/libmomentum_common.a +0 -0
  477. lib/libmomentum_diff_ik.a +0 -0
  478. lib/libmomentum_io.a +0 -0
  479. lib/libmomentum_io_common.a +0 -0
  480. lib/libmomentum_io_fbx.a +0 -0
  481. lib/libmomentum_io_gltf.a +0 -0
  482. lib/libmomentum_io_legacy_json.a +0 -0
  483. lib/libmomentum_io_marker.a +0 -0
  484. lib/libmomentum_io_motion.a +0 -0
  485. lib/libmomentum_io_shape.a +0 -0
  486. lib/libmomentum_io_skeleton.a +0 -0
  487. lib/libmomentum_io_urdf.a +0 -0
  488. lib/libmomentum_marker_tracker.a +0 -0
  489. lib/libmomentum_math.a +0 -0
  490. lib/libmomentum_online_qr.a +0 -0
  491. lib/libmomentum_process_markers.a +0 -0
  492. lib/libmomentum_rerun.a +0 -0
  493. lib/libmomentum_simd_constraints.a +0 -0
  494. lib/libmomentum_simd_generalized_loss.a +0 -0
  495. lib/libmomentum_skeleton.a +0 -0
  496. lib/libmomentum_solver.a +0 -0
  497. lib/librerun_c__macos_arm64.a +0 -0
  498. lib/librerun_sdk.a +0 -0
  499. pymomentum/axel.cpython-312-darwin.so +0 -0
  500. pymomentum/backend/__init__.py +16 -0
  501. pymomentum/backend/skel_state_backend.py +631 -0
  502. pymomentum/backend/trs_backend.py +889 -0
  503. pymomentum/backend/utils.py +224 -0
  504. pymomentum/geometry.cpython-312-darwin.so +0 -0
  505. pymomentum/marker_tracking.cpython-312-darwin.so +0 -0
  506. pymomentum/quaternion.py +740 -0
  507. pymomentum/skel_state.py +514 -0
  508. pymomentum/solver.cpython-312-darwin.so +0 -0
  509. pymomentum/solver2.cpython-312-darwin.so +0 -0
  510. pymomentum/torch/character.py +868 -0
  511. pymomentum/torch/parameter_limits.py +494 -0
  512. pymomentum/torch/utility.py +20 -0
  513. pymomentum/trs.py +535 -0
  514. pymomentum_cpu-0.1.93.post0.dist-info/METADATA +126 -0
  515. pymomentum_cpu-0.1.93.post0.dist-info/RECORD +517 -0
  516. pymomentum_cpu-0.1.93.post0.dist-info/WHEEL +5 -0
  517. pymomentum_cpu-0.1.93.post0.dist-info/licenses/LICENSE +21 -0
@@ -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/fwd.h>
11
+ #include <momentum/character/parameter_limits.h>
12
+
13
+ namespace momentum {
14
+
15
+ namespace io_detail {
16
+ // Forward declaration
17
+ class SectionContent;
18
+ } // namespace io_detail
19
+
20
+ // Internal overload for use within momentum parsing
21
+ ParameterLimits parseParameterLimits(
22
+ const io_detail::SectionContent& content,
23
+ const Skeleton& skeleton,
24
+ const ParameterTransform& parameterTransform);
25
+
26
+ // Public API for external use
27
+ ParameterLimits parseParameterLimits(
28
+ const std::string& data,
29
+ const Skeleton& skeleton,
30
+ const ParameterTransform& parameterTransform,
31
+ size_t lineOffset = 0);
32
+
33
+ std::string writeParameterLimits(
34
+ const ParameterLimits& parameterLimits,
35
+ const Skeleton& skeleton,
36
+ const ParameterTransform& parameterTransform);
37
+
38
+ } // 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/parameter_limits.h>
11
+ #include <momentum/character/parameter_transform.h>
12
+ #include <momentum/common/filesystem.h>
13
+
14
+ #include <span>
15
+
16
+ #include <string>
17
+ #include <unordered_map>
18
+
19
+ namespace momentum {
20
+
21
+ namespace io_detail {
22
+ // Forward declaration
23
+ class SectionContent;
24
+ } // namespace io_detail
25
+
26
+ std::unordered_map<std::string, std::string> loadMomentumModel(const filesystem::path& filename);
27
+
28
+ std::unordered_map<std::string, std::string> loadMomentumModelFromBuffer(
29
+ std::span<const std::byte> buffer);
30
+
31
+ // Internal overloads for use within momentum parsing
32
+ ParameterTransform parseParameterTransform(
33
+ const io_detail::SectionContent& content,
34
+ const Skeleton& skeleton);
35
+ ParameterSets parseParameterSets(
36
+ const io_detail::SectionContent& content,
37
+ const ParameterTransform& pt);
38
+ PoseConstraints parsePoseConstraints(
39
+ const io_detail::SectionContent& content,
40
+ const ParameterTransform& pt);
41
+
42
+ // Public APIs for external use
43
+ ParameterTransform
44
+ parseParameterTransform(const std::string& data, const Skeleton& skeleton, size_t lineOffset = 0);
45
+
46
+ ParameterSets
47
+ parseParameterSets(const std::string& data, const ParameterTransform& pt, size_t lineOffset = 0);
48
+
49
+ PoseConstraints
50
+ parsePoseConstraints(const std::string& data, const ParameterTransform& pt, size_t lineOffset = 0);
51
+
52
+ // load transform definition from file
53
+ std::tuple<ParameterTransform, ParameterLimits> loadModelDefinition(
54
+ const filesystem::path& filename,
55
+ const Skeleton& skeleton);
56
+
57
+ std::tuple<ParameterTransform, ParameterLimits> loadModelDefinition(
58
+ std::span<const std::byte> rawData,
59
+ const Skeleton& skeleton);
60
+
61
+ // Write functions to serialize model definition components
62
+ std::string writeParameterTransform(
63
+ const ParameterTransform& parameterTransform,
64
+ const Skeleton& skeleton);
65
+
66
+ std::string writeParameterSets(const ParameterSets& parameterSets);
67
+
68
+ std::string writePoseConstraints(const PoseConstraints& poseConstraints);
69
+
70
+ /// Write complete model definition file
71
+ /// @param skeleton The character's skeletal structure
72
+ /// @param parameterTransform Maps model parameters to joint parameters
73
+ /// @param parameterLimits Constraints on model parameters (can be empty)
74
+ /// @return String containing the complete model definition
75
+ std::string writeModelDefinition(
76
+ const Skeleton& skeleton,
77
+ const ParameterTransform& parameterTransform,
78
+ const ParameterLimits& parameterLimits);
79
+
80
+ } // namespace momentum
@@ -0,0 +1,20 @@
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/fwd.h>
11
+
12
+ #include <string>
13
+ #include <unordered_map>
14
+
15
+ namespace momentum {
16
+
17
+ // Load the input parameters onto the character
18
+ void loadParameters(std::unordered_map<std::string, std::string>& param, Character& character);
19
+
20
+ } // 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 <sstream>
11
+ #include <string>
12
+ #include <string_view>
13
+ #include <vector>
14
+
15
+ namespace momentum {
16
+ namespace io_detail {
17
+
18
+ /// Represents a single segment of a section (when sections are split across the file)
19
+ struct SectionSegment {
20
+ std::string content;
21
+ size_t startLine;
22
+ };
23
+
24
+ /// Holds all segments of a section and provides line-aware iteration
25
+ /// This is used internally to track line numbers across potentially duplicate sections
26
+ class SectionContent {
27
+ public:
28
+ void addSegment(std::string_view content, size_t startLine) {
29
+ segments_.push_back({std::string(content), startLine});
30
+ }
31
+
32
+ [[nodiscard]] bool empty() const {
33
+ return segments_.empty();
34
+ }
35
+
36
+ /// Iterator that walks through all segments while tracking line numbers
37
+ class LineIterator {
38
+ public:
39
+ explicit LineIterator(const std::vector<SectionSegment>& segments);
40
+
41
+ /// Get the next line from the sections
42
+ /// @return true if a line was read, false if end of all segments reached
43
+ bool getline(std::string& line);
44
+
45
+ /// Get the current line number in the original file
46
+ [[nodiscard]] size_t currentLine() const;
47
+
48
+ private:
49
+ const std::vector<SectionSegment>& segments_;
50
+ size_t segmentIndex_;
51
+ size_t lineInSegment_;
52
+ std::istringstream currentStream_;
53
+ };
54
+
55
+ [[nodiscard]] LineIterator begin() const {
56
+ return LineIterator(segments_);
57
+ }
58
+
59
+ /// Get all content as a single concatenated string (for backward compatibility)
60
+ [[nodiscard]] std::string toString() const;
61
+
62
+ private:
63
+ std::vector<SectionSegment> segments_;
64
+ };
65
+
66
+ } // namespace io_detail
67
+ } // namespace momentum
@@ -0,0 +1,26 @@
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/common/filesystem.h>
12
+ #include <momentum/math/types.h>
13
+
14
+ #include <span>
15
+
16
+ namespace momentum {
17
+
18
+ /// Loads a character from a URDF file.
19
+ template <typename T = float>
20
+ CharacterT<T> loadUrdfCharacter(const filesystem::path& filepath);
21
+
22
+ /// Loads a character from a URDF file using the provided byte data.
23
+ template <typename T = float>
24
+ [[nodiscard]] CharacterT<T> loadUrdfCharacter(std::span<const std::byte> bytes);
25
+
26
+ } // namespace momentum
@@ -0,0 +1,36 @@
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/fwd.h>
11
+ #include <momentum/common/filesystem.h>
12
+ #include <momentum/math/types.h>
13
+
14
+ #include <span>
15
+
16
+ namespace momentum {
17
+
18
+ /// Load a USD character from a local file path.
19
+ ///
20
+ /// @param[in] inputPath The path to the USD character file.
21
+ /// @return The loaded Character object.
22
+ Character loadUsdCharacter(const filesystem::path& inputPath);
23
+
24
+ /// Load a USD character from a buffer.
25
+ ///
26
+ /// @param[in] inputSpan The buffer containing the USD character data.
27
+ /// @return The loaded Character object.
28
+ Character loadUsdCharacter(std::span<const std::byte> inputSpan);
29
+
30
+ /// Save a character to a USD file.
31
+ ///
32
+ /// @param[in] filename The path to save the USD file.
33
+ /// @param[in] character The Character object to save.
34
+ void saveUsd(const filesystem::path& filename, const Character& character);
35
+
36
+ } // namespace momentum
@@ -0,0 +1,64 @@
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
+ /// @param[in] timestamps Per-frame timestamps. Size should match motion columns.
54
+ void saveMotion(
55
+ const std::string& outFile,
56
+ const momentum::Character& character,
57
+ const momentum::ModelParameters& identity,
58
+ Eigen::MatrixXf& finalMotion,
59
+ std::span<const std::vector<momentum::Marker>> markerData,
60
+ double fps,
61
+ bool saveMarkerMesh = true,
62
+ std::span<const int64_t> timestamps = {});
63
+
64
+ } // namespace momentum
@@ -0,0 +1,221 @@
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
+ std::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
+ std::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
+ std::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
+ /// @param[in] isContinuous Whether to use temporal coherence between frames.
159
+ ///
160
+ /// @return The solved motion. It has the same length as markerData. It repeats the same solved pose
161
+ /// within a frame stride.
162
+ Eigen::MatrixXf trackPosesForFrames(
163
+ std::span<const std::vector<momentum::Marker>> markerData,
164
+ const momentum::Character& character,
165
+ const Eigen::MatrixXf& initialMotion,
166
+ const TrackingConfig& config,
167
+ const std::vector<size_t>& frameIndices,
168
+ bool isContinuous = false);
169
+
170
+ /// Calibrate body proportions and locator offsets of a character from input marker data.
171
+ ///
172
+ /// @param[in] markerData Input marker data.
173
+ /// @param[in] config Solving options.
174
+ /// @param[in,out] character Character definition. It provides input locators offsets which will get
175
+ /// updated in return.
176
+ /// @param[in,out] identity Initial identity parameters that get updated in return. It could also
177
+ /// hold the pose of the first frame for better initialization for tracking later.
178
+ /// @param[in] regularizerWeights Regularizer weights used for global parameters, at each different
179
+ /// stage (3 in total) of the calibration. Ideally these weights would increase over stages: in
180
+ /// stage 0, 0 or low regularization weight to allow a large change; in stage 1, a small
181
+ /// regularization weight to prevent too large of a change; in stage 2, a higher regularization
182
+ /// weight to prevent large changes.
183
+ void calibrateModel(
184
+ std::span<const std::vector<momentum::Marker>> markerData,
185
+ const CalibrationConfig& config,
186
+ momentum::Character& character,
187
+ momentum::ModelParameters& identity,
188
+ const std::array<float, 3>& regularizerWeights = {0.0f, 0.0f, 0.0f});
189
+
190
+ /// Calibrate locator offsets of a character from input identity and marker data.
191
+ ///
192
+ /// @param[in] markerData Input marker data.
193
+ /// @param[in] config Solving options.
194
+ /// @param[in] identity Identity parameters of the input character.
195
+ /// @param[in,out] character Character definition. It provides input locators offsets which will get
196
+ /// updated in return. We overwrite the locators in the input character so we don't have to
197
+ /// duplicate the character object inside the function.
198
+ void calibrateLocators(
199
+ std::span<const std::vector<momentum::Marker>> markerData,
200
+ const CalibrationConfig& config,
201
+ const momentum::ModelParameters& identity,
202
+ momentum::Character& character);
203
+
204
+ Eigen::MatrixXf refineMotion(
205
+ std::span<const std::vector<momentum::Marker>> markerData,
206
+ const Eigen::MatrixXf& motion,
207
+ const RefineConfig& config,
208
+ momentum::Character& character);
209
+
210
+ /// Get the error of the locator motion vs the markers
211
+ ///
212
+ /// @param[in] markerData Input marker data.
213
+ /// @param[in] motion Motion to compare against.
214
+ /// @param[in] character Character definition
215
+ /// @return average per frame error and max marker error
216
+ std::pair<float, float> getLocatorError(
217
+ std::span<const std::vector<momentum::Marker>> markerData,
218
+ const Eigen::MatrixXf& motion,
219
+ momentum::Character& character);
220
+
221
+ } // 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