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,67 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #include <momentum/character/types.h>
11
+ #include <momentum/math/types.h>
12
+
13
+ #include <cstdint>
14
+ #include <vector>
15
+
16
+ namespace momentum {
17
+
18
+ /// Maximum number of joints that can influence a single vertex
19
+ inline static constexpr uint32_t kMaxSkinJoints = 8;
20
+
21
+ /// Matrix type for storing joint indices that influence each vertex
22
+ ///
23
+ /// Each row represents a vertex, and each column represents a joint influence.
24
+ /// The matrix has a fixed number of columns (kMaxSkinJoints) and a dynamic number of rows.
25
+ using IndexMatrix =
26
+ Eigen::Matrix<uint32_t, Eigen::Dynamic, kMaxSkinJoints, Eigen::AutoAlign | Eigen::RowMajor>;
27
+
28
+ /// Matrix type for storing weights of joint influences on each vertex
29
+ ///
30
+ /// Each row represents a vertex, and each column represents the weight of a joint influence.
31
+ /// The matrix has a fixed number of columns (kMaxSkinJoints) and a dynamic number of rows.
32
+ using WeightMatrix =
33
+ Eigen::Matrix<float, Eigen::Dynamic, kMaxSkinJoints, Eigen::AutoAlign | Eigen::RowMajor>;
34
+
35
+ /// Stores skinning weights and joint indices for character mesh deformation
36
+ struct SkinWeights {
37
+ /// Joint indices that influence each vertex
38
+ ///
39
+ /// Each row corresponds to a vertex, and each column contains the index of a joint
40
+ /// that influences that vertex. Unused influences are set to 0.
41
+ IndexMatrix index;
42
+
43
+ /// Weight of each joint's influence on each vertex
44
+ ///
45
+ /// Each row corresponds to a vertex, and each column contains the weight of a joint's
46
+ /// influence on that vertex. Weights for a vertex typically sum to 1.0. Unused influences
47
+ /// are set to 0.0.
48
+ WeightMatrix weight;
49
+
50
+ /// Sets the skin weights from vectors of joint indices and weights
51
+ ///
52
+ /// @param ind Vector of vectors containing joint indices for each vertex
53
+ /// @param wgt Vector of vectors containing weights for each vertex
54
+ /// @throws If ind.size() != wgt.size() (via MT_CHECK)
55
+ void set(const std::vector<std::vector<size_t>>& ind, const std::vector<std::vector<float>>& wgt);
56
+
57
+ /// Compares two SkinWeights objects for equality
58
+ ///
59
+ /// Two SkinWeights objects are considered equal if their index and weight matrices
60
+ /// are approximately equal (using Eigen's isApprox method).
61
+ ///
62
+ /// @param skinWeights The SkinWeights object to compare with
63
+ /// @return True if the objects are equal, false otherwise
64
+ bool operator==(const SkinWeights& skinWeights) const;
65
+ };
66
+
67
+ } // namespace momentum
@@ -0,0 +1,80 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #include <momentum/character/skin_weights.h>
11
+ #include <momentum/character/types.h>
12
+ #include <momentum/math/utility.h>
13
+
14
+ namespace momentum {
15
+
16
+ /// A skinned locator is a locator which can be attached to multiple bones.
17
+ /// The locator's position is defined relative to the rest pose of the character (and not
18
+ /// local to a single parent bone as with a regular Locator) and its position at runtime is
19
+ /// determined by blending the skinning transforms (using LBS).
20
+ ///
21
+ /// The purpose of the SkinnedLocator is to model mocap markers attached to the actor's skin:
22
+ /// the location of points on e.g. the shoulder is more accurately modeled by blending
23
+ /// multiple transforms. In addition, the locator can be constrained to slide along the
24
+ /// surface of the mesh using e.g. the SkinnedLocatorTriangleErrorFunction.
25
+ ///
26
+ /// Locators can be used for various purposes such as tracking specific points
27
+ /// on a character, defining constraints, or serving as targets for inverse kinematics.
28
+ struct SkinnedLocator {
29
+ /// Name identifier for the locator
30
+ std::string name;
31
+
32
+ /// Index of the parent joints in the skeleton. The final position of the locator
33
+ /// is determined by blending the transforms from each (valid) parent.
34
+ Eigen::Matrix<uint32_t, kMaxSkinJoints, 1> parents;
35
+
36
+ /// Skinning weight for each parent joint.
37
+ Eigen::Matrix<float, kMaxSkinJoints, 1> skinWeights;
38
+
39
+ /// Position relative to rest pose of the character
40
+ Vector3f position;
41
+
42
+ /// Influence weight of this locator when used in constraints
43
+ float weight;
44
+
45
+ /// Creates a locator with the specified properties
46
+ ///
47
+ /// @param name Identifier for the locator
48
+ /// @param parents Indices of the parent joints
49
+ /// @param weights Skinning weights for the parent joints
50
+ /// @param weight Influence weight in constraints
51
+ SkinnedLocator(
52
+ const std::string& name = "uninitialized",
53
+ const Eigen::Matrix<uint32_t, kMaxSkinJoints, 1>& parents =
54
+ Eigen::Matrix<uint32_t, kMaxSkinJoints, 1>::Zero(),
55
+ const Eigen::Matrix<float, kMaxSkinJoints, 1>& skinWeights =
56
+ Eigen::Matrix<float, kMaxSkinJoints, 1>::Zero(),
57
+ const Vector3f& position = Vector3f::Zero(),
58
+ const float weight = 1.0f)
59
+ : name(name),
60
+ parents(parents),
61
+ skinWeights(skinWeights),
62
+ position(position),
63
+ weight(weight) {}
64
+
65
+ /// Compares two locators for equality, using approximate comparison for floating-point values
66
+ ///
67
+ /// @param locator The locator to compare with
68
+ /// @return True if all properties are equal (or approximately equal for floating-point values)
69
+ inline bool operator==(const SkinnedLocator& locator) const {
70
+ return (
71
+ (name == locator.name) && (parents == locator.parents) &&
72
+ skinWeights.isApprox(locator.skinWeights) && position.isApprox(locator.position) &&
73
+ isApprox(weight, locator.weight));
74
+ }
75
+ };
76
+
77
+ /// A collection of locators attached to a skeleton
78
+ using SkinnedLocatorList = std::vector<SkinnedLocator>;
79
+
80
+ } // namespace momentum
@@ -0,0 +1,202 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ //------------------------------------------------------------------------------
11
+ // Momentum specific Eigen defines
12
+ //------------------------------------------------------------------------------
13
+
14
+ #include <momentum/character/fwd.h>
15
+
16
+ #include <Eigen/Dense>
17
+
18
+ #include <array>
19
+ #include <string>
20
+ #include <tuple>
21
+ #include <vector>
22
+
23
+ namespace momentum {
24
+
25
+ inline constexpr size_t kParametersPerJoint = 7;
26
+ enum JointParameterNames { TX = 0, TY, TZ, RX, RY, RZ, SC };
27
+ inline constexpr std::array<const char*, kParametersPerJoint>
28
+ kJointParameterNames{"tx", "ty", "tz", "rx", "ry", "rz", "sc"};
29
+
30
+ template <typename T>
31
+ using JointVectorT = Eigen::Matrix<T, kParametersPerJoint, 1>;
32
+ using JointVector = JointVectorT<float>;
33
+
34
+ template <template <typename> typename Derived, typename EigenType>
35
+ struct EigenStrongType {
36
+ using Scalar = typename EigenType::Scalar;
37
+
38
+ EigenType v;
39
+
40
+ EigenStrongType() : v() {}
41
+
42
+ explicit EigenStrongType(::Eigen::Index size) : v(size) {}
43
+
44
+ template <typename Other>
45
+ /* implicit */ EigenStrongType(const ::Eigen::EigenBase<Other>& o) : v(o) {}
46
+
47
+ template <typename Other>
48
+ /* implicit */ EigenStrongType(::Eigen::EigenBase<Other>&& o) : v(std::move(o)) {}
49
+
50
+ template <typename Other>
51
+ EigenStrongType& operator=(const ::Eigen::EigenBase<Other>& o) {
52
+ v = o;
53
+ return *this;
54
+ }
55
+
56
+ template <typename Other>
57
+ EigenStrongType& operator=(::Eigen::EigenBase<Other>&& o) {
58
+ v = std::move(o);
59
+ return *this;
60
+ }
61
+
62
+ EIGEN_DEVICE_FUNC
63
+ EIGEN_STRONG_INLINE
64
+ auto&& operator()(::Eigen::Index i) {
65
+ return v(i);
66
+ }
67
+
68
+ EIGEN_DEVICE_FUNC
69
+ EIGEN_STRONG_INLINE
70
+ auto&& operator()(::Eigen::Index i) const {
71
+ return v(i);
72
+ }
73
+
74
+ EIGEN_DEVICE_FUNC
75
+ EIGEN_STRONG_INLINE
76
+ auto&& operator[](::Eigen::Index i) {
77
+ return v[i];
78
+ }
79
+
80
+ EIGEN_DEVICE_FUNC
81
+ EIGEN_STRONG_INLINE
82
+ auto&& operator[](::Eigen::Index i) const {
83
+ return v[i];
84
+ }
85
+
86
+ template <typename NewScalar>
87
+ [[nodiscard]] EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived<NewScalar> cast() const {
88
+ return v.template cast<NewScalar>();
89
+ }
90
+
91
+ [[nodiscard]] EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE auto size() const {
92
+ return v.size();
93
+ }
94
+
95
+ EIGEN_DEVICE_FUNC
96
+ static Derived<Scalar> Zero(::Eigen::Index size) {
97
+ return Derived<Scalar>(EigenType::Zero(size));
98
+ }
99
+ };
100
+
101
+ // a vector describing model parameters
102
+ template <typename T>
103
+ struct ModelParametersT : public EigenStrongType<ModelParametersT, ::Eigen::VectorX<T>> {
104
+ using t = ::Eigen::VectorX<T>;
105
+ using EigenStrongType<ModelParametersT, t>::EigenStrongType;
106
+ using EigenStrongType<ModelParametersT, t>::operator=;
107
+ };
108
+
109
+ using ModelParameters = ModelParametersT<float>;
110
+ using ModelParametersd = ModelParametersT<double>;
111
+
112
+ template <typename T>
113
+ struct BlendWeightsT : public EigenStrongType<BlendWeightsT, ::Eigen::VectorX<T>> {
114
+ using t = ::Eigen::VectorX<T>;
115
+ using EigenStrongType<BlendWeightsT, t>::EigenStrongType;
116
+ using EigenStrongType<BlendWeightsT, t>::operator=;
117
+ };
118
+
119
+ using BlendWeights = BlendWeightsT<float>;
120
+ using BlendWeightsd = BlendWeightsT<double>;
121
+
122
+ static_assert(
123
+ sizeof(BlendWeights) == sizeof(Eigen::VectorXf),
124
+ "Missing Empty Base Class Optimization");
125
+ static_assert(
126
+ sizeof(BlendWeightsd) == sizeof(Eigen::VectorXd),
127
+ "Missing Empty Base Class Optimization");
128
+
129
+ // A vector describing joint parameters, the vector has size numSkeletonJoints * kParametersPerJoint
130
+ // e.g. in case of a character body model with 159 joints, the joint parameters vector will have the
131
+ // size 159 * 7 = 1113
132
+ template <typename T>
133
+ struct JointParametersT : public EigenStrongType<JointParametersT, ::Eigen::VectorX<T>> {
134
+ using t = ::Eigen::VectorX<T>;
135
+ using EigenStrongType<JointParametersT, t>::EigenStrongType;
136
+ using EigenStrongType<JointParametersT, t>::operator=;
137
+
138
+ [[nodiscard]] static ::Eigen::Vector3<T> fromRotationMatrix(const ::Eigen::Matrix3<T>& m) {
139
+ // From JointState::set(), we can see that localRotation = rz * ry * rx, but the order in
140
+ // JointParameters is [rx, ry, rz]. Therefore, the conversion should be
141
+ // rotationMatrixToEulerZYX.reverse.
142
+ return rotationMatrixToEulerZYX(m).reverse();
143
+ }
144
+
145
+ [[nodiscard]] static ::Eigen::Vector3<T> fromQuaternion(const ::Eigen::Quaternion<T>& q) {
146
+ return fromRotationMatrix(q.toRotationMatrix());
147
+ }
148
+ };
149
+
150
+ using JointParameters = JointParametersT<float>;
151
+ using JointParametersd = JointParametersT<double>;
152
+
153
+ static_assert(
154
+ sizeof(JointParameters) == sizeof(Eigen::VectorXf),
155
+ "Missing Empty Base Class Optimization");
156
+ static_assert(
157
+ sizeof(JointParametersd) == sizeof(Eigen::VectorXd),
158
+ "Missing Empty Base Class Optimization");
159
+
160
+ template <typename T>
161
+ using JointStateListT = std::vector<JointStateT<T>>;
162
+
163
+ using JointStateList = JointStateListT<float>;
164
+ using JointStateListd = JointStateListT<double>;
165
+
166
+ /// A struct that encapsulates both pose and identity parameters for a character.
167
+ ///
168
+ /// @note This structure implies, but does not enforce, that the pose vector should contain only
169
+ /// pose information with identity-related elements set to zero. Similarly, the identity vector
170
+ /// should exclusively contain bone length information, excluding any pose data.
171
+ template <typename T>
172
+ struct CharacterParametersT {
173
+ /// The model parameter vector representing the pose of the character. This vector should have a
174
+ /// size of numModelParams.
175
+
176
+ ModelParametersT<T> pose;
177
+ /// The joint parameter vector representing the unique bone lengths of the character, defining
178
+ /// the character's identity. This vector should have a size of numSkeletonJoints *
179
+ /// kParametersPerJoint.
180
+ JointParametersT<T> offsets;
181
+ };
182
+
183
+ using CharacterParameters = CharacterParametersT<float>;
184
+ using CharacterParametersd = CharacterParametersT<double>;
185
+
186
+ // The tuple of model parameter names and corresponding matrix representing the pose in a sequence
187
+ // of frames The poses are ordered in columns and the expected shape of motion matrix is
188
+ // (numModelParams, numFrames)
189
+
190
+ using MotionParameters = std::tuple<std::vector<std::string>, Eigen::MatrixXf>;
191
+
192
+ // The tuple containing the skeleton joint names and identity parameters. The identity parameters
193
+ // represent bone offsets and bone scales that are added to the joint states (local transform for
194
+ // each joint wrt parent joint) during FK step The identity parameters are expressed as a vector of
195
+ // size (numSkeletonJoints * momentum::kParametersPerJoint)
196
+
197
+ using IdentityParameters = std::tuple<std::vector<std::string>, Eigen::VectorXf>;
198
+
199
+ // define static kInvalidIndex for size_t
200
+ inline constexpr size_t kInvalidIndex = std::numeric_limits<size_t>::max();
201
+
202
+ } // namespace momentum
@@ -0,0 +1,200 @@
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
+ // This file is @generated by gen_fwd.py
9
+ // Do not edit this file directly, instead update gen_fwd_input.toml and run:
10
+ // buck run @arvr/mode/platform010/opt //arvr/libraries/momentum:gen_fwd
11
+
12
+ #pragma once
13
+
14
+ #include <memory>
15
+
16
+ namespace momentum {
17
+
18
+ struct MultiposeSolverOptions;
19
+
20
+ using MultiposeSolverOptions_p = ::std::shared_ptr<MultiposeSolverOptions>;
21
+ using MultiposeSolverOptions_u = ::std::unique_ptr<MultiposeSolverOptions>;
22
+ using MultiposeSolverOptions_w = ::std::weak_ptr<MultiposeSolverOptions>;
23
+ using MultiposeSolverOptions_const_p = ::std::shared_ptr<const MultiposeSolverOptions>;
24
+ using MultiposeSolverOptions_const_u = ::std::unique_ptr<const MultiposeSolverOptions>;
25
+ using MultiposeSolverOptions_const_w = ::std::weak_ptr<const MultiposeSolverOptions>;
26
+
27
+ struct SequenceSolverOptions;
28
+
29
+ using SequenceSolverOptions_p = ::std::shared_ptr<SequenceSolverOptions>;
30
+ using SequenceSolverOptions_u = ::std::unique_ptr<SequenceSolverOptions>;
31
+ using SequenceSolverOptions_w = ::std::weak_ptr<SequenceSolverOptions>;
32
+ using SequenceSolverOptions_const_p = ::std::shared_ptr<const SequenceSolverOptions>;
33
+ using SequenceSolverOptions_const_u = ::std::unique_ptr<const SequenceSolverOptions>;
34
+ using SequenceSolverOptions_const_w = ::std::weak_ptr<const SequenceSolverOptions>;
35
+
36
+ template <typename T>
37
+ class SequenceErrorFunctionT;
38
+ using SequenceErrorFunction = SequenceErrorFunctionT<float>;
39
+ using SequenceErrorFunctiond = SequenceErrorFunctionT<double>;
40
+
41
+ using SequenceErrorFunction_p = ::std::shared_ptr<SequenceErrorFunction>;
42
+ using SequenceErrorFunction_u = ::std::unique_ptr<SequenceErrorFunction>;
43
+ using SequenceErrorFunction_w = ::std::weak_ptr<SequenceErrorFunction>;
44
+ using SequenceErrorFunction_const_p = ::std::shared_ptr<const SequenceErrorFunction>;
45
+ using SequenceErrorFunction_const_u = ::std::unique_ptr<const SequenceErrorFunction>;
46
+ using SequenceErrorFunction_const_w = ::std::weak_ptr<const SequenceErrorFunction>;
47
+
48
+ using SequenceErrorFunctiond_p = ::std::shared_ptr<SequenceErrorFunctiond>;
49
+ using SequenceErrorFunctiond_u = ::std::unique_ptr<SequenceErrorFunctiond>;
50
+ using SequenceErrorFunctiond_w = ::std::weak_ptr<SequenceErrorFunctiond>;
51
+ using SequenceErrorFunctiond_const_p = ::std::shared_ptr<const SequenceErrorFunctiond>;
52
+ using SequenceErrorFunctiond_const_u = ::std::unique_ptr<const SequenceErrorFunctiond>;
53
+ using SequenceErrorFunctiond_const_w = ::std::weak_ptr<const SequenceErrorFunctiond>;
54
+
55
+ template <typename T>
56
+ class ModelParametersSequenceErrorFunctionT;
57
+ using ModelParametersSequenceErrorFunction = ModelParametersSequenceErrorFunctionT<float>;
58
+ using ModelParametersSequenceErrorFunctiond = ModelParametersSequenceErrorFunctionT<double>;
59
+
60
+ using ModelParametersSequenceErrorFunction_p =
61
+ ::std::shared_ptr<ModelParametersSequenceErrorFunction>;
62
+ using ModelParametersSequenceErrorFunction_u =
63
+ ::std::unique_ptr<ModelParametersSequenceErrorFunction>;
64
+ using ModelParametersSequenceErrorFunction_w =
65
+ ::std::weak_ptr<ModelParametersSequenceErrorFunction>;
66
+ using ModelParametersSequenceErrorFunction_const_p =
67
+ ::std::shared_ptr<const ModelParametersSequenceErrorFunction>;
68
+ using ModelParametersSequenceErrorFunction_const_u =
69
+ ::std::unique_ptr<const ModelParametersSequenceErrorFunction>;
70
+ using ModelParametersSequenceErrorFunction_const_w =
71
+ ::std::weak_ptr<const ModelParametersSequenceErrorFunction>;
72
+
73
+ using ModelParametersSequenceErrorFunctiond_p =
74
+ ::std::shared_ptr<ModelParametersSequenceErrorFunctiond>;
75
+ using ModelParametersSequenceErrorFunctiond_u =
76
+ ::std::unique_ptr<ModelParametersSequenceErrorFunctiond>;
77
+ using ModelParametersSequenceErrorFunctiond_w =
78
+ ::std::weak_ptr<ModelParametersSequenceErrorFunctiond>;
79
+ using ModelParametersSequenceErrorFunctiond_const_p =
80
+ ::std::shared_ptr<const ModelParametersSequenceErrorFunctiond>;
81
+ using ModelParametersSequenceErrorFunctiond_const_u =
82
+ ::std::unique_ptr<const ModelParametersSequenceErrorFunctiond>;
83
+ using ModelParametersSequenceErrorFunctiond_const_w =
84
+ ::std::weak_ptr<const ModelParametersSequenceErrorFunctiond>;
85
+
86
+ template <typename T>
87
+ class MultiposeSolverT;
88
+ using MultiposeSolver = MultiposeSolverT<float>;
89
+ using MultiposeSolverd = MultiposeSolverT<double>;
90
+
91
+ using MultiposeSolver_p = ::std::shared_ptr<MultiposeSolver>;
92
+ using MultiposeSolver_u = ::std::unique_ptr<MultiposeSolver>;
93
+ using MultiposeSolver_w = ::std::weak_ptr<MultiposeSolver>;
94
+ using MultiposeSolver_const_p = ::std::shared_ptr<const MultiposeSolver>;
95
+ using MultiposeSolver_const_u = ::std::unique_ptr<const MultiposeSolver>;
96
+ using MultiposeSolver_const_w = ::std::weak_ptr<const MultiposeSolver>;
97
+
98
+ using MultiposeSolverd_p = ::std::shared_ptr<MultiposeSolverd>;
99
+ using MultiposeSolverd_u = ::std::unique_ptr<MultiposeSolverd>;
100
+ using MultiposeSolverd_w = ::std::weak_ptr<MultiposeSolverd>;
101
+ using MultiposeSolverd_const_p = ::std::shared_ptr<const MultiposeSolverd>;
102
+ using MultiposeSolverd_const_u = ::std::unique_ptr<const MultiposeSolverd>;
103
+ using MultiposeSolverd_const_w = ::std::weak_ptr<const MultiposeSolverd>;
104
+
105
+ template <typename T>
106
+ class MultiposeSolverFunctionT;
107
+ using MultiposeSolverFunction = MultiposeSolverFunctionT<float>;
108
+ using MultiposeSolverFunctiond = MultiposeSolverFunctionT<double>;
109
+
110
+ using MultiposeSolverFunction_p = ::std::shared_ptr<MultiposeSolverFunction>;
111
+ using MultiposeSolverFunction_u = ::std::unique_ptr<MultiposeSolverFunction>;
112
+ using MultiposeSolverFunction_w = ::std::weak_ptr<MultiposeSolverFunction>;
113
+ using MultiposeSolverFunction_const_p = ::std::shared_ptr<const MultiposeSolverFunction>;
114
+ using MultiposeSolverFunction_const_u = ::std::unique_ptr<const MultiposeSolverFunction>;
115
+ using MultiposeSolverFunction_const_w = ::std::weak_ptr<const MultiposeSolverFunction>;
116
+
117
+ using MultiposeSolverFunctiond_p = ::std::shared_ptr<MultiposeSolverFunctiond>;
118
+ using MultiposeSolverFunctiond_u = ::std::unique_ptr<MultiposeSolverFunctiond>;
119
+ using MultiposeSolverFunctiond_w = ::std::weak_ptr<MultiposeSolverFunctiond>;
120
+ using MultiposeSolverFunctiond_const_p = ::std::shared_ptr<const MultiposeSolverFunctiond>;
121
+ using MultiposeSolverFunctiond_const_u = ::std::unique_ptr<const MultiposeSolverFunctiond>;
122
+ using MultiposeSolverFunctiond_const_w = ::std::weak_ptr<const MultiposeSolverFunctiond>;
123
+
124
+ template <typename T>
125
+ class SequenceSolverT;
126
+ using SequenceSolver = SequenceSolverT<float>;
127
+ using SequenceSolverd = SequenceSolverT<double>;
128
+
129
+ using SequenceSolver_p = ::std::shared_ptr<SequenceSolver>;
130
+ using SequenceSolver_u = ::std::unique_ptr<SequenceSolver>;
131
+ using SequenceSolver_w = ::std::weak_ptr<SequenceSolver>;
132
+ using SequenceSolver_const_p = ::std::shared_ptr<const SequenceSolver>;
133
+ using SequenceSolver_const_u = ::std::unique_ptr<const SequenceSolver>;
134
+ using SequenceSolver_const_w = ::std::weak_ptr<const SequenceSolver>;
135
+
136
+ using SequenceSolverd_p = ::std::shared_ptr<SequenceSolverd>;
137
+ using SequenceSolverd_u = ::std::unique_ptr<SequenceSolverd>;
138
+ using SequenceSolverd_w = ::std::weak_ptr<SequenceSolverd>;
139
+ using SequenceSolverd_const_p = ::std::shared_ptr<const SequenceSolverd>;
140
+ using SequenceSolverd_const_u = ::std::unique_ptr<const SequenceSolverd>;
141
+ using SequenceSolverd_const_w = ::std::weak_ptr<const SequenceSolverd>;
142
+
143
+ template <typename T>
144
+ class SequenceSolverFunctionT;
145
+ using SequenceSolverFunction = SequenceSolverFunctionT<float>;
146
+ using SequenceSolverFunctiond = SequenceSolverFunctionT<double>;
147
+
148
+ using SequenceSolverFunction_p = ::std::shared_ptr<SequenceSolverFunction>;
149
+ using SequenceSolverFunction_u = ::std::unique_ptr<SequenceSolverFunction>;
150
+ using SequenceSolverFunction_w = ::std::weak_ptr<SequenceSolverFunction>;
151
+ using SequenceSolverFunction_const_p = ::std::shared_ptr<const SequenceSolverFunction>;
152
+ using SequenceSolverFunction_const_u = ::std::unique_ptr<const SequenceSolverFunction>;
153
+ using SequenceSolverFunction_const_w = ::std::weak_ptr<const SequenceSolverFunction>;
154
+
155
+ using SequenceSolverFunctiond_p = ::std::shared_ptr<SequenceSolverFunctiond>;
156
+ using SequenceSolverFunctiond_u = ::std::unique_ptr<SequenceSolverFunctiond>;
157
+ using SequenceSolverFunctiond_w = ::std::weak_ptr<SequenceSolverFunctiond>;
158
+ using SequenceSolverFunctiond_const_p = ::std::shared_ptr<const SequenceSolverFunctiond>;
159
+ using SequenceSolverFunctiond_const_u = ::std::unique_ptr<const SequenceSolverFunctiond>;
160
+ using SequenceSolverFunctiond_const_w = ::std::weak_ptr<const SequenceSolverFunctiond>;
161
+
162
+ template <typename T>
163
+ class StateSequenceErrorFunctionT;
164
+ using StateSequenceErrorFunction = StateSequenceErrorFunctionT<float>;
165
+ using StateSequenceErrorFunctiond = StateSequenceErrorFunctionT<double>;
166
+
167
+ using StateSequenceErrorFunction_p = ::std::shared_ptr<StateSequenceErrorFunction>;
168
+ using StateSequenceErrorFunction_u = ::std::unique_ptr<StateSequenceErrorFunction>;
169
+ using StateSequenceErrorFunction_w = ::std::weak_ptr<StateSequenceErrorFunction>;
170
+ using StateSequenceErrorFunction_const_p = ::std::shared_ptr<const StateSequenceErrorFunction>;
171
+ using StateSequenceErrorFunction_const_u = ::std::unique_ptr<const StateSequenceErrorFunction>;
172
+ using StateSequenceErrorFunction_const_w = ::std::weak_ptr<const StateSequenceErrorFunction>;
173
+
174
+ using StateSequenceErrorFunctiond_p = ::std::shared_ptr<StateSequenceErrorFunctiond>;
175
+ using StateSequenceErrorFunctiond_u = ::std::unique_ptr<StateSequenceErrorFunctiond>;
176
+ using StateSequenceErrorFunctiond_w = ::std::weak_ptr<StateSequenceErrorFunctiond>;
177
+ using StateSequenceErrorFunctiond_const_p = ::std::shared_ptr<const StateSequenceErrorFunctiond>;
178
+ using StateSequenceErrorFunctiond_const_u = ::std::unique_ptr<const StateSequenceErrorFunctiond>;
179
+ using StateSequenceErrorFunctiond_const_w = ::std::weak_ptr<const StateSequenceErrorFunctiond>;
180
+
181
+ template <typename T>
182
+ class VertexSequenceErrorFunctionT;
183
+ using VertexSequenceErrorFunction = VertexSequenceErrorFunctionT<float>;
184
+ using VertexSequenceErrorFunctiond = VertexSequenceErrorFunctionT<double>;
185
+
186
+ using VertexSequenceErrorFunction_p = ::std::shared_ptr<VertexSequenceErrorFunction>;
187
+ using VertexSequenceErrorFunction_u = ::std::unique_ptr<VertexSequenceErrorFunction>;
188
+ using VertexSequenceErrorFunction_w = ::std::weak_ptr<VertexSequenceErrorFunction>;
189
+ using VertexSequenceErrorFunction_const_p = ::std::shared_ptr<const VertexSequenceErrorFunction>;
190
+ using VertexSequenceErrorFunction_const_u = ::std::unique_ptr<const VertexSequenceErrorFunction>;
191
+ using VertexSequenceErrorFunction_const_w = ::std::weak_ptr<const VertexSequenceErrorFunction>;
192
+
193
+ using VertexSequenceErrorFunctiond_p = ::std::shared_ptr<VertexSequenceErrorFunctiond>;
194
+ using VertexSequenceErrorFunctiond_u = ::std::unique_ptr<VertexSequenceErrorFunctiond>;
195
+ using VertexSequenceErrorFunctiond_w = ::std::weak_ptr<VertexSequenceErrorFunctiond>;
196
+ using VertexSequenceErrorFunctiond_const_p = ::std::shared_ptr<const VertexSequenceErrorFunctiond>;
197
+ using VertexSequenceErrorFunctiond_const_u = ::std::unique_ptr<const VertexSequenceErrorFunctiond>;
198
+ using VertexSequenceErrorFunctiond_const_w = ::std::weak_ptr<const VertexSequenceErrorFunctiond>;
199
+
200
+ } // namespace momentum
@@ -0,0 +1,65 @@
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
+
14
+ namespace momentum {
15
+
16
+ template <typename T>
17
+ class ModelParametersSequenceErrorFunctionT : public SequenceErrorFunctionT<T> {
18
+ public:
19
+ ModelParametersSequenceErrorFunctionT(const Skeleton& skel, const ParameterTransform& pt);
20
+ explicit ModelParametersSequenceErrorFunctionT(const Character& character);
21
+
22
+ [[nodiscard]] size_t numFrames() const final {
23
+ return 2;
24
+ }
25
+
26
+ double getError(
27
+ std::span<const ModelParametersT<T>> modelParameters,
28
+ std::span<const SkeletonStateT<T>> skelStates,
29
+ std::span<const MeshStateT<T>> meshStates) const final;
30
+ double getGradient(
31
+ std::span<const ModelParametersT<T>> modelParameters,
32
+ std::span<const SkeletonStateT<T>> skelStates,
33
+ std::span<const MeshStateT<T>> meshStates,
34
+ Eigen::Ref<Eigen::VectorX<T>> gradient) const final;
35
+
36
+ // modelParameters: [numFrames() * parameterTransform] parameter vector
37
+ // skelStates: [numFrames()] array of skeleton states
38
+ // jacobian: [getJacobianSize()] x [numFrames() * parameterTransform] Jacobian matrix
39
+ // residual: [getJacobianSize()] residual vector.
40
+ double getJacobian(
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::MatrixX<T>> jacobian,
45
+ Eigen::Ref<Eigen::VectorX<T>> residual,
46
+ int& usedRows) const final;
47
+
48
+ [[nodiscard]] size_t getJacobianSize() const final;
49
+
50
+ void setTargetWeights(const Eigen::VectorX<T>& weights) {
51
+ this->targetWeights_ = weights;
52
+ }
53
+
54
+ [[nodiscard]] const Eigen::VectorX<T>& getTargetWeights() const {
55
+ return this->targetWeights_;
56
+ }
57
+
58
+ private:
59
+ Eigen::VectorX<T> targetWeights_;
60
+
61
+ public:
62
+ static constexpr T kMotionWeight = 1e-1;
63
+ };
64
+
65
+ } // namespace momentum
@@ -0,0 +1,65 @@
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_sequence_solver/fwd.h>
11
+ #include <momentum/character_sequence_solver/multipose_solver_function.h>
12
+ #include <momentum/solver/solver.h>
13
+
14
+ namespace momentum {
15
+
16
+ /// Multipose solver specific options.
17
+ struct MultiposeSolverOptions : SolverOptions {
18
+ /// Regularization parameter for QR decomposition.
19
+ float regularization = 0.05f;
20
+
21
+ MultiposeSolverOptions() = default;
22
+
23
+ /* implicit */ MultiposeSolverOptions(const SolverOptions& baseOptions)
24
+ : SolverOptions(baseOptions) {
25
+ // Empty
26
+ }
27
+ };
28
+
29
+ template <typename T>
30
+ class MultiposeSolverT : public SolverT<T> {
31
+ public:
32
+ MultiposeSolverT(const SolverOptions& options, MultiposeSolverFunctionT<T>* function);
33
+ ~MultiposeSolverT() override;
34
+
35
+ [[nodiscard]] std::string_view getName() const override;
36
+
37
+ void setOptions(const SolverOptions& options) final;
38
+
39
+ void iter() {
40
+ doIteration();
41
+ this->iteration_++;
42
+ }
43
+
44
+ void init() {
45
+ this->iteration_ = 0;
46
+ initializeSolver();
47
+ }
48
+
49
+ Eigen::VectorX<T> getP() {
50
+ return this->parameters_;
51
+ }
52
+
53
+ protected:
54
+ void doIteration() final;
55
+ void initializeSolver() final;
56
+
57
+ private:
58
+ Eigen::MatrixX<T> jacobianBlock_;
59
+ Eigen::VectorX<T> residualBlock_;
60
+ std::unique_ptr<MeshStateT<T>> meshState_;
61
+
62
+ float regularization_;
63
+ };
64
+
65
+ } // namespace momentum