pymomentum-cpu 0.1.93.post0__cp312-cp312-macosx_14_0_arm64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (517) hide show
  1. include/axel/BoundingBox.h +59 -0
  2. include/axel/Bvh.h +708 -0
  3. include/axel/BvhBase.h +75 -0
  4. include/axel/BvhCommon.h +43 -0
  5. include/axel/BvhEmbree.h +87 -0
  6. include/axel/BvhFactory.h +34 -0
  7. include/axel/Checks.h +21 -0
  8. include/axel/DualContouring.h +79 -0
  9. include/axel/KdTree.h +208 -0
  10. include/axel/Log.h +22 -0
  11. include/axel/MeshToSdf.h +123 -0
  12. include/axel/Profile.h +64 -0
  13. include/axel/Ray.h +45 -0
  14. include/axel/SignedDistanceField.h +248 -0
  15. include/axel/SimdKdTree.h +515 -0
  16. include/axel/TriBvh.h +157 -0
  17. include/axel/TriBvhEmbree.h +57 -0
  18. include/axel/common/Constants.h +27 -0
  19. include/axel/common/Types.h +21 -0
  20. include/axel/common/VectorizationTypes.h +58 -0
  21. include/axel/math/BoundingBoxUtils.h +54 -0
  22. include/axel/math/ContinuousCollisionDetection.h +48 -0
  23. include/axel/math/CoplanarityCheck.h +30 -0
  24. include/axel/math/EdgeEdgeDistance.h +31 -0
  25. include/axel/math/MeshHoleFilling.h +117 -0
  26. include/axel/math/PointTriangleProjection.h +34 -0
  27. include/axel/math/PointTriangleProjectionDefinitions.h +209 -0
  28. include/axel/math/RayTriangleIntersection.h +36 -0
  29. include/momentum/character/blend_shape.h +97 -0
  30. include/momentum/character/blend_shape_base.h +86 -0
  31. include/momentum/character/blend_shape_skinning.h +96 -0
  32. include/momentum/character/character.h +272 -0
  33. include/momentum/character/character_state.h +108 -0
  34. include/momentum/character/character_utility.h +128 -0
  35. include/momentum/character/collision_geometry.h +80 -0
  36. include/momentum/character/collision_geometry_state.h +130 -0
  37. include/momentum/character/fwd.h +262 -0
  38. include/momentum/character/inverse_parameter_transform.h +58 -0
  39. include/momentum/character/joint.h +82 -0
  40. include/momentum/character/joint_state.h +241 -0
  41. include/momentum/character/linear_skinning.h +139 -0
  42. include/momentum/character/locator.h +94 -0
  43. include/momentum/character/locator_state.h +43 -0
  44. include/momentum/character/marker.h +48 -0
  45. include/momentum/character/mesh_state.h +71 -0
  46. include/momentum/character/parameter_limits.h +144 -0
  47. include/momentum/character/parameter_transform.h +207 -0
  48. include/momentum/character/pose_shape.h +65 -0
  49. include/momentum/character/skeleton.h +85 -0
  50. include/momentum/character/skeleton_state.h +227 -0
  51. include/momentum/character/skeleton_utility.h +38 -0
  52. include/momentum/character/skin_weights.h +67 -0
  53. include/momentum/character/skinned_locator.h +80 -0
  54. include/momentum/character/types.h +202 -0
  55. include/momentum/character_sequence_solver/fwd.h +200 -0
  56. include/momentum/character_sequence_solver/model_parameters_sequence_error_function.h +65 -0
  57. include/momentum/character_sequence_solver/multipose_solver.h +65 -0
  58. include/momentum/character_sequence_solver/multipose_solver_function.h +82 -0
  59. include/momentum/character_sequence_solver/sequence_error_function.h +104 -0
  60. include/momentum/character_sequence_solver/sequence_solver.h +155 -0
  61. include/momentum/character_sequence_solver/sequence_solver_function.h +158 -0
  62. include/momentum/character_sequence_solver/state_sequence_error_function.h +117 -0
  63. include/momentum/character_sequence_solver/vertex_sequence_error_function.h +123 -0
  64. include/momentum/character_solver/aim_error_function.h +112 -0
  65. include/momentum/character_solver/collision_error_function.h +92 -0
  66. include/momentum/character_solver/collision_error_function_stateless.h +75 -0
  67. include/momentum/character_solver/constraint_error_function-inl.h +324 -0
  68. include/momentum/character_solver/constraint_error_function.h +248 -0
  69. include/momentum/character_solver/distance_error_function.h +77 -0
  70. include/momentum/character_solver/error_function_utils.h +60 -0
  71. include/momentum/character_solver/fixed_axis_error_function.h +139 -0
  72. include/momentum/character_solver/fwd.h +943 -0
  73. include/momentum/character_solver/gauss_newton_solver_qr.h +64 -0
  74. include/momentum/character_solver/height_error_function.h +176 -0
  75. include/momentum/character_solver/joint_to_joint_distance_error_function.h +111 -0
  76. include/momentum/character_solver/limit_error_function.h +57 -0
  77. include/momentum/character_solver/model_parameters_error_function.h +64 -0
  78. include/momentum/character_solver/normal_error_function.h +73 -0
  79. include/momentum/character_solver/orientation_error_function.h +74 -0
  80. include/momentum/character_solver/plane_error_function.h +102 -0
  81. include/momentum/character_solver/point_triangle_vertex_error_function.h +141 -0
  82. include/momentum/character_solver/pose_prior_error_function.h +80 -0
  83. include/momentum/character_solver/position_error_function.h +75 -0
  84. include/momentum/character_solver/projection_error_function.h +93 -0
  85. include/momentum/character_solver/simd_collision_error_function.h +99 -0
  86. include/momentum/character_solver/simd_normal_error_function.h +157 -0
  87. include/momentum/character_solver/simd_plane_error_function.h +164 -0
  88. include/momentum/character_solver/simd_position_error_function.h +165 -0
  89. include/momentum/character_solver/skeleton_error_function.h +151 -0
  90. include/momentum/character_solver/skeleton_solver_function.h +94 -0
  91. include/momentum/character_solver/skinned_locator_error_function.h +166 -0
  92. include/momentum/character_solver/skinned_locator_triangle_error_function.h +146 -0
  93. include/momentum/character_solver/skinning_weight_iterator.h +80 -0
  94. include/momentum/character_solver/state_error_function.h +119 -0
  95. include/momentum/character_solver/transform_pose.h +80 -0
  96. include/momentum/character_solver/trust_region_qr.h +80 -0
  97. include/momentum/character_solver/vertex_error_function.h +155 -0
  98. include/momentum/character_solver/vertex_projection_error_function.h +117 -0
  99. include/momentum/character_solver/vertex_vertex_distance_error_function.h +147 -0
  100. include/momentum/common/aligned.h +155 -0
  101. include/momentum/common/checks.h +27 -0
  102. include/momentum/common/exception.h +70 -0
  103. include/momentum/common/filesystem.h +20 -0
  104. include/momentum/common/fwd.h +27 -0
  105. include/momentum/common/log.h +173 -0
  106. include/momentum/common/log_channel.h +17 -0
  107. include/momentum/common/memory.h +71 -0
  108. include/momentum/common/profile.h +79 -0
  109. include/momentum/common/progress_bar.h +37 -0
  110. include/momentum/common/string.h +52 -0
  111. include/momentum/diff_ik/ceres_utility.h +73 -0
  112. include/momentum/diff_ik/fully_differentiable_body_ik.h +58 -0
  113. include/momentum/diff_ik/fully_differentiable_distance_error_function.h +69 -0
  114. include/momentum/diff_ik/fully_differentiable_motion_error_function.h +46 -0
  115. include/momentum/diff_ik/fully_differentiable_orientation_error_function.h +114 -0
  116. include/momentum/diff_ik/fully_differentiable_pose_prior_error_function.h +76 -0
  117. include/momentum/diff_ik/fully_differentiable_position_error_function.h +138 -0
  118. include/momentum/diff_ik/fully_differentiable_projection_error_function.h +65 -0
  119. include/momentum/diff_ik/fully_differentiable_skeleton_error_function.h +160 -0
  120. include/momentum/diff_ik/fully_differentiable_state_error_function.h +54 -0
  121. include/momentum/diff_ik/fwd.h +385 -0
  122. include/momentum/diff_ik/union_error_function.h +67 -0
  123. include/momentum/gui/rerun/eigen_adapters.h +70 -0
  124. include/momentum/gui/rerun/logger.h +102 -0
  125. include/momentum/gui/rerun/logging_redirect.h +27 -0
  126. include/momentum/io/character_io.h +98 -0
  127. include/momentum/io/common/gsl_utils.h +50 -0
  128. include/momentum/io/common/stream_utils.h +65 -0
  129. include/momentum/io/fbx/fbx_io.h +135 -0
  130. include/momentum/io/fbx/fbx_memory_stream.h +70 -0
  131. include/momentum/io/fbx/openfbx_loader.h +62 -0
  132. include/momentum/io/fbx/polygon_data.h +60 -0
  133. include/momentum/io/file_save_options.h +107 -0
  134. include/momentum/io/gltf/gltf_builder.h +141 -0
  135. include/momentum/io/gltf/gltf_io.h +149 -0
  136. include/momentum/io/gltf/utils/accessor_utils.h +299 -0
  137. include/momentum/io/gltf/utils/coordinate_utils.h +60 -0
  138. include/momentum/io/gltf/utils/json_utils.h +102 -0
  139. include/momentum/io/legacy_json/legacy_json_io.h +70 -0
  140. include/momentum/io/marker/c3d_io.h +30 -0
  141. include/momentum/io/marker/conversions.h +57 -0
  142. include/momentum/io/marker/coordinate_system.h +30 -0
  143. include/momentum/io/marker/marker_io.h +56 -0
  144. include/momentum/io/marker/trc_io.h +27 -0
  145. include/momentum/io/motion/mmo_io.h +97 -0
  146. include/momentum/io/shape/blend_shape_io.h +82 -0
  147. include/momentum/io/shape/pose_shape_io.h +21 -0
  148. include/momentum/io/skeleton/locator_io.h +41 -0
  149. include/momentum/io/skeleton/mppca_io.h +26 -0
  150. include/momentum/io/skeleton/parameter_limits_io.h +38 -0
  151. include/momentum/io/skeleton/parameter_transform_io.h +80 -0
  152. include/momentum/io/skeleton/parameters_io.h +20 -0
  153. include/momentum/io/skeleton/utility.h +67 -0
  154. include/momentum/io/urdf/urdf_io.h +26 -0
  155. include/momentum/io/usd/usd_io.h +36 -0
  156. include/momentum/marker_tracking/app_utils.h +64 -0
  157. include/momentum/marker_tracking/marker_tracker.h +221 -0
  158. include/momentum/marker_tracking/process_markers.h +58 -0
  159. include/momentum/marker_tracking/tracker_utils.h +99 -0
  160. include/momentum/math/constants.h +82 -0
  161. include/momentum/math/covariance_matrix.h +84 -0
  162. include/momentum/math/fmt_eigen.h +23 -0
  163. include/momentum/math/fwd.h +132 -0
  164. include/momentum/math/generalized_loss.h +61 -0
  165. include/momentum/math/intersection.h +32 -0
  166. include/momentum/math/mesh.h +84 -0
  167. include/momentum/math/mppca.h +67 -0
  168. include/momentum/math/online_householder_qr.h +516 -0
  169. include/momentum/math/random-inl.h +404 -0
  170. include/momentum/math/random.h +310 -0
  171. include/momentum/math/simd_generalized_loss.h +40 -0
  172. include/momentum/math/transform.h +229 -0
  173. include/momentum/math/types.h +461 -0
  174. include/momentum/math/utility.h +324 -0
  175. include/momentum/rasterizer/camera.h +453 -0
  176. include/momentum/rasterizer/fwd.h +102 -0
  177. include/momentum/rasterizer/geometry.h +83 -0
  178. include/momentum/rasterizer/image.h +18 -0
  179. include/momentum/rasterizer/rasterizer.h +583 -0
  180. include/momentum/rasterizer/tensor.h +140 -0
  181. include/momentum/rasterizer/text_rasterizer.h +89 -0
  182. include/momentum/rasterizer/utility.h +268 -0
  183. include/momentum/simd/simd.h +221 -0
  184. include/momentum/solver/fwd.h +131 -0
  185. include/momentum/solver/gauss_newton_solver.h +136 -0
  186. include/momentum/solver/gradient_descent_solver.h +65 -0
  187. include/momentum/solver/solver.h +155 -0
  188. include/momentum/solver/solver_function.h +126 -0
  189. include/momentum/solver/subset_gauss_newton_solver.h +109 -0
  190. include/rerun/archetypes/annotation_context.hpp +157 -0
  191. include/rerun/archetypes/arrows2d.hpp +271 -0
  192. include/rerun/archetypes/arrows3d.hpp +257 -0
  193. include/rerun/archetypes/asset3d.hpp +262 -0
  194. include/rerun/archetypes/asset_video.hpp +275 -0
  195. include/rerun/archetypes/bar_chart.hpp +261 -0
  196. include/rerun/archetypes/boxes2d.hpp +293 -0
  197. include/rerun/archetypes/boxes3d.hpp +369 -0
  198. include/rerun/archetypes/capsules3d.hpp +333 -0
  199. include/rerun/archetypes/clear.hpp +180 -0
  200. include/rerun/archetypes/depth_image.hpp +425 -0
  201. include/rerun/archetypes/ellipsoids3d.hpp +384 -0
  202. include/rerun/archetypes/encoded_image.hpp +250 -0
  203. include/rerun/archetypes/geo_line_strings.hpp +166 -0
  204. include/rerun/archetypes/geo_points.hpp +177 -0
  205. include/rerun/archetypes/graph_edges.hpp +152 -0
  206. include/rerun/archetypes/graph_nodes.hpp +206 -0
  207. include/rerun/archetypes/image.hpp +434 -0
  208. include/rerun/archetypes/instance_poses3d.hpp +221 -0
  209. include/rerun/archetypes/line_strips2d.hpp +289 -0
  210. include/rerun/archetypes/line_strips3d.hpp +270 -0
  211. include/rerun/archetypes/mesh3d.hpp +387 -0
  212. include/rerun/archetypes/pinhole.hpp +385 -0
  213. include/rerun/archetypes/points2d.hpp +333 -0
  214. include/rerun/archetypes/points3d.hpp +369 -0
  215. include/rerun/archetypes/recording_properties.hpp +132 -0
  216. include/rerun/archetypes/scalar.hpp +170 -0
  217. include/rerun/archetypes/scalars.hpp +153 -0
  218. include/rerun/archetypes/segmentation_image.hpp +305 -0
  219. include/rerun/archetypes/series_line.hpp +274 -0
  220. include/rerun/archetypes/series_lines.hpp +271 -0
  221. include/rerun/archetypes/series_point.hpp +265 -0
  222. include/rerun/archetypes/series_points.hpp +251 -0
  223. include/rerun/archetypes/tensor.hpp +213 -0
  224. include/rerun/archetypes/text_document.hpp +200 -0
  225. include/rerun/archetypes/text_log.hpp +211 -0
  226. include/rerun/archetypes/transform3d.hpp +925 -0
  227. include/rerun/archetypes/video_frame_reference.hpp +295 -0
  228. include/rerun/archetypes/view_coordinates.hpp +393 -0
  229. include/rerun/archetypes.hpp +43 -0
  230. include/rerun/arrow_utils.hpp +32 -0
  231. include/rerun/as_components.hpp +90 -0
  232. include/rerun/blueprint/archetypes/background.hpp +113 -0
  233. include/rerun/blueprint/archetypes/container_blueprint.hpp +259 -0
  234. include/rerun/blueprint/archetypes/dataframe_query.hpp +178 -0
  235. include/rerun/blueprint/archetypes/entity_behavior.hpp +130 -0
  236. include/rerun/blueprint/archetypes/force_center.hpp +115 -0
  237. include/rerun/blueprint/archetypes/force_collision_radius.hpp +141 -0
  238. include/rerun/blueprint/archetypes/force_link.hpp +136 -0
  239. include/rerun/blueprint/archetypes/force_many_body.hpp +124 -0
  240. include/rerun/blueprint/archetypes/force_position.hpp +132 -0
  241. include/rerun/blueprint/archetypes/line_grid3d.hpp +178 -0
  242. include/rerun/blueprint/archetypes/map_background.hpp +104 -0
  243. include/rerun/blueprint/archetypes/map_zoom.hpp +103 -0
  244. include/rerun/blueprint/archetypes/near_clip_plane.hpp +109 -0
  245. include/rerun/blueprint/archetypes/panel_blueprint.hpp +95 -0
  246. include/rerun/blueprint/archetypes/plot_legend.hpp +118 -0
  247. include/rerun/blueprint/archetypes/scalar_axis.hpp +116 -0
  248. include/rerun/blueprint/archetypes/tensor_scalar_mapping.hpp +146 -0
  249. include/rerun/blueprint/archetypes/tensor_slice_selection.hpp +167 -0
  250. include/rerun/blueprint/archetypes/tensor_view_fit.hpp +95 -0
  251. include/rerun/blueprint/archetypes/view_blueprint.hpp +170 -0
  252. include/rerun/blueprint/archetypes/view_contents.hpp +142 -0
  253. include/rerun/blueprint/archetypes/viewport_blueprint.hpp +200 -0
  254. include/rerun/blueprint/archetypes/visible_time_ranges.hpp +116 -0
  255. include/rerun/blueprint/archetypes/visual_bounds2d.hpp +109 -0
  256. include/rerun/blueprint/archetypes/visualizer_overrides.hpp +113 -0
  257. include/rerun/blueprint/archetypes.hpp +29 -0
  258. include/rerun/blueprint/components/active_tab.hpp +82 -0
  259. include/rerun/blueprint/components/apply_latest_at.hpp +79 -0
  260. include/rerun/blueprint/components/auto_layout.hpp +77 -0
  261. include/rerun/blueprint/components/auto_views.hpp +77 -0
  262. include/rerun/blueprint/components/background_kind.hpp +66 -0
  263. include/rerun/blueprint/components/column_share.hpp +78 -0
  264. include/rerun/blueprint/components/component_column_selector.hpp +81 -0
  265. include/rerun/blueprint/components/container_kind.hpp +65 -0
  266. include/rerun/blueprint/components/corner2d.hpp +64 -0
  267. include/rerun/blueprint/components/enabled.hpp +77 -0
  268. include/rerun/blueprint/components/filter_by_range.hpp +74 -0
  269. include/rerun/blueprint/components/filter_is_not_null.hpp +77 -0
  270. include/rerun/blueprint/components/force_distance.hpp +82 -0
  271. include/rerun/blueprint/components/force_iterations.hpp +82 -0
  272. include/rerun/blueprint/components/force_strength.hpp +82 -0
  273. include/rerun/blueprint/components/grid_columns.hpp +78 -0
  274. include/rerun/blueprint/components/grid_spacing.hpp +78 -0
  275. include/rerun/blueprint/components/included_content.hpp +86 -0
  276. include/rerun/blueprint/components/lock_range_during_zoom.hpp +82 -0
  277. include/rerun/blueprint/components/map_provider.hpp +64 -0
  278. include/rerun/blueprint/components/near_clip_plane.hpp +82 -0
  279. include/rerun/blueprint/components/panel_state.hpp +61 -0
  280. include/rerun/blueprint/components/query_expression.hpp +89 -0
  281. include/rerun/blueprint/components/root_container.hpp +77 -0
  282. include/rerun/blueprint/components/row_share.hpp +78 -0
  283. include/rerun/blueprint/components/selected_columns.hpp +76 -0
  284. include/rerun/blueprint/components/tensor_dimension_index_slider.hpp +90 -0
  285. include/rerun/blueprint/components/timeline_name.hpp +76 -0
  286. include/rerun/blueprint/components/view_class.hpp +76 -0
  287. include/rerun/blueprint/components/view_fit.hpp +61 -0
  288. include/rerun/blueprint/components/view_maximized.hpp +79 -0
  289. include/rerun/blueprint/components/view_origin.hpp +81 -0
  290. include/rerun/blueprint/components/viewer_recommendation_hash.hpp +82 -0
  291. include/rerun/blueprint/components/visible_time_range.hpp +77 -0
  292. include/rerun/blueprint/components/visual_bounds2d.hpp +74 -0
  293. include/rerun/blueprint/components/visualizer_override.hpp +86 -0
  294. include/rerun/blueprint/components/zoom_level.hpp +78 -0
  295. include/rerun/blueprint/components.hpp +41 -0
  296. include/rerun/blueprint/datatypes/component_column_selector.hpp +61 -0
  297. include/rerun/blueprint/datatypes/filter_by_range.hpp +59 -0
  298. include/rerun/blueprint/datatypes/filter_is_not_null.hpp +61 -0
  299. include/rerun/blueprint/datatypes/selected_columns.hpp +62 -0
  300. include/rerun/blueprint/datatypes/tensor_dimension_index_slider.hpp +63 -0
  301. include/rerun/blueprint/datatypes.hpp +9 -0
  302. include/rerun/c/arrow_c_data_interface.h +111 -0
  303. include/rerun/c/compiler_utils.h +10 -0
  304. include/rerun/c/rerun.h +627 -0
  305. include/rerun/c/sdk_info.h +28 -0
  306. include/rerun/collection.hpp +496 -0
  307. include/rerun/collection_adapter.hpp +43 -0
  308. include/rerun/collection_adapter_builtins.hpp +138 -0
  309. include/rerun/compiler_utils.hpp +61 -0
  310. include/rerun/component_batch.hpp +163 -0
  311. include/rerun/component_column.hpp +111 -0
  312. include/rerun/component_descriptor.hpp +142 -0
  313. include/rerun/component_type.hpp +35 -0
  314. include/rerun/components/aggregation_policy.hpp +76 -0
  315. include/rerun/components/albedo_factor.hpp +74 -0
  316. include/rerun/components/annotation_context.hpp +102 -0
  317. include/rerun/components/axis_length.hpp +74 -0
  318. include/rerun/components/blob.hpp +73 -0
  319. include/rerun/components/class_id.hpp +71 -0
  320. include/rerun/components/clear_is_recursive.hpp +75 -0
  321. include/rerun/components/color.hpp +99 -0
  322. include/rerun/components/colormap.hpp +99 -0
  323. include/rerun/components/depth_meter.hpp +84 -0
  324. include/rerun/components/draw_order.hpp +79 -0
  325. include/rerun/components/entity_path.hpp +83 -0
  326. include/rerun/components/fill_mode.hpp +72 -0
  327. include/rerun/components/fill_ratio.hpp +79 -0
  328. include/rerun/components/gamma_correction.hpp +80 -0
  329. include/rerun/components/geo_line_string.hpp +63 -0
  330. include/rerun/components/graph_edge.hpp +75 -0
  331. include/rerun/components/graph_node.hpp +79 -0
  332. include/rerun/components/graph_type.hpp +57 -0
  333. include/rerun/components/half_size2d.hpp +91 -0
  334. include/rerun/components/half_size3d.hpp +95 -0
  335. include/rerun/components/image_buffer.hpp +86 -0
  336. include/rerun/components/image_format.hpp +84 -0
  337. include/rerun/components/image_plane_distance.hpp +77 -0
  338. include/rerun/components/interactive.hpp +76 -0
  339. include/rerun/components/keypoint_id.hpp +74 -0
  340. include/rerun/components/lat_lon.hpp +89 -0
  341. include/rerun/components/length.hpp +77 -0
  342. include/rerun/components/line_strip2d.hpp +73 -0
  343. include/rerun/components/line_strip3d.hpp +73 -0
  344. include/rerun/components/magnification_filter.hpp +63 -0
  345. include/rerun/components/marker_shape.hpp +82 -0
  346. include/rerun/components/marker_size.hpp +74 -0
  347. include/rerun/components/media_type.hpp +157 -0
  348. include/rerun/components/name.hpp +83 -0
  349. include/rerun/components/opacity.hpp +77 -0
  350. include/rerun/components/pinhole_projection.hpp +94 -0
  351. include/rerun/components/plane3d.hpp +75 -0
  352. include/rerun/components/pose_rotation_axis_angle.hpp +73 -0
  353. include/rerun/components/pose_rotation_quat.hpp +71 -0
  354. include/rerun/components/pose_scale3d.hpp +102 -0
  355. include/rerun/components/pose_transform_mat3x3.hpp +87 -0
  356. include/rerun/components/pose_translation3d.hpp +96 -0
  357. include/rerun/components/position2d.hpp +86 -0
  358. include/rerun/components/position3d.hpp +90 -0
  359. include/rerun/components/radius.hpp +98 -0
  360. include/rerun/components/range1d.hpp +75 -0
  361. include/rerun/components/resolution.hpp +88 -0
  362. include/rerun/components/rotation_axis_angle.hpp +72 -0
  363. include/rerun/components/rotation_quat.hpp +71 -0
  364. include/rerun/components/scalar.hpp +76 -0
  365. include/rerun/components/scale3d.hpp +102 -0
  366. include/rerun/components/series_visible.hpp +76 -0
  367. include/rerun/components/show_labels.hpp +79 -0
  368. include/rerun/components/stroke_width.hpp +74 -0
  369. include/rerun/components/tensor_data.hpp +94 -0
  370. include/rerun/components/tensor_dimension_index_selection.hpp +77 -0
  371. include/rerun/components/tensor_height_dimension.hpp +71 -0
  372. include/rerun/components/tensor_width_dimension.hpp +71 -0
  373. include/rerun/components/texcoord2d.hpp +101 -0
  374. include/rerun/components/text.hpp +83 -0
  375. include/rerun/components/text_log_level.hpp +110 -0
  376. include/rerun/components/timestamp.hpp +76 -0
  377. include/rerun/components/transform_mat3x3.hpp +92 -0
  378. include/rerun/components/transform_relation.hpp +66 -0
  379. include/rerun/components/translation3d.hpp +96 -0
  380. include/rerun/components/triangle_indices.hpp +85 -0
  381. include/rerun/components/value_range.hpp +78 -0
  382. include/rerun/components/vector2d.hpp +92 -0
  383. include/rerun/components/vector3d.hpp +96 -0
  384. include/rerun/components/video_timestamp.hpp +120 -0
  385. include/rerun/components/view_coordinates.hpp +346 -0
  386. include/rerun/components/visible.hpp +74 -0
  387. include/rerun/components.hpp +77 -0
  388. include/rerun/config.hpp +52 -0
  389. include/rerun/datatypes/angle.hpp +76 -0
  390. include/rerun/datatypes/annotation_info.hpp +76 -0
  391. include/rerun/datatypes/blob.hpp +67 -0
  392. include/rerun/datatypes/bool.hpp +57 -0
  393. include/rerun/datatypes/channel_datatype.hpp +87 -0
  394. include/rerun/datatypes/class_description.hpp +92 -0
  395. include/rerun/datatypes/class_description_map_elem.hpp +69 -0
  396. include/rerun/datatypes/class_id.hpp +62 -0
  397. include/rerun/datatypes/color_model.hpp +68 -0
  398. include/rerun/datatypes/dvec2d.hpp +76 -0
  399. include/rerun/datatypes/entity_path.hpp +60 -0
  400. include/rerun/datatypes/float32.hpp +62 -0
  401. include/rerun/datatypes/float64.hpp +62 -0
  402. include/rerun/datatypes/image_format.hpp +107 -0
  403. include/rerun/datatypes/keypoint_id.hpp +63 -0
  404. include/rerun/datatypes/keypoint_pair.hpp +65 -0
  405. include/rerun/datatypes/mat3x3.hpp +105 -0
  406. include/rerun/datatypes/mat4x4.hpp +119 -0
  407. include/rerun/datatypes/pixel_format.hpp +142 -0
  408. include/rerun/datatypes/plane3d.hpp +60 -0
  409. include/rerun/datatypes/quaternion.hpp +110 -0
  410. include/rerun/datatypes/range1d.hpp +59 -0
  411. include/rerun/datatypes/range2d.hpp +55 -0
  412. include/rerun/datatypes/rgba32.hpp +94 -0
  413. include/rerun/datatypes/rotation_axis_angle.hpp +67 -0
  414. include/rerun/datatypes/tensor_buffer.hpp +529 -0
  415. include/rerun/datatypes/tensor_data.hpp +100 -0
  416. include/rerun/datatypes/tensor_dimension_index_selection.hpp +58 -0
  417. include/rerun/datatypes/tensor_dimension_selection.hpp +56 -0
  418. include/rerun/datatypes/time_int.hpp +62 -0
  419. include/rerun/datatypes/time_range.hpp +55 -0
  420. include/rerun/datatypes/time_range_boundary.hpp +175 -0
  421. include/rerun/datatypes/uint16.hpp +62 -0
  422. include/rerun/datatypes/uint32.hpp +62 -0
  423. include/rerun/datatypes/uint64.hpp +62 -0
  424. include/rerun/datatypes/utf8.hpp +76 -0
  425. include/rerun/datatypes/utf8pair.hpp +62 -0
  426. include/rerun/datatypes/uuid.hpp +60 -0
  427. include/rerun/datatypes/uvec2d.hpp +76 -0
  428. include/rerun/datatypes/uvec3d.hpp +80 -0
  429. include/rerun/datatypes/uvec4d.hpp +59 -0
  430. include/rerun/datatypes/vec2d.hpp +76 -0
  431. include/rerun/datatypes/vec3d.hpp +80 -0
  432. include/rerun/datatypes/vec4d.hpp +84 -0
  433. include/rerun/datatypes/video_timestamp.hpp +67 -0
  434. include/rerun/datatypes/view_coordinates.hpp +87 -0
  435. include/rerun/datatypes/visible_time_range.hpp +57 -0
  436. include/rerun/datatypes.hpp +51 -0
  437. include/rerun/demo_utils.hpp +75 -0
  438. include/rerun/entity_path.hpp +20 -0
  439. include/rerun/error.hpp +180 -0
  440. include/rerun/half.hpp +10 -0
  441. include/rerun/image_utils.hpp +187 -0
  442. include/rerun/indicator_component.hpp +59 -0
  443. include/rerun/loggable.hpp +54 -0
  444. include/rerun/recording_stream.hpp +960 -0
  445. include/rerun/rerun_sdk_export.hpp +25 -0
  446. include/rerun/result.hpp +86 -0
  447. include/rerun/rotation3d.hpp +33 -0
  448. include/rerun/sdk_info.hpp +20 -0
  449. include/rerun/spawn.hpp +21 -0
  450. include/rerun/spawn_options.hpp +57 -0
  451. include/rerun/string_utils.hpp +16 -0
  452. include/rerun/third_party/cxxopts.hpp +2198 -0
  453. include/rerun/time_column.hpp +288 -0
  454. include/rerun/timeline.hpp +38 -0
  455. include/rerun/type_traits.hpp +40 -0
  456. include/rerun.hpp +86 -0
  457. lib/cmake/axel/axel-config.cmake +45 -0
  458. lib/cmake/axel/axelTargets-release.cmake +19 -0
  459. lib/cmake/axel/axelTargets.cmake +108 -0
  460. lib/cmake/momentum/FindFbxSdk.cmake +115 -0
  461. lib/cmake/momentum/Findre2.cmake +52 -0
  462. lib/cmake/momentum/momentum-config.cmake +67 -0
  463. lib/cmake/momentum/momentumTargets-release.cmake +259 -0
  464. lib/cmake/momentum/momentumTargets.cmake +385 -0
  465. lib/cmake/rerun_sdk/rerun_sdkConfig.cmake +70 -0
  466. lib/cmake/rerun_sdk/rerun_sdkConfigVersion.cmake +83 -0
  467. lib/cmake/rerun_sdk/rerun_sdkTargets-release.cmake +19 -0
  468. lib/cmake/rerun_sdk/rerun_sdkTargets.cmake +108 -0
  469. lib/libarrow.a +0 -0
  470. lib/libarrow_bundled_dependencies.a +0 -0
  471. lib/libaxel.a +0 -0
  472. lib/libmomentum_app_utils.a +0 -0
  473. lib/libmomentum_character.a +0 -0
  474. lib/libmomentum_character_sequence_solver.a +0 -0
  475. lib/libmomentum_character_solver.a +0 -0
  476. lib/libmomentum_common.a +0 -0
  477. lib/libmomentum_diff_ik.a +0 -0
  478. lib/libmomentum_io.a +0 -0
  479. lib/libmomentum_io_common.a +0 -0
  480. lib/libmomentum_io_fbx.a +0 -0
  481. lib/libmomentum_io_gltf.a +0 -0
  482. lib/libmomentum_io_legacy_json.a +0 -0
  483. lib/libmomentum_io_marker.a +0 -0
  484. lib/libmomentum_io_motion.a +0 -0
  485. lib/libmomentum_io_shape.a +0 -0
  486. lib/libmomentum_io_skeleton.a +0 -0
  487. lib/libmomentum_io_urdf.a +0 -0
  488. lib/libmomentum_marker_tracker.a +0 -0
  489. lib/libmomentum_math.a +0 -0
  490. lib/libmomentum_online_qr.a +0 -0
  491. lib/libmomentum_process_markers.a +0 -0
  492. lib/libmomentum_rerun.a +0 -0
  493. lib/libmomentum_simd_constraints.a +0 -0
  494. lib/libmomentum_simd_generalized_loss.a +0 -0
  495. lib/libmomentum_skeleton.a +0 -0
  496. lib/libmomentum_solver.a +0 -0
  497. lib/librerun_c__macos_arm64.a +0 -0
  498. lib/librerun_sdk.a +0 -0
  499. pymomentum/axel.cpython-312-darwin.so +0 -0
  500. pymomentum/backend/__init__.py +16 -0
  501. pymomentum/backend/skel_state_backend.py +631 -0
  502. pymomentum/backend/trs_backend.py +889 -0
  503. pymomentum/backend/utils.py +224 -0
  504. pymomentum/geometry.cpython-312-darwin.so +0 -0
  505. pymomentum/marker_tracking.cpython-312-darwin.so +0 -0
  506. pymomentum/quaternion.py +740 -0
  507. pymomentum/skel_state.py +514 -0
  508. pymomentum/solver.cpython-312-darwin.so +0 -0
  509. pymomentum/solver2.cpython-312-darwin.so +0 -0
  510. pymomentum/torch/character.py +868 -0
  511. pymomentum/torch/parameter_limits.py +494 -0
  512. pymomentum/torch/utility.py +20 -0
  513. pymomentum/trs.py +535 -0
  514. pymomentum_cpu-0.1.93.post0.dist-info/METADATA +126 -0
  515. pymomentum_cpu-0.1.93.post0.dist-info/RECORD +517 -0
  516. pymomentum_cpu-0.1.93.post0.dist-info/WHEEL +5 -0
  517. pymomentum_cpu-0.1.93.post0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,64 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #include <momentum/character/skeleton_state.h>
11
+ #include <momentum/character_solver/fwd.h>
12
+ #include <momentum/character_solver/skeleton_solver_function.h>
13
+ #include <momentum/math/online_householder_qr.h>
14
+ #include <momentum/solver/solver.h>
15
+
16
+ #include <Eigen/Core>
17
+
18
+ namespace momentum {
19
+
20
+ /// Gauss-Newton solver with QR decomposition specific options
21
+ struct GaussNewtonSolverQROptions : SolverOptions {
22
+ /// Damping parameter added to Hessian diagonal for numerical stability; see
23
+ /// https://en.wikipedia.org/wiki/Levenberg%E2%80%93Marquardt_algorithm
24
+ float regularization = 0.05f;
25
+
26
+ /// Flag to enable line search during optimization.
27
+ bool doLineSearch = false;
28
+
29
+ GaussNewtonSolverQROptions() = default;
30
+
31
+ /* implicit */ GaussNewtonSolverQROptions(const SolverOptions& baseOptions)
32
+ : SolverOptions(baseOptions) {
33
+ // Empty
34
+ }
35
+ };
36
+
37
+ template <typename T>
38
+ class GaussNewtonSolverQRT : public SolverT<T> {
39
+ public:
40
+ GaussNewtonSolverQRT(const SolverOptions& options, SkeletonSolverFunctionT<T>* solver);
41
+ ~GaussNewtonSolverQRT() override;
42
+
43
+ [[nodiscard]] std::string_view getName() const override;
44
+
45
+ void setOptions(const SolverOptions& options) final;
46
+
47
+ protected:
48
+ void doIteration() final;
49
+ void initializeSolver() final;
50
+
51
+ private:
52
+ std::unique_ptr<SkeletonStateT<T>> skeletonState_;
53
+ std::unique_ptr<MeshStateT<T>> meshState_;
54
+
55
+ ResizeableMatrix<T> jacobian_;
56
+ ResizeableMatrix<T> residual_;
57
+
58
+ OnlineHouseholderQR<T> qrSolver_;
59
+
60
+ float regularization_;
61
+ bool doLineSearch_;
62
+ };
63
+
64
+ } // namespace momentum
@@ -0,0 +1,176 @@
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_solver/fwd.h>
12
+ #include <momentum/character_solver/skeleton_error_function.h>
13
+ #include <momentum/math/fwd.h>
14
+
15
+ #include <Eigen/Dense>
16
+
17
+ #include <queue>
18
+ #include <vector>
19
+
20
+ namespace momentum {
21
+
22
+ /// Error function for character height constraints
23
+ ///
24
+ /// This error function measures the height of a character mesh by projecting
25
+ /// all vertices onto a specified "up" direction and computing the difference
26
+ /// between the maximum and minimum projections.
27
+ ///
28
+ /// IMPORTANT: Unlike most error functions, this one only depends on specific
29
+ /// active parameters that are automatically determined in the constructor.
30
+ /// Specifically, it uses blend shape, face expression, and scale parameters only
31
+ /// (not pose parameters). The error function achieves this by zeroing out all
32
+ /// inactive parameters before computing the skeleton and mesh state. This allows
33
+ /// us to constrain height independent of pose, e.g. the solver doesn't try to fix
34
+ /// height by having the character bend over.
35
+ template <typename T>
36
+ class HeightErrorFunctionT : public SkeletonErrorFunctionT<T> {
37
+ public:
38
+ /// Construct a height error function
39
+ /// @param character The character to measure height for
40
+ /// @param targetHeight The target height for the character (required)
41
+ /// @param upDirection The direction to measure height along (defaults to Y-axis)
42
+ /// @param k Number of vertices to average for min/max height calculation (defaults to 1)
43
+ ///
44
+ /// This error function automatically uses blend shape, face expression, and
45
+ /// scale parameters only. All other parameters (pose, etc.) are kept inactive.
46
+ explicit HeightErrorFunctionT(
47
+ const Character& character,
48
+ T targetHeight,
49
+ const Eigen::Vector3<T>& upDirection = Eigen::Vector3<T>::UnitY(),
50
+ size_t k = 1);
51
+ ~HeightErrorFunctionT() override;
52
+
53
+ HeightErrorFunctionT(const HeightErrorFunctionT& other) = delete;
54
+ HeightErrorFunctionT(HeightErrorFunctionT&& other) noexcept = delete;
55
+ HeightErrorFunctionT& operator=(const HeightErrorFunctionT& other) = delete;
56
+ HeightErrorFunctionT& operator=(HeightErrorFunctionT&& other) = delete;
57
+
58
+ [[nodiscard]] double getError(
59
+ const ModelParametersT<T>& modelParameters,
60
+ const SkeletonStateT<T>& state,
61
+ const MeshStateT<T>& meshState) final;
62
+
63
+ double getGradient(
64
+ const ModelParametersT<T>& modelParameters,
65
+ const SkeletonStateT<T>& state,
66
+ const MeshStateT<T>& meshState,
67
+ Eigen::Ref<Eigen::VectorX<T>> gradient) final;
68
+
69
+ double getJacobian(
70
+ const ModelParametersT<T>& modelParameters,
71
+ const SkeletonStateT<T>& state,
72
+ const MeshStateT<T>& meshState,
73
+ Eigen::Ref<Eigen::MatrixX<T>> jacobian,
74
+ Eigen::Ref<Eigen::VectorX<T>> residual,
75
+ int& usedRows) final;
76
+
77
+ [[nodiscard]] size_t getJacobianSize() const final;
78
+
79
+ /// Set the target height
80
+ /// @param height The desired height
81
+ void setTargetHeight(T height);
82
+
83
+ /// Get the target height
84
+ [[nodiscard]] T getTargetHeight() const {
85
+ return targetHeight_;
86
+ }
87
+
88
+ /// Set the up direction for height measurement
89
+ /// @param upDirection The direction to measure height along (will be normalized)
90
+ void setUpDirection(const Eigen::Vector3<T>& upDirection);
91
+
92
+ /// Get the up direction
93
+ [[nodiscard]] const Eigen::Vector3<T>& getUpDirection() const {
94
+ return upDirection_;
95
+ }
96
+
97
+ /// Get the character
98
+ [[nodiscard]] const Character* getCharacter() const override {
99
+ return &character_;
100
+ }
101
+
102
+ /// Override to indicate this function does NOT require mesh state
103
+ /// (we maintain our own meshes)
104
+ [[nodiscard]] bool needsMesh() const override {
105
+ return false;
106
+ }
107
+
108
+ private:
109
+ /// Create a copy of model parameters with inactive parameters zeroed out
110
+ /// @param modelParameters The input parameters
111
+ /// @return Modified parameters with only active parameters
112
+ [[nodiscard]] ModelParametersT<T> applyActiveParameters(
113
+ const ModelParametersT<T>& modelParameters) const;
114
+
115
+ /// Result of height calculation
116
+ struct HeightResult {
117
+ T height{};
118
+ std::vector<size_t> minVertexIndices;
119
+ std::vector<T> minVertexWeights;
120
+ std::vector<size_t> maxVertexIndices;
121
+ std::vector<T> maxVertexWeights;
122
+ };
123
+
124
+ /// Calculate the current height of the mesh
125
+ /// @return Height result containing the height and the min/max vertex indices
126
+ [[nodiscard]] HeightResult calculateHeight() const;
127
+
128
+ /// Calculate jacobian contribution from a vertex
129
+ template <typename Derived>
130
+ void calculateVertexJacobian(
131
+ size_t vertexIndex,
132
+ const Eigen::Vector3<T>& jacobianDirection,
133
+ Eigen::MatrixBase<Derived>& jacobian) const;
134
+
135
+ /// Calculate gradient contribution from a vertex
136
+ void calculateVertexGradient(
137
+ size_t vertexIndex,
138
+ const Eigen::Vector3<T>& gradientDirection,
139
+ Eigen::Ref<Eigen::VectorX<T>> gradient) const;
140
+
141
+ /// Calculate world space position derivative for blend shape parameters
142
+ void calculateDWorldPos(
143
+ size_t vertexIndex,
144
+ const Eigen::Vector3<T>& d_restPos,
145
+ Eigen::Vector3<T>& d_worldPos) const;
146
+
147
+ const Character& character_;
148
+
149
+ T targetHeight_;
150
+ Eigen::Vector3<T> upDirection_;
151
+ size_t k_;
152
+
153
+ /// The set of active model parameters (blend shapes, face expressions, and scale)
154
+ ///
155
+ /// This is automatically set up in the constructor and determines which parameters
156
+ /// affect the height measurement. Inactive parameters are zeroed out before
157
+ /// computing the skeleton and mesh state.
158
+ ParameterSet activeModelParams_;
159
+
160
+ /// Internal skeleton state for skinning (computed from active parameters only)
161
+ ///
162
+ /// This is updated in getError/getGradient/getJacobian by zeroing out all
163
+ /// inactive parameters from the input model parameters. This ensures derivatives
164
+ /// w.r.t. inactive parameters are automatically zero.
165
+ mutable SkeletonStateT<T> skeletonState_;
166
+
167
+ /// Internal mesh state (updated using skeletonState_ and active parameters only)
168
+ ///
169
+ /// We maintain our own mesh state because we use skeletonState_ (computed from
170
+ /// active parameters only) rather than the state parameter passed to
171
+ /// getError/getGradient/getJacobian. This is marked mutable so we can update
172
+ /// it in const methods like getError.
173
+ mutable MeshStateT<T> meshState_;
174
+ };
175
+
176
+ } // namespace momentum
@@ -0,0 +1,111 @@
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/skeleton_error_function.h>
12
+ #include <momentum/math/types.h>
13
+
14
+ namespace momentum {
15
+
16
+ /// Constraint that enforces a distance relationship between two points attached to different
17
+ /// joints.
18
+ ///
19
+ /// Each point is specified by a joint index and an offset in the local coordinate system of that
20
+ /// joint.
21
+ template <typename T>
22
+ struct JointToJointDistanceConstraintT {
23
+ /// Index of the first joint.
24
+ size_t joint1 = kInvalidIndex;
25
+
26
+ /// Offset from joint1 in the local coordinate system of joint1.
27
+ Vector3<T> offset1 = Vector3<T>::Zero();
28
+
29
+ /// Index of the second joint.
30
+ size_t joint2 = kInvalidIndex;
31
+
32
+ /// Offset from joint2 in the local coordinate system of joint2.
33
+ Vector3<T> offset2 = Vector3<T>::Zero();
34
+
35
+ /// Target distance between the two points (in world space).
36
+ T targetDistance = T(0);
37
+
38
+ /// Weight for this constraint.
39
+ T weight = T(1);
40
+
41
+ template <typename T2>
42
+ JointToJointDistanceConstraintT<T2> cast() const {
43
+ return {
44
+ this->joint1,
45
+ this->offset1.template cast<T2>(),
46
+ this->joint2,
47
+ this->offset2.template cast<T2>(),
48
+ static_cast<T2>(this->targetDistance),
49
+ static_cast<T2>(this->weight)};
50
+ }
51
+ };
52
+
53
+ /// Error function that penalizes deviation from a target distance between two points attached to
54
+ /// different joints.
55
+ ///
56
+ /// This is useful for enforcing distance constraints between different parts of a character, such
57
+ /// as maintaining a fixed distance between hands or ensuring two joints stay a certain distance
58
+ /// apart.
59
+ template <typename T>
60
+ class JointToJointDistanceErrorFunctionT : public SkeletonErrorFunctionT<T> {
61
+ public:
62
+ explicit JointToJointDistanceErrorFunctionT(const Skeleton& skel, const ParameterTransform& pt);
63
+
64
+ explicit JointToJointDistanceErrorFunctionT(const Character& character);
65
+
66
+ [[nodiscard]] double getError(
67
+ const ModelParametersT<T>& params,
68
+ const SkeletonStateT<T>& state,
69
+ const MeshStateT<T>& meshState) final;
70
+
71
+ double getGradient(
72
+ const ModelParametersT<T>& params,
73
+ const SkeletonStateT<T>& state,
74
+ const MeshStateT<T>& meshState,
75
+ Ref<VectorX<T>> gradient) override;
76
+
77
+ double getJacobian(
78
+ const ModelParametersT<T>& params,
79
+ const SkeletonStateT<T>& state,
80
+ const MeshStateT<T>& meshState,
81
+ Ref<MatrixX<T>> jacobian,
82
+ Ref<VectorX<T>> residual,
83
+ int& usedRows) override;
84
+
85
+ [[nodiscard]] size_t getJacobianSize() const final;
86
+
87
+ /// Add a constraint between two joints with local offsets.
88
+ void addConstraint(
89
+ size_t joint1,
90
+ const Vector3<T>& offset1,
91
+ size_t joint2,
92
+ const Vector3<T>& offset2,
93
+ T targetDistance,
94
+ T weight = T(1));
95
+
96
+ /// Clear all constraints.
97
+ void clearConstraints();
98
+
99
+ /// Get all constraints.
100
+ [[nodiscard]] const std::vector<JointToJointDistanceConstraintT<T>>& getConstraints() const {
101
+ return constraints_;
102
+ }
103
+
104
+ /// Default weight for distance constraints.
105
+ static constexpr T kDistanceWeight = 1e-2f;
106
+
107
+ private:
108
+ std::vector<JointToJointDistanceConstraintT<T>> constraints_;
109
+ };
110
+
111
+ } // namespace momentum
@@ -0,0 +1,57 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #include <momentum/character/parameter_limits.h>
11
+ #include <momentum/character_solver/fwd.h>
12
+ #include <momentum/character_solver/limit_error_function.h>
13
+ #include <momentum/character_solver/skeleton_error_function.h>
14
+
15
+ namespace momentum {
16
+
17
+ template <typename T>
18
+ class LimitErrorFunctionT : public SkeletonErrorFunctionT<T> {
19
+ public:
20
+ LimitErrorFunctionT(
21
+ const Skeleton& skel,
22
+ const ParameterTransform& pt,
23
+ const ParameterLimits& pl = ParameterLimits());
24
+ explicit LimitErrorFunctionT(const Character& character);
25
+ LimitErrorFunctionT(const Character& character, const ParameterLimits& pl);
26
+
27
+ [[nodiscard]] double getError(
28
+ const ModelParametersT<T>& params,
29
+ const SkeletonStateT<T>& state,
30
+ const MeshStateT<T>& meshState) final;
31
+
32
+ double getGradient(
33
+ const ModelParametersT<T>& params,
34
+ const SkeletonStateT<T>& state,
35
+ const MeshStateT<T>& meshState,
36
+ Ref<Eigen::VectorX<T>> gradient) final;
37
+
38
+ double getJacobian(
39
+ const ModelParametersT<T>& params,
40
+ const SkeletonStateT<T>& state,
41
+ const MeshStateT<T>& meshState,
42
+ Ref<Eigen::MatrixX<T>> jacobian,
43
+ Ref<Eigen::VectorX<T>> residual,
44
+ int& usedRows) final;
45
+
46
+ [[nodiscard]] size_t getJacobianSize() const final;
47
+
48
+ void setLimits(const ParameterLimits& lm);
49
+ void setLimits(const Character& character);
50
+
51
+ private:
52
+ // weights for the error functions
53
+ static constexpr float kLimitWeight = 1e+1;
54
+ ParameterLimits limits_;
55
+ };
56
+
57
+ } // namespace momentum
@@ -0,0 +1,64 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #include <momentum/character/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 ModelParametersErrorFunctionT : public SkeletonErrorFunctionT<T> {
18
+ public:
19
+ ModelParametersErrorFunctionT(const Skeleton& skel, const ParameterTransform& pt);
20
+ explicit ModelParametersErrorFunctionT(const Character& character);
21
+
22
+ // Create a ModelParametersError that only targets the specified parameters:
23
+ ModelParametersErrorFunctionT(const Character& character, const ParameterSet& active);
24
+
25
+ [[nodiscard]] double getError(
26
+ const ModelParametersT<T>& parameters,
27
+ const SkeletonStateT<T>& state,
28
+ const MeshStateT<T>& meshState) final;
29
+ double getGradient(
30
+ const ModelParametersT<T>& parameters,
31
+ const SkeletonStateT<T>& state,
32
+ const MeshStateT<T>& meshState,
33
+ Ref<Eigen::VectorX<T>> gradient) final;
34
+ double getJacobian(
35
+ const ModelParametersT<T>& parameters,
36
+ const SkeletonStateT<T>& state,
37
+ const MeshStateT<T>& meshState,
38
+ Ref<Eigen::MatrixX<T>> jacobian,
39
+ Ref<Eigen::VectorX<T>> residual,
40
+ int& usedRows) final;
41
+ [[nodiscard]] size_t getJacobianSize() const final;
42
+
43
+ void setTargetParameters(const ModelParametersT<T>& params, const Eigen::VectorX<T>& weights) {
44
+ this->targetParameters_ = params;
45
+ this->targetWeights_ = weights;
46
+ }
47
+
48
+ [[nodiscard]] const ModelParametersT<T>& getTargetParameters() const {
49
+ return this->targetParameters_;
50
+ }
51
+
52
+ [[nodiscard]] const Eigen::VectorX<T>& getTargetWeights() const {
53
+ return this->targetWeights_;
54
+ }
55
+
56
+ private:
57
+ ModelParametersT<T> targetParameters_;
58
+ Eigen::VectorX<T> targetWeights_;
59
+
60
+ public:
61
+ static constexpr T kMotionWeight = 1e-1;
62
+ };
63
+
64
+ } // namespace momentum
@@ -0,0 +1,73 @@
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/constraint_error_function.h>
11
+
12
+ namespace momentum {
13
+
14
+ /// Normal constraint data: data needed to compute the point-to-plane distance for
15
+ /// "data-to-template" in ICP.
16
+ template <typename T>
17
+ struct NormalDataT : ConstraintData {
18
+ /// The template point defined in the local space
19
+ Vector3<T> localPoint;
20
+ /// The template normal defined in the local space
21
+ Vector3<T> localNormal;
22
+ /// The data point in world space
23
+ Vector3<T> globalPoint;
24
+
25
+ explicit NormalDataT(
26
+ const Vector3<T>& inLocalPt,
27
+ const Vector3<T>& inLocalNorm,
28
+ const Vector3<T>& inTargetPt,
29
+ size_t pIndex,
30
+ float w,
31
+ const std::string& n = {})
32
+ : ConstraintData(pIndex, w, n),
33
+ localPoint(inLocalPt),
34
+ localNormal(inLocalNorm.normalized()),
35
+ globalPoint(inTargetPt) {}
36
+ };
37
+
38
+ /// The NormalErrorFunction computes a "point-to-plane" (signed) distance from a target point to the
39
+ /// plane defined by a local point and a local normal vector. The name is not informative but chosen
40
+ /// for backwards compatibility purpose.
41
+ template <typename T>
42
+ class NormalErrorFunctionT : public ConstraintErrorFunctionT<T, NormalDataT<T>, 1, 2, 1> {
43
+ public:
44
+ explicit NormalErrorFunctionT(
45
+ const Skeleton& skel,
46
+ const ParameterTransform& pt,
47
+ const T& lossAlpha = GeneralizedLossT<T>::kL2,
48
+ const T& lossC = T(1))
49
+ : ConstraintErrorFunctionT<T, NormalDataT<T>, 1, 2, 1>(skel, pt, lossAlpha, lossC) {}
50
+
51
+ explicit NormalErrorFunctionT(
52
+ const Character& character,
53
+ const T& lossAlpha = GeneralizedLossT<T>::kL2,
54
+ const T& lossC = T(1))
55
+ : NormalErrorFunctionT<T>(
56
+ character.skeleton,
57
+ character.parameterTransform,
58
+ lossAlpha,
59
+ lossC) {}
60
+
61
+ /// Default constant weight in MarkerErrorFunction. This can be used for backwards compatibility
62
+ /// in setWeight().
63
+ static constexpr T kLegacyWeight = 1e-4f;
64
+
65
+ protected:
66
+ void evalFunction(
67
+ size_t constrIndex,
68
+ const JointStateT<T>& state,
69
+ Vector<T, 1>& f,
70
+ optional_ref<std::array<Vector3<T>, 2>> v = {},
71
+ optional_ref<std::array<Eigen::Matrix<T, 1, 3>, 2>> dfdv = {}) const final;
72
+ };
73
+ } // namespace momentum
@@ -0,0 +1,74 @@
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/constraint_error_function.h>
11
+
12
+ namespace momentum {
13
+
14
+ /// Constraint data on 3x3 rotation represented in quaternions
15
+ template <typename T>
16
+ struct OrientationDataT : ConstraintData {
17
+ /// Rotation offset in the parent space
18
+ Eigen::Quaternion<T> offset;
19
+ /// Target rotation in global space
20
+ Eigen::Quaternion<T> target;
21
+
22
+ /// param[in] inOffset: input rotation offset in the parent space
23
+ /// param[in] inTarget: input target rotation in global space
24
+ /// param[in] pIndex: joint index of the parent joint
25
+ /// param[in] w: weight
26
+ /// param[in] n: name of this constraint
27
+ explicit OrientationDataT(
28
+ const Eigen::Quaternion<T>& inOffset,
29
+ const Eigen::Quaternion<T>& inTarget,
30
+ size_t pIndex,
31
+ float w,
32
+ const std::string& n = "")
33
+ : ConstraintData(pIndex, w, n),
34
+ offset(inOffset.normalized()),
35
+ target(inTarget.normalized()) {}
36
+ };
37
+
38
+ /// The OrientationErrorFunction minimizes the F-norm of the element-wise difference of a 3x3
39
+ /// rotation matrix to a target rotation. Therefore, function f has 9 numbers (FuncDim), and
40
+ /// NumVec=3 for the 3 rotation axis.
41
+ template <typename T>
42
+ class OrientationErrorFunctionT : public ConstraintErrorFunctionT<T, OrientationDataT<T>, 9, 3, 0> {
43
+ public:
44
+ explicit OrientationErrorFunctionT(
45
+ const Skeleton& skel,
46
+ const ParameterTransform& pt,
47
+ const T& lossAlpha = GeneralizedLossT<T>::kL2,
48
+ const T& lossC = T(1))
49
+ : ConstraintErrorFunctionT<T, OrientationDataT<T>, 9, 3, 0>(skel, pt, lossAlpha, lossC) {}
50
+
51
+ explicit OrientationErrorFunctionT(
52
+ const Character& character,
53
+ const T& lossAlpha = GeneralizedLossT<T>::kL2,
54
+ const T& lossC = T(1))
55
+ : OrientationErrorFunctionT(
56
+ character.skeleton,
57
+ character.parameterTransform,
58
+ lossAlpha,
59
+ lossC) {}
60
+
61
+ /// Default constant weight in MarkerErrorFunction. This can be used for backwards compatibility
62
+ /// in setWeight().
63
+ static constexpr T kLegacyWeight = 1e-1f;
64
+
65
+ protected:
66
+ void evalFunction(
67
+ size_t constrIndex,
68
+ const JointStateT<T>& state,
69
+ Vector<T, 9>& f,
70
+ optional_ref<std::array<Vector3<T>, 3>> v = {},
71
+ optional_ref<std::array<Eigen::Matrix<T, 9, 3>, 3>> dfdv = {}) const final;
72
+ };
73
+
74
+ } // namespace momentum