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,102 @@
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
+ /// Point-on-plane or Point-in-half-plane constraint data.
15
+ /// The constraint uses the plane equation: x.dot(normal) - d = 0; use -d instead of +d to be
16
+ /// backwards compatible with previous implementation.
17
+ template <typename T>
18
+ struct PlaneDataT : ConstraintData {
19
+ Vector3<T> offset;
20
+ Vector3<T> normal;
21
+ T d;
22
+
23
+ explicit PlaneDataT(
24
+ const Vector3<T>& inOffset,
25
+ const Vector3<T>& inNormal,
26
+ const T inD,
27
+ size_t pIndex,
28
+ float w,
29
+ const std::string& n = "")
30
+ : ConstraintData(pIndex, w, n), offset(inOffset), normal(inNormal.normalized()), d(inD) {}
31
+ };
32
+
33
+ /// Create non-penetration half-plane constraints from locators with the input prefix
34
+ template <typename T>
35
+ std::vector<PlaneDataT<T>> createFloorConstraints(
36
+ const std::string& prefix,
37
+ const LocatorList& locators,
38
+ const Vector3<T>& floorNormal,
39
+ const T& floorOffset,
40
+ float weight);
41
+
42
+ /// The PlaneErrorFunction computes the point-on-plane error or point-in-half-plane error.
43
+ /// For point-on-plane error (above = false), it computes the signed distance of a point to a plane
44
+ /// using the plane equation. For half-plane error (above = true), the error is zero when the
45
+ /// distance is greater than zero (ie. the point being above).
46
+ template <typename T>
47
+ class PlaneErrorFunctionT : public ConstraintErrorFunctionT<T, PlaneDataT<T>, 1> {
48
+ public:
49
+ /// Constructor
50
+ ///
51
+ /// @param[in] skel: character skeleton
52
+ /// @param[in] pt: character parameter transformation
53
+ /// @param[in] above: true means "above the plane" (half plane inequality), false means "on the
54
+ /// plane" (equality).
55
+ /// @param[in] lossAlpha: alpha parameter for the loss function
56
+ /// @param[in] lossC: c parameter for the loss function
57
+ explicit PlaneErrorFunctionT(
58
+ const Skeleton& skel,
59
+ const ParameterTransform& pt,
60
+ const bool above = false,
61
+ const T& lossAlpha = GeneralizedLossT<T>::kL2,
62
+ const T& lossC = T(1))
63
+ : ConstraintErrorFunctionT<T, PlaneDataT<T>, 1>(skel, pt, lossAlpha, lossC),
64
+ halfPlane_(above) {}
65
+
66
+ /// A convenience api where character contains info of the skeleton and parameter transform.
67
+ ///
68
+ /// @param[in] character: character definition
69
+ /// @param[in] above: true means "above the plane" (half plane inequality), false means "on the
70
+ /// plane" (equality).
71
+ /// @param[in] lossAlpha: alpha parameter for the loss function
72
+ /// @param[in] lossC: c parameter for the loss function
73
+ explicit PlaneErrorFunctionT(
74
+ const Character& character,
75
+ const bool above = false,
76
+ const T& lossAlpha = GeneralizedLossT<T>::kL2,
77
+ const T& lossC = T(1))
78
+ : PlaneErrorFunctionT(
79
+ character.skeleton,
80
+ character.parameterTransform,
81
+ above,
82
+ lossAlpha,
83
+ lossC) {}
84
+
85
+ /// Default constant weight in MarkerErrorFunction. This can be used for backwards compatibility
86
+ /// in setWeight().
87
+ static constexpr T kLegacyWeight = 1e-4f;
88
+
89
+ protected:
90
+ void evalFunction(
91
+ size_t constrIndex,
92
+ const JointStateT<T>& state,
93
+ Vector<T, 1>& f,
94
+ optional_ref<std::array<Vector3<T>, 1>> v = {},
95
+ optional_ref<std::array<Eigen::Matrix<T, 1, 3>, 1>> /*dfdv*/ = {}) const final;
96
+
97
+ private:
98
+ /// True for an inequality constraint to be *above* the plane rather than *on* the plane
99
+ bool halfPlane_ = false;
100
+ };
101
+
102
+ } // namespace momentum
@@ -0,0 +1,141 @@
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/character_solver/vertex_error_function.h>
15
+ #include <momentum/math/fwd.h>
16
+
17
+ namespace momentum {
18
+
19
+ template <typename T>
20
+ struct PointTriangleVertexConstraintT {
21
+ int srcVertexIndex = -1;
22
+ Eigen::Vector3i tgtTriangleIndices;
23
+ Eigen::Vector3<T> tgtTriangleBaryCoords;
24
+ T depth = 0;
25
+ T weight = 1;
26
+
27
+ template <typename T2>
28
+ PointTriangleVertexConstraintT<T2> cast() const {
29
+ return {
30
+ this->srcVertexIndex,
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 different parts of the mesh together by specifying that a source vertex
39
+ /// should target a location on the mesh defined by a target triangle and its normal. The target
40
+ /// point is specified as sum_i (bary_i * target_triangle_vertex_i) + depth *
41
+ /// target_triangle_normal. Note that this constraint applies "forces" both to the source vertex and
42
+ /// every vertex in the target triangle, so it will actually try to pull both toward each other.
43
+ template <typename T>
44
+ class PointTriangleVertexErrorFunctionT : public SkeletonErrorFunctionT<T> {
45
+ public:
46
+ explicit PointTriangleVertexErrorFunctionT(
47
+ const Character& character,
48
+ VertexConstraintType type = VertexConstraintType::Position);
49
+ virtual ~PointTriangleVertexErrorFunctionT() override;
50
+
51
+ [[nodiscard]] double getError(
52
+ const ModelParametersT<T>& modelParameters,
53
+ const SkeletonStateT<T>& state,
54
+ const MeshStateT<T>& meshState) final;
55
+
56
+ double getGradient(
57
+ const ModelParametersT<T>& modelParameters,
58
+ const SkeletonStateT<T>& state,
59
+ const MeshStateT<T>& meshState,
60
+ Eigen::Ref<Eigen::VectorX<T>> gradient) final;
61
+
62
+ double getJacobian(
63
+ const ModelParametersT<T>& modelParameters,
64
+ const SkeletonStateT<T>& state,
65
+ const MeshStateT<T>& meshState,
66
+ Eigen::Ref<Eigen::MatrixX<T>> jacobian,
67
+ Eigen::Ref<Eigen::VectorX<T>> residual,
68
+ int& usedRows) final;
69
+
70
+ [[nodiscard]] size_t getJacobianSize() const final;
71
+
72
+ void addConstraint(
73
+ int vertexIndex,
74
+ const Eigen::Vector3i& triangleIndices,
75
+ const Eigen::Vector3<T>& triangleBaryCoords,
76
+ float depth = 0,
77
+ T weight = 1);
78
+ void clearConstraints();
79
+
80
+ [[nodiscard]] const std::vector<PointTriangleVertexConstraintT<T>>& getConstraints() const {
81
+ return constraints_;
82
+ }
83
+
84
+ static constexpr T kPositionWeight = PositionErrorFunctionT<T>::kLegacyWeight;
85
+ static constexpr T kPlaneWeight = PlaneErrorFunctionT<T>::kLegacyWeight;
86
+
87
+ size_t getNumVertices() const;
88
+ [[nodiscard]] const Character* getCharacter() const override {
89
+ return &character_;
90
+ }
91
+
92
+ /// Override to indicate this function requires mesh state
93
+ [[nodiscard]] bool needsMesh() const override {
94
+ return true;
95
+ }
96
+
97
+ private:
98
+ double calculatePositionJacobian(
99
+ const ModelParametersT<T>& modelParameters,
100
+ const SkeletonStateT<T>& state,
101
+ const MeshStateT<T>& meshState,
102
+ const PointTriangleVertexConstraintT<T>& constr,
103
+ Ref<Eigen::MatrixX<T>> jac,
104
+ Ref<Eigen::VectorX<T>> res) const;
105
+
106
+ double calculateNormalJacobian(
107
+ const ModelParametersT<T>& modelParameters,
108
+ const SkeletonStateT<T>& state,
109
+ const MeshStateT<T>& meshState,
110
+ const PointTriangleVertexConstraintT<T>& constr,
111
+ T sourceNormalWeight,
112
+ T targetNormalWeight,
113
+ Ref<Eigen::MatrixX<T>> jac,
114
+ T& res) const;
115
+
116
+ double calculatePositionGradient(
117
+ const ModelParametersT<T>& modelParameters,
118
+ const SkeletonStateT<T>& state,
119
+ const MeshStateT<T>& meshState,
120
+ const PointTriangleVertexConstraintT<T>& constr,
121
+ Eigen::Ref<Eigen::VectorX<T>> gradient) const;
122
+
123
+ double calculateNormalGradient(
124
+ const ModelParametersT<T>& modelParameters,
125
+ const SkeletonStateT<T>& state,
126
+ const MeshStateT<T>& meshState,
127
+ const PointTriangleVertexConstraintT<T>& constr,
128
+ T sourceNormalWeight,
129
+ T targetNormalWeight,
130
+ Eigen::Ref<Eigen::VectorX<T>> gradient) const;
131
+
132
+ std::pair<T, T> computeNormalWeights() const;
133
+
134
+ const Character& character_;
135
+
136
+ std::vector<PointTriangleVertexConstraintT<T>> constraints_;
137
+
138
+ const VertexConstraintType constraintType_;
139
+ };
140
+
141
+ } // 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_solver/fwd.h>
11
+ #include <momentum/character_solver/skeleton_error_function.h>
12
+ #include <momentum/math/mppca.h>
13
+
14
+ #include <span>
15
+
16
+ namespace momentum {
17
+
18
+ template <typename T>
19
+ class PosePriorErrorFunctionT : public SkeletonErrorFunctionT<T> {
20
+ public:
21
+ PosePriorErrorFunctionT(
22
+ const Skeleton& skel,
23
+ const ParameterTransform& pt,
24
+ std::shared_ptr<const MppcaT<T>> pp);
25
+ PosePriorErrorFunctionT(const Character& character, std::shared_ptr<const MppcaT<T>> pp);
26
+
27
+ void setPosePrior(std::shared_ptr<const MppcaT<T>> pp);
28
+
29
+ [[nodiscard]] double getError(
30
+ const ModelParametersT<T>& params,
31
+ const SkeletonStateT<T>& state,
32
+ const MeshStateT<T>& meshState) final;
33
+
34
+ double getGradient(
35
+ const ModelParametersT<T>& params,
36
+ const SkeletonStateT<T>& state,
37
+ const MeshStateT<T>& meshState,
38
+ Eigen::Ref<Eigen::VectorX<T>> gradient) final;
39
+
40
+ [[nodiscard]] double logProbability(const ModelParametersT<T>& params) const;
41
+
42
+ double getJacobian(
43
+ const ModelParametersT<T>& params,
44
+ const SkeletonStateT<T>& state,
45
+ const MeshStateT<T>& meshState,
46
+ Eigen::Ref<Eigen::MatrixX<T>> jacobian,
47
+ Eigen::Ref<Eigen::VectorX<T>> residual,
48
+ int& usedRows) final;
49
+
50
+ [[nodiscard]] size_t getJacobianSize() const final;
51
+
52
+ [[nodiscard]] Eigen::VectorX<T> getMeanShape(const ModelParametersT<T>& params) const;
53
+
54
+ protected:
55
+ void loadInternal();
56
+ void getBestFitMode(
57
+ const ModelParametersT<T>& params,
58
+ size_t& bestIdx,
59
+ Eigen::VectorX<T>& bestDiff,
60
+ T& bestR,
61
+ T& minDist) const;
62
+
63
+ std::vector<size_t> ppMap_;
64
+ std::vector<size_t> invMap_;
65
+
66
+ // The pose prior: note that once passed in you must not modify it
67
+ // outside this class. The easiest way to guarantee this is to use
68
+ // the standard loadMppca() functions which already returns a const-
69
+ // valued shared_ptr.
70
+ std::shared_ptr<const MppcaT<T>> posePrior_;
71
+
72
+ // weights for the error functions
73
+ static constexpr T kPosePriorWeight = 1e-3;
74
+
75
+ private:
76
+ // Is used for optimization purpose in getJacobian to allocate memory once
77
+ Eigen::MatrixX<T> gradientL_;
78
+ };
79
+
80
+ } // namespace momentum
@@ -0,0 +1,75 @@
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
+ /// 3D position constraint data
15
+ template <typename T>
16
+ struct PositionDataT : ConstraintData {
17
+ /// Positional offset in the parent joint space
18
+ Vector3<T> offset;
19
+ /// Target position
20
+ Vector3<T> target;
21
+
22
+ explicit PositionDataT(
23
+ const Vector3<T>& inOffset,
24
+ const Vector3<T>& inTarget,
25
+ size_t pIndex,
26
+ float w,
27
+ const std::string& n = "")
28
+ : ConstraintData(pIndex, w, n), offset(inOffset), target(inTarget) {}
29
+ };
30
+
31
+ /// The PositionErrorFunction computes the 3D positional errors from a list of Constraints.
32
+ /// Each constraint specifies a locator on the skeleton (parent joint and offset), and its target 3D
33
+ /// position.
34
+ template <typename T>
35
+ class PositionErrorFunctionT : public ConstraintErrorFunctionT<T, PositionDataT<T>> {
36
+ public:
37
+ /// Constructor
38
+ ///
39
+ /// @param[in] skel: character skeleton
40
+ /// @param[in] pt: character parameter transformation
41
+ /// @param[in] lossAlpha: alpha parameter for the loss function
42
+ /// @param[in] lossC: c parameter for the loss function
43
+ explicit PositionErrorFunctionT(
44
+ const Skeleton& skel,
45
+ const ParameterTransform& pt,
46
+ const T& lossAlpha = GeneralizedLossT<T>::kL2,
47
+ const T& lossC = T(1))
48
+ : ConstraintErrorFunctionT<T, PositionDataT<T>>(skel, pt, lossAlpha, lossC) {}
49
+
50
+ /// A convenience api where character contains info of the skeleton and parameter transform.
51
+ ///
52
+ /// @param[in] character: character definition
53
+ /// @param[in] lossAlpha: alpha parameter for the loss function
54
+ /// @param[in] lossC: c parameter for the loss function
55
+ explicit PositionErrorFunctionT(
56
+ const Character& character,
57
+ const T& lossAlpha = GeneralizedLossT<T>::kL2,
58
+ const T& lossC = T(1))
59
+ : PositionErrorFunctionT(character.skeleton, character.parameterTransform, lossAlpha, lossC) {
60
+ }
61
+
62
+ /// Default constant weight in MarkerErrorFunction. This can be used for backwards compatibility
63
+ /// in setWeight().
64
+ static constexpr T kLegacyWeight = 1e-4f;
65
+
66
+ protected:
67
+ void evalFunction(
68
+ size_t constrIndex,
69
+ const JointStateT<T>& state,
70
+ Vector3<T>& f,
71
+ optional_ref<std::array<Vector3<T>, 1>> v = {},
72
+ optional_ref<std::array<Matrix3<T>, 1>> dfdv = {}) const final;
73
+ };
74
+
75
+ } // namespace momentum
@@ -0,0 +1,93 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+ #include <momentum/character/locator.h>
10
+ #include <momentum/character_solver/skeleton_error_function.h>
11
+
12
+ namespace momentum {
13
+
14
+ template <typename T>
15
+ struct ProjectionConstraintDataT {
16
+ // Project a 3d point (after skinning) to (rxz, ryz, z) where
17
+ // (rx,ry) is the residual.
18
+ //
19
+ // This encodes the target 2d point, the view and camera transforms, and the
20
+ // camera distortion (if any).
21
+ //
22
+ // This projection model was copied from the hand IK FullProjectionConstraint.
23
+ // Ideally we would refactor somehow to make them share more code but
24
+ // the kinematic models are so different this would take some work.
25
+ Eigen::Matrix<T, 3, 4> projection; // Projection matrix
26
+
27
+ size_t parent{}; // parent joint of the constraint
28
+ Eigen::Vector3<T> offset = Eigen::Vector3<T>::Zero(); // relative offset to the parent
29
+ T weight = 1; // constraint weight
30
+
31
+ Eigen::Vector2<T> target = Eigen::Vector2<T>::Zero();
32
+
33
+ static ProjectionConstraintDataT<T> createFromLocator(const momentum::Locator& locator);
34
+ };
35
+
36
+ template <typename T>
37
+ class ProjectionErrorFunctionT : public momentum::SkeletonErrorFunctionT<T> {
38
+ public:
39
+ ProjectionErrorFunctionT(
40
+ const momentum::Skeleton& skel,
41
+ const momentum::ParameterTransform& pt,
42
+ T nearClip = T(1));
43
+
44
+ [[nodiscard]] double getError(
45
+ const momentum::ModelParametersT<T>& params,
46
+ const momentum::SkeletonStateT<T>& state,
47
+ const momentum::MeshStateT<T>& meshState) final;
48
+ double getGradient(
49
+ const momentum::ModelParametersT<T>& params,
50
+ const momentum::SkeletonStateT<T>& state,
51
+ const momentum::MeshStateT<T>& meshState,
52
+ Eigen::Ref<Eigen::VectorX<T>> gradient) final;
53
+ double getJacobian(
54
+ const momentum::ModelParametersT<T>& params,
55
+ const momentum::SkeletonStateT<T>& state,
56
+ const momentum::MeshStateT<T>& meshState,
57
+ Eigen::Ref<Eigen::MatrixX<T>> jacobian,
58
+ Eigen::Ref<Eigen::VectorX<T>> residual,
59
+ int& usedRows) final;
60
+ [[nodiscard]] size_t getJacobianSize() const final;
61
+
62
+ void addConstraint(const ProjectionConstraintDataT<T>& data);
63
+
64
+ void clearConstraints() {
65
+ constraints_.clear();
66
+ }
67
+ [[nodiscard]] bool empty() const {
68
+ return constraints_.empty();
69
+ }
70
+ [[nodiscard]] size_t numConstraints() const {
71
+ return constraints_.size();
72
+ }
73
+ void setConstraints(std::vector<ProjectionConstraintDataT<T>> constraints) {
74
+ constraints_ = std::move(constraints);
75
+ }
76
+
77
+ [[nodiscard]] const std::vector<ProjectionConstraintDataT<T>>& getConstraints() const {
78
+ return constraints_;
79
+ }
80
+
81
+ protected:
82
+ std::vector<ProjectionConstraintDataT<T>> constraints_;
83
+
84
+ // Projection error is roughly in radians, so a value near 1 is reasonable here:
85
+ static constexpr T kProjectionWeight = 1.0f;
86
+
87
+ // Ignore projection constraints involving joints closer than this distance.
88
+ // Prevents divide-by-zero in the projection matrix and bad behavior close to
89
+ // the camera.
90
+ T _nearClip = 1.0f;
91
+ };
92
+
93
+ } // namespace momentum
@@ -0,0 +1,99 @@
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/collision_geometry.h>
11
+ #include <momentum/character/collision_geometry_state.h>
12
+ #include <momentum/character_solver/fwd.h>
13
+ #include <momentum/character_solver/skeleton_error_function.h>
14
+ #include <momentum/common/aligned.h>
15
+ #include <momentum/simd/simd.h>
16
+
17
+ #include <axel/Bvh.h>
18
+
19
+ #include <unordered_set>
20
+ #include <vector>
21
+
22
+ namespace momentum {
23
+
24
+ /// Represents an error function that penalizes self-intersections between collision geometries of
25
+ /// the character.
26
+ ///
27
+ /// The function pre-filters collision geometries to ignore those attached to the same joint, those
28
+ /// intersecting in the rest pose, or those very close in the rest pose.
29
+ template <typename T>
30
+ class SimdCollisionErrorFunctionT : public SkeletonErrorFunctionT<T> {
31
+ public:
32
+ explicit SimdCollisionErrorFunctionT(
33
+ const Skeleton& skel,
34
+ const ParameterTransform& pt,
35
+ const CollisionGeometry& collisionGeometry);
36
+
37
+ explicit SimdCollisionErrorFunctionT(const Character& character);
38
+
39
+ [[nodiscard]] double getError(
40
+ const ModelParametersT<T>& params,
41
+ const SkeletonStateT<T>& state,
42
+ const MeshStateT<T>& /* meshState */) final;
43
+
44
+ double getGradient(
45
+ const ModelParametersT<T>& params,
46
+ const SkeletonStateT<T>& state,
47
+ const MeshStateT<T>& /* meshState */,
48
+ Ref<VectorX<T>> gradient) override;
49
+
50
+ double getJacobian(
51
+ const ModelParametersT<T>& /*unused*/,
52
+ const SkeletonStateT<T>& state,
53
+ const MeshStateT<T>& /* meshState */,
54
+ Ref<MatrixX<T>> jacobian,
55
+ Ref<VectorX<T>> residual,
56
+ int& usedRows) override;
57
+
58
+ [[nodiscard]] size_t getJacobianSize() const final;
59
+
60
+ protected:
61
+ void updateCollisionPairs();
62
+
63
+ // Update collisionState_, bvh_, and collisionPairs_ given the new skeleton state.
64
+ void computeBroadPhase(const SkeletonStateT<T>& state);
65
+
66
+ using PairId = std::pair<size_t, size_t>;
67
+
68
+ struct PairHash {
69
+ std::size_t operator()(const std::pair<size_t, size_t>& p) const {
70
+ // Use the smaller value as the high-order bits and the larger value as the low-order bits
71
+ return (static_cast<uint64_t>(std::min(p.first, p.second)) << (sizeof(size_t) * 8 / 2)) |
72
+ std::max(p.first, p.second);
73
+ }
74
+ };
75
+
76
+ struct PairEqual {
77
+ bool operator()(const PairId& a, const PairId& b) const {
78
+ return (a.first == b.first && a.second == b.second) ||
79
+ (a.first == b.second && a.second == b.first);
80
+ }
81
+ };
82
+
83
+ const CollisionGeometry collisionGeometry_;
84
+
85
+ std::unordered_set<PairId, PairHash, PairEqual> excludingPairIds_;
86
+
87
+ std::vector<std::vector<int, AlignedAllocator<int, momentum::kSimdAlignment>>> collisionPairs_;
88
+
89
+ size_t jacobianSize_ = 0;
90
+
91
+ CollisionGeometryStateT<T> collisionState_;
92
+
93
+ // weights for the error functions
94
+ static constexpr T kCollisionWeight = 5e-3f;
95
+
96
+ axel::Bvh<T> bvh_;
97
+ };
98
+
99
+ } // namespace momentum