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,80 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #include <momentum/character/mesh_state.h>
11
+ #include <momentum/character/skeleton_state.h>
12
+ #include <momentum/character_solver/fwd.h>
13
+ #include <momentum/character_solver/skeleton_solver_function.h>
14
+ #include <momentum/math/online_householder_qr.h>
15
+ #include <momentum/solver/solver.h>
16
+
17
+ #include <Eigen/Core>
18
+
19
+ namespace momentum {
20
+
21
+ /// Trust Region with QR decomposition specific options
22
+ struct TrustRegionQROptions : SolverOptions {
23
+ /// Trust region radius parameter for the Trust Region solver with QR decomposition.
24
+ float trustRegionRadius_ = 1.0f;
25
+
26
+ TrustRegionQROptions() = default;
27
+
28
+ /* implicit */ TrustRegionQROptions(const SolverOptions& baseOptions)
29
+ : SolverOptions(baseOptions) {
30
+ // Empty
31
+ }
32
+ };
33
+
34
+ template <typename T>
35
+ class TrustRegionQRT : public SolverT<T> {
36
+ public:
37
+ TrustRegionQRT(const SolverOptions& options, SkeletonSolverFunctionT<T>* solverFun);
38
+
39
+ [[nodiscard]] std::string_view getName() const override;
40
+
41
+ void setOptions(const SolverOptions& options) final;
42
+
43
+ void iter() {
44
+ doIteration();
45
+ this->iteration_++;
46
+ }
47
+
48
+ void init() {
49
+ this->iteration_ = 0;
50
+ initializeSolver();
51
+ }
52
+
53
+ Eigen::VectorX<T> getP() {
54
+ return this->parameters_;
55
+ }
56
+
57
+ protected:
58
+ void doIteration() final;
59
+ void initializeSolver() final;
60
+
61
+ private:
62
+ ResizeableMatrix<T> jacobian_;
63
+ ResizeableMatrix<T> residual_;
64
+
65
+ Eigen::VectorX<T> gradientSub_;
66
+ Eigen::MatrixX<T> lambdaDiag_;
67
+ Eigen::VectorX<T> lambdaZero_;
68
+
69
+ OnlineHouseholderQR<T> qrSolver_;
70
+
71
+ SkeletonStateT<T> skeletonState_;
72
+ MeshStateT<T> meshState_;
73
+
74
+ T trustRegionRadius_;
75
+ T maxTrustRegionRadius_ = 10.0;
76
+ T curTrustRegionRadius_ = 1.0;
77
+ Eigen::MatrixX<T> Rmatrix_;
78
+ };
79
+
80
+ } // namespace momentum
@@ -0,0 +1,155 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #include <momentum/character_solver/fwd.h>
11
+ #include <momentum/character_solver/plane_error_function.h>
12
+ #include <momentum/character_solver/position_error_function.h>
13
+ #include <momentum/character_solver/skeleton_error_function.h>
14
+ #include <momentum/math/fwd.h>
15
+
16
+ namespace momentum {
17
+
18
+ template <typename T>
19
+ struct VertexConstraintT {
20
+ int vertexIndex = -1;
21
+ T weight = 1;
22
+ Eigen::Vector3<T> targetPosition;
23
+ Eigen::Vector3<T> targetNormal;
24
+
25
+ template <typename T2>
26
+ VertexConstraintT<T2> cast() const {
27
+ return {
28
+ this->vertexIndex,
29
+ static_cast<T2>(this->weight),
30
+ this->targetPosition.template cast<T2>(),
31
+ this->targetNormal.template cast<T2>()};
32
+ }
33
+ };
34
+
35
+ enum class VertexConstraintType {
36
+ Position, // Target the vertex position
37
+ Plane, // point-to-plane distance using the target normal
38
+ Normal, // point-to-plane distance using the source (body) normal
39
+ SymmetricNormal, // Point-to-plane using a 50/50 mix of source and target normal
40
+ };
41
+
42
+ [[nodiscard]] std::string_view toString(VertexConstraintType type);
43
+
44
+ template <typename T>
45
+ class VertexErrorFunctionT : public SkeletonErrorFunctionT<T> {
46
+ public:
47
+ explicit VertexErrorFunctionT(
48
+ const Character& character,
49
+ VertexConstraintType type = VertexConstraintType::Position,
50
+ uint32_t maxThreads = 0);
51
+ virtual ~VertexErrorFunctionT() override;
52
+
53
+ [[nodiscard]] double getError(
54
+ const ModelParametersT<T>& modelParameters,
55
+ const SkeletonStateT<T>& state,
56
+ const MeshStateT<T>& meshState) final;
57
+
58
+ double getGradient(
59
+ const ModelParametersT<T>& modelParameters,
60
+ const SkeletonStateT<T>& state,
61
+ const MeshStateT<T>& meshState,
62
+ Eigen::Ref<Eigen::VectorX<T>> gradient) final;
63
+
64
+ double getJacobian(
65
+ const ModelParametersT<T>& modelParameters,
66
+ const SkeletonStateT<T>& state,
67
+ const MeshStateT<T>& meshState,
68
+ Eigen::Ref<Eigen::MatrixX<T>> jacobian,
69
+ Eigen::Ref<Eigen::VectorX<T>> residual,
70
+ int& usedRows) final;
71
+
72
+ [[nodiscard]] size_t getJacobianSize() const final;
73
+
74
+ void addConstraint(
75
+ int vertexIndex,
76
+ T weight,
77
+ const Eigen::Vector3<T>& targetPosition,
78
+ const Eigen::Vector3<T>& targetNormal);
79
+ void clearConstraints();
80
+
81
+ [[nodiscard]] const std::vector<VertexConstraintT<T>>& getConstraints() const {
82
+ return constraints_;
83
+ }
84
+
85
+ [[nodiscard]] size_t numConstraints() const {
86
+ return constraints_.size();
87
+ }
88
+
89
+ static constexpr T kPositionWeight = PositionErrorFunctionT<T>::kLegacyWeight;
90
+ static constexpr T kPlaneWeight = PlaneErrorFunctionT<T>::kLegacyWeight;
91
+
92
+ [[nodiscard]] const Character* getCharacter() const override {
93
+ return &character_;
94
+ }
95
+
96
+ /// Override to indicate this function requires mesh state
97
+ [[nodiscard]] bool needsMesh() const override {
98
+ return true;
99
+ }
100
+
101
+ private:
102
+ double calculatePositionJacobian(
103
+ const ModelParametersT<T>& modelParameters,
104
+ const SkeletonStateT<T>& state,
105
+ const MeshStateT<T>& meshState,
106
+ const VertexConstraintT<T>& constr,
107
+ Ref<Eigen::MatrixX<T>> jac,
108
+ Ref<Eigen::VectorX<T>> res) const;
109
+
110
+ double calculateNormalJacobian(
111
+ const ModelParametersT<T>& modelParameters,
112
+ const SkeletonStateT<T>& state,
113
+ const MeshStateT<T>& meshState,
114
+ const VertexConstraintT<T>& constr,
115
+ T sourceNormalWeight,
116
+ T targetNormalWeight,
117
+ Ref<Eigen::MatrixX<T>> jac,
118
+ T& res) const;
119
+
120
+ double calculatePositionGradient(
121
+ const ModelParametersT<T>& modelParameters,
122
+ const SkeletonStateT<T>& state,
123
+ const MeshStateT<T>& meshState,
124
+ const VertexConstraintT<T>& constr,
125
+ Eigen::Ref<Eigen::VectorX<T>> gradient) const;
126
+
127
+ double calculateNormalGradient(
128
+ const ModelParametersT<T>& modelParameters,
129
+ const SkeletonStateT<T>& state,
130
+ const MeshStateT<T>& meshState,
131
+ const VertexConstraintT<T>& constr,
132
+ T sourceNormalWeight,
133
+ T targetNormalWeight,
134
+ Eigen::Ref<Eigen::VectorX<T>> gradient) const;
135
+
136
+ // Utility function used now in calculateNormalJacobian and calculatePositionGradient
137
+ // to calculate derivatives with respect to position in world space (considering skinning)
138
+ void calculateDWorldPos(
139
+ const SkeletonStateT<T>& state,
140
+ const VertexConstraintT<T>& constr,
141
+ const Eigen::Vector3<T>& d_restPos,
142
+ Eigen::Vector3<T>& d_worldPos) const;
143
+
144
+ std::pair<T, T> computeNormalWeights() const;
145
+
146
+ const Character& character_;
147
+
148
+ std::vector<VertexConstraintT<T>> constraints_;
149
+
150
+ const VertexConstraintType constraintType_;
151
+
152
+ uint32_t maxThreads_;
153
+ };
154
+
155
+ } // namespace momentum
@@ -0,0 +1,117 @@
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/fwd.h>
13
+
14
+ namespace momentum {
15
+
16
+ template <typename T>
17
+ struct VertexProjectionConstraintT {
18
+ int vertexIndex = -1;
19
+ T weight = 1;
20
+ Eigen::Vector2<T> targetPosition;
21
+ Eigen::Matrix<T, 3, 4> projection; // Projection matrix
22
+
23
+ template <typename T2>
24
+ VertexProjectionConstraintT<T2> cast() const {
25
+ return {
26
+ this->vertexIndex,
27
+ (T)this->weight,
28
+ this->targetPosition.template cast<T2>(),
29
+ };
30
+ }
31
+ };
32
+
33
+ template <typename T>
34
+ class VertexProjectionErrorFunctionT : public SkeletonErrorFunctionT<T> {
35
+ public:
36
+ explicit VertexProjectionErrorFunctionT(const Character& character, uint32_t maxThreads = 0);
37
+ ~VertexProjectionErrorFunctionT() override;
38
+
39
+ [[nodiscard]] double getError(
40
+ const ModelParametersT<T>& modelParameters,
41
+ const SkeletonStateT<T>& state,
42
+ const MeshStateT<T>& meshState) final;
43
+
44
+ double getGradient(
45
+ const ModelParametersT<T>& modelParameters,
46
+ const SkeletonStateT<T>& state,
47
+ const MeshStateT<T>& meshState,
48
+ Eigen::Ref<Eigen::VectorX<T>> gradient) final;
49
+
50
+ double getJacobian(
51
+ const ModelParametersT<T>& modelParameters,
52
+ const SkeletonStateT<T>& state,
53
+ const MeshStateT<T>& meshState,
54
+ Eigen::Ref<Eigen::MatrixX<T>> jacobian,
55
+ Eigen::Ref<Eigen::VectorX<T>> residual,
56
+ int& usedRows) final;
57
+
58
+ [[nodiscard]] size_t getJacobianSize() const final;
59
+
60
+ void addConstraint(
61
+ int vertexIndex,
62
+ T weight,
63
+ const Eigen::Vector2<T>& targetPosition,
64
+ const Eigen::Matrix<T, 3, 4>& projection);
65
+ void clearConstraints();
66
+
67
+ [[nodiscard]] const std::vector<VertexProjectionConstraintT<T>>& getConstraints() const {
68
+ return constraints_;
69
+ }
70
+
71
+ [[nodiscard]] const Character* getCharacter() const override {
72
+ return &character_;
73
+ }
74
+
75
+ [[nodiscard]] size_t numConstraints() const {
76
+ return constraints_.size();
77
+ }
78
+
79
+ /// Override to indicate this function requires mesh state
80
+ [[nodiscard]] bool needsMesh() const override {
81
+ return true;
82
+ }
83
+
84
+ private:
85
+ double calculateJacobian(
86
+ const ModelParametersT<T>& modelParameters,
87
+ const SkeletonStateT<T>& state,
88
+ const MeshStateT<T>& meshState,
89
+ const VertexProjectionConstraintT<T>& constr,
90
+ Ref<Eigen::MatrixX<T>> jac,
91
+ Ref<Eigen::VectorX<T>> res) const;
92
+
93
+ double calculateGradient(
94
+ const ModelParametersT<T>& modelParameters,
95
+ const SkeletonStateT<T>& state,
96
+ const MeshStateT<T>& meshState,
97
+ const VertexProjectionConstraintT<T>& constr,
98
+ Eigen::Ref<Eigen::VectorX<T>> gradient) const;
99
+
100
+ // Utility function used now in calculateJacobian and calculateGradient
101
+ // to calculate derivatives with respect to position in world space (considering skinning)
102
+ void calculateDWorldPos(
103
+ const SkeletonStateT<T>& state,
104
+ const VertexProjectionConstraintT<T>& constr,
105
+ const Eigen::Vector3<T>& d_restPos,
106
+ Eigen::Vector3<T>& d_worldPos) const;
107
+
108
+ const Character& character_;
109
+
110
+ std::vector<VertexProjectionConstraintT<T>> constraints_;
111
+
112
+ uint32_t maxThreads_;
113
+
114
+ T _nearClip = 1.0f;
115
+ };
116
+
117
+ } // namespace momentum
@@ -0,0 +1,147 @@
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/fwd.h>
13
+
14
+ #include <Eigen/Dense>
15
+ #include <memory>
16
+ #include <vector>
17
+
18
+ namespace momentum {
19
+
20
+ /// Constraint for vertex-to-vertex distance errors
21
+ template <typename T>
22
+ struct VertexVertexDistanceConstraintT {
23
+ int vertexIndex1 = -1; ///< First vertex index
24
+ int vertexIndex2 = -1; ///< Second vertex index
25
+ T weight = 1; ///< Constraint weight
26
+ T targetDistance = 0; ///< Desired distance between the two vertices
27
+
28
+ template <typename T2>
29
+ VertexVertexDistanceConstraintT<T2> cast() const {
30
+ return {
31
+ this->vertexIndex1,
32
+ this->vertexIndex2,
33
+ static_cast<T2>(this->weight),
34
+ static_cast<T2>(this->targetDistance)};
35
+ }
36
+ };
37
+
38
+ /// Error function for vertex-to-vertex distance constraints
39
+ template <typename T>
40
+ class VertexVertexDistanceErrorFunctionT : public SkeletonErrorFunctionT<T> {
41
+ public:
42
+ explicit VertexVertexDistanceErrorFunctionT(const Character& character);
43
+ ~VertexVertexDistanceErrorFunctionT() override;
44
+
45
+ VertexVertexDistanceErrorFunctionT(const VertexVertexDistanceErrorFunctionT& other) = delete;
46
+ VertexVertexDistanceErrorFunctionT(VertexVertexDistanceErrorFunctionT&& other) noexcept = delete;
47
+ VertexVertexDistanceErrorFunctionT& operator=(const VertexVertexDistanceErrorFunctionT& other) =
48
+ delete;
49
+ VertexVertexDistanceErrorFunctionT& operator=(VertexVertexDistanceErrorFunctionT&& other) =
50
+ delete;
51
+
52
+ [[nodiscard]] double getError(
53
+ const ModelParametersT<T>& modelParameters,
54
+ const SkeletonStateT<T>& state,
55
+ const MeshStateT<T>& meshState) final;
56
+
57
+ double getGradient(
58
+ const ModelParametersT<T>& modelParameters,
59
+ const SkeletonStateT<T>& state,
60
+ const MeshStateT<T>& meshState,
61
+ Eigen::Ref<Eigen::VectorX<T>> gradient) final;
62
+
63
+ double getJacobian(
64
+ const ModelParametersT<T>& modelParameters,
65
+ const SkeletonStateT<T>& state,
66
+ const MeshStateT<T>& meshState,
67
+ Eigen::Ref<Eigen::MatrixX<T>> jacobian,
68
+ Eigen::Ref<Eigen::VectorX<T>> residual,
69
+ int& usedRows) final;
70
+
71
+ [[nodiscard]] size_t getJacobianSize() const final;
72
+
73
+ /// Add a vertex-to-vertex distance constraint
74
+ void addConstraint(int vertexIndex1, int vertexIndex2, T weight, T targetDistance);
75
+
76
+ /// Clear all constraints
77
+ void clearConstraints();
78
+
79
+ /// Get all constraints
80
+ [[nodiscard]] const std::vector<VertexVertexDistanceConstraintT<T>>& getConstraints() const {
81
+ return constraints_;
82
+ }
83
+
84
+ /// Get the number of constraints
85
+ [[nodiscard]] size_t numConstraints() const {
86
+ return constraints_.size();
87
+ }
88
+
89
+ /// Get the character
90
+ [[nodiscard]] const Character* getCharacter() const override {
91
+ return &character_;
92
+ }
93
+
94
+ /// Override to indicate this function requires mesh state
95
+ [[nodiscard]] bool needsMesh() const override {
96
+ return true;
97
+ }
98
+
99
+ private:
100
+ /// Calculate jacobian for a distance constraint
101
+ double calculateJacobian(
102
+ const ModelParametersT<T>& modelParameters,
103
+ const SkeletonStateT<T>& state,
104
+ const MeshStateT<T>& meshState,
105
+ const VertexVertexDistanceConstraintT<T>& constraint,
106
+ Eigen::Ref<Eigen::MatrixX<T>> jacobian,
107
+ T& residual) const;
108
+
109
+ /// Calculate gradient for a distance constraint
110
+ double calculateGradient(
111
+ const ModelParametersT<T>& modelParameters,
112
+ const SkeletonStateT<T>& state,
113
+ const MeshStateT<T>& meshState,
114
+ const VertexVertexDistanceConstraintT<T>& constraint,
115
+ Eigen::Ref<Eigen::VectorX<T>> gradient) const;
116
+
117
+ /// Calculate gradient contribution from a single vertex
118
+ void calculateVertexGradient(
119
+ const ModelParametersT<T>& modelParameters,
120
+ const SkeletonStateT<T>& state,
121
+ const MeshStateT<T>& meshState,
122
+ int vertexIndex,
123
+ const Eigen::Vector3<T>& gradientDirection,
124
+ Eigen::Ref<Eigen::VectorX<T>> gradient) const;
125
+
126
+ /// Calculate jacobian contribution from a single vertex
127
+ void calculateVertexJacobian(
128
+ const ModelParametersT<T>& modelParameters,
129
+ const SkeletonStateT<T>& state,
130
+ const MeshStateT<T>& meshState,
131
+ int vertexIndex,
132
+ const Eigen::Vector3<T>& jacobianDirection,
133
+ Eigen::Ref<Eigen::MatrixX<T>> jacobian) const;
134
+
135
+ /// Calculate world space position derivative for blend shape parameters
136
+ void calculateDWorldPos(
137
+ const SkeletonStateT<T>& state,
138
+ int vertexIndex,
139
+ const Eigen::Vector3<T>& d_restPos,
140
+ Eigen::Vector3<T>& d_worldPos) const;
141
+
142
+ const Character& character_;
143
+
144
+ std::vector<VertexVertexDistanceConstraintT<T>> constraints_;
145
+ };
146
+
147
+ } // namespace momentum
@@ -0,0 +1,155 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #include <momentum/common/exception.h>
11
+
12
+ #include <limits>
13
+ #include <memory>
14
+
15
+ namespace momentum {
16
+
17
+ #if defined(_WIN32)
18
+
19
+ [[nodiscard]] inline void* aligned_malloc(size_t size, size_t align) {
20
+ return _aligned_malloc(size, align);
21
+ }
22
+
23
+ inline void aligned_free(void* ptr) {
24
+ return _aligned_free(ptr);
25
+ }
26
+
27
+ #elif (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 130000) || \
28
+ (defined(__ANDROID_API__) && __ANDROID_API__ < 28)
29
+
30
+ [[nodiscard]] inline void* aligned_malloc(size_t size, size_t align) {
31
+ void* result = nullptr;
32
+ posix_memalign(&result, align, size);
33
+ return result;
34
+ }
35
+
36
+ inline void aligned_free(void* ptr) {
37
+ return std::free(ptr);
38
+ }
39
+
40
+ #else
41
+
42
+ [[nodiscard]] inline void* aligned_malloc(size_t size, size_t align) {
43
+ return std::aligned_alloc(align, size);
44
+ }
45
+
46
+ inline void aligned_free(void* ptr) {
47
+ return std::free(ptr);
48
+ }
49
+
50
+ #endif
51
+
52
+ inline constexpr std::size_t roundUpToAlignment(std::size_t value, std::size_t alignment) {
53
+ MT_THROW_IF_T(alignment == 0, std::invalid_argument, "Alignment must be non-zero");
54
+ return ((value + alignment - 1) / alignment) * alignment;
55
+ }
56
+
57
+ /// Allocates a block of memory that can hold `n` elements of type `T` with the specified alignment.
58
+ ///
59
+ /// This function is intended to be used in the `AlignedAllocator::allocate()` method and throws
60
+ /// exceptions as `std::allocator<T>::allocate` does.
61
+ template <typename T, std::size_t Alignment = alignof(T)>
62
+ [[nodiscard]] T* alignedAlloc(std::size_t n) {
63
+ MT_THROW_IF_T(std::numeric_limits<std::size_t>::max() / sizeof(T) < n, std::bad_array_new_length);
64
+
65
+ const std::size_t size = roundUpToAlignment(n * sizeof(T), Alignment);
66
+ void* ptr = aligned_malloc(size, Alignment);
67
+
68
+ MT_THROW_IF_T(ptr == nullptr, std::bad_alloc);
69
+
70
+ return static_cast<T*>(ptr);
71
+ }
72
+
73
+ /// Custom deleter for aligned memory
74
+ struct AlignedDeleter {
75
+ void operator()(void* ptr) const {
76
+ aligned_free(ptr);
77
+ }
78
+ };
79
+
80
+ /// Creates a std::unique_ptr for aligned memory.
81
+ template <typename T, std::size_t Alignment = alignof(T), class Deleter = AlignedDeleter>
82
+ [[nodiscard]] std::unique_ptr<T, Deleter> makeAlignedUnique(
83
+ std::size_t n,
84
+ Deleter deleter = Deleter()) {
85
+ return std::unique_ptr<T, Deleter>(alignedAlloc<T, Alignment>(n), std::move(deleter));
86
+ }
87
+
88
+ /// Creates a std::shared_ptr for aligned memory.
89
+ template <typename T, std::size_t Alignment = alignof(T), class Deleter = AlignedDeleter>
90
+ [[nodiscard]] std::shared_ptr<T> makeAlignedShared(std::size_t n, Deleter deleter = Deleter()) {
91
+ return std::shared_ptr<T>(alignedAlloc<T, Alignment>(n), std::move(deleter));
92
+ }
93
+
94
+ /// An allocator that aligns memory blocks according to a specified alignment.
95
+ /// The allocator is compatible with `std::allocator` and can be used in
96
+ /// place of `std::allocator` in STL containers.
97
+ ///
98
+ /// @tparam T The type of elements that the allocator will allocate.
99
+ /// @tparam Alignment The alignment for the allocated memory blocks.
100
+ template <class T, std::size_t Alignment>
101
+ class AlignedAllocator {
102
+ public:
103
+ using value_type = T;
104
+
105
+ AlignedAllocator() noexcept = default;
106
+
107
+ template <class U>
108
+ explicit AlignedAllocator(const AlignedAllocator<U, Alignment>& /*other*/) noexcept {
109
+ // Empty
110
+ }
111
+
112
+ /// Allocates a block of memory that can hold `n` elements of type `T`.
113
+ ///
114
+ /// @param[in] n The number of elements to allocate space for.
115
+ /// @return A pointer to the first byte of the allocated memory block.
116
+ [[nodiscard]] T* allocate(std::size_t n) {
117
+ return alignedAlloc<T, Alignment>(n);
118
+ }
119
+
120
+ /// Deallocates a block of memory that was previously allocated by `allocate`.
121
+ ///
122
+ /// @param[in] ptr A pointer to the first byte of the memory block to deallocate.
123
+ /// @param size The size of the memory block to deallocate. This parameter is not used, but it is
124
+ /// included to maintain compatibility with `std::allocator`.
125
+ void deallocate(T* ptr, std::size_t /*n*/) noexcept {
126
+ aligned_free(ptr);
127
+ }
128
+
129
+ template <class U>
130
+ struct rebind {
131
+ using other = AlignedAllocator<U, Alignment>;
132
+ };
133
+ };
134
+
135
+ /// Checks if storage allocated from `lhs` can be deallocated from `rhs`, and vice versa.
136
+ ///
137
+ /// This always returns true for stateless allocators.
138
+ template <class T, class U, std::size_t Alignment>
139
+ [[nodiscard]] bool operator==(
140
+ const AlignedAllocator<T, Alignment>& /*lhs*/,
141
+ const AlignedAllocator<U, Alignment>& /*rhs*/) {
142
+ return true;
143
+ }
144
+
145
+ /// Checks if storage allocated from `lhs` cannot be deallocated from `rhs`, and vice versa.
146
+ ///
147
+ /// This always returns false for stateless allocators.
148
+ template <class T, class U, std::size_t Alignment>
149
+ [[nodiscard]] bool operator!=(
150
+ const AlignedAllocator<T, Alignment>& /*lhs*/,
151
+ const AlignedAllocator<U, Alignment>& /*rhs*/) {
152
+ return false;
153
+ }
154
+
155
+ } // namespace momentum
@@ -0,0 +1,27 @@
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
+ #if defined(MOMENTUM_WITH_XR_LOGGER)
11
+
12
+ #include <logging/Checks.h>
13
+
14
+ #define MT_CHECK(condition, ...) XR_CHECK(condition, __VA_ARGS__)
15
+ #define MT_CHECK_LT(val1, val2, ...) XR_CHECK_DETAIL_OP1(val1, val2, <, ##__VA_ARGS__)
16
+ #define MT_CHECK_NOTNULL(ptr, ...) XR_CHECK(ptr != nullptr, ##__VA_ARGS__)
17
+
18
+ #else
19
+
20
+ #include <cassert>
21
+
22
+ // TODO: Support asserts with messages as XR_CHECK does
23
+ #define MT_CHECK(condition, ...) assert(condition)
24
+ #define MT_CHECK_LT(val1, val2, ...) assert(val1 < val2)
25
+ #define MT_CHECK_NOTNULL(ptr, ...) assert(ptr != nullptr)
26
+
27
+ #endif