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,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 <momentum/character/fwd.h>
11
+ #include <momentum/character/parameter_transform.h>
12
+ #include <momentum/character/types.h>
13
+ #include <momentum/character_sequence_solver/fwd.h>
14
+ #include <momentum/character_solver/fwd.h>
15
+ #include <momentum/solver/solver_function.h>
16
+
17
+ namespace momentum {
18
+
19
+ template <typename T>
20
+ class MultiposeSolverFunctionT : public SolverFunctionT<T> {
21
+ public:
22
+ MultiposeSolverFunctionT(
23
+ const Skeleton* skel,
24
+ const ParameterTransformT<T>* parameterTransform,
25
+ std::span<const int> universal,
26
+ size_t frames);
27
+ ~MultiposeSolverFunctionT() override;
28
+
29
+ double getError(const Eigen::VectorX<T>& parameters) final;
30
+
31
+ double getGradient(const Eigen::VectorX<T>& parameters, Eigen::VectorX<T>& gradient) final;
32
+
33
+ double getJacobian(
34
+ const Eigen::VectorX<T>& parameters,
35
+ Eigen::MatrixX<T>& jacobian,
36
+ Eigen::VectorX<T>& residual,
37
+ size_t& actualRows) final;
38
+
39
+ void updateParameters(Eigen::VectorX<T>& parameters, const Eigen::VectorX<T>& gradient) final;
40
+ void setEnabledParameters(const ParameterSet& parameterSet) final;
41
+
42
+ void addErrorFunction(size_t frame, SkeletonErrorFunctionT<T>* errorFunction);
43
+
44
+ [[nodiscard]] size_t getNumFrames() const {
45
+ return states_.size();
46
+ }
47
+
48
+ [[nodiscard]] const ModelParametersT<T>& getFrameParameters(const size_t frame) const {
49
+ return frameParameters_[frame];
50
+ }
51
+
52
+ void setFrameParameters(size_t frame, const ModelParametersT<T>& parameters);
53
+ [[nodiscard]] Eigen::VectorX<T> getUniversalParameters() const;
54
+ [[nodiscard]] Eigen::VectorX<T> getJoinedParameterVector() const;
55
+ void setJoinedParameterVector(const Eigen::VectorX<T>& joinedParameters);
56
+
57
+ [[nodiscard]] ParameterSet getUniversalParameterSet() const;
58
+ [[nodiscard]] ParameterSet getUniversalLocatorParameterSet() const;
59
+
60
+ private:
61
+ void setFrameParametersFromJoinedParameterVector(const Eigen::VectorX<T>& parameters);
62
+
63
+ private:
64
+ const Skeleton* skeleton_;
65
+ const ParameterTransformT<T>* parameterTransform_;
66
+ std::vector<SkeletonStateT<T>> states_;
67
+ std::vector<MeshStateT<T>> meshStates_;
68
+ VectorX<bool> activeJointParams_;
69
+
70
+ std::vector<ModelParametersT<T>> frameParameters_;
71
+ Eigen::VectorX<T> universal_;
72
+ std::vector<size_t> parameterIndexMap_;
73
+
74
+ std::vector<size_t> genericParameters_;
75
+ std::vector<size_t> universalParameters_;
76
+
77
+ std::vector<std::vector<SkeletonErrorFunctionT<T>*>> errorFunctions_;
78
+
79
+ friend class MultiposeSolverT<T>;
80
+ };
81
+
82
+ } // namespace momentum
@@ -0,0 +1,104 @@
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_transform.h>
12
+ #include <momentum/character/types.h>
13
+ #include <momentum/character_sequence_solver/fwd.h>
14
+
15
+ namespace momentum {
16
+
17
+ template <typename T>
18
+ class SequenceErrorFunctionT {
19
+ public:
20
+ SequenceErrorFunctionT(const Skeleton& skel, const ParameterTransform& pt)
21
+ : skeleton_(skel), parameterTransform_(pt), activeJointParams_(pt.activeJointParams) {
22
+ enabledParameters_.flip(); // all parameters enabled by default
23
+ }
24
+ virtual ~SequenceErrorFunctionT() = default;
25
+
26
+ // Number of contiguous frames that this error function affects.
27
+ [[nodiscard]] virtual size_t numFrames() const = 0;
28
+
29
+ void setWeight(T w) {
30
+ weight_ = w;
31
+ }
32
+ [[nodiscard]] float getWeight() const {
33
+ return weight_;
34
+ }
35
+
36
+ void setActiveJoints(const VectorX<bool>& aj) {
37
+ activeJointParams_ = aj;
38
+ }
39
+
40
+ void setEnabledParameters(const ParameterSet& ps) {
41
+ enabledParameters_ = ps;
42
+ }
43
+
44
+ [[nodiscard]] virtual bool needsMesh() const {
45
+ return false;
46
+ }
47
+
48
+ [[nodiscard]] virtual double getError(
49
+ std::span<const ModelParametersT<T>> /* modelParameters */,
50
+ std::span<const SkeletonStateT<T>> /* skelStates */,
51
+ std::span<const MeshStateT<T>> /* meshStates */) const {
52
+ return 0.0f;
53
+ }
54
+
55
+ // Get the gradient of the error.
56
+ // modelParameters: numFrames() array of parameter vectors
57
+ // skelStates: [numFrames()] array of skeleton states
58
+ // meshStates: [numFrames()] array of mesh states
59
+ // gradient: [numFrames() * parameterTransform] gradient vector
60
+ virtual double getGradient(
61
+ std::span<const ModelParametersT<T>> /* modelParameters */,
62
+ std::span<const SkeletonStateT<T>> /* skelStates */,
63
+ std::span<const MeshStateT<T>> /* meshStates */,
64
+ Eigen::Ref<Eigen::VectorX<T>> /* gradient */) const {
65
+ return 0.0f;
66
+ }
67
+
68
+ // modelParameters: [numFrames() * parameterTransform] parameter vector
69
+ // skelStates: [numFrames()] array of skeleton states
70
+ // meshStates: [numFrames()] array of mesh states
71
+ // jacobian: [getJacobianSize()] x [numFrames() * parameterTransform] Jacobian matrix
72
+ // residual: [getJacobianSize()] residual vector.
73
+ virtual double getJacobian(
74
+ std::span<const ModelParametersT<T>> /* modelParameters */,
75
+ std::span<const SkeletonStateT<T>> /* skelStates */,
76
+ std::span<const MeshStateT<T>> /* meshStates */,
77
+ Eigen::Ref<Eigen::MatrixX<T>> /* jacobian */,
78
+ Eigen::Ref<Eigen::VectorX<T>> /* residual */,
79
+ int& usedRows) const {
80
+ usedRows = 0;
81
+ return 0.0f;
82
+ }
83
+
84
+ [[nodiscard]] virtual size_t getJacobianSize() const {
85
+ return 0;
86
+ }
87
+
88
+ [[nodiscard]] const Skeleton& getSkeleton() const {
89
+ return this->skeleton_;
90
+ }
91
+
92
+ [[nodiscard]] const ParameterTransform& getParameterTransform() const {
93
+ return this->parameterTransform_;
94
+ }
95
+
96
+ protected:
97
+ const Skeleton& skeleton_;
98
+ const ParameterTransform& parameterTransform_;
99
+ T weight_ = 1.0f;
100
+ VectorX<bool> activeJointParams_;
101
+ ParameterSet enabledParameters_; // set to zero by default constr
102
+ };
103
+
104
+ } // namespace momentum
@@ -0,0 +1,155 @@
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_sequence_solver/fwd.h>
12
+ #include <momentum/common/fwd.h>
13
+ #include <momentum/math/fwd.h>
14
+ #include <momentum/math/online_householder_qr.h>
15
+ #include <momentum/solver/solver.h>
16
+
17
+ #include <functional>
18
+ #include <span>
19
+
20
+ namespace momentum {
21
+
22
+ /// Sequence solver specific options
23
+ struct SequenceSolverOptions : SolverOptions {
24
+ /// Regularization parameter for QR decomposition.
25
+ float regularization = 0.05f;
26
+
27
+ /// Flag to enable line search during optimization.
28
+ bool doLineSearch = false;
29
+
30
+ /// Flag to enable multithreading for the Sequence solver.
31
+ bool multithreaded = false;
32
+
33
+ /// Flag to enable a progress bar during optimization.
34
+ bool progressBar = false;
35
+
36
+ SequenceSolverOptions() = default;
37
+
38
+ /* implicit */ SequenceSolverOptions(const SolverOptions& baseOptions)
39
+ : SolverOptions(baseOptions) {
40
+ // Empty
41
+ }
42
+ };
43
+
44
+ template <typename T>
45
+ class SequenceSolverT : public SolverT<T> {
46
+ public:
47
+ SequenceSolverT(const SolverOptions& options, SequenceSolverFunctionT<T>* function);
48
+
49
+ [[nodiscard]] std::string_view getName() const override;
50
+
51
+ void setOptions(const SolverOptions& options) final;
52
+
53
+ // "numParameters" has a different meaning here than in Solver.
54
+ // For Solver class, numParameters = ParameterTransform.numAllModelParameters() * numFrames; but
55
+ // it means #variables here. To hack around this discrepancy, we update numParameters when a new
56
+ // set of variables are defined.
57
+ // XXX To be fixed as part of T118191244
58
+ void setEnabledParameters(const ParameterSet& parameters) final {
59
+ SolverT<T>::setEnabledParameters(parameters);
60
+ this->numParameters_ = this->solverFunction_->getNumParameters();
61
+ }
62
+
63
+ void iter() {
64
+ doIteration();
65
+ this->iteration_++;
66
+ }
67
+
68
+ void init() {
69
+ this->iteration_ = 0;
70
+ initializeSolver();
71
+ }
72
+
73
+ Eigen::VectorX<T> getP() {
74
+ return this->parameters_;
75
+ }
76
+
77
+ protected:
78
+ void doIteration() final;
79
+ void initializeSolver() final;
80
+
81
+ private:
82
+ static double processPerFrameErrors_parallel(
83
+ SequenceSolverFunctionT<T>* fn,
84
+ OnlineBandedHouseholderQR<T>& qrSolver,
85
+ ProgressBar* progress);
86
+ static double processPerFrameErrors_serial(
87
+ SequenceSolverFunctionT<T>* fn,
88
+ OnlineBandedHouseholderQR<T>& qrSolver,
89
+ ProgressBar* progress);
90
+
91
+ static double processSequenceErrors_serial(
92
+ SequenceSolverFunctionT<T>* fn,
93
+ OnlineBandedHouseholderQR<T>& qrSolver,
94
+ ProgressBar* progress);
95
+
96
+ struct JacobianResidual {
97
+ size_t frameIndex = SIZE_MAX;
98
+ Eigen::MatrixX<T> jacobian;
99
+ Eigen::VectorX<T> residual;
100
+ double error;
101
+ size_t nFunctions;
102
+ Eigen::Index usedRows = 0;
103
+
104
+ bool operator<(const JacobianResidual& rhs) const {
105
+ return frameIndex < rhs.frameIndex;
106
+ }
107
+
108
+ bool operator>(const JacobianResidual& rhs) const {
109
+ return frameIndex > rhs.frameIndex;
110
+ }
111
+ };
112
+
113
+ // Here, the processJac function computes the Jacobian/residual, applies it to the banded
114
+ // part of the matrix, and then returns the universal part.
115
+ static double processErrorFunctions_parallel(
116
+ const std::function<JacobianResidual(
117
+ size_t,
118
+ SequenceSolverFunctionT<T>*,
119
+ OnlineBandedHouseholderQR<T>&,
120
+ SkeletonStateT<T> skelState,
121
+ MeshStateT<T>& meshState)>& processJac,
122
+ SequenceSolverFunctionT<T>* fn,
123
+ OnlineBandedHouseholderQR<T>& qrSolver,
124
+ ProgressBar* progress);
125
+
126
+ // Returns the [Jacobian, residual, error] for all the error functions applying to a single frame:
127
+ static JacobianResidual computePerFrameJacobian(
128
+ SequenceSolverFunctionT<T>* fn,
129
+ size_t iFrame,
130
+ SkeletonStateT<T>& skelState,
131
+ MeshStateT<T>& meshState);
132
+
133
+ // Returns the [Jacobian, residual, error] for all the sequence error functions starting from a
134
+ // single frame:
135
+ static JacobianResidual computeSequenceJacobian(
136
+ SequenceSolverFunctionT<T>* fn,
137
+ size_t iFrame,
138
+ size_t bandwidth,
139
+ std::span<const SkeletonStateT<T>> skelStates,
140
+ std::span<const MeshStateT<T>> meshStates);
141
+
142
+ static std::vector<Eigen::Index> buildSequenceColumnIndices(
143
+ const SequenceSolverFunctionT<T>* fn,
144
+ size_t bandwidth);
145
+
146
+ float regularization_ = 0.05f;
147
+ bool doLineSearch_ = false;
148
+ bool multithreaded_ = false;
149
+ bool progressBar_ = false;
150
+
151
+ // bandwidth in frames:
152
+ size_t bandwidth_ = 0;
153
+ };
154
+
155
+ } // namespace momentum
@@ -0,0 +1,158 @@
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_transform.h>
12
+ #include <momentum/character/types.h>
13
+ #include <momentum/character_sequence_solver/fwd.h>
14
+ #include <momentum/character_solver/fwd.h>
15
+ #include <momentum/solver/solver_function.h>
16
+
17
+ #include <atomic>
18
+
19
+ namespace momentum {
20
+
21
+ template <typename T>
22
+ struct PerFrameStateT {
23
+ SkeletonStateT<T> skeletonState;
24
+ MeshStateT<T> meshState;
25
+ };
26
+
27
+ inline constexpr size_t kAllFrames = SIZE_MAX;
28
+
29
+ template <typename T>
30
+ class SequenceSolverFunctionT : public SolverFunctionT<T> {
31
+ public:
32
+ SequenceSolverFunctionT(
33
+ const Character& character,
34
+ const ParameterTransformT<T>& parameterTransform,
35
+ const ParameterSet& universal,
36
+ size_t nFrames);
37
+ ~SequenceSolverFunctionT() override;
38
+
39
+ double getError(const Eigen::VectorX<T>& parameters) final;
40
+
41
+ double getGradient(const Eigen::VectorX<T>& parameters, Eigen::VectorX<T>& gradient) final;
42
+
43
+ double getJacobian(
44
+ const Eigen::VectorX<T>& parameters,
45
+ Eigen::MatrixX<T>& jacobian,
46
+ Eigen::VectorX<T>& residual,
47
+ size_t& actualRows) final;
48
+
49
+ void updateParameters(Eigen::VectorX<T>& parameters, const Eigen::VectorX<T>& gradient) final;
50
+ void setEnabledParameters(const ParameterSet& parameterSet) final;
51
+
52
+ [[nodiscard]] const ParameterSet& getUniversalParameterSet() const {
53
+ return universalParameters_;
54
+ }
55
+
56
+ /// Returns whether the per-frame error functions need the mesh.
57
+ [[nodiscard]] bool needsMeshPerFrame() const {
58
+ return needsMeshPerFrame_;
59
+ }
60
+
61
+ /// Returns whether the sequence error functions need the mesh.
62
+ [[nodiscard]] bool needsMeshSequence() const {
63
+ return needsMeshSequence_;
64
+ }
65
+
66
+ // Passing in the special frame index kAllFrames will add the error function to every frame; this
67
+ // is convenient for e.g. limit errors but requires that the error function be stateless. Note:
68
+ // you are allowed to call this in a multithreaded context but you must ensure the frame indices
69
+ // are different between the different threads.
70
+ void addErrorFunction(size_t frame, std::shared_ptr<SkeletonErrorFunctionT<T>> errorFunction);
71
+ void addSequenceErrorFunction(
72
+ size_t startFrame,
73
+ std::shared_ptr<SequenceErrorFunctionT<T>> errorFunction);
74
+
75
+ [[nodiscard]] size_t getNumFrames() const {
76
+ return frameParameters_.size();
77
+ }
78
+
79
+ [[nodiscard]] const ModelParametersT<T>& getFrameParameters(size_t frame) const {
80
+ return frameParameters_[frame];
81
+ }
82
+
83
+ void setFrameParameters(size_t frame, const ModelParametersT<T>& parameters);
84
+ [[nodiscard]] ModelParametersT<T> getUniversalParameters() const;
85
+ [[nodiscard]] Eigen::VectorX<T> getJoinedParameterVector() const;
86
+
87
+ /// Returns a joined parameter vector from a span of frame parameters.
88
+ ///
89
+ /// @param frameParameters A span of frame parameters, where each element is a ModelParametersT<T>
90
+ /// object representing the parameters for a single frame.
91
+ ///
92
+ /// @return An Eigen::VectorX<T> object containing the joined parameter vector of all frames.
93
+ [[nodiscard]] Eigen::VectorX<T> getJoinedParameterVectorFromFrameParameters(
94
+ std::span<const ModelParametersT<T>> frameParameters) const;
95
+
96
+ void setJoinedParameterVector(const Eigen::VectorX<T>& joinedParameters);
97
+
98
+ [[nodiscard]] const Skeleton* getSkeleton() const;
99
+ [[nodiscard]] const Character& getCharacter() const;
100
+
101
+ [[nodiscard]] const ParameterTransformT<T>* getParameterTransform() const {
102
+ return &parameterTransform_;
103
+ }
104
+
105
+ [[nodiscard]] const auto& getErrorFunctions(size_t iFrame) const {
106
+ return perFrameErrorFunctions_.at(iFrame);
107
+ }
108
+
109
+ [[nodiscard]] const auto& getSequenceErrorFunctions(size_t iFrame) const {
110
+ return sequenceErrorFunctions_.at(iFrame);
111
+ }
112
+
113
+ private:
114
+ void setFrameParametersFromJoinedParameterVector(const Eigen::VectorX<T>& parameters);
115
+
116
+ /// Helper method to compute per-frame jacobians
117
+ double
118
+ getPerFrameJacobian(Eigen::MatrixX<T>& jacobian, Eigen::VectorX<T>& residual, size_t& position);
119
+
120
+ /// Helper method to compute sequence error functions jacobians
121
+ double getSequenceErrorFunctionsJacobian(
122
+ Eigen::MatrixX<T>& jacobian,
123
+ Eigen::VectorX<T>& residual,
124
+ size_t& position);
125
+
126
+ private:
127
+ const Character& character_;
128
+ const ParameterTransformT<T>& parameterTransform_;
129
+ VectorX<bool> activeJointParams_;
130
+
131
+ std::vector<ModelParametersT<T>> frameParameters_;
132
+ size_t nFrames_;
133
+
134
+ void updateParameterSets(const ParameterSet& activeParams);
135
+
136
+ // Indices of parameters that are active and solved per-frame:
137
+ std::vector<Eigen::Index> perFrameParameterIndices_;
138
+
139
+ // Indices of parameters that are active and solved universally:
140
+ std::vector<Eigen::Index> universalParameterIndices_;
141
+
142
+ const ParameterSet universalParameters_;
143
+
144
+ std::vector<std::vector<std::shared_ptr<SkeletonErrorFunctionT<T>>>> perFrameErrorFunctions_;
145
+ std::vector<std::vector<std::shared_ptr<SequenceErrorFunctionT<T>>>> sequenceErrorFunctions_;
146
+
147
+ std::atomic<size_t> numTotalPerFrameErrorFunctions_ = 0;
148
+ std::atomic<size_t> numTotalSequenceErrorFunctions_ = 0;
149
+
150
+ // Whether per-frame error functions need the mesh
151
+ std::atomic<bool> needsMeshPerFrame_{false};
152
+ // Whether sequence error functions need the mesh
153
+ std::atomic<bool> needsMeshSequence_{false};
154
+
155
+ friend class SequenceSolverT<T>;
156
+ };
157
+
158
+ } // namespace momentum
@@ -0,0 +1,117 @@
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/skeleton_state.h>
11
+ #include <momentum/character_sequence_solver/fwd.h>
12
+ #include <momentum/character_sequence_solver/sequence_error_function.h>
13
+ #include <momentum/character_solver/state_error_function.h>
14
+
15
+ namespace momentum {
16
+
17
+ /// Error function that penalizes the difference between the current skeleton state and the next
18
+ /// skeleton state. Note that by default this penalizes any difference between adjacent skeleton
19
+ /// states. If we specify a target state, this will be applied as an offset to the current state,
20
+ /// that is, the error will penalize the difference between offset * currentState and nextState.
21
+ template <typename T>
22
+ class StateSequenceErrorFunctionT : public SequenceErrorFunctionT<T> {
23
+ public:
24
+ StateSequenceErrorFunctionT(
25
+ const Skeleton& skel,
26
+ const ParameterTransform& pt,
27
+ RotationErrorType rotationErrorType = RotationErrorType::RotationMatrixDifference);
28
+ explicit StateSequenceErrorFunctionT(
29
+ const Character& character,
30
+ RotationErrorType rotationErrorType = RotationErrorType::RotationMatrixDifference);
31
+
32
+ [[nodiscard]] size_t numFrames() const final {
33
+ return 2;
34
+ }
35
+
36
+ double getError(
37
+ std::span<const ModelParametersT<T>> modelParameters,
38
+ std::span<const SkeletonStateT<T>> skelStates,
39
+ std::span<const MeshStateT<T>> /* meshStates */) const final;
40
+ double getGradient(
41
+ std::span<const ModelParametersT<T>> modelParameters,
42
+ std::span<const SkeletonStateT<T>> skelStates,
43
+ std::span<const MeshStateT<T>> /* meshStates */,
44
+ Eigen::Ref<Eigen::VectorX<T>> gradient) const final;
45
+
46
+ // modelParameters: [numFrames() * parameterTransform] parameter vector
47
+ // skelStates: [numFrames()] array of skeleton states
48
+ // jacobian: [getJacobianSize()] x [numFrames() * parameterTransform] Jacobian matrix
49
+ // residual: [getJacobianSize()] residual vector.
50
+ double getJacobian(
51
+ std::span<const ModelParametersT<T>> modelParameters,
52
+ std::span<const SkeletonStateT<T>> skelStates,
53
+ std::span<const MeshStateT<T>> /* meshStates */,
54
+ Eigen::Ref<Eigen::MatrixX<T>> jacobian,
55
+ Eigen::Ref<Eigen::VectorX<T>> residual,
56
+ int& usedRows) const final;
57
+
58
+ [[nodiscard]] size_t getJacobianSize() const final;
59
+
60
+ /// Set the target weights for each joint's position and rotation.
61
+ /// @param posWeight Per-joint position weights.
62
+ /// @param rotWeight Per-joint rotation weights.
63
+ void setTargetWeights(const Eigen::VectorX<T>& posWeight, const Eigen::VectorX<T>& rotWeight);
64
+
65
+ /// Set the target position weights for each joint.
66
+ /// @param posWeight Per-joint position weights.
67
+ void setPositionTargetWeights(const Eigen::VectorX<T>& posWeight);
68
+
69
+ /// Set the target rotation weights for each joint.
70
+ /// @param rotWeight Per-joint rotation weights.
71
+ void setRotationTargetWeights(const Eigen::VectorX<T>& rotWeight);
72
+ void setWeights(const float posWeight, const float rotationWeight) {
73
+ posWgt_ = posWeight;
74
+ rotWgt_ = rotationWeight;
75
+ }
76
+
77
+ void reset();
78
+
79
+ [[nodiscard]] const Eigen::VectorX<T>& getPositionWeights() const {
80
+ return targetPositionWeights_;
81
+ }
82
+ [[nodiscard]] const Eigen::VectorX<T>& getRotationWeights() const {
83
+ return targetRotationWeights_;
84
+ }
85
+ [[nodiscard]] const T& getPositionWeight() const {
86
+ return posWgt_;
87
+ }
88
+ [[nodiscard]] const T& getRotationWeight() const {
89
+ return rotWgt_;
90
+ }
91
+
92
+ /// Set the target state for the skeleton.
93
+ ///
94
+ /// This function allows specifying a target state that the skeleton should aim to achieve.
95
+ /// The target state is represented as a list of transforms, one for each joint.
96
+ /// The error will penalize the difference between offset * currentState and nextState.
97
+ /// @param target A list of transforms representing the target state for each joint.
98
+ void setTargetState(TransformListT<T> target);
99
+
100
+ private:
101
+ Eigen::VectorX<T> targetPositionWeights_;
102
+ Eigen::VectorX<T> targetRotationWeights_;
103
+
104
+ TransformListT<T> targetState_;
105
+
106
+ T posWgt_;
107
+ T rotWgt_;
108
+
109
+ const RotationErrorType rotationErrorType_;
110
+
111
+ public:
112
+ // weights for the error functions
113
+ static constexpr T kPositionWeight = 1e-3f;
114
+ static constexpr T kOrientationWeight = 1e+0f;
115
+ };
116
+
117
+ } // namespace momentum