pymomentum-cpu 0.1.77.post26__cp312-cp312-macosx_15_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.

Potentially problematic release.


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

Files changed (512) 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/axel/axel-config.cmake +45 -0
  454. lib/cmake/axel/axelTargets-release.cmake +19 -0
  455. lib/cmake/axel/axelTargets.cmake +108 -0
  456. lib/cmake/momentum/Findre2.cmake +52 -0
  457. lib/cmake/momentum/momentum-config.cmake +67 -0
  458. lib/cmake/momentum/momentumTargets-release.cmake +259 -0
  459. lib/cmake/momentum/momentumTargets.cmake +377 -0
  460. lib/cmake/rerun_sdk/rerun_sdkConfig.cmake +70 -0
  461. lib/cmake/rerun_sdk/rerun_sdkConfigVersion.cmake +83 -0
  462. lib/cmake/rerun_sdk/rerun_sdkTargets-release.cmake +19 -0
  463. lib/cmake/rerun_sdk/rerun_sdkTargets.cmake +108 -0
  464. lib/libarrow.a +0 -0
  465. lib/libarrow_bundled_dependencies.a +0 -0
  466. lib/libaxel.a +0 -0
  467. lib/libmomentum_app_utils.a +0 -0
  468. lib/libmomentum_character.a +0 -0
  469. lib/libmomentum_character_sequence_solver.a +0 -0
  470. lib/libmomentum_character_solver.a +0 -0
  471. lib/libmomentum_common.a +0 -0
  472. lib/libmomentum_diff_ik.a +0 -0
  473. lib/libmomentum_io.a +0 -0
  474. lib/libmomentum_io_common.a +0 -0
  475. lib/libmomentum_io_fbx.a +0 -0
  476. lib/libmomentum_io_gltf.a +0 -0
  477. lib/libmomentum_io_legacy_json.a +0 -0
  478. lib/libmomentum_io_marker.a +0 -0
  479. lib/libmomentum_io_motion.a +0 -0
  480. lib/libmomentum_io_shape.a +0 -0
  481. lib/libmomentum_io_skeleton.a +0 -0
  482. lib/libmomentum_io_urdf.a +0 -0
  483. lib/libmomentum_marker_tracker.a +0 -0
  484. lib/libmomentum_math.a +0 -0
  485. lib/libmomentum_online_qr.a +0 -0
  486. lib/libmomentum_process_markers.a +0 -0
  487. lib/libmomentum_rerun.a +0 -0
  488. lib/libmomentum_simd_constraints.a +0 -0
  489. lib/libmomentum_simd_generalized_loss.a +0 -0
  490. lib/libmomentum_skeleton.a +0 -0
  491. lib/libmomentum_solver.a +0 -0
  492. lib/librerun_c__macos_arm64.a +0 -0
  493. lib/librerun_sdk.a +0 -0
  494. pymomentum/axel.cpython-312-darwin.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-312-darwin.so +0 -0
  500. pymomentum/marker_tracking.cpython-312-darwin.so +0 -0
  501. pymomentum/quaternion.py +740 -0
  502. pymomentum/skel_state.py +514 -0
  503. pymomentum/solver.cpython-312-darwin.so +0 -0
  504. pymomentum/solver2.cpython-312-darwin.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.post26.dist-info/METADATA +208 -0
  510. pymomentum_cpu-0.1.77.post26.dist-info/RECORD +512 -0
  511. pymomentum_cpu-0.1.77.post26.dist-info/WHEEL +5 -0
  512. pymomentum_cpu-0.1.77.post26.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,146 @@
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/skinned_locator.h>
11
+ #include <momentum/character_solver/error_function_utils.h>
12
+ #include <momentum/character_solver/fwd.h>
13
+ #include <momentum/character_solver/skeleton_error_function.h>
14
+ #include <momentum/character_solver/vertex_error_function.h>
15
+ #include <momentum/math/fwd.h>
16
+
17
+ namespace momentum {
18
+
19
+ template <typename T>
20
+ struct SkinnedLocatorTriangleConstraintT {
21
+ int locatorIndex = -1;
22
+ Eigen::Vector3i tgtTriangleIndices;
23
+ Eigen::Vector3<T> tgtTriangleBaryCoords;
24
+ T depth = 0;
25
+ T weight = 1;
26
+
27
+ template <typename T2>
28
+ SkinnedLocatorTriangleConstraintT<T2> cast() const {
29
+ return {
30
+ this->locatorIndex,
31
+ this->tgtTriangleIndices,
32
+ this->tgtTriangleBaryCoords.template cast<T2>(),
33
+ static_cast<T2>(this->depth),
34
+ static_cast<T2>(this->weight)};
35
+ }
36
+ };
37
+
38
+ /// Support constraining a skinned locator to a location on the mesh defined by a target triangle
39
+ /// and its normal. The target point is specified as sum_i (bary_i * target_triangle_vertex_i) +
40
+ /// depth * target_triangle_normal. This constraint applies "forces" both to the skinned locator and
41
+ /// every vertex in the mesh target triangle, so it will actually try to pull both toward each
42
+ /// other.
43
+ template <typename T>
44
+ class SkinnedLocatorTriangleErrorFunctionT : public SkeletonErrorFunctionT<T> {
45
+ public:
46
+ explicit SkinnedLocatorTriangleErrorFunctionT(
47
+ const Character& character,
48
+ VertexConstraintType type = VertexConstraintType::Position);
49
+ ~SkinnedLocatorTriangleErrorFunctionT() override;
50
+
51
+ SkinnedLocatorTriangleErrorFunctionT(const SkinnedLocatorTriangleErrorFunctionT& other) = delete;
52
+ SkinnedLocatorTriangleErrorFunctionT& operator=(const SkinnedLocatorTriangleErrorFunctionT&) =
53
+ delete;
54
+ SkinnedLocatorTriangleErrorFunctionT(SkinnedLocatorTriangleErrorFunctionT&&) = delete;
55
+ SkinnedLocatorTriangleErrorFunctionT& operator=(SkinnedLocatorTriangleErrorFunctionT&&) = delete;
56
+
57
+ [[nodiscard]] double getError(
58
+ const ModelParametersT<T>& modelParameters,
59
+ const SkeletonStateT<T>& state,
60
+ const MeshStateT<T>& meshState) final;
61
+
62
+ double getGradient(
63
+ const ModelParametersT<T>& modelParameters,
64
+ const SkeletonStateT<T>& state,
65
+ const MeshStateT<T>& meshState,
66
+ Eigen::Ref<Eigen::VectorX<T>> gradient) final;
67
+
68
+ double getJacobian(
69
+ const ModelParametersT<T>& modelParameters,
70
+ const SkeletonStateT<T>& state,
71
+ const MeshStateT<T>& meshState,
72
+ Eigen::Ref<Eigen::MatrixX<T>> jacobian,
73
+ Eigen::Ref<Eigen::VectorX<T>> residual,
74
+ int& usedRows) final;
75
+
76
+ [[nodiscard]] size_t getJacobianSize() const final;
77
+
78
+ void addConstraint(
79
+ int locatorIndex,
80
+ const Eigen::Vector3i& triangleIndices,
81
+ const Eigen::Vector3<T>& triangleBaryCoords,
82
+ float depth = 0,
83
+ T weight = 1);
84
+ void clearConstraints();
85
+ void setConstraints(const std::vector<SkinnedLocatorTriangleConstraintT<T>>& constraints);
86
+
87
+ [[nodiscard]] const std::vector<SkinnedLocatorTriangleConstraintT<T>>& getConstraints() const {
88
+ return constraints_;
89
+ }
90
+
91
+ [[nodiscard]] const Character* getCharacter() const override {
92
+ return &character_;
93
+ }
94
+
95
+ /// Override to indicate this function requires mesh state
96
+ [[nodiscard]] bool needsMesh() const override {
97
+ return true;
98
+ }
99
+
100
+ private:
101
+ // Get the parameter index for a skinned locator, or -1 if not parameterized
102
+ [[nodiscard]] int getSkinnedLocatorParameterIndex(int locatorIndex) const {
103
+ if (locatorIndex <
104
+ static_cast<int>(character_.parameterTransform.skinnedLocatorParameters.size())) {
105
+ return character_.parameterTransform.skinnedLocatorParameters[locatorIndex];
106
+ }
107
+ return -1;
108
+ }
109
+
110
+ double calculatePositionJacobian(
111
+ const ModelParametersT<T>& modelParameters,
112
+ const SkinnedLocatorTriangleConstraintT<T>& constr,
113
+ Ref<Eigen::MatrixX<T>> jac,
114
+ Ref<Eigen::VectorX<T>> res) const;
115
+
116
+ double calculatePlaneJacobian(
117
+ const ModelParametersT<T>& modelParameters,
118
+ const SkinnedLocatorTriangleConstraintT<T>& constr,
119
+ Ref<Eigen::MatrixX<T>> jac,
120
+ T& res) const;
121
+
122
+ double calculatePositionGradient(
123
+ const ModelParametersT<T>& modelParameters,
124
+ const SkinnedLocatorTriangleConstraintT<T>& constr,
125
+ Eigen::Ref<Eigen::VectorX<T>> gradient) const;
126
+
127
+ double calculatePlaneGradient(
128
+ const ModelParametersT<T>& modelParameters,
129
+ const SkinnedLocatorTriangleConstraintT<T>& constr,
130
+ Eigen::Ref<Eigen::VectorX<T>> gradient) const;
131
+
132
+ Eigen::Vector3<T> getLocatorRestPosition(const ModelParametersT<T>& modelParams, int locatorIndex)
133
+ const;
134
+
135
+ const Character& character_;
136
+
137
+ std::vector<SkinnedLocatorTriangleConstraintT<T>> constraints_;
138
+
139
+ std::unique_ptr<MeshT<T>> neutralMesh_; // Rest mesh without facial expression basis
140
+ std::unique_ptr<MeshT<T>> restMesh_; // Rest positions after shape basis is applied
141
+
142
+ const VertexConstraintType constraintType_;
143
+ void updateMeshes(const ModelParametersT<T>& modelParameters);
144
+ };
145
+
146
+ } // 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/fwd.h>
11
+ #include <momentum/character/skin_weights.h>
12
+ #include <momentum/math/fwd.h>
13
+
14
+ namespace momentum {
15
+
16
+ template <typename T>
17
+ struct BoneWeightT {
18
+ size_t parentBone{};
19
+ float weight{};
20
+ Eigen::Vector3<T> weightedWorldSpacePoint;
21
+
22
+ bool operator<(const BoneWeightT<T>& rhs) const {
23
+ return parentBone < rhs.parentBone;
24
+ }
25
+
26
+ bool operator>(const BoneWeightT<T>& rhs) const {
27
+ return parentBone > rhs.parentBone;
28
+ }
29
+
30
+ BoneWeightT<T>& operator+=(const BoneWeightT<T>& rhs) {
31
+ this->weight += rhs.weight;
32
+ this->weightedWorldSpacePoint += rhs.weightedWorldSpacePoint;
33
+ return *this;
34
+ }
35
+ };
36
+
37
+ // When we compute the derivatives of skinned points, we usually
38
+ // end up with a loop like this:
39
+ // for each skinned point i
40
+ // for each skinning bone and weight B_ij, w_ij
41
+ // for each ancestor k
42
+ // compute the weighted change in the skinned point wrt the ancestor
43
+ // The redundancy here is that most points are skinned to a set of bones in the
44
+ // same hierarchy (for example, two parts of the arm) and so it's redundant to
45
+ // walk up the whole hierarchy from scratch for each skinned bone.
46
+ //
47
+ // This class instead does a single pass up the tree from leaf-most to root-most
48
+ // skinned bones, accumulating skinning weights along the way. By packaging it
49
+ // in this class we hide the complexity and simplify the jacobian/gradient
50
+ // calculation.
51
+ template <typename T>
52
+ class SkinningWeightIteratorT {
53
+ public:
54
+ SkinningWeightIteratorT(
55
+ const Character& character,
56
+ const MeshT<T>& restMesh,
57
+ const SkeletonStateT<T>& skelState,
58
+ int vertexIndex);
59
+
60
+ SkinningWeightIteratorT(
61
+ const Character& character,
62
+ const SkinnedLocator& locator,
63
+ const Eigen::Vector3<T>& locatorPosition,
64
+ const SkeletonStateT<T>& skelState);
65
+
66
+ [[nodiscard]] bool finished() const;
67
+
68
+ // Returns the tuple <parent bone index, bone weight, vertex position in world space wrt the
69
+ // current bone>
70
+ std::tuple<size_t, T, Eigen::Vector3<T>> next();
71
+
72
+ private:
73
+ void checkInvariants();
74
+
75
+ std::array<BoneWeightT<T>, kMaxSkinJoints> boneWeights;
76
+ int nBoneWeights;
77
+ const Character& character;
78
+ };
79
+
80
+ } // namespace momentum
@@ -0,0 +1,94 @@
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_solver/fwd.h>
12
+ #include <momentum/character_solver/skeleton_error_function.h>
13
+
14
+ namespace momentum {
15
+
16
+ template <typename T>
17
+ class StateErrorFunctionT : public SkeletonErrorFunctionT<T> {
18
+ public:
19
+ StateErrorFunctionT(const Skeleton& skel, const ParameterTransform& pt);
20
+ explicit StateErrorFunctionT(const Character& character);
21
+
22
+ [[nodiscard]] double getError(
23
+ const ModelParametersT<T>& params,
24
+ const SkeletonStateT<T>& state,
25
+ const MeshStateT<T>& meshState) final;
26
+
27
+ double getGradient(
28
+ const ModelParametersT<T>& params,
29
+ const SkeletonStateT<T>& state,
30
+ const MeshStateT<T>& meshState,
31
+ Eigen::Ref<Eigen::VectorX<T>> gradient) final;
32
+
33
+ double getJacobian(
34
+ const ModelParametersT<T>& params,
35
+ const SkeletonStateT<T>& state,
36
+ const MeshStateT<T>& meshState,
37
+ Eigen::Ref<Eigen::MatrixX<T>> jacobian,
38
+ Eigen::Ref<Eigen::VectorX<T>> residual,
39
+ int& usedRows) final;
40
+
41
+ [[nodiscard]] size_t getJacobianSize() const final;
42
+
43
+ void reset();
44
+ void setTargetState(const SkeletonStateT<T>* target);
45
+ void setTargetState(const SkeletonStateT<T>& target);
46
+ void setTargetState(TransformListT<T> target);
47
+ void setTargetWeight(const Eigen::VectorX<T>& weights);
48
+ void setTargetWeights(const Eigen::VectorX<T>& posWeight, const Eigen::VectorX<T>& rotWeight);
49
+
50
+ /// Set the target position weights for each joint.
51
+ /// @param posWeight Per-joint position weights.
52
+ void setPositionTargetWeights(const Eigen::VectorX<T>& posWeight);
53
+
54
+ /// Set the target rotation weights for each joint.
55
+ /// @param rotWeight Per-joint rotation weights.
56
+ void setRotationTargetWeights(const Eigen::VectorX<T>& rotWeight);
57
+
58
+ void setWeights(const float posWeight, const float rotationWeight) {
59
+ posWgt_ = posWeight;
60
+ rotWgt_ = rotationWeight;
61
+ }
62
+
63
+ [[nodiscard]] const TransformListT<T>& getTargetState() const {
64
+ return this->targetState_;
65
+ }
66
+
67
+ [[nodiscard]] const Eigen::VectorX<T>& getPositionWeights() const {
68
+ return targetPositionWeights_;
69
+ }
70
+ [[nodiscard]] const Eigen::VectorX<T>& getRotationWeights() const {
71
+ return targetRotationWeights_;
72
+ }
73
+ [[nodiscard]] const T& getPositionWeight() const {
74
+ return posWgt_;
75
+ }
76
+ [[nodiscard]] const T& getRotationWeight() const {
77
+ return rotWgt_;
78
+ }
79
+
80
+ private:
81
+ TransformListT<T> targetState_;
82
+ Eigen::VectorX<T> targetPositionWeights_;
83
+ Eigen::VectorX<T> targetRotationWeights_;
84
+
85
+ T posWgt_;
86
+ T rotWgt_;
87
+
88
+ public:
89
+ // weights for the error functions
90
+ static constexpr T kPositionWeight = 1e-3f;
91
+ static constexpr T kOrientationWeight = 1e+0f;
92
+ };
93
+
94
+ } // 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/character.h>
11
+ #include <momentum/character_solver/fwd.h>
12
+ #include <momentum/math/random.h>
13
+ #include <momentum/math/transform.h>
14
+ #include <momentum/math/types.h>
15
+ #include <momentum/solver/fwd.h>
16
+
17
+ namespace momentum {
18
+
19
+ /// Function which computes a new set of model parameters such that the character pose is a rigidly
20
+ /// transformed version of the original pose. While there is technically a closed form solution
21
+ /// for any given skeleton, this is complicated in momentum because different
22
+ /// characters attach the rigid parameters to different joints, so a fully general solution uses IK.
23
+ /// However, getting it right requires dealing with local minima issues in Euler angles and other
24
+ /// challenges. So centralizing this functionality in a single place is useful.
25
+ ///
26
+ /// @param[in] ensureContinuousOutput If true, the output model parameters will be solved
27
+ /// sequentially so that the resulting output is continuous where possible. This helps to avoid
28
+ /// issues with Euler flipping.
29
+ template <typename T>
30
+ std::vector<ModelParametersT<T>> transformPose(
31
+ const Character& character,
32
+ const std::vector<ModelParametersT<T>>& modelParameters,
33
+ const std::vector<TransformT<T>>& transforms,
34
+ bool ensureContinuousOutput = true);
35
+
36
+ template <typename T>
37
+ std::vector<ModelParametersT<T>> transformPose(
38
+ const Character& character,
39
+ const std::vector<ModelParametersT<T>>& modelParameters,
40
+ const TransformT<T>& transforms);
41
+
42
+ /// Solver which can be reused to repeatedly apply the transformPose function listed above.
43
+ template <typename T>
44
+ class PoseTransformSolverT {
45
+ public:
46
+ explicit PoseTransformSolverT(const Character& character);
47
+ ~PoseTransformSolverT();
48
+
49
+ /// Applies a rigid transform to the given model parameters.
50
+ /// @param[in,out] modelParameters The model parameters to be transformed.
51
+ /// @param[in] transform The transform to apply.
52
+ /// @param[in] modelParametersPrev The previous pose, which is used to ensure continuity (the
53
+ /// solver will initialize using the previous frame's rigid parameters).
54
+ void transformPose(
55
+ ModelParametersT<T>& modelParameters,
56
+ const TransformT<T>& transform,
57
+ const ModelParametersT<T>& modelParametersPrev = ModelParametersT<T>{});
58
+
59
+ private:
60
+ Eigen::Index numModelParametersFull_;
61
+
62
+ momentum::Character characterSimplified_;
63
+ momentum::ParameterTransformT<T> parameterTransformSimplified_;
64
+ size_t rootJointSimplified_;
65
+ momentum::ParameterSet rigidParametersSimplified_;
66
+ std::vector<size_t> simplifiedParamToFullParamIdx_;
67
+
68
+ momentum::ModelParametersT<T> solvedParametersSimplified_;
69
+ momentum::SkeletonStateT<T> skelStateSimplified_;
70
+
71
+ std::shared_ptr<momentum::PositionErrorFunctionT<T>> positionError_;
72
+ std::shared_ptr<momentum::OrientationErrorFunctionT<T>> orientationError_;
73
+
74
+ std::unique_ptr<momentum::SkeletonSolverFunctionT<T>> solverFunction_;
75
+ std::unique_ptr<momentum::SolverT<T>> solver_;
76
+
77
+ momentum::Random<> rng_;
78
+ };
79
+
80
+ } // 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/mesh_state.h>
11
+ #include <momentum/character/skeleton_state.h>
12
+ #include <momentum/character_solver/fwd.h>
13
+ #include <momentum/character_solver/skeleton_solver_function.h>
14
+ #include <momentum/math/online_householder_qr.h>
15
+ #include <momentum/solver/solver.h>
16
+
17
+ #include <Eigen/Core>
18
+
19
+ namespace momentum {
20
+
21
+ /// Trust Region with QR decomposition specific options
22
+ struct TrustRegionQROptions : SolverOptions {
23
+ /// Trust region radius parameter for the Trust Region solver with QR decomposition.
24
+ float trustRegionRadius_ = 1.0f;
25
+
26
+ TrustRegionQROptions() = default;
27
+
28
+ /* implicit */ TrustRegionQROptions(const SolverOptions& baseOptions)
29
+ : SolverOptions(baseOptions) {
30
+ // Empty
31
+ }
32
+ };
33
+
34
+ template <typename T>
35
+ class TrustRegionQRT : public SolverT<T> {
36
+ public:
37
+ TrustRegionQRT(const SolverOptions& options, SkeletonSolverFunctionT<T>* solverFun);
38
+
39
+ [[nodiscard]] std::string_view getName() const override;
40
+
41
+ void setOptions(const SolverOptions& options) final;
42
+
43
+ void iter() {
44
+ doIteration();
45
+ this->iteration_++;
46
+ }
47
+
48
+ void init() {
49
+ this->iteration_ = 0;
50
+ initializeSolver();
51
+ }
52
+
53
+ Eigen::VectorX<T> getP() {
54
+ return this->parameters_;
55
+ }
56
+
57
+ protected:
58
+ void doIteration() final;
59
+ void initializeSolver() final;
60
+
61
+ private:
62
+ ResizeableMatrix<T> jacobian_;
63
+ ResizeableMatrix<T> residual_;
64
+
65
+ Eigen::VectorX<T> gradientSub_;
66
+ Eigen::MatrixX<T> lambdaDiag_;
67
+ Eigen::VectorX<T> lambdaZero_;
68
+
69
+ OnlineHouseholderQR<T> qrSolver_;
70
+
71
+ SkeletonStateT<T> skeletonState_;
72
+ MeshStateT<T> meshState_;
73
+
74
+ T trustRegionRadius_;
75
+ T maxTrustRegionRadius_ = 10.0;
76
+ T curTrustRegionRadius_ = 1.0;
77
+ Eigen::MatrixX<T> Rmatrix_;
78
+ };
79
+
80
+ } // namespace momentum
@@ -0,0 +1,155 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #include <momentum/character_solver/fwd.h>
11
+ #include <momentum/character_solver/plane_error_function.h>
12
+ #include <momentum/character_solver/position_error_function.h>
13
+ #include <momentum/character_solver/skeleton_error_function.h>
14
+ #include <momentum/math/fwd.h>
15
+
16
+ namespace momentum {
17
+
18
+ template <typename T>
19
+ struct VertexConstraintT {
20
+ int vertexIndex = -1;
21
+ T weight = 1;
22
+ Eigen::Vector3<T> targetPosition;
23
+ Eigen::Vector3<T> targetNormal;
24
+
25
+ template <typename T2>
26
+ VertexConstraintT<T2> cast() const {
27
+ return {
28
+ this->vertexIndex,
29
+ static_cast<T2>(this->weight),
30
+ this->targetPosition.template cast<T2>(),
31
+ this->targetNormal.template cast<T2>()};
32
+ }
33
+ };
34
+
35
+ enum class VertexConstraintType {
36
+ Position, // Target the vertex position
37
+ Plane, // point-to-plane distance using the target normal
38
+ Normal, // point-to-plane distance using the source (body) normal
39
+ SymmetricNormal, // Point-to-plane using a 50/50 mix of source and target normal
40
+ };
41
+
42
+ [[nodiscard]] std::string_view toString(VertexConstraintType type);
43
+
44
+ template <typename T>
45
+ class VertexErrorFunctionT : public SkeletonErrorFunctionT<T> {
46
+ public:
47
+ explicit VertexErrorFunctionT(
48
+ const Character& character,
49
+ VertexConstraintType type = VertexConstraintType::Position,
50
+ uint32_t maxThreads = 0);
51
+ virtual ~VertexErrorFunctionT() override;
52
+
53
+ [[nodiscard]] double getError(
54
+ const ModelParametersT<T>& modelParameters,
55
+ const SkeletonStateT<T>& state,
56
+ const MeshStateT<T>& meshState) final;
57
+
58
+ double getGradient(
59
+ const ModelParametersT<T>& modelParameters,
60
+ const SkeletonStateT<T>& state,
61
+ const MeshStateT<T>& meshState,
62
+ Eigen::Ref<Eigen::VectorX<T>> gradient) final;
63
+
64
+ double getJacobian(
65
+ const ModelParametersT<T>& modelParameters,
66
+ const SkeletonStateT<T>& state,
67
+ const MeshStateT<T>& meshState,
68
+ Eigen::Ref<Eigen::MatrixX<T>> jacobian,
69
+ Eigen::Ref<Eigen::VectorX<T>> residual,
70
+ int& usedRows) final;
71
+
72
+ [[nodiscard]] size_t getJacobianSize() const final;
73
+
74
+ void addConstraint(
75
+ int vertexIndex,
76
+ T weight,
77
+ const Eigen::Vector3<T>& targetPosition,
78
+ const Eigen::Vector3<T>& targetNormal);
79
+ void clearConstraints();
80
+
81
+ [[nodiscard]] const std::vector<VertexConstraintT<T>>& getConstraints() const {
82
+ return constraints_;
83
+ }
84
+
85
+ [[nodiscard]] size_t numConstraints() const {
86
+ return constraints_.size();
87
+ }
88
+
89
+ static constexpr T kPositionWeight = PositionErrorFunctionT<T>::kLegacyWeight;
90
+ static constexpr T kPlaneWeight = PlaneErrorFunctionT<T>::kLegacyWeight;
91
+
92
+ [[nodiscard]] const Character* getCharacter() const override {
93
+ return &character_;
94
+ }
95
+
96
+ /// Override to indicate this function requires mesh state
97
+ [[nodiscard]] bool needsMesh() const override {
98
+ return true;
99
+ }
100
+
101
+ private:
102
+ double calculatePositionJacobian(
103
+ const ModelParametersT<T>& modelParameters,
104
+ const SkeletonStateT<T>& state,
105
+ const MeshStateT<T>& meshState,
106
+ const VertexConstraintT<T>& constr,
107
+ Ref<Eigen::MatrixX<T>> jac,
108
+ Ref<Eigen::VectorX<T>> res) const;
109
+
110
+ double calculateNormalJacobian(
111
+ const ModelParametersT<T>& modelParameters,
112
+ const SkeletonStateT<T>& state,
113
+ const MeshStateT<T>& meshState,
114
+ const VertexConstraintT<T>& constr,
115
+ T sourceNormalWeight,
116
+ T targetNormalWeight,
117
+ Ref<Eigen::MatrixX<T>> jac,
118
+ T& res) const;
119
+
120
+ double calculatePositionGradient(
121
+ const ModelParametersT<T>& modelParameters,
122
+ const SkeletonStateT<T>& state,
123
+ const MeshStateT<T>& meshState,
124
+ const VertexConstraintT<T>& constr,
125
+ Eigen::Ref<Eigen::VectorX<T>> gradient) const;
126
+
127
+ double calculateNormalGradient(
128
+ const ModelParametersT<T>& modelParameters,
129
+ const SkeletonStateT<T>& state,
130
+ const MeshStateT<T>& meshState,
131
+ const VertexConstraintT<T>& constr,
132
+ T sourceNormalWeight,
133
+ T targetNormalWeight,
134
+ Eigen::Ref<Eigen::VectorX<T>> gradient) const;
135
+
136
+ // Utility function used now in calculateNormalJacobian and calculatePositionGradient
137
+ // to calculate derivatives with respect to position in world space (considering skinning)
138
+ void calculateDWorldPos(
139
+ const SkeletonStateT<T>& state,
140
+ const VertexConstraintT<T>& constr,
141
+ const Eigen::Vector3<T>& d_restPos,
142
+ Eigen::Vector3<T>& d_worldPos) const;
143
+
144
+ std::pair<T, T> computeNormalWeights() const;
145
+
146
+ const Character& character_;
147
+
148
+ std::vector<VertexConstraintT<T>> constraints_;
149
+
150
+ const VertexConstraintType constraintType_;
151
+
152
+ uint32_t maxThreads_;
153
+ };
154
+
155
+ } // namespace momentum