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,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/character.h>
11
+ #include <momentum/character/locator.h>
12
+ #include <momentum/character/marker.h>
13
+ #include <momentum/character_solver/fwd.h>
14
+ #include <momentum/character_solver/skinned_locator_triangle_error_function.h>
15
+
16
+ namespace momentum {
17
+
18
+ std::vector<std::vector<momentum::PositionData>> createConstraintData(
19
+ std::span<const std::vector<momentum::Marker>> markerData,
20
+ const momentum::LocatorList& locators);
21
+
22
+ std::vector<std::vector<momentum::SkinnedLocatorConstraint>> createSkinnedConstraintData(
23
+ std::span<const std::vector<momentum::Marker>> markerData,
24
+ const momentum::SkinnedLocatorList& locators);
25
+
26
+ // TODO: remove the one in momentum
27
+
28
+ // Create a LocatorCharacter where each locator is a bone in its skeleton. This character is used
29
+ // for calibrating locator offsets (as bone offset parameters).
30
+ momentum::Character createLocatorCharacter(
31
+ const momentum::Character& sourceCharacter,
32
+ const std::string& prefix);
33
+
34
+ /// Convert locators to skinned locators by finding the closest point on the mesh surface that
35
+ /// matches the correct bone index and using the skinned weights from that point. Does not add
36
+ /// parameters for the skinned locators, however, that should be a separate step if you are planning
37
+ /// to solve for their locations.
38
+ /// @param sourceCharacter Character with locators to convert
39
+ /// @param maxDistance Maximum distance to search for the closest point on the mesh surface. If the
40
+ /// locator is further than this distance, it will not be converted.
41
+ momentum::Character locatorsToSkinnedLocators(
42
+ const momentum::Character& sourceCharacter,
43
+ float maxDistance = 3.0f);
44
+
45
+ /// Convert skinned locators to regular locators by selecting the bone with the highest skin weight.
46
+ /// This is useful when exporting to file formats that don't support skinned locators (e.g., Maya).
47
+ /// Each skinned locator will be converted to a regular locator attached to the bone with the
48
+ /// highest weight. The position will be transformed from the rest pose space to the local space
49
+ /// of the selected bone.
50
+ /// @param sourceCharacter Character with skinned locators to convert
51
+ /// @return Character with skinned locators converted to regular locators
52
+ momentum::Character skinnedLocatorsToLocators(const momentum::Character& sourceCharacter);
53
+
54
+ std::vector<momentum::SkinnedLocatorTriangleConstraintT<float>> createSkinnedLocatorMeshConstraints(
55
+ const momentum::Character& character,
56
+ float targetDepth = 1.0f);
57
+
58
+ // Extract locator offsets from a LocatorCharacter for a normal Character given input calibrated
59
+ // parameters
60
+ momentum::LocatorList extractLocatorsFromCharacter(
61
+ const momentum::Character& locatorCharacter,
62
+ const momentum::CharacterParameters& calibParams);
63
+
64
+ // TODO: move to momentum proper
65
+ momentum::ModelParameters extractParameters(
66
+ const momentum::ModelParameters& params,
67
+ const momentum::ParameterSet& parameterSet);
68
+
69
+ std::tuple<Eigen::VectorXf, momentum::LocatorList, momentum::SkinnedLocatorList>
70
+ extractIdAndLocatorsFromParams(
71
+ const momentum::ModelParameters& param,
72
+ const momentum::Character& sourceCharacter,
73
+ const momentum::Character& targetCharacter);
74
+
75
+ Mesh extractBlendShapeFromParams(
76
+ const momentum::ModelParameters& param,
77
+ const momentum::Character& sourceCharacter);
78
+
79
+ void fillIdentity(
80
+ const momentum::ParameterSet& idSet,
81
+ const momentum::ModelParameters& identity,
82
+ Eigen::MatrixXf& motion);
83
+
84
+ // convert from joint to model parameters using only the parameters active in idSet
85
+ ModelParameters jointIdentityToModelIdentity(
86
+ const Character& c,
87
+ const ParameterSet& idSet,
88
+ const JointParameters& jointIdentity);
89
+
90
+ void removeIdentity(
91
+ const momentum::ParameterSet& idSet,
92
+ const momentum::ModelParameters& identity,
93
+ Eigen::MatrixXf& motion);
94
+
95
+ std::vector<std::vector<momentum::Marker>> extractMarkersFromMotion(
96
+ const momentum::Character& character,
97
+ const Eigen::MatrixXf& motion);
98
+
99
+ } // namespace momentum
@@ -0,0 +1,82 @@
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 <limits>
11
+ #include <type_traits>
12
+
13
+ namespace momentum {
14
+
15
+ template <typename T = float>
16
+ [[nodiscard]] constexpr T nan() noexcept {
17
+ return std::numeric_limits<T>::quiet_NaN();
18
+ }
19
+
20
+ /// Returns the tolerance value based on the provided type T
21
+ template <typename T>
22
+ [[nodiscard]] constexpr T Eps(T FloatEps = T(1e-7), T DoubleEps = T(1e-16)) {
23
+ if constexpr (std::is_same_v<T, float>) {
24
+ return FloatEps;
25
+ } else if constexpr (std::is_same_v<T, double>) {
26
+ return DoubleEps;
27
+ }
28
+ }
29
+
30
+ template <typename T = float>
31
+ [[nodiscard]] constexpr T ln2() noexcept {
32
+ return 0.69314718055994530942; ///< log_e 2
33
+ }
34
+
35
+ template <typename T = float>
36
+ [[nodiscard]] constexpr T pi() noexcept {
37
+ return 3.14159265358979323846;
38
+ }
39
+
40
+ template <typename T = float>
41
+ [[nodiscard]] constexpr T twopi() noexcept {
42
+ return T(2) * pi<T>();
43
+ }
44
+
45
+ /// Converts the given angle x (in degrees) to radians.
46
+ ///
47
+ /// If called without an argument, it returns the conversion factor from degrees to radians.
48
+ template <typename T = float>
49
+ [[nodiscard]] constexpr T toRad(T x = T(1)) noexcept {
50
+ static_assert(std::is_floating_point_v<T>, "toRad requires a floating point argument.");
51
+ return x * pi<T>() / T(180);
52
+ }
53
+ // TODO: Support Eigen types to provide consistent conversion function usage with a single argument.
54
+
55
+ /// Converts the given angle x (in radians) to degrees.
56
+ ///
57
+ /// If called without an argument, it returns the conversion factor from radians to degrees.
58
+ template <typename T = float>
59
+ [[nodiscard]] constexpr T toDeg(T x = T(1)) noexcept {
60
+ static_assert(std::is_floating_point_v<T>, "toDeg requires a floating point argument.");
61
+ return x * T(180) / pi<T>();
62
+ }
63
+
64
+ /// Converts the given length x (in centimeters) to meters.
65
+ ///
66
+ /// If called without an argument, it returns the conversion factor from centimeters to meters.
67
+ template <typename T = float>
68
+ [[nodiscard]] constexpr T toM(T x = T(1)) noexcept {
69
+ static_assert(std::is_floating_point_v<T>, "toM requires a floating point argument.");
70
+ return x * T(0.01);
71
+ }
72
+
73
+ /// Converts the given length x (in meters) to centimeters.
74
+ ///
75
+ /// If called without an argument, it returns the conversion factor from meters to centimeters.
76
+ template <typename T = float>
77
+ [[nodiscard]] constexpr T toCm(T x = T(1)) noexcept {
78
+ static_assert(std::is_floating_point_v<T>, "toCm requires a floating point argument.");
79
+ return x * T(100);
80
+ }
81
+
82
+ } // namespace momentum
@@ -0,0 +1,84 @@
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/math/online_householder_qr.h>
11
+ #include <momentum/math/types.h>
12
+
13
+ namespace momentum {
14
+
15
+ //
16
+ // Efficient and numerically stable representation of the generalized
17
+ // Gaussian covariance
18
+ // C = (sigma^2 * I + A^T * A)
19
+ // providing access to the inverse covariance matrix (computed using
20
+ // QR factorization).
21
+ //
22
+ // Note the dimensionality here: C and I are [n x n], A is [m x n]
23
+ // where m can be either larger or smaller than n.
24
+ template <typename T>
25
+ class LowRankCovarianceMatrixT {
26
+ public:
27
+ LowRankCovarianceMatrixT() = default;
28
+
29
+ void reset(T sigma, Eigen::Ref<const Eigen::MatrixX<T>> A);
30
+
31
+ [[nodiscard]] Eigen::Index dimension() const;
32
+
33
+ [[nodiscard]] const Eigen::MatrixX<T>& basis() const;
34
+
35
+ [[nodiscard]] T sigma() const;
36
+
37
+ [[nodiscard]] Eigen::VectorX<T> inverse_times_vec(Eigen::Ref<const Eigen::VectorX<T>> rhs) const;
38
+ [[nodiscard]] Eigen::VectorX<T> times_vec(Eigen::Ref<const Eigen::VectorX<T>> rhs) const;
39
+
40
+ [[nodiscard]] Eigen::MatrixX<T> inverse_times_mat(Eigen::Ref<const Eigen::MatrixX<T>> rhs) const;
41
+ [[nodiscard]] Eigen::MatrixX<T> times_mat(Eigen::Ref<const Eigen::MatrixX<T>> rhs) const;
42
+
43
+ [[nodiscard]] const Eigen::MatrixX<T>& R() const;
44
+
45
+ // The log of the determinant of the covariance matrix
46
+ [[nodiscard]] T logDeterminant() const;
47
+
48
+ // The log of the determinant of the inverse covariance matrix
49
+ [[nodiscard]] T inverse_logDeterminant() const;
50
+
51
+ private:
52
+ // The QR factorization of A is defined by:
53
+ // A = Q*R
54
+ // where Q is orthonormal and R is upper triangular. This online QR solver
55
+ // used here happens to be particularly efficient for the case where the A
56
+ // matrix looks like:
57
+ // A = [ lambda*I ]
58
+ // [ B ]
59
+ // The reason for this is that it allows initialization of the R matrix by
60
+ // a diagonal, and hence only needs to process the rows in W. The
61
+ // resulting factorization is O(m*n^2) to compute, which may (for m << n)
62
+ // be a touch cheaper than the fully general O(n^3) that a "standard" QR
63
+ // factorization or Cholesky would require.
64
+ //
65
+ // Once we have A = Q*R, we can compute (A^T*A)^{-1} by
66
+ // (A^T * A)^{-1} = (R^T * Q^T * Q * R)^{-1}
67
+ // = (R^T * R)^{-1} by orthonormality
68
+ // = (R^{-1}) * R^{-T} distributing the inverse
69
+ //
70
+ // Note that OnlineHouseholderQR does _not_ store the Q matrix (or the
71
+ // information required to reconstruct it, as is more typical) because it
72
+ // assumes that it will be used to solve least squares problems of the form
73
+ // min |Ax - b|_2 and hence can apply Q to b as it is being computed. In
74
+ // our case, however, as noted above we won't be using the Q matrix so this
75
+ // is not a limitation.
76
+ OnlineHouseholderQR<T> qrFactorization_{0};
77
+
78
+ // Low-rank basis:
79
+ Eigen::MatrixX<T> A_;
80
+
81
+ T sigma_ = 0;
82
+ };
83
+
84
+ } // namespace momentum
@@ -0,0 +1,23 @@
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 <fmt/ostream.h>
11
+ #include <Eigen/Core>
12
+
13
+ #if FMT_VERSION > 100000
14
+
15
+ // https://stackoverflow.com/a/73755864
16
+ #ifndef MOMENTUM_FMT_EIGEN_SHARED_PTR_FORMATTER
17
+ #define MOMENTUM_FMT_EIGEN_SHARED_PTR_FORMATTER
18
+ template <typename T>
19
+ struct fmt::formatter<T, std::enable_if_t<std::is_base_of_v<Eigen::DenseBase<T>, T>, char>>
20
+ : ostream_formatter {};
21
+ #endif
22
+
23
+ #endif
@@ -0,0 +1,132 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ // This file is @generated by gen_fwd.py
9
+ // Do not edit this file directly, instead update gen_fwd_input.toml and run:
10
+ // buck run @arvr/mode/platform010/opt //arvr/libraries/momentum:gen_fwd
11
+
12
+ #pragma once
13
+
14
+ #include <memory>
15
+
16
+ namespace momentum {
17
+
18
+ template <typename T>
19
+ struct MeshT;
20
+ using Mesh = MeshT<float>;
21
+ using Meshd = MeshT<double>;
22
+
23
+ using Mesh_p = ::std::shared_ptr<Mesh>;
24
+ using Mesh_u = ::std::unique_ptr<Mesh>;
25
+ using Mesh_w = ::std::weak_ptr<Mesh>;
26
+ using Mesh_const_p = ::std::shared_ptr<const Mesh>;
27
+ using Mesh_const_u = ::std::unique_ptr<const Mesh>;
28
+ using Mesh_const_w = ::std::weak_ptr<const Mesh>;
29
+
30
+ using Meshd_p = ::std::shared_ptr<Meshd>;
31
+ using Meshd_u = ::std::unique_ptr<Meshd>;
32
+ using Meshd_w = ::std::weak_ptr<Meshd>;
33
+ using Meshd_const_p = ::std::shared_ptr<const Meshd>;
34
+ using Meshd_const_u = ::std::unique_ptr<const Meshd>;
35
+ using Meshd_const_w = ::std::weak_ptr<const Meshd>;
36
+
37
+ template <typename T>
38
+ struct MppcaT;
39
+ using Mppca = MppcaT<float>;
40
+ using Mppcad = MppcaT<double>;
41
+
42
+ using Mppca_p = ::std::shared_ptr<Mppca>;
43
+ using Mppca_u = ::std::unique_ptr<Mppca>;
44
+ using Mppca_w = ::std::weak_ptr<Mppca>;
45
+ using Mppca_const_p = ::std::shared_ptr<const Mppca>;
46
+ using Mppca_const_u = ::std::unique_ptr<const Mppca>;
47
+ using Mppca_const_w = ::std::weak_ptr<const Mppca>;
48
+
49
+ using Mppcad_p = ::std::shared_ptr<Mppcad>;
50
+ using Mppcad_u = ::std::unique_ptr<Mppcad>;
51
+ using Mppcad_w = ::std::weak_ptr<Mppcad>;
52
+ using Mppcad_const_p = ::std::shared_ptr<const Mppcad>;
53
+ using Mppcad_const_u = ::std::unique_ptr<const Mppcad>;
54
+ using Mppcad_const_w = ::std::weak_ptr<const Mppcad>;
55
+
56
+ template <typename T>
57
+ struct TransformT;
58
+ using Transform = TransformT<float>;
59
+ using Transformd = TransformT<double>;
60
+
61
+ using Transform_p = ::std::shared_ptr<Transform>;
62
+ using Transform_u = ::std::unique_ptr<Transform>;
63
+ using Transform_w = ::std::weak_ptr<Transform>;
64
+ using Transform_const_p = ::std::shared_ptr<const Transform>;
65
+ using Transform_const_u = ::std::unique_ptr<const Transform>;
66
+ using Transform_const_w = ::std::weak_ptr<const Transform>;
67
+
68
+ using Transformd_p = ::std::shared_ptr<Transformd>;
69
+ using Transformd_u = ::std::unique_ptr<Transformd>;
70
+ using Transformd_w = ::std::weak_ptr<Transformd>;
71
+ using Transformd_const_p = ::std::shared_ptr<const Transformd>;
72
+ using Transformd_const_u = ::std::unique_ptr<const Transformd>;
73
+ using Transformd_const_w = ::std::weak_ptr<const Transformd>;
74
+
75
+ template <typename T>
76
+ class LowRankCovarianceMatrixT;
77
+ using LowRankCovarianceMatrix = LowRankCovarianceMatrixT<float>;
78
+ using LowRankCovarianceMatrixd = LowRankCovarianceMatrixT<double>;
79
+
80
+ using LowRankCovarianceMatrix_p = ::std::shared_ptr<LowRankCovarianceMatrix>;
81
+ using LowRankCovarianceMatrix_u = ::std::unique_ptr<LowRankCovarianceMatrix>;
82
+ using LowRankCovarianceMatrix_w = ::std::weak_ptr<LowRankCovarianceMatrix>;
83
+ using LowRankCovarianceMatrix_const_p = ::std::shared_ptr<const LowRankCovarianceMatrix>;
84
+ using LowRankCovarianceMatrix_const_u = ::std::unique_ptr<const LowRankCovarianceMatrix>;
85
+ using LowRankCovarianceMatrix_const_w = ::std::weak_ptr<const LowRankCovarianceMatrix>;
86
+
87
+ using LowRankCovarianceMatrixd_p = ::std::shared_ptr<LowRankCovarianceMatrixd>;
88
+ using LowRankCovarianceMatrixd_u = ::std::unique_ptr<LowRankCovarianceMatrixd>;
89
+ using LowRankCovarianceMatrixd_w = ::std::weak_ptr<LowRankCovarianceMatrixd>;
90
+ using LowRankCovarianceMatrixd_const_p = ::std::shared_ptr<const LowRankCovarianceMatrixd>;
91
+ using LowRankCovarianceMatrixd_const_u = ::std::unique_ptr<const LowRankCovarianceMatrixd>;
92
+ using LowRankCovarianceMatrixd_const_w = ::std::weak_ptr<const LowRankCovarianceMatrixd>;
93
+
94
+ template <typename T>
95
+ class GeneralizedLossT;
96
+ using GeneralizedLoss = GeneralizedLossT<float>;
97
+ using GeneralizedLossd = GeneralizedLossT<double>;
98
+
99
+ using GeneralizedLoss_p = ::std::shared_ptr<GeneralizedLoss>;
100
+ using GeneralizedLoss_u = ::std::unique_ptr<GeneralizedLoss>;
101
+ using GeneralizedLoss_w = ::std::weak_ptr<GeneralizedLoss>;
102
+ using GeneralizedLoss_const_p = ::std::shared_ptr<const GeneralizedLoss>;
103
+ using GeneralizedLoss_const_u = ::std::unique_ptr<const GeneralizedLoss>;
104
+ using GeneralizedLoss_const_w = ::std::weak_ptr<const GeneralizedLoss>;
105
+
106
+ using GeneralizedLossd_p = ::std::shared_ptr<GeneralizedLossd>;
107
+ using GeneralizedLossd_u = ::std::unique_ptr<GeneralizedLossd>;
108
+ using GeneralizedLossd_w = ::std::weak_ptr<GeneralizedLossd>;
109
+ using GeneralizedLossd_const_p = ::std::shared_ptr<const GeneralizedLossd>;
110
+ using GeneralizedLossd_const_u = ::std::unique_ptr<const GeneralizedLossd>;
111
+ using GeneralizedLossd_const_w = ::std::weak_ptr<const GeneralizedLossd>;
112
+
113
+ template <typename T>
114
+ class SimdGeneralizedLossT;
115
+ using SimdGeneralizedLoss = SimdGeneralizedLossT<float>;
116
+ using SimdGeneralizedLossd = SimdGeneralizedLossT<double>;
117
+
118
+ using SimdGeneralizedLoss_p = ::std::shared_ptr<SimdGeneralizedLoss>;
119
+ using SimdGeneralizedLoss_u = ::std::unique_ptr<SimdGeneralizedLoss>;
120
+ using SimdGeneralizedLoss_w = ::std::weak_ptr<SimdGeneralizedLoss>;
121
+ using SimdGeneralizedLoss_const_p = ::std::shared_ptr<const SimdGeneralizedLoss>;
122
+ using SimdGeneralizedLoss_const_u = ::std::unique_ptr<const SimdGeneralizedLoss>;
123
+ using SimdGeneralizedLoss_const_w = ::std::weak_ptr<const SimdGeneralizedLoss>;
124
+
125
+ using SimdGeneralizedLossd_p = ::std::shared_ptr<SimdGeneralizedLossd>;
126
+ using SimdGeneralizedLossd_u = ::std::unique_ptr<SimdGeneralizedLossd>;
127
+ using SimdGeneralizedLossd_w = ::std::weak_ptr<SimdGeneralizedLossd>;
128
+ using SimdGeneralizedLossd_const_p = ::std::shared_ptr<const SimdGeneralizedLossd>;
129
+ using SimdGeneralizedLossd_const_u = ::std::unique_ptr<const SimdGeneralizedLossd>;
130
+ using SimdGeneralizedLossd_const_w = ::std::weak_ptr<const SimdGeneralizedLossd>;
131
+
132
+ } // namespace momentum
@@ -0,0 +1,61 @@
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
+ namespace momentum {
11
+
12
+ /// Implementation of "A General and Adaptive Robust Loss Function"
13
+ /// (https://arxiv.org/abs/1701.03077).
14
+ /// This loss transforms a squared error value with parameters alpha and c.
15
+ /// Alpha can be approximately thought of as the norm: alpha=2 is the squared L2 norm loss; alpha=1
16
+ /// is a soft L1 norm or the L2-L1/pseudo-Huber loss. Alpha controls the effect of "outliers" (ie.
17
+ /// "robust"). Smaller alpha reduces the contribution of large errors so they don't affect the
18
+ /// result as much. c scales the gradient with respect to the squared error term inversely.
19
+ /// This does not implement solving for alpha. It assumes alpha and c are given as input.
20
+ template <typename T>
21
+ class GeneralizedLossT {
22
+ public:
23
+ // Special case alpha values that are either at singularity or would simplify computation
24
+ static constexpr T kL2 = T(2);
25
+ static constexpr T kL1 = T(1);
26
+ static constexpr T kCauchy = T(0);
27
+ static constexpr T kWelsch = -1e-9; // any number smaller is considered -inf
28
+
29
+ // Alpha can be [-inf, inf] in theory, but it will be numerically unstable if
30
+ // alpha is too large, eg. >100 (large alpha not needed in practice).
31
+ // Similarly, c scales the gradient inversely and quadratically. So too small a value for c will
32
+ // lead to instability.
33
+ // Calculations with log and exp usually require double precision.
34
+ GeneralizedLossT(const T& a = kL2, const T& c = T(1));
35
+
36
+ [[nodiscard]] T value(const T& sqrError) const;
37
+
38
+ /// Derivative of the loss with respective to the input squared error.
39
+ /// This effectively scales the gradient of what's being squared.
40
+ [[nodiscard]] T deriv(const T& sqrError) const;
41
+
42
+ protected:
43
+ enum class LossType {
44
+ L1,
45
+ L2,
46
+ Cauchy,
47
+ Welsch,
48
+ General,
49
+ };
50
+
51
+ // A small threshold for special values
52
+ static constexpr T kEps = 1e-9;
53
+
54
+ const T alpha_;
55
+
56
+ // store 1/c^2 instead of c as a small optimization
57
+ const T invC2_;
58
+
59
+ LossType lossType_;
60
+ };
61
+ } // namespace momentum
@@ -0,0 +1,32 @@
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/math/fwd.h>
11
+ #include <momentum/math/types.h>
12
+
13
+ namespace momentum {
14
+
15
+ /// test whether two given faces of a mesh intersect with each other
16
+ template <typename T>
17
+ bool intersectFace(
18
+ const MeshT<T>& mesh,
19
+ const std::vector<Vector3<T>>& faceNormals,
20
+ int32_t face0,
21
+ int32_t face1);
22
+
23
+ /// test if the mesh self intersects anywhere and return all intersecting face pairs using brute
24
+ /// force
25
+ template <typename T>
26
+ std::vector<std::pair<int32_t, int32_t>> intersectMeshBruteForce(const MeshT<T>& mesh);
27
+ /// test if the mesh self intersects anywhere and return all intersecting face pairs using a bvh
28
+ /// tree
29
+ template <typename T>
30
+ std::vector<std::pair<int32_t, int32_t>> intersectMesh(const MeshT<T>& mesh);
31
+
32
+ } // namespace momentum
@@ -0,0 +1,84 @@
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/math/fwd.h>
11
+ #include <momentum/math/types.h>
12
+
13
+ namespace momentum {
14
+
15
+ /// A generic mesh representation with support for vertices, faces, lines, and texture coordinates.
16
+ ///
17
+ /// @tparam T The scalar type used for vertex coordinates and confidence values (typically float or
18
+ /// double)
19
+ template <typename T>
20
+ struct MeshT {
21
+ /// List of mesh vertices in 3D space
22
+ std::vector<Eigen::Vector3<T>> vertices;
23
+
24
+ /// List of vertex normals (same size as vertices when computed)
25
+ std::vector<Eigen::Vector3<T>> normals;
26
+
27
+ /// List of triangular faces defined by vertex indices
28
+ std::vector<Eigen::Vector3i> faces;
29
+
30
+ /// List of polylines defined by vertex indices
31
+ /// Each inner vector represents a single polyline
32
+ std::vector<std::vector<int32_t>> lines;
33
+
34
+ /// List of per-vertex RGB colors (0-255 for each channel)
35
+ std::vector<Eigen::Vector3b> colors;
36
+
37
+ /// List of per-vertex confidence values
38
+ /// Higher values typically indicate higher confidence in the vertex position
39
+ std::vector<T> confidence;
40
+
41
+ /// List of texture coordinates (UV coordinates).
42
+ ///
43
+ /// The texture coordinates are format-agnostic, and it's the user's responsibility to ensure
44
+ /// their consistent use.
45
+ ///
46
+ /// For GLTF, Momentum stores and saves the texture coordinates as they are represented by the
47
+ /// underlying GLTF parser. When dealing with FBX, the Y-axis is flipped. This distinction is
48
+ /// crucial to understand when working with different formats.
49
+ std::vector<Eigen::Vector2f> texcoords;
50
+
51
+ /// List of texture coordinate indices per face
52
+ /// Maps each face to its corresponding texture coordinates
53
+ std::vector<Eigen::Vector3i> texcoord_faces;
54
+
55
+ /// List of texture coordinate indices per line
56
+ /// Maps each line to its corresponding texture coordinates
57
+ std::vector<std::vector<int32_t>> texcoord_lines;
58
+
59
+ /// Compute vertex normals by averaging connected face normals.
60
+ ///
61
+ /// This method calculates normals for each vertex by averaging the normals of all
62
+ /// connected faces. The resulting normals are normalized to unit length.
63
+ /// If a vertex is part of a degenerate face (e.g., colinear vertices), that face
64
+ /// will not contribute to the vertex normal.
65
+ void updateNormals();
66
+
67
+ /// Cast the mesh to a different scalar type.
68
+ ///
69
+ /// This method creates a new mesh with all numeric data converted to the target type.
70
+ /// Vertex positions, normals, and confidence values are cast to the new type.
71
+ /// Non-numeric data like faces and lines remain unchanged.
72
+ ///
73
+ /// @tparam T2 The target scalar type
74
+ /// @return A new mesh with the target scalar type
75
+ template <typename T2>
76
+ [[nodiscard]] MeshT<T2> cast() const;
77
+
78
+ /// Reset the mesh by clearing all data.
79
+ ///
80
+ /// This method clears all vectors, effectively resetting the mesh to an empty state.
81
+ void reset();
82
+ };
83
+
84
+ } // namespace momentum
@@ -0,0 +1,67 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #include <momentum/math/utility.h>
11
+
12
+ namespace momentum {
13
+
14
+ /// Mixture of Probabilistic Principal Component Analysis (MPPCA)
15
+ /// Based on: http://www.miketipping.com/papers/met-mppca.pdf
16
+ ///
17
+ /// @tparam T Scalar type (float or double)
18
+ template <typename T>
19
+ struct MppcaT {
20
+ /// Dimension of data space
21
+ size_t d = 0;
22
+
23
+ /// Number of mixture components
24
+ size_t p = 0;
25
+
26
+ /// Parameter names (should match dimension d)
27
+ std::vector<std::string> names;
28
+
29
+ /// Mean vectors (p×d matrix)
30
+ Eigen::MatrixX<T> mu;
31
+
32
+ /// Inverse covariance matrices
33
+ std::vector<Eigen::MatrixX<T>> Cinv;
34
+
35
+ /// Matrices for efficient computation
36
+ std::vector<Eigen::MatrixX<T>> L;
37
+
38
+ /// Precomputed responsibility terms
39
+ Eigen::VectorX<T> Rpre;
40
+
41
+ /// Sets model parameters and precomputes matrices
42
+ ///
43
+ /// @param[in] pi Mixture weights
44
+ /// @param[in] mmu Mean vectors
45
+ /// @param[in] W Principal axes matrices
46
+ /// @param[in] sigma2 Noise variances
47
+ void set(
48
+ const VectorX<T>& pi,
49
+ const MatrixX<T>& mmu,
50
+ std::span<const MatrixX<T>> W,
51
+ const VectorX<T>& sigma2);
52
+
53
+ /// Converts to a different scalar type
54
+ ///
55
+ /// @tparam T2 Target scalar type
56
+ /// @return Converted MPPCA model
57
+ template <typename T2>
58
+ [[nodiscard]] MppcaT<T2> cast() const;
59
+
60
+ /// Checks approximate equality with another model
61
+ ///
62
+ /// @param[in] mppcaT Model to compare with
63
+ /// @return true if approximately equal
64
+ [[nodiscard]] bool isApprox(const MppcaT<T>& mppcaT) const;
65
+ };
66
+
67
+ } // namespace momentum