pymomentum-cpu 0.1.77.post30__cp313-cp313-manylinux_2_39_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pymomentum-cpu might be problematic. Click here for more details.

Files changed (555) hide show
  1. include/axel/BoundingBox.h +58 -0
  2. include/axel/Bvh.h +708 -0
  3. include/axel/BvhBase.h +75 -0
  4. include/axel/BvhCommon.h +43 -0
  5. include/axel/BvhEmbree.h +86 -0
  6. include/axel/BvhFactory.h +34 -0
  7. include/axel/Checks.h +21 -0
  8. include/axel/DualContouring.h +79 -0
  9. include/axel/KdTree.h +199 -0
  10. include/axel/Log.h +22 -0
  11. include/axel/MeshToSdf.h +123 -0
  12. include/axel/Profile.h +64 -0
  13. include/axel/Ray.h +45 -0
  14. include/axel/SignedDistanceField.h +248 -0
  15. include/axel/SimdKdTree.h +515 -0
  16. include/axel/TriBvh.h +157 -0
  17. include/axel/TriBvhEmbree.h +57 -0
  18. include/axel/common/Constants.h +27 -0
  19. include/axel/common/Types.h +21 -0
  20. include/axel/common/VectorizationTypes.h +58 -0
  21. include/axel/math/BoundingBoxUtils.h +54 -0
  22. include/axel/math/ContinuousCollisionDetection.h +48 -0
  23. include/axel/math/CoplanarityCheck.h +30 -0
  24. include/axel/math/EdgeEdgeDistance.h +31 -0
  25. include/axel/math/MeshHoleFilling.h +117 -0
  26. include/axel/math/PointTriangleProjection.h +34 -0
  27. include/axel/math/PointTriangleProjectionDefinitions.h +209 -0
  28. include/axel/math/RayTriangleIntersection.h +36 -0
  29. include/momentum/character/blend_shape.h +91 -0
  30. include/momentum/character/blend_shape_base.h +70 -0
  31. include/momentum/character/blend_shape_skinning.h +96 -0
  32. include/momentum/character/character.h +272 -0
  33. include/momentum/character/character_state.h +108 -0
  34. include/momentum/character/character_utility.h +128 -0
  35. include/momentum/character/collision_geometry.h +80 -0
  36. include/momentum/character/collision_geometry_state.h +130 -0
  37. include/momentum/character/fwd.h +262 -0
  38. include/momentum/character/inverse_parameter_transform.h +58 -0
  39. include/momentum/character/joint.h +82 -0
  40. include/momentum/character/joint_state.h +241 -0
  41. include/momentum/character/linear_skinning.h +139 -0
  42. include/momentum/character/locator.h +82 -0
  43. include/momentum/character/locator_state.h +43 -0
  44. include/momentum/character/marker.h +48 -0
  45. include/momentum/character/mesh_state.h +71 -0
  46. include/momentum/character/parameter_limits.h +144 -0
  47. include/momentum/character/parameter_transform.h +250 -0
  48. include/momentum/character/pose_shape.h +65 -0
  49. include/momentum/character/skeleton.h +85 -0
  50. include/momentum/character/skeleton_state.h +181 -0
  51. include/momentum/character/skeleton_utility.h +38 -0
  52. include/momentum/character/skin_weights.h +67 -0
  53. include/momentum/character/skinned_locator.h +80 -0
  54. include/momentum/character/types.h +202 -0
  55. include/momentum/character_sequence_solver/fwd.h +200 -0
  56. include/momentum/character_sequence_solver/model_parameters_sequence_error_function.h +65 -0
  57. include/momentum/character_sequence_solver/multipose_solver.h +65 -0
  58. include/momentum/character_sequence_solver/multipose_solver_function.h +82 -0
  59. include/momentum/character_sequence_solver/sequence_error_function.h +104 -0
  60. include/momentum/character_sequence_solver/sequence_solver.h +144 -0
  61. include/momentum/character_sequence_solver/sequence_solver_function.h +134 -0
  62. include/momentum/character_sequence_solver/state_sequence_error_function.h +109 -0
  63. include/momentum/character_sequence_solver/vertex_sequence_error_function.h +128 -0
  64. include/momentum/character_solver/aim_error_function.h +112 -0
  65. include/momentum/character_solver/collision_error_function.h +92 -0
  66. include/momentum/character_solver/collision_error_function_stateless.h +75 -0
  67. include/momentum/character_solver/constraint_error_function-inl.h +324 -0
  68. include/momentum/character_solver/constraint_error_function.h +248 -0
  69. include/momentum/character_solver/distance_error_function.h +77 -0
  70. include/momentum/character_solver/error_function_utils.h +60 -0
  71. include/momentum/character_solver/fixed_axis_error_function.h +139 -0
  72. include/momentum/character_solver/fwd.h +924 -0
  73. include/momentum/character_solver/gauss_newton_solver_qr.h +64 -0
  74. include/momentum/character_solver/limit_error_function.h +57 -0
  75. include/momentum/character_solver/model_parameters_error_function.h +64 -0
  76. include/momentum/character_solver/normal_error_function.h +73 -0
  77. include/momentum/character_solver/orientation_error_function.h +74 -0
  78. include/momentum/character_solver/plane_error_function.h +102 -0
  79. include/momentum/character_solver/point_triangle_vertex_error_function.h +141 -0
  80. include/momentum/character_solver/pose_prior_error_function.h +80 -0
  81. include/momentum/character_solver/position_error_function.h +75 -0
  82. include/momentum/character_solver/projection_error_function.h +93 -0
  83. include/momentum/character_solver/simd_collision_error_function.h +99 -0
  84. include/momentum/character_solver/simd_normal_error_function.h +157 -0
  85. include/momentum/character_solver/simd_plane_error_function.h +164 -0
  86. include/momentum/character_solver/simd_position_error_function.h +165 -0
  87. include/momentum/character_solver/skeleton_error_function.h +151 -0
  88. include/momentum/character_solver/skeleton_solver_function.h +94 -0
  89. include/momentum/character_solver/skinned_locator_error_function.h +166 -0
  90. include/momentum/character_solver/skinned_locator_triangle_error_function.h +146 -0
  91. include/momentum/character_solver/skinning_weight_iterator.h +80 -0
  92. include/momentum/character_solver/state_error_function.h +94 -0
  93. include/momentum/character_solver/transform_pose.h +80 -0
  94. include/momentum/character_solver/trust_region_qr.h +80 -0
  95. include/momentum/character_solver/vertex_error_function.h +155 -0
  96. include/momentum/character_solver/vertex_projection_error_function.h +126 -0
  97. include/momentum/character_solver/vertex_vertex_distance_error_function.h +151 -0
  98. include/momentum/common/aligned.h +155 -0
  99. include/momentum/common/checks.h +27 -0
  100. include/momentum/common/exception.h +70 -0
  101. include/momentum/common/filesystem.h +20 -0
  102. include/momentum/common/fwd.h +27 -0
  103. include/momentum/common/log.h +173 -0
  104. include/momentum/common/log_channel.h +17 -0
  105. include/momentum/common/memory.h +71 -0
  106. include/momentum/common/profile.h +79 -0
  107. include/momentum/common/progress_bar.h +37 -0
  108. include/momentum/common/string.h +52 -0
  109. include/momentum/diff_ik/ceres_utility.h +73 -0
  110. include/momentum/diff_ik/fully_differentiable_body_ik.h +58 -0
  111. include/momentum/diff_ik/fully_differentiable_distance_error_function.h +69 -0
  112. include/momentum/diff_ik/fully_differentiable_motion_error_function.h +46 -0
  113. include/momentum/diff_ik/fully_differentiable_orientation_error_function.h +114 -0
  114. include/momentum/diff_ik/fully_differentiable_pose_prior_error_function.h +76 -0
  115. include/momentum/diff_ik/fully_differentiable_position_error_function.h +138 -0
  116. include/momentum/diff_ik/fully_differentiable_projection_error_function.h +65 -0
  117. include/momentum/diff_ik/fully_differentiable_skeleton_error_function.h +160 -0
  118. include/momentum/diff_ik/fully_differentiable_state_error_function.h +54 -0
  119. include/momentum/diff_ik/fwd.h +385 -0
  120. include/momentum/diff_ik/union_error_function.h +67 -0
  121. include/momentum/gui/rerun/eigen_adapters.h +70 -0
  122. include/momentum/gui/rerun/logger.h +102 -0
  123. include/momentum/gui/rerun/logging_redirect.h +27 -0
  124. include/momentum/io/character_io.h +56 -0
  125. include/momentum/io/common/gsl_utils.h +50 -0
  126. include/momentum/io/common/stream_utils.h +65 -0
  127. include/momentum/io/fbx/fbx_io.h +109 -0
  128. include/momentum/io/fbx/fbx_memory_stream.h +66 -0
  129. include/momentum/io/fbx/openfbx_loader.h +49 -0
  130. include/momentum/io/fbx/polygon_data.h +60 -0
  131. include/momentum/io/gltf/gltf_builder.h +132 -0
  132. include/momentum/io/gltf/gltf_file_format.h +19 -0
  133. include/momentum/io/gltf/gltf_io.h +148 -0
  134. include/momentum/io/gltf/utils/accessor_utils.h +299 -0
  135. include/momentum/io/gltf/utils/coordinate_utils.h +60 -0
  136. include/momentum/io/gltf/utils/json_utils.h +102 -0
  137. include/momentum/io/legacy_json/legacy_json_io.h +70 -0
  138. include/momentum/io/marker/c3d_io.h +29 -0
  139. include/momentum/io/marker/conversions.h +57 -0
  140. include/momentum/io/marker/coordinate_system.h +30 -0
  141. include/momentum/io/marker/marker_io.h +54 -0
  142. include/momentum/io/marker/trc_io.h +27 -0
  143. include/momentum/io/motion/mmo_io.h +97 -0
  144. include/momentum/io/shape/blend_shape_io.h +70 -0
  145. include/momentum/io/shape/pose_shape_io.h +21 -0
  146. include/momentum/io/skeleton/locator_io.h +41 -0
  147. include/momentum/io/skeleton/mppca_io.h +26 -0
  148. include/momentum/io/skeleton/parameter_limits_io.h +25 -0
  149. include/momentum/io/skeleton/parameter_transform_io.h +41 -0
  150. include/momentum/io/skeleton/parameters_io.h +20 -0
  151. include/momentum/io/urdf/urdf_io.h +26 -0
  152. include/momentum/io/usd/usd_io.h +36 -0
  153. include/momentum/marker_tracking/app_utils.h +62 -0
  154. include/momentum/marker_tracking/marker_tracker.h +213 -0
  155. include/momentum/marker_tracking/process_markers.h +58 -0
  156. include/momentum/marker_tracking/tracker_utils.h +90 -0
  157. include/momentum/math/constants.h +82 -0
  158. include/momentum/math/covariance_matrix.h +84 -0
  159. include/momentum/math/fmt_eigen.h +23 -0
  160. include/momentum/math/fwd.h +132 -0
  161. include/momentum/math/generalized_loss.h +61 -0
  162. include/momentum/math/intersection.h +32 -0
  163. include/momentum/math/mesh.h +84 -0
  164. include/momentum/math/mppca.h +67 -0
  165. include/momentum/math/online_householder_qr.h +516 -0
  166. include/momentum/math/random-inl.h +404 -0
  167. include/momentum/math/random.h +310 -0
  168. include/momentum/math/simd_generalized_loss.h +40 -0
  169. include/momentum/math/transform.h +229 -0
  170. include/momentum/math/types.h +461 -0
  171. include/momentum/math/utility.h +251 -0
  172. include/momentum/rasterizer/camera.h +453 -0
  173. include/momentum/rasterizer/fwd.h +102 -0
  174. include/momentum/rasterizer/geometry.h +83 -0
  175. include/momentum/rasterizer/image.h +18 -0
  176. include/momentum/rasterizer/rasterizer.h +583 -0
  177. include/momentum/rasterizer/tensor.h +140 -0
  178. include/momentum/rasterizer/utility.h +268 -0
  179. include/momentum/simd/simd.h +221 -0
  180. include/momentum/solver/fwd.h +131 -0
  181. include/momentum/solver/gauss_newton_solver.h +136 -0
  182. include/momentum/solver/gradient_descent_solver.h +65 -0
  183. include/momentum/solver/solver.h +155 -0
  184. include/momentum/solver/solver_function.h +126 -0
  185. include/momentum/solver/subset_gauss_newton_solver.h +109 -0
  186. include/rerun/archetypes/annotation_context.hpp +157 -0
  187. include/rerun/archetypes/arrows2d.hpp +271 -0
  188. include/rerun/archetypes/arrows3d.hpp +257 -0
  189. include/rerun/archetypes/asset3d.hpp +262 -0
  190. include/rerun/archetypes/asset_video.hpp +275 -0
  191. include/rerun/archetypes/bar_chart.hpp +261 -0
  192. include/rerun/archetypes/boxes2d.hpp +293 -0
  193. include/rerun/archetypes/boxes3d.hpp +369 -0
  194. include/rerun/archetypes/capsules3d.hpp +333 -0
  195. include/rerun/archetypes/clear.hpp +180 -0
  196. include/rerun/archetypes/depth_image.hpp +425 -0
  197. include/rerun/archetypes/ellipsoids3d.hpp +384 -0
  198. include/rerun/archetypes/encoded_image.hpp +250 -0
  199. include/rerun/archetypes/geo_line_strings.hpp +166 -0
  200. include/rerun/archetypes/geo_points.hpp +177 -0
  201. include/rerun/archetypes/graph_edges.hpp +152 -0
  202. include/rerun/archetypes/graph_nodes.hpp +206 -0
  203. include/rerun/archetypes/image.hpp +434 -0
  204. include/rerun/archetypes/instance_poses3d.hpp +221 -0
  205. include/rerun/archetypes/line_strips2d.hpp +289 -0
  206. include/rerun/archetypes/line_strips3d.hpp +270 -0
  207. include/rerun/archetypes/mesh3d.hpp +387 -0
  208. include/rerun/archetypes/pinhole.hpp +385 -0
  209. include/rerun/archetypes/points2d.hpp +333 -0
  210. include/rerun/archetypes/points3d.hpp +369 -0
  211. include/rerun/archetypes/recording_properties.hpp +132 -0
  212. include/rerun/archetypes/scalar.hpp +170 -0
  213. include/rerun/archetypes/scalars.hpp +153 -0
  214. include/rerun/archetypes/segmentation_image.hpp +305 -0
  215. include/rerun/archetypes/series_line.hpp +274 -0
  216. include/rerun/archetypes/series_lines.hpp +271 -0
  217. include/rerun/archetypes/series_point.hpp +265 -0
  218. include/rerun/archetypes/series_points.hpp +251 -0
  219. include/rerun/archetypes/tensor.hpp +213 -0
  220. include/rerun/archetypes/text_document.hpp +200 -0
  221. include/rerun/archetypes/text_log.hpp +211 -0
  222. include/rerun/archetypes/transform3d.hpp +925 -0
  223. include/rerun/archetypes/video_frame_reference.hpp +295 -0
  224. include/rerun/archetypes/view_coordinates.hpp +393 -0
  225. include/rerun/archetypes.hpp +43 -0
  226. include/rerun/arrow_utils.hpp +32 -0
  227. include/rerun/as_components.hpp +90 -0
  228. include/rerun/blueprint/archetypes/background.hpp +113 -0
  229. include/rerun/blueprint/archetypes/container_blueprint.hpp +259 -0
  230. include/rerun/blueprint/archetypes/dataframe_query.hpp +178 -0
  231. include/rerun/blueprint/archetypes/entity_behavior.hpp +130 -0
  232. include/rerun/blueprint/archetypes/force_center.hpp +115 -0
  233. include/rerun/blueprint/archetypes/force_collision_radius.hpp +141 -0
  234. include/rerun/blueprint/archetypes/force_link.hpp +136 -0
  235. include/rerun/blueprint/archetypes/force_many_body.hpp +124 -0
  236. include/rerun/blueprint/archetypes/force_position.hpp +132 -0
  237. include/rerun/blueprint/archetypes/line_grid3d.hpp +178 -0
  238. include/rerun/blueprint/archetypes/map_background.hpp +104 -0
  239. include/rerun/blueprint/archetypes/map_zoom.hpp +103 -0
  240. include/rerun/blueprint/archetypes/near_clip_plane.hpp +109 -0
  241. include/rerun/blueprint/archetypes/panel_blueprint.hpp +95 -0
  242. include/rerun/blueprint/archetypes/plot_legend.hpp +118 -0
  243. include/rerun/blueprint/archetypes/scalar_axis.hpp +116 -0
  244. include/rerun/blueprint/archetypes/tensor_scalar_mapping.hpp +146 -0
  245. include/rerun/blueprint/archetypes/tensor_slice_selection.hpp +167 -0
  246. include/rerun/blueprint/archetypes/tensor_view_fit.hpp +95 -0
  247. include/rerun/blueprint/archetypes/view_blueprint.hpp +170 -0
  248. include/rerun/blueprint/archetypes/view_contents.hpp +142 -0
  249. include/rerun/blueprint/archetypes/viewport_blueprint.hpp +200 -0
  250. include/rerun/blueprint/archetypes/visible_time_ranges.hpp +116 -0
  251. include/rerun/blueprint/archetypes/visual_bounds2d.hpp +109 -0
  252. include/rerun/blueprint/archetypes/visualizer_overrides.hpp +113 -0
  253. include/rerun/blueprint/archetypes.hpp +29 -0
  254. include/rerun/blueprint/components/active_tab.hpp +82 -0
  255. include/rerun/blueprint/components/apply_latest_at.hpp +79 -0
  256. include/rerun/blueprint/components/auto_layout.hpp +77 -0
  257. include/rerun/blueprint/components/auto_views.hpp +77 -0
  258. include/rerun/blueprint/components/background_kind.hpp +66 -0
  259. include/rerun/blueprint/components/column_share.hpp +78 -0
  260. include/rerun/blueprint/components/component_column_selector.hpp +81 -0
  261. include/rerun/blueprint/components/container_kind.hpp +65 -0
  262. include/rerun/blueprint/components/corner2d.hpp +64 -0
  263. include/rerun/blueprint/components/enabled.hpp +77 -0
  264. include/rerun/blueprint/components/filter_by_range.hpp +74 -0
  265. include/rerun/blueprint/components/filter_is_not_null.hpp +77 -0
  266. include/rerun/blueprint/components/force_distance.hpp +82 -0
  267. include/rerun/blueprint/components/force_iterations.hpp +82 -0
  268. include/rerun/blueprint/components/force_strength.hpp +82 -0
  269. include/rerun/blueprint/components/grid_columns.hpp +78 -0
  270. include/rerun/blueprint/components/grid_spacing.hpp +78 -0
  271. include/rerun/blueprint/components/included_content.hpp +86 -0
  272. include/rerun/blueprint/components/lock_range_during_zoom.hpp +82 -0
  273. include/rerun/blueprint/components/map_provider.hpp +64 -0
  274. include/rerun/blueprint/components/near_clip_plane.hpp +82 -0
  275. include/rerun/blueprint/components/panel_state.hpp +61 -0
  276. include/rerun/blueprint/components/query_expression.hpp +89 -0
  277. include/rerun/blueprint/components/root_container.hpp +77 -0
  278. include/rerun/blueprint/components/row_share.hpp +78 -0
  279. include/rerun/blueprint/components/selected_columns.hpp +76 -0
  280. include/rerun/blueprint/components/tensor_dimension_index_slider.hpp +90 -0
  281. include/rerun/blueprint/components/timeline_name.hpp +76 -0
  282. include/rerun/blueprint/components/view_class.hpp +76 -0
  283. include/rerun/blueprint/components/view_fit.hpp +61 -0
  284. include/rerun/blueprint/components/view_maximized.hpp +79 -0
  285. include/rerun/blueprint/components/view_origin.hpp +81 -0
  286. include/rerun/blueprint/components/viewer_recommendation_hash.hpp +82 -0
  287. include/rerun/blueprint/components/visible_time_range.hpp +77 -0
  288. include/rerun/blueprint/components/visual_bounds2d.hpp +74 -0
  289. include/rerun/blueprint/components/visualizer_override.hpp +86 -0
  290. include/rerun/blueprint/components/zoom_level.hpp +78 -0
  291. include/rerun/blueprint/components.hpp +41 -0
  292. include/rerun/blueprint/datatypes/component_column_selector.hpp +61 -0
  293. include/rerun/blueprint/datatypes/filter_by_range.hpp +59 -0
  294. include/rerun/blueprint/datatypes/filter_is_not_null.hpp +61 -0
  295. include/rerun/blueprint/datatypes/selected_columns.hpp +62 -0
  296. include/rerun/blueprint/datatypes/tensor_dimension_index_slider.hpp +63 -0
  297. include/rerun/blueprint/datatypes.hpp +9 -0
  298. include/rerun/c/arrow_c_data_interface.h +111 -0
  299. include/rerun/c/compiler_utils.h +10 -0
  300. include/rerun/c/rerun.h +627 -0
  301. include/rerun/c/sdk_info.h +28 -0
  302. include/rerun/collection.hpp +496 -0
  303. include/rerun/collection_adapter.hpp +43 -0
  304. include/rerun/collection_adapter_builtins.hpp +138 -0
  305. include/rerun/compiler_utils.hpp +61 -0
  306. include/rerun/component_batch.hpp +163 -0
  307. include/rerun/component_column.hpp +111 -0
  308. include/rerun/component_descriptor.hpp +142 -0
  309. include/rerun/component_type.hpp +35 -0
  310. include/rerun/components/aggregation_policy.hpp +76 -0
  311. include/rerun/components/albedo_factor.hpp +74 -0
  312. include/rerun/components/annotation_context.hpp +102 -0
  313. include/rerun/components/axis_length.hpp +74 -0
  314. include/rerun/components/blob.hpp +73 -0
  315. include/rerun/components/class_id.hpp +71 -0
  316. include/rerun/components/clear_is_recursive.hpp +75 -0
  317. include/rerun/components/color.hpp +99 -0
  318. include/rerun/components/colormap.hpp +99 -0
  319. include/rerun/components/depth_meter.hpp +84 -0
  320. include/rerun/components/draw_order.hpp +79 -0
  321. include/rerun/components/entity_path.hpp +83 -0
  322. include/rerun/components/fill_mode.hpp +72 -0
  323. include/rerun/components/fill_ratio.hpp +79 -0
  324. include/rerun/components/gamma_correction.hpp +80 -0
  325. include/rerun/components/geo_line_string.hpp +63 -0
  326. include/rerun/components/graph_edge.hpp +75 -0
  327. include/rerun/components/graph_node.hpp +79 -0
  328. include/rerun/components/graph_type.hpp +57 -0
  329. include/rerun/components/half_size2d.hpp +91 -0
  330. include/rerun/components/half_size3d.hpp +95 -0
  331. include/rerun/components/image_buffer.hpp +86 -0
  332. include/rerun/components/image_format.hpp +84 -0
  333. include/rerun/components/image_plane_distance.hpp +77 -0
  334. include/rerun/components/interactive.hpp +76 -0
  335. include/rerun/components/keypoint_id.hpp +74 -0
  336. include/rerun/components/lat_lon.hpp +89 -0
  337. include/rerun/components/length.hpp +77 -0
  338. include/rerun/components/line_strip2d.hpp +73 -0
  339. include/rerun/components/line_strip3d.hpp +73 -0
  340. include/rerun/components/magnification_filter.hpp +63 -0
  341. include/rerun/components/marker_shape.hpp +82 -0
  342. include/rerun/components/marker_size.hpp +74 -0
  343. include/rerun/components/media_type.hpp +157 -0
  344. include/rerun/components/name.hpp +83 -0
  345. include/rerun/components/opacity.hpp +77 -0
  346. include/rerun/components/pinhole_projection.hpp +94 -0
  347. include/rerun/components/plane3d.hpp +75 -0
  348. include/rerun/components/pose_rotation_axis_angle.hpp +73 -0
  349. include/rerun/components/pose_rotation_quat.hpp +71 -0
  350. include/rerun/components/pose_scale3d.hpp +102 -0
  351. include/rerun/components/pose_transform_mat3x3.hpp +87 -0
  352. include/rerun/components/pose_translation3d.hpp +96 -0
  353. include/rerun/components/position2d.hpp +86 -0
  354. include/rerun/components/position3d.hpp +90 -0
  355. include/rerun/components/radius.hpp +98 -0
  356. include/rerun/components/range1d.hpp +75 -0
  357. include/rerun/components/resolution.hpp +88 -0
  358. include/rerun/components/rotation_axis_angle.hpp +72 -0
  359. include/rerun/components/rotation_quat.hpp +71 -0
  360. include/rerun/components/scalar.hpp +76 -0
  361. include/rerun/components/scale3d.hpp +102 -0
  362. include/rerun/components/series_visible.hpp +76 -0
  363. include/rerun/components/show_labels.hpp +79 -0
  364. include/rerun/components/stroke_width.hpp +74 -0
  365. include/rerun/components/tensor_data.hpp +94 -0
  366. include/rerun/components/tensor_dimension_index_selection.hpp +77 -0
  367. include/rerun/components/tensor_height_dimension.hpp +71 -0
  368. include/rerun/components/tensor_width_dimension.hpp +71 -0
  369. include/rerun/components/texcoord2d.hpp +101 -0
  370. include/rerun/components/text.hpp +83 -0
  371. include/rerun/components/text_log_level.hpp +110 -0
  372. include/rerun/components/timestamp.hpp +76 -0
  373. include/rerun/components/transform_mat3x3.hpp +92 -0
  374. include/rerun/components/transform_relation.hpp +66 -0
  375. include/rerun/components/translation3d.hpp +96 -0
  376. include/rerun/components/triangle_indices.hpp +85 -0
  377. include/rerun/components/value_range.hpp +78 -0
  378. include/rerun/components/vector2d.hpp +92 -0
  379. include/rerun/components/vector3d.hpp +96 -0
  380. include/rerun/components/video_timestamp.hpp +120 -0
  381. include/rerun/components/view_coordinates.hpp +346 -0
  382. include/rerun/components/visible.hpp +74 -0
  383. include/rerun/components.hpp +77 -0
  384. include/rerun/config.hpp +52 -0
  385. include/rerun/datatypes/angle.hpp +76 -0
  386. include/rerun/datatypes/annotation_info.hpp +76 -0
  387. include/rerun/datatypes/blob.hpp +67 -0
  388. include/rerun/datatypes/bool.hpp +57 -0
  389. include/rerun/datatypes/channel_datatype.hpp +87 -0
  390. include/rerun/datatypes/class_description.hpp +92 -0
  391. include/rerun/datatypes/class_description_map_elem.hpp +69 -0
  392. include/rerun/datatypes/class_id.hpp +62 -0
  393. include/rerun/datatypes/color_model.hpp +68 -0
  394. include/rerun/datatypes/dvec2d.hpp +76 -0
  395. include/rerun/datatypes/entity_path.hpp +60 -0
  396. include/rerun/datatypes/float32.hpp +62 -0
  397. include/rerun/datatypes/float64.hpp +62 -0
  398. include/rerun/datatypes/image_format.hpp +107 -0
  399. include/rerun/datatypes/keypoint_id.hpp +63 -0
  400. include/rerun/datatypes/keypoint_pair.hpp +65 -0
  401. include/rerun/datatypes/mat3x3.hpp +105 -0
  402. include/rerun/datatypes/mat4x4.hpp +119 -0
  403. include/rerun/datatypes/pixel_format.hpp +142 -0
  404. include/rerun/datatypes/plane3d.hpp +60 -0
  405. include/rerun/datatypes/quaternion.hpp +110 -0
  406. include/rerun/datatypes/range1d.hpp +59 -0
  407. include/rerun/datatypes/range2d.hpp +55 -0
  408. include/rerun/datatypes/rgba32.hpp +94 -0
  409. include/rerun/datatypes/rotation_axis_angle.hpp +67 -0
  410. include/rerun/datatypes/tensor_buffer.hpp +529 -0
  411. include/rerun/datatypes/tensor_data.hpp +100 -0
  412. include/rerun/datatypes/tensor_dimension_index_selection.hpp +58 -0
  413. include/rerun/datatypes/tensor_dimension_selection.hpp +56 -0
  414. include/rerun/datatypes/time_int.hpp +62 -0
  415. include/rerun/datatypes/time_range.hpp +55 -0
  416. include/rerun/datatypes/time_range_boundary.hpp +175 -0
  417. include/rerun/datatypes/uint16.hpp +62 -0
  418. include/rerun/datatypes/uint32.hpp +62 -0
  419. include/rerun/datatypes/uint64.hpp +62 -0
  420. include/rerun/datatypes/utf8.hpp +76 -0
  421. include/rerun/datatypes/utf8pair.hpp +62 -0
  422. include/rerun/datatypes/uuid.hpp +60 -0
  423. include/rerun/datatypes/uvec2d.hpp +76 -0
  424. include/rerun/datatypes/uvec3d.hpp +80 -0
  425. include/rerun/datatypes/uvec4d.hpp +59 -0
  426. include/rerun/datatypes/vec2d.hpp +76 -0
  427. include/rerun/datatypes/vec3d.hpp +80 -0
  428. include/rerun/datatypes/vec4d.hpp +84 -0
  429. include/rerun/datatypes/video_timestamp.hpp +67 -0
  430. include/rerun/datatypes/view_coordinates.hpp +87 -0
  431. include/rerun/datatypes/visible_time_range.hpp +57 -0
  432. include/rerun/datatypes.hpp +51 -0
  433. include/rerun/demo_utils.hpp +75 -0
  434. include/rerun/entity_path.hpp +20 -0
  435. include/rerun/error.hpp +180 -0
  436. include/rerun/half.hpp +10 -0
  437. include/rerun/image_utils.hpp +187 -0
  438. include/rerun/indicator_component.hpp +59 -0
  439. include/rerun/loggable.hpp +54 -0
  440. include/rerun/recording_stream.hpp +960 -0
  441. include/rerun/rerun_sdk_export.hpp +25 -0
  442. include/rerun/result.hpp +86 -0
  443. include/rerun/rotation3d.hpp +33 -0
  444. include/rerun/sdk_info.hpp +20 -0
  445. include/rerun/spawn.hpp +21 -0
  446. include/rerun/spawn_options.hpp +57 -0
  447. include/rerun/string_utils.hpp +16 -0
  448. include/rerun/third_party/cxxopts.hpp +2198 -0
  449. include/rerun/time_column.hpp +288 -0
  450. include/rerun/timeline.hpp +38 -0
  451. include/rerun/type_traits.hpp +40 -0
  452. include/rerun.hpp +86 -0
  453. lib/cmake/rerun_sdk/rerun_sdkConfig.cmake +70 -0
  454. lib/cmake/rerun_sdk/rerun_sdkConfigVersion.cmake +83 -0
  455. lib/cmake/rerun_sdk/rerun_sdkTargets-release.cmake +19 -0
  456. lib/cmake/rerun_sdk/rerun_sdkTargets.cmake +108 -0
  457. lib/libarrow.a +0 -0
  458. lib/libarrow_bundled_dependencies.a +0 -0
  459. lib/librerun_c__linux_x64.a +0 -0
  460. lib/librerun_sdk.a +0 -0
  461. lib64/cmake/axel/axel-config.cmake +45 -0
  462. lib64/cmake/axel/axelTargets-release.cmake +19 -0
  463. lib64/cmake/axel/axelTargets.cmake +108 -0
  464. lib64/cmake/momentum/Findre2.cmake +52 -0
  465. lib64/cmake/momentum/momentum-config.cmake +67 -0
  466. lib64/cmake/momentum/momentumTargets-release.cmake +259 -0
  467. lib64/cmake/momentum/momentumTargets.cmake +377 -0
  468. lib64/libaxel.a +0 -0
  469. lib64/libmomentum_app_utils.a +0 -0
  470. lib64/libmomentum_character.a +0 -0
  471. lib64/libmomentum_character_sequence_solver.a +0 -0
  472. lib64/libmomentum_character_solver.a +0 -0
  473. lib64/libmomentum_common.a +0 -0
  474. lib64/libmomentum_diff_ik.a +0 -0
  475. lib64/libmomentum_io.a +0 -0
  476. lib64/libmomentum_io_common.a +0 -0
  477. lib64/libmomentum_io_fbx.a +0 -0
  478. lib64/libmomentum_io_gltf.a +0 -0
  479. lib64/libmomentum_io_legacy_json.a +0 -0
  480. lib64/libmomentum_io_marker.a +0 -0
  481. lib64/libmomentum_io_motion.a +0 -0
  482. lib64/libmomentum_io_shape.a +0 -0
  483. lib64/libmomentum_io_skeleton.a +0 -0
  484. lib64/libmomentum_io_urdf.a +0 -0
  485. lib64/libmomentum_marker_tracker.a +0 -0
  486. lib64/libmomentum_math.a +0 -0
  487. lib64/libmomentum_online_qr.a +0 -0
  488. lib64/libmomentum_process_markers.a +0 -0
  489. lib64/libmomentum_rerun.a +0 -0
  490. lib64/libmomentum_simd_constraints.a +0 -0
  491. lib64/libmomentum_simd_generalized_loss.a +0 -0
  492. lib64/libmomentum_skeleton.a +0 -0
  493. lib64/libmomentum_solver.a +0 -0
  494. pymomentum/axel.cpython-313-x86_64-linux-gnu.so +0 -0
  495. pymomentum/backend/__init__.py +16 -0
  496. pymomentum/backend/skel_state_backend.py +614 -0
  497. pymomentum/backend/trs_backend.py +871 -0
  498. pymomentum/backend/utils.py +224 -0
  499. pymomentum/geometry.cpython-313-x86_64-linux-gnu.so +0 -0
  500. pymomentum/marker_tracking.cpython-313-x86_64-linux-gnu.so +0 -0
  501. pymomentum/quaternion.py +740 -0
  502. pymomentum/skel_state.py +514 -0
  503. pymomentum/solver.cpython-313-x86_64-linux-gnu.so +0 -0
  504. pymomentum/solver2.cpython-313-x86_64-linux-gnu.so +0 -0
  505. pymomentum/torch/character.py +809 -0
  506. pymomentum/torch/parameter_limits.py +494 -0
  507. pymomentum/torch/utility.py +20 -0
  508. pymomentum/trs.py +535 -0
  509. pymomentum_cpu-0.1.77.post30.dist-info/METADATA +208 -0
  510. pymomentum_cpu-0.1.77.post30.dist-info/RECORD +555 -0
  511. pymomentum_cpu-0.1.77.post30.dist-info/WHEEL +5 -0
  512. pymomentum_cpu-0.1.77.post30.dist-info/licenses/LICENSE +21 -0
  513. pymomentum_cpu.libs/libabsl_base-86f3b38c.so.2505.0.0 +0 -0
  514. pymomentum_cpu.libs/libabsl_city-31b65ca2.so.2505.0.0 +0 -0
  515. pymomentum_cpu.libs/libabsl_debugging_internal-38680253.so.2505.0.0 +0 -0
  516. pymomentum_cpu.libs/libabsl_decode_rust_punycode-750652c3.so.2505.0.0 +0 -0
  517. pymomentum_cpu.libs/libabsl_demangle_internal-9a0351a3.so.2505.0.0 +0 -0
  518. pymomentum_cpu.libs/libabsl_demangle_rust-71629506.so.2505.0.0 +0 -0
  519. pymomentum_cpu.libs/libabsl_examine_stack-57661ecd.so.2505.0.0 +0 -0
  520. pymomentum_cpu.libs/libabsl_hash-8c523b7e.so.2505.0.0 +0 -0
  521. pymomentum_cpu.libs/libabsl_hashtablez_sampler-b5c3e343.so.2505.0.0 +0 -0
  522. pymomentum_cpu.libs/libabsl_int128-295bfed5.so.2505.0.0 +0 -0
  523. pymomentum_cpu.libs/libabsl_kernel_timeout_internal-29296ac1.so.2505.0.0 +0 -0
  524. pymomentum_cpu.libs/libabsl_log_globals-6cfa8af5.so.2505.0.0 +0 -0
  525. pymomentum_cpu.libs/libabsl_log_internal_format-a5c79460.so.2505.0.0 +0 -0
  526. pymomentum_cpu.libs/libabsl_log_internal_globals-481e9a7c.so.2505.0.0 +0 -0
  527. pymomentum_cpu.libs/libabsl_log_internal_log_sink_set-ac08f942.so.2505.0.0 +0 -0
  528. pymomentum_cpu.libs/libabsl_log_internal_message-7dfe150a.so.2505.0.0 +0 -0
  529. pymomentum_cpu.libs/libabsl_log_internal_nullguard-883adc72.so.2505.0.0 +0 -0
  530. pymomentum_cpu.libs/libabsl_log_internal_proto-a5da8c75.so.2505.0.0 +0 -0
  531. pymomentum_cpu.libs/libabsl_log_internal_structured_proto-e601fd9b.so.2505.0.0 +0 -0
  532. pymomentum_cpu.libs/libabsl_log_sink-894261b2.so.2505.0.0 +0 -0
  533. pymomentum_cpu.libs/libabsl_low_level_hash-a3284638.so.2505.0.0 +0 -0
  534. pymomentum_cpu.libs/libabsl_malloc_internal-814569de.so.2505.0.0 +0 -0
  535. pymomentum_cpu.libs/libabsl_raw_hash_set-922d64ad.so.2505.0.0 +0 -0
  536. pymomentum_cpu.libs/libabsl_raw_logging_internal-477f78ec.so.2505.0.0 +0 -0
  537. pymomentum_cpu.libs/libabsl_spinlock_wait-8b85a473.so.2505.0.0 +0 -0
  538. pymomentum_cpu.libs/libabsl_stacktrace-7369e71d.so.2505.0.0 +0 -0
  539. pymomentum_cpu.libs/libabsl_str_format_internal-98de729d.so.2505.0.0 +0 -0
  540. pymomentum_cpu.libs/libabsl_strerror-39a52998.so.2505.0.0 +0 -0
  541. pymomentum_cpu.libs/libabsl_strings-a57d5127.so.2505.0.0 +0 -0
  542. pymomentum_cpu.libs/libabsl_strings_internal-ed8c7c0d.so.2505.0.0 +0 -0
  543. pymomentum_cpu.libs/libabsl_symbolize-eba17dd1.so.2505.0.0 +0 -0
  544. pymomentum_cpu.libs/libabsl_synchronization-2f8cf326.so.2505.0.0 +0 -0
  545. pymomentum_cpu.libs/libabsl_time-066c0dde.so.2505.0.0 +0 -0
  546. pymomentum_cpu.libs/libabsl_time_zone-72867365.so.2505.0.0 +0 -0
  547. pymomentum_cpu.libs/libabsl_tracing_internal-021e37ee.so.2505.0.0 +0 -0
  548. pymomentum_cpu.libs/libabsl_utf8_for_code_point-de2a4d4a.so.2505.0.0 +0 -0
  549. pymomentum_cpu.libs/libconsole_bridge-f26e11cc.so.1.0 +0 -0
  550. pymomentum_cpu.libs/libdeflate-577b71e3.so.0 +0 -0
  551. pymomentum_cpu.libs/libdispenso-67ac1721.so.1.4.0 +0 -0
  552. pymomentum_cpu.libs/libezc3d-4a95ab2c.so +0 -0
  553. pymomentum_cpu.libs/libre2-985fb83c.so.11 +0 -0
  554. pymomentum_cpu.libs/libtinyxml2-8d10763c.so.11.0.0 +0 -0
  555. pymomentum_cpu.libs/liburdfdom_model-7b26ae88.so.4.0 +0 -0
@@ -0,0 +1,114 @@
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_solver/skeleton_error_function.h>
11
+ #include <momentum/diff_ik/fully_differentiable_skeleton_error_function.h>
12
+ #include <momentum/diff_ik/fwd.h>
13
+
14
+ #include <vector>
15
+
16
+ namespace momentum {
17
+
18
+ template <typename T>
19
+ struct OrientationConstraintT {
20
+ Quaternion<T> offset; ///< Constraint rotation offset in local joint space
21
+ Quaternion<T> target; ///< Target orientation in global space
22
+ size_t parent; ///< Parent joint index this constraint is under
23
+ float weight; ///< Weight of the constraint
24
+ std::string name; ///< Name of the constraint
25
+
26
+ explicit OrientationConstraintT(
27
+ const Quaternion<T>& offset,
28
+ const Quaternion<T>& target,
29
+ size_t parent,
30
+ float w,
31
+ const std::string& n = "")
32
+ : offset(offset), target(target), parent(parent), weight(w), name(n) {
33
+ // Empty
34
+ }
35
+ };
36
+
37
+ template <typename T>
38
+ class FullyDifferentiableOrientationErrorFunctionT
39
+ : public FullyDifferentiableSkeletonErrorFunctionT<T>,
40
+ public SkeletonErrorFunctionT<T> {
41
+ public:
42
+ static constexpr T kOrientationWeight = 1e-1f;
43
+ static constexpr const char* kParents = "parents";
44
+ static constexpr const char* kOffsets = "offsets";
45
+ static constexpr const char* kWeights = "weights";
46
+ static constexpr const char* kTargets = "targets";
47
+
48
+ FullyDifferentiableOrientationErrorFunctionT(const Skeleton& skel, const ParameterTransform& pt);
49
+ ~FullyDifferentiableOrientationErrorFunctionT() override = default;
50
+
51
+ [[nodiscard]] std::vector<std::string> inputs() const final;
52
+ [[nodiscard]] Eigen::Index getInputSize(const std::string& name) const final;
53
+ [[nodiscard]] const char* name() const final {
54
+ return "OrientationErrorFunction";
55
+ }
56
+
57
+ Eigen::VectorX<T> d_gradient_d_input_dot(
58
+ const std::string& inputName,
59
+ const ModelParametersT<T>& params,
60
+ const SkeletonStateT<T>& state,
61
+ Eigen::Ref<const Eigen::VectorX<T>> inputVec) final;
62
+
63
+ double getError(
64
+ const ModelParametersT<T>& params,
65
+ const SkeletonStateT<T>& state,
66
+ const MeshStateT<T>& /* meshState */) final;
67
+
68
+ double getGradient(
69
+ const ModelParametersT<T>& params,
70
+ const SkeletonStateT<T>& state,
71
+ const MeshStateT<T>& /* meshState */,
72
+ Ref<Eigen::VectorX<T>> gradient) final;
73
+
74
+ double getJacobian(
75
+ const ModelParametersT<T>& params,
76
+ const SkeletonStateT<T>& state,
77
+ const MeshStateT<T>& /* meshState */,
78
+ Ref<Eigen::MatrixX<T>> jacobian,
79
+ Ref<Eigen::VectorX<T>> residual,
80
+ int& usedRows) final;
81
+
82
+ [[nodiscard]] size_t getJacobianSize() const final;
83
+
84
+ void addConstraint(const OrientationConstraintT<T>& constr);
85
+
86
+ private:
87
+ void getInputImp(const std::string& name, Eigen::Ref<Eigen::VectorX<T>> value) const final;
88
+ void setInputImp(const std::string& name, Eigen::Ref<const Eigen::VectorX<T>> value) final;
89
+
90
+ T calculateOrientationGradient(
91
+ const SkeletonStateT<T>& state,
92
+ const OrientationConstraintT<T>& constr,
93
+ Eigen::VectorX<T>& jGrad) const;
94
+
95
+ template <typename JetType>
96
+ JetType calculateOrientationGradient_dot(
97
+ const SkeletonStateT<T>& state,
98
+ size_t constrParent,
99
+ const JetType& constrWeight,
100
+ const Eigen::Quaternion<JetType>& constrOrientationOffset,
101
+ const Eigen::Quaternion<JetType>& constrOrientationTarget,
102
+ Eigen::Ref<const Eigen::VectorX<T>> vec) const;
103
+
104
+ [[nodiscard]] T calculateOrientationJacobian(
105
+ const SkeletonStateT<T>& state,
106
+ const OrientationConstraintT<T>& constr,
107
+ Ref<Eigen::MatrixX<T>> jac,
108
+ Ref<Eigen::VectorX<T>> res) const;
109
+
110
+ std::vector<OrientationConstraintT<T>> constraints_;
111
+ Eigen::VectorX<T> jointGrad_;
112
+ };
113
+
114
+ } // namespace momentum
@@ -0,0 +1,76 @@
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_solver/pose_prior_error_function.h>
11
+ #include <momentum/character_solver/skeleton_error_function.h>
12
+ #include <momentum/diff_ik/fully_differentiable_skeleton_error_function.h>
13
+ #include <momentum/diff_ik/fwd.h>
14
+
15
+ #include <Eigen/Core>
16
+
17
+ namespace momentum {
18
+
19
+ template <typename T>
20
+ class FullyDifferentiablePosePriorErrorFunctionT
21
+ : public FullyDifferentiableSkeletonErrorFunctionT<T>,
22
+ public PosePriorErrorFunctionT<T> {
23
+ public:
24
+ FullyDifferentiablePosePriorErrorFunctionT(
25
+ const Skeleton& skel,
26
+ const ParameterTransform& pt,
27
+ std::vector<std::string> names);
28
+ ~FullyDifferentiablePosePriorErrorFunctionT() override;
29
+
30
+ void setPosePrior(
31
+ const VectorX<T>& pi,
32
+ const MatrixX<T>& mmu,
33
+ const std::vector<MatrixX<T>>& W,
34
+ const VectorX<T>& sigma);
35
+
36
+ static constexpr const char* kPi = "pi";
37
+ static constexpr const char* kMu = "mu";
38
+ static constexpr const char* kW = "W";
39
+ static constexpr const char* kSigma = "sigma";
40
+ static constexpr const char* kParameterIndices = "parameter_indices";
41
+
42
+ [[nodiscard]] std::vector<std::string> inputs() const final;
43
+ [[nodiscard]] Eigen::Index getInputSize(const std::string& name) const final;
44
+ [[nodiscard]] const char* name() const final {
45
+ return "MarkerErrorFunction";
46
+ }
47
+
48
+ Eigen::VectorX<T> d_gradient_d_input_dot(
49
+ const std::string& inputName,
50
+ const ModelParametersT<T>& params,
51
+ const SkeletonStateT<T>& state,
52
+ Eigen::Ref<const Eigen::VectorX<T>> inputVec) final;
53
+
54
+ protected:
55
+ void getInputImp(const std::string& name, Eigen::Ref<Eigen::VectorX<T>> value) const final;
56
+ void setInputImp(const std::string& name, Eigen::Ref<const Eigen::VectorX<T>> value) final;
57
+
58
+ // pi_ are the mixture weights
59
+ Eigen::VectorX<T> pi_;
60
+
61
+ // The columns of mu are the means for the different mixtures
62
+ Eigen::MatrixX<T> mmu_;
63
+
64
+ // Each matrix W is the basis for a mixture:
65
+ std::vector<Eigen::MatrixX<T>> W_;
66
+
67
+ // The covariance matrix is (sigma^2 * I + W^T * W)^{-1}
68
+ // Note that this is sigma, not sigma squared, because the scaling should
69
+ // be more reasonable (sigma is the same order of magnitude as the mu and
70
+ // W arrays).
71
+ Eigen::VectorX<T> sigma_;
72
+
73
+ const std::vector<std::string> names_;
74
+ };
75
+
76
+ } // namespace momentum
@@ -0,0 +1,138 @@
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_solver/skeleton_error_function.h>
11
+ #include <momentum/diff_ik/fully_differentiable_skeleton_error_function.h>
12
+ #include <momentum/diff_ik/fwd.h>
13
+
14
+ #include <vector>
15
+
16
+ namespace momentum {
17
+
18
+ template <typename T>
19
+ struct PositionConstraintT {
20
+ Vector3<T> offset; ///< Positional offset in the parent joint space
21
+ Vector3<T> target; ///< Target position
22
+ size_t parent; ///< Parent joint index this constraint is under
23
+ float weight; ///< Weight of the constraint
24
+ std::string name; ///< Name of the constraint
25
+
26
+ explicit PositionConstraintT(
27
+ const Vector3<T>& offset,
28
+ const Vector3<T>& target,
29
+ size_t parent,
30
+ float w,
31
+ const std::string& n = "")
32
+ : offset(offset), target(target), parent(parent), weight(w), name(n) {
33
+ // Empty
34
+ }
35
+ };
36
+
37
+ template <typename T>
38
+ struct PositionConstraintStateT {
39
+ std::vector<Eigen::Vector3<T>>
40
+ position; // the current position of all locators according to a given skeleton state
41
+
42
+ PositionConstraintStateT() = default;
43
+
44
+ PositionConstraintStateT(
45
+ const SkeletonStateT<T>& skeletonState,
46
+ const std::vector<PositionConstraintT<T>>& referenceConstraints) {
47
+ update(skeletonState, referenceConstraints);
48
+ }
49
+
50
+ void update(
51
+ const SkeletonStateT<T>& skeletonState,
52
+ const std::vector<PositionConstraintT<T>>& referenceConstraints);
53
+ };
54
+
55
+ template <typename T>
56
+ class FullyDifferentiablePositionErrorFunctionT
57
+ : public FullyDifferentiableSkeletonErrorFunctionT<T>,
58
+ public SkeletonErrorFunctionT<T> {
59
+ public:
60
+ static constexpr T kPositionWeight = 1e-4f;
61
+ static constexpr const char* kParents = "parents";
62
+ static constexpr const char* kOffsets = "offsets";
63
+ static constexpr const char* kWeights = "weights";
64
+ static constexpr const char* kTargets = "targets";
65
+
66
+ FullyDifferentiablePositionErrorFunctionT(const Skeleton& skel, const ParameterTransform& pt);
67
+ ~FullyDifferentiablePositionErrorFunctionT() override = default;
68
+
69
+ [[nodiscard]] std::vector<std::string> inputs() const final;
70
+ [[nodiscard]] Eigen::Index getInputSize(const std::string& name) const final;
71
+ [[nodiscard]] const char* name() const final {
72
+ return "PositionErrorFunction";
73
+ }
74
+
75
+ Eigen::VectorX<T> d_gradient_d_input_dot(
76
+ const std::string& inputName,
77
+ const ModelParametersT<T>& params,
78
+ const SkeletonStateT<T>& state,
79
+ Eigen::Ref<const Eigen::VectorX<T>> inputVec) final;
80
+
81
+ double getError(
82
+ const ModelParametersT<T>& params,
83
+ const SkeletonStateT<T>& state,
84
+ const MeshStateT<T>& /* meshState */) final;
85
+
86
+ double getGradient(
87
+ const ModelParametersT<T>& params,
88
+ const SkeletonStateT<T>& state,
89
+ const MeshStateT<T>& /* meshState */,
90
+ Ref<Eigen::VectorX<T>> gradient) final;
91
+
92
+ double getJacobian(
93
+ const ModelParametersT<T>& params,
94
+ const SkeletonStateT<T>& state,
95
+ const MeshStateT<T>& /* meshState */,
96
+ Ref<Eigen::MatrixX<T>> jacobian,
97
+ Ref<Eigen::VectorX<T>> residual,
98
+ int& usedRows) final;
99
+
100
+ [[nodiscard]] size_t getJacobianSize() const final;
101
+
102
+ void addConstraint(const PositionConstraintT<T>& constr);
103
+
104
+ [[nodiscard]] const std::vector<PositionConstraintT<T>>& getConstraints() const;
105
+
106
+ private:
107
+ void getInputImp(const std::string& name, Eigen::Ref<Eigen::VectorX<T>> value) const final;
108
+ void setInputImp(const std::string& name, Eigen::Ref<const Eigen::VectorX<T>> value) final;
109
+
110
+ T calculatePositionGradient(
111
+ const SkeletonStateT<T>& state,
112
+ const PositionConstraintT<T>& constr,
113
+ const Eigen::Vector3<T>& pos,
114
+ Eigen::VectorX<T>& jGrad) const;
115
+
116
+ template <typename JetType>
117
+ [[nodiscard]] JetType calculatePositionGradient_dot(
118
+ const SkeletonStateT<T>& state,
119
+ size_t iConstr,
120
+ size_t constrParent,
121
+ const JetType& constrWeight,
122
+ const Eigen::Vector3<JetType>& constr_offset,
123
+ const Eigen::Vector3<JetType>& constr_target,
124
+ Eigen::Ref<const Eigen::VectorX<T>> vec) const;
125
+
126
+ [[nodiscard]] T calculatePositionJacobian(
127
+ const SkeletonStateT<T>& state,
128
+ const PositionConstraintT<T>& constr,
129
+ const Eigen::Vector3<T>& pos,
130
+ Ref<Eigen::MatrixX<T>> jac,
131
+ Ref<Eigen::VectorX<T>> res) const;
132
+
133
+ std::vector<PositionConstraintT<T>> constraints_;
134
+ PositionConstraintStateT<T> constraintsState_;
135
+ Eigen::VectorX<T> jointGrad_;
136
+ };
137
+
138
+ } // 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
+ #include <momentum/character/locator.h>
10
+ #include <momentum/character_solver/projection_error_function.h>
11
+ #include <momentum/character_solver/skeleton_error_function.h>
12
+ #include <momentum/diff_ik/fully_differentiable_skeleton_error_function.h>
13
+ #include <momentum/diff_ik/fwd.h>
14
+
15
+ namespace momentum {
16
+
17
+ MOMENTUM_FWD_DECLARE_TEMPLATE_CLASS(FullyDifferentiableProjectionErrorFunction);
18
+
19
+ template <typename T>
20
+ class FullyDifferentiableProjectionErrorFunctionT
21
+ : public momentum::ProjectionErrorFunctionT<T>,
22
+ public virtual momentum::FullyDifferentiableSkeletonErrorFunctionT<T> {
23
+ public:
24
+ static constexpr const char* kParents = "parents";
25
+ static constexpr const char* kOffsets = "offsets";
26
+ static constexpr const char* kWeights = "weights";
27
+ static constexpr const char* kTargets = "targets";
28
+ static constexpr const char* kProjections = "projections";
29
+
30
+ FullyDifferentiableProjectionErrorFunctionT(
31
+ const momentum::Skeleton& skel,
32
+ const momentum::ParameterTransform& pt,
33
+ T nearClip = T(1));
34
+
35
+ [[nodiscard]] std::vector<std::string> inputs() const override;
36
+ [[nodiscard]] Eigen::Index getInputSize(const std::string& name) const override;
37
+ void getInputImp(const std::string& name, Eigen::Ref<Eigen::VectorX<T>> result) const override;
38
+ void setInputImp(const std::string& name, Eigen::Ref<const Eigen::VectorX<T>> value) override;
39
+ [[nodiscard]] const char* name() const override {
40
+ return "ProjectionErrorFunction";
41
+ }
42
+
43
+ Eigen::VectorX<T> d_gradient_d_input_dot(
44
+ const std::string& inputName,
45
+ const momentum::ModelParametersT<T>& modelParams,
46
+ const momentum::SkeletonStateT<T>& state,
47
+ Eigen::Ref<const Eigen::VectorX<T>> inputVec) override;
48
+
49
+ protected:
50
+ template <typename JetType>
51
+ JetType constraintGradient_dot(
52
+ const momentum::ModelParametersT<T>& modelParams,
53
+ const momentum::SkeletonStateT<T>& skelState,
54
+ int parentJointIndex_cons,
55
+ const Eigen::Vector3<JetType>& offset_cons,
56
+ const JetType& weight_cons,
57
+ const Eigen::Matrix<JetType, 3, 4>& projection_cons,
58
+ const Eigen::Vector2<JetType>& target_cons,
59
+ Eigen::Ref<const Eigen::VectorX<T>> inputVec) const;
60
+
61
+ using momentum::ProjectionErrorFunctionT<T>::_nearClip;
62
+ using momentum::ProjectionErrorFunctionT<T>::kProjectionWeight;
63
+ };
64
+
65
+ } // namespace momentum
@@ -0,0 +1,160 @@
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_solver/skeleton_error_function.h>
11
+ #include <momentum/diff_ik/fwd.h>
12
+
13
+ #include <Eigen/SparseCore>
14
+ #include <vector>
15
+
16
+ namespace momentum {
17
+
18
+ // An error function which can compute the gradients wrt all its inputs.
19
+ // For example, a "normal" position error function can compute the gradient
20
+ // of the error wrt the solved modelParameters. A "FullyDifferentiable"
21
+ // error function also knows how to compute the derivative of the gradient
22
+ // wrt the per-constraint weights, the per-constraint targets, etc.
23
+ //
24
+ // To make this work, we need a mechanism to specify which inputs we can
25
+ // differentiate wrt. Thus the inputs()/getInput()/setInput() stuff below.
26
+ // This design is a bit "string-heavy" but ensures that we can use the various
27
+ // derivatives in code that doesn't know a priori which inputs a given
28
+ // constraint has.
29
+ //
30
+ // Note that the resulting inputs are all specified as Eigen::VectorXf. This
31
+ // tends to mean that the resulting error functions are going to operate on
32
+ // big homogenous Tensor types instead of the mixed-struct types like
33
+ // MarkerErrorFunction uses.
34
+ template <typename T>
35
+ class FullyDifferentiableSkeletonErrorFunctionT {
36
+ public:
37
+ virtual ~FullyDifferentiableSkeletonErrorFunctionT() = default;
38
+
39
+ [[nodiscard]] virtual const char* name() const = 0;
40
+
41
+ // Get a list of all the differentiable inputs for this error function
42
+ // (excluding the modelParameters).
43
+ [[nodiscard]] virtual std::vector<std::string> inputs() const = 0;
44
+
45
+ // Get the current input values. A given input will be unrolled into a flat vector,
46
+ // so, for example, if the input was an n x 3 vector of constraint targets, getInput
47
+ // would return a (3n x 1) VectorXf with the targets packed (t1x t1y t1z t2x t2y t2z ...)
48
+ [[nodiscard]] Eigen::VectorX<T> getInput(const std::string& name) const;
49
+ void getInput(const std::string& name, Eigen::Ref<Eigen::VectorX<T>> value) const;
50
+
51
+ // Efficiently get the size of the input (e.g., getInput(name).size()).
52
+ [[nodiscard]] virtual Eigen::Index getInputSize(const std::string& name) const = 0;
53
+
54
+ // Set the current input values:
55
+ void setInput(const std::string& name, Eigen::Ref<const Eigen::VectorX<T>> value);
56
+
57
+ // Compute the quantity
58
+ // d/dInput(dE/dTheta) . v
59
+ // where dE/dTheta is the gradient of the energy computed in getGradient.
60
+ // By applying the dot product inside this function we avoid dealing
61
+ // with tensor types, and it is possible to compute very efficiently
62
+ // in reverse-mode differentiation such as used by PyTorch.
63
+ //
64
+ // Note that because v is a constant here, we can rewrite this as
65
+ // d/dInput(dE/dTheta . v)
66
+ // Now it's a lot easier to understand (it's the derivative wrt the given input of a scalar,
67
+ // no tensors required) and very amenable to autodiff as described below.
68
+ virtual Eigen::VectorX<T> d_gradient_d_input_dot(
69
+ const std::string& inputName,
70
+ const ModelParametersT<T>& params,
71
+ const SkeletonStateT<T>& state,
72
+ Eigen::Ref<const Eigen::VectorX<T>> inputVec) = 0;
73
+
74
+ protected:
75
+ virtual void getInputImp(const std::string& name, Eigen::Ref<Eigen::VectorX<T>> value) const = 0;
76
+ virtual void setInputImp(const std::string& name, Eigen::Ref<const Eigen::VectorX<T>> value) = 0;
77
+
78
+ // Notes on implementing d_gradient_d_input_dot: After some experimentation, I have settled on the
79
+ // following procedure for implementing the d_gradient_d_input_dot() function. By using ceres
80
+ // autodiff, we can compute the derivatives for all the inputs without having to hand-implement
81
+ // them all.
82
+ //
83
+ // Note that I spent some time trying to convince ceres autodiff to compute both getGradient() and
84
+ // d_gradient_d_input_dot() straight from the error function; while I still think that might be
85
+ // possible it gets really nasty. This is partly because Ceres isn't really engineered to deal
86
+ // with second derivatives (you can do it with jets of jets but the tooling gets pretty poor) and
87
+ // partly because getting it to respect the right sparsity patterns gets really complicated.
88
+ //
89
+ // 1. For a typical constraint like a projection constraint, the inputs are sparse; that is,
90
+ // a given input only affects a few rows of the residual. For example: a projection constraint
91
+ // returns a (2n x 1) residual, but a given block of two is only affected by a single weight
92
+ // w_i, a single offset o_i, and a single target t_i.
93
+ // 2. Split the gradient function out into a separate function for the ith term of the residual.
94
+ // Example:
95
+ // void getGradient(...) {
96
+ // for (int i = 0; i < constraints.size(); ++i) {
97
+ // getConstraintGradient(constraints[i], gradient);
98
+ // }
99
+ // }
100
+ // void getContraintGradient(const Constraint& cons, Eigen::Ref<Eigen::VectorX<T>> gradient)
101
+ // {
102
+ // ...
103
+ // }
104
+ // See e.g. MarkerErrorFunction for an example.
105
+ // 3. Copy the getConstraintGradient function and make the following changes:
106
+ // a. Make it template <typename T>, where T will be a ceres::Jet<float, N>.
107
+ // b. Turn it into getConstraintGradient_dot(..., Eigen::Ref<const Eigen::VectorX<T>> vec).
108
+ // You will be applying the dot of the computed gradient against the vec as you go, and
109
+ // the ceres::Jet types will accumulate the derivatives.
110
+ // c. Pass all the constraint inputs in explicitly, templated on T. That is, the
111
+ // getConstraintGradient() function above becomes:
112
+ // template <typename T>
113
+ // void getConstraintGradient_dot(const T cons_weight,
114
+ // const Vector3<T> cons_target,
115
+ // Eigen::Ref<const Eigen::VectorX<T>> vec)
116
+ // d. Replace all the Vector3f/float with Vector3<T>/T or just use auto and .eval() a lot.
117
+ // Be wary of Eigen's use of temporaries.
118
+ // https://eigen.tuxfamily.org/dox/TopicPitfalls.html
119
+ // This is bad due to Eigen temporaries:
120
+ // auto foo = bar.cross(baz).normalized();
121
+ // This is okay:
122
+ // auto foo = bar.cross(baz).normalized().eval();
123
+ // e. Replace jointState.getRotationDerivative(...) with getRotationDerivative(jointState,
124
+ // ...) and
125
+ // jointState.getScaleDerivative(...) with getScaleDerivative(jointState, ...) from
126
+ // ceres_utility.h.
127
+ // f. Add the (grad . vec) dot product in the appropriate spot. There is a function
128
+ // times_parameterTransform_times_v() in CeresUtility too apply the dot product if your
129
+ // function computes the gradient wrt the joint parameters instead of the model
130
+ // parameters.
131
+ // auto result = T();
132
+ // for (size_t d = 0; d < 3; d++) {
133
+ // {
134
+ // const float grad_jointParam = ...
135
+ // result += times_parametersTransform_times_v(grad_jointParam, jointIndex *
136
+ // kParametersPerJoint + d, vec)
137
+ // }
138
+ //
139
+ // 4. Now, implement your d_gradient_d_input_dot() function.
140
+ // if(input == "target") {
141
+ // Eigen::VectorX<T> result(constraints.size()*3);
142
+ // for (int iCons = 0; iCons < constraints.size(); ++iCons)
143
+ // {
144
+ // typedef ceres::Jet<float,3> JetType;
145
+ // const auto& cons = constraints[iCons];
146
+ // // We don't actually care about the value of the dot product here, we only
147
+ // // care about the derivative, which is stored in the Jet dual number .v.
148
+ // auto dotProd = getConstraintGradient_dot<JetType>(JetType(cons.weight),
149
+ // buildJetVec(cons.target), vec); result.segment<3>(3*iCons) = dotProd.v;
150
+ // }
151
+ // }
152
+ // The tricky part is deciding what you're differentiating wrt to. The variables that are
153
+ // constant can get converted to jets in this way:
154
+ // v.cast<JetType>(), JetType(c)
155
+ // The variables that we _are_ differentiating wrt need to be converted to unit jets, like
156
+ // this:
157
+ // buildJetVec(v), JetType(c, 0)
158
+ };
159
+
160
+ } // namespace momentum
@@ -0,0 +1,54 @@
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_solver/skeleton_error_function.h>
11
+ #include <momentum/character_solver/state_error_function.h>
12
+ #include <momentum/diff_ik/fully_differentiable_skeleton_error_function.h>
13
+ #include <momentum/diff_ik/fwd.h>
14
+
15
+ #include <Eigen/Core>
16
+
17
+ namespace momentum {
18
+
19
+ template <typename T>
20
+ class FullyDifferentiableStateErrorFunctionT : public FullyDifferentiableSkeletonErrorFunctionT<T>,
21
+ public StateErrorFunctionT<T> {
22
+ public:
23
+ FullyDifferentiableStateErrorFunctionT(const Skeleton& skel, const ParameterTransform& pt);
24
+ ~FullyDifferentiableStateErrorFunctionT() override;
25
+
26
+ [[nodiscard]] std::vector<std::string> inputs() const final;
27
+ [[nodiscard]] Eigen::Index getInputSize(const std::string& name) const final;
28
+ [[nodiscard]] const char* name() const final {
29
+ return "StateErrorFunction";
30
+ }
31
+
32
+ Eigen::VectorX<T> d_gradient_d_input_dot(
33
+ const std::string& inputName,
34
+ const ModelParametersT<T>& params,
35
+ const SkeletonStateT<T>& state,
36
+ Eigen::Ref<const Eigen::VectorX<T>> inputVec) final;
37
+
38
+ protected:
39
+ void getInputImp(const std::string& name, Eigen::Ref<Eigen::VectorX<T>> value) const final;
40
+ void setInputImp(const std::string& name, Eigen::Ref<const Eigen::VectorX<T>> value) final;
41
+
42
+ private:
43
+ template <typename JetType>
44
+ JetType calculateGradient_dot(
45
+ const SkeletonStateT<T>& state,
46
+ size_t iJoint,
47
+ const Eigen::Vector3<JetType>& targetTranslation,
48
+ const Eigen::Quaternion<JetType>& targetRotation,
49
+ const JetType& targetPositionWeight,
50
+ const JetType& targetRotationWeight,
51
+ Eigen::Ref<const Eigen::VectorX<T>> vec);
52
+ };
53
+
54
+ } // namespace momentum