pymomentum-cpu 0.0.0__cp312-cp312-manylinux_2_39_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (555) hide show
  1. include/axel/BoundingBox.h +58 -0
  2. include/axel/Bvh.h +708 -0
  3. include/axel/BvhBase.h +75 -0
  4. include/axel/BvhCommon.h +43 -0
  5. include/axel/BvhEmbree.h +86 -0
  6. include/axel/BvhFactory.h +34 -0
  7. include/axel/Checks.h +21 -0
  8. include/axel/KdTree.h +199 -0
  9. include/axel/Log.h +22 -0
  10. include/axel/MeshToSdf.h +123 -0
  11. include/axel/Profile.h +64 -0
  12. include/axel/Ray.h +45 -0
  13. include/axel/SignedDistanceField.h +237 -0
  14. include/axel/SimdKdTree.h +515 -0
  15. include/axel/TriBvh.h +157 -0
  16. include/axel/TriBvhEmbree.h +57 -0
  17. include/axel/common/Constants.h +27 -0
  18. include/axel/common/Types.h +21 -0
  19. include/axel/common/VectorizationTypes.h +58 -0
  20. include/axel/math/BoundingBoxUtils.h +54 -0
  21. include/axel/math/ContinuousCollisionDetection.h +48 -0
  22. include/axel/math/CoplanarityCheck.h +30 -0
  23. include/axel/math/EdgeEdgeDistance.h +31 -0
  24. include/axel/math/MeshHoleFilling.h +98 -0
  25. include/axel/math/PointTriangleProjection.h +34 -0
  26. include/axel/math/PointTriangleProjectionDefinitions.h +209 -0
  27. include/axel/math/RayTriangleIntersection.h +36 -0
  28. include/momentum/character/blend_shape.h +91 -0
  29. include/momentum/character/blend_shape_base.h +70 -0
  30. include/momentum/character/blend_shape_skinning.h +96 -0
  31. include/momentum/character/character.h +272 -0
  32. include/momentum/character/character_state.h +108 -0
  33. include/momentum/character/character_utility.h +128 -0
  34. include/momentum/character/collision_geometry.h +80 -0
  35. include/momentum/character/collision_geometry_state.h +130 -0
  36. include/momentum/character/fwd.h +243 -0
  37. include/momentum/character/inverse_parameter_transform.h +58 -0
  38. include/momentum/character/joint.h +82 -0
  39. include/momentum/character/joint_state.h +241 -0
  40. include/momentum/character/linear_skinning.h +139 -0
  41. include/momentum/character/locator.h +82 -0
  42. include/momentum/character/locator_state.h +43 -0
  43. include/momentum/character/marker.h +48 -0
  44. include/momentum/character/parameter_limits.h +144 -0
  45. include/momentum/character/parameter_transform.h +250 -0
  46. include/momentum/character/pose_shape.h +65 -0
  47. include/momentum/character/skeleton.h +85 -0
  48. include/momentum/character/skeleton_state.h +181 -0
  49. include/momentum/character/skeleton_utility.h +38 -0
  50. include/momentum/character/skin_weights.h +67 -0
  51. include/momentum/character/skinned_locator.h +80 -0
  52. include/momentum/character/types.h +202 -0
  53. include/momentum/character_sequence_solver/fwd.h +200 -0
  54. include/momentum/character_sequence_solver/model_parameters_sequence_error_function.h +62 -0
  55. include/momentum/character_sequence_solver/multipose_solver.h +63 -0
  56. include/momentum/character_sequence_solver/multipose_solver_function.h +80 -0
  57. include/momentum/character_sequence_solver/sequence_error_function.h +95 -0
  58. include/momentum/character_sequence_solver/sequence_solver.h +144 -0
  59. include/momentum/character_sequence_solver/sequence_solver_function.h +126 -0
  60. include/momentum/character_sequence_solver/state_sequence_error_function.h +106 -0
  61. include/momentum/character_sequence_solver/vertex_sequence_error_function.h +125 -0
  62. include/momentum/character_solver/aim_error_function.h +112 -0
  63. include/momentum/character_solver/collision_error_function.h +88 -0
  64. include/momentum/character_solver/collision_error_function_stateless.h +71 -0
  65. include/momentum/character_solver/constraint_error_function-inl.h +321 -0
  66. include/momentum/character_solver/constraint_error_function.h +241 -0
  67. include/momentum/character_solver/distance_error_function.h +74 -0
  68. include/momentum/character_solver/error_function_utils.h +60 -0
  69. include/momentum/character_solver/fixed_axis_error_function.h +139 -0
  70. include/momentum/character_solver/fwd.h +924 -0
  71. include/momentum/character_solver/gauss_newton_solver_qr.h +62 -0
  72. include/momentum/character_solver/limit_error_function.h +53 -0
  73. include/momentum/character_solver/model_parameters_error_function.h +61 -0
  74. include/momentum/character_solver/normal_error_function.h +73 -0
  75. include/momentum/character_solver/orientation_error_function.h +74 -0
  76. include/momentum/character_solver/plane_error_function.h +102 -0
  77. include/momentum/character_solver/point_triangle_vertex_error_function.h +140 -0
  78. include/momentum/character_solver/pose_prior_error_function.h +76 -0
  79. include/momentum/character_solver/position_error_function.h +75 -0
  80. include/momentum/character_solver/projection_error_function.h +90 -0
  81. include/momentum/character_solver/simd_collision_error_function.h +95 -0
  82. include/momentum/character_solver/simd_normal_error_function.h +151 -0
  83. include/momentum/character_solver/simd_plane_error_function.h +154 -0
  84. include/momentum/character_solver/simd_position_error_function.h +155 -0
  85. include/momentum/character_solver/skeleton_error_function.h +136 -0
  86. include/momentum/character_solver/skeleton_solver_function.h +72 -0
  87. include/momentum/character_solver/skinned_locator_error_function.h +163 -0
  88. include/momentum/character_solver/skinned_locator_triangle_error_function.h +138 -0
  89. include/momentum/character_solver/skinning_weight_iterator.h +80 -0
  90. include/momentum/character_solver/state_error_function.h +90 -0
  91. include/momentum/character_solver/transform_pose.h +80 -0
  92. include/momentum/character_solver/trust_region_qr.h +78 -0
  93. include/momentum/character_solver/vertex_error_function.h +154 -0
  94. include/momentum/character_solver/vertex_projection_error_function.h +118 -0
  95. include/momentum/character_solver/vertex_vertex_distance_error_function.h +143 -0
  96. include/momentum/common/aligned.h +155 -0
  97. include/momentum/common/checks.h +27 -0
  98. include/momentum/common/exception.h +70 -0
  99. include/momentum/common/filesystem.h +20 -0
  100. include/momentum/common/fwd.h +27 -0
  101. include/momentum/common/log.h +173 -0
  102. include/momentum/common/log_channel.h +17 -0
  103. include/momentum/common/memory.h +71 -0
  104. include/momentum/common/profile.h +79 -0
  105. include/momentum/common/progress_bar.h +37 -0
  106. include/momentum/common/string.h +52 -0
  107. include/momentum/diff_ik/ceres_utility.h +73 -0
  108. include/momentum/diff_ik/fully_differentiable_body_ik.h +58 -0
  109. include/momentum/diff_ik/fully_differentiable_distance_error_function.h +69 -0
  110. include/momentum/diff_ik/fully_differentiable_motion_error_function.h +46 -0
  111. include/momentum/diff_ik/fully_differentiable_orientation_error_function.h +109 -0
  112. include/momentum/diff_ik/fully_differentiable_pose_prior_error_function.h +76 -0
  113. include/momentum/diff_ik/fully_differentiable_position_error_function.h +133 -0
  114. include/momentum/diff_ik/fully_differentiable_projection_error_function.h +65 -0
  115. include/momentum/diff_ik/fully_differentiable_skeleton_error_function.h +160 -0
  116. include/momentum/diff_ik/fully_differentiable_state_error_function.h +54 -0
  117. include/momentum/diff_ik/fwd.h +385 -0
  118. include/momentum/diff_ik/union_error_function.h +63 -0
  119. include/momentum/gui/rerun/eigen_adapters.h +70 -0
  120. include/momentum/gui/rerun/logger.h +102 -0
  121. include/momentum/gui/rerun/logging_redirect.h +27 -0
  122. include/momentum/io/character_io.h +56 -0
  123. include/momentum/io/common/gsl_utils.h +50 -0
  124. include/momentum/io/common/stream_utils.h +65 -0
  125. include/momentum/io/fbx/fbx_io.h +109 -0
  126. include/momentum/io/fbx/fbx_memory_stream.h +66 -0
  127. include/momentum/io/fbx/openfbx_loader.h +49 -0
  128. include/momentum/io/fbx/polygon_data.h +60 -0
  129. include/momentum/io/gltf/gltf_builder.h +135 -0
  130. include/momentum/io/gltf/gltf_file_format.h +19 -0
  131. include/momentum/io/gltf/gltf_io.h +136 -0
  132. include/momentum/io/gltf/utils/accessor_utils.h +299 -0
  133. include/momentum/io/gltf/utils/coordinate_utils.h +60 -0
  134. include/momentum/io/gltf/utils/json_utils.h +102 -0
  135. include/momentum/io/legacy_json/legacy_json_io.h +70 -0
  136. include/momentum/io/marker/c3d_io.h +29 -0
  137. include/momentum/io/marker/conversions.h +57 -0
  138. include/momentum/io/marker/coordinate_system.h +30 -0
  139. include/momentum/io/marker/marker_io.h +54 -0
  140. include/momentum/io/marker/trc_io.h +27 -0
  141. include/momentum/io/motion/mmo_io.h +97 -0
  142. include/momentum/io/shape/blend_shape_io.h +70 -0
  143. include/momentum/io/shape/pose_shape_io.h +21 -0
  144. include/momentum/io/skeleton/locator_io.h +41 -0
  145. include/momentum/io/skeleton/mppca_io.h +26 -0
  146. include/momentum/io/skeleton/parameter_limits_io.h +25 -0
  147. include/momentum/io/skeleton/parameter_transform_io.h +41 -0
  148. include/momentum/io/skeleton/parameters_io.h +20 -0
  149. include/momentum/io/urdf/urdf_io.h +26 -0
  150. include/momentum/io/usd/usd_io.h +36 -0
  151. include/momentum/marker_tracking/app_utils.h +62 -0
  152. include/momentum/marker_tracking/marker_tracker.h +213 -0
  153. include/momentum/marker_tracking/process_markers.h +58 -0
  154. include/momentum/marker_tracking/tracker_utils.h +90 -0
  155. include/momentum/math/constants.h +82 -0
  156. include/momentum/math/covariance_matrix.h +84 -0
  157. include/momentum/math/fmt_eigen.h +23 -0
  158. include/momentum/math/fwd.h +132 -0
  159. include/momentum/math/generalized_loss.h +61 -0
  160. include/momentum/math/intersection.h +32 -0
  161. include/momentum/math/mesh.h +84 -0
  162. include/momentum/math/mppca.h +67 -0
  163. include/momentum/math/online_householder_qr.h +516 -0
  164. include/momentum/math/random-inl.h +404 -0
  165. include/momentum/math/random.h +310 -0
  166. include/momentum/math/simd_generalized_loss.h +40 -0
  167. include/momentum/math/transform.h +229 -0
  168. include/momentum/math/types.h +461 -0
  169. include/momentum/math/utility.h +251 -0
  170. include/momentum/rasterizer/camera.h +453 -0
  171. include/momentum/rasterizer/fwd.h +102 -0
  172. include/momentum/rasterizer/geometry.h +83 -0
  173. include/momentum/rasterizer/image.h +18 -0
  174. include/momentum/rasterizer/rasterizer.h +583 -0
  175. include/momentum/rasterizer/tensor.h +140 -0
  176. include/momentum/rasterizer/utility.h +268 -0
  177. include/momentum/simd/simd.h +221 -0
  178. include/momentum/solver/fwd.h +131 -0
  179. include/momentum/solver/gauss_newton_solver.h +136 -0
  180. include/momentum/solver/gradient_descent_solver.h +65 -0
  181. include/momentum/solver/solver.h +155 -0
  182. include/momentum/solver/solver_function.h +126 -0
  183. include/momentum/solver/subset_gauss_newton_solver.h +109 -0
  184. include/rerun/archetypes/annotation_context.hpp +157 -0
  185. include/rerun/archetypes/arrows2d.hpp +271 -0
  186. include/rerun/archetypes/arrows3d.hpp +257 -0
  187. include/rerun/archetypes/asset3d.hpp +262 -0
  188. include/rerun/archetypes/asset_video.hpp +275 -0
  189. include/rerun/archetypes/bar_chart.hpp +261 -0
  190. include/rerun/archetypes/boxes2d.hpp +293 -0
  191. include/rerun/archetypes/boxes3d.hpp +369 -0
  192. include/rerun/archetypes/capsules3d.hpp +333 -0
  193. include/rerun/archetypes/clear.hpp +180 -0
  194. include/rerun/archetypes/depth_image.hpp +425 -0
  195. include/rerun/archetypes/ellipsoids3d.hpp +384 -0
  196. include/rerun/archetypes/encoded_image.hpp +250 -0
  197. include/rerun/archetypes/geo_line_strings.hpp +166 -0
  198. include/rerun/archetypes/geo_points.hpp +177 -0
  199. include/rerun/archetypes/graph_edges.hpp +152 -0
  200. include/rerun/archetypes/graph_nodes.hpp +206 -0
  201. include/rerun/archetypes/image.hpp +434 -0
  202. include/rerun/archetypes/instance_poses3d.hpp +221 -0
  203. include/rerun/archetypes/line_strips2d.hpp +289 -0
  204. include/rerun/archetypes/line_strips3d.hpp +270 -0
  205. include/rerun/archetypes/mesh3d.hpp +387 -0
  206. include/rerun/archetypes/pinhole.hpp +385 -0
  207. include/rerun/archetypes/points2d.hpp +333 -0
  208. include/rerun/archetypes/points3d.hpp +369 -0
  209. include/rerun/archetypes/recording_properties.hpp +132 -0
  210. include/rerun/archetypes/scalar.hpp +170 -0
  211. include/rerun/archetypes/scalars.hpp +153 -0
  212. include/rerun/archetypes/segmentation_image.hpp +305 -0
  213. include/rerun/archetypes/series_line.hpp +274 -0
  214. include/rerun/archetypes/series_lines.hpp +271 -0
  215. include/rerun/archetypes/series_point.hpp +265 -0
  216. include/rerun/archetypes/series_points.hpp +251 -0
  217. include/rerun/archetypes/tensor.hpp +213 -0
  218. include/rerun/archetypes/text_document.hpp +200 -0
  219. include/rerun/archetypes/text_log.hpp +211 -0
  220. include/rerun/archetypes/transform3d.hpp +925 -0
  221. include/rerun/archetypes/video_frame_reference.hpp +295 -0
  222. include/rerun/archetypes/view_coordinates.hpp +393 -0
  223. include/rerun/archetypes.hpp +43 -0
  224. include/rerun/arrow_utils.hpp +32 -0
  225. include/rerun/as_components.hpp +90 -0
  226. include/rerun/blueprint/archetypes/background.hpp +113 -0
  227. include/rerun/blueprint/archetypes/container_blueprint.hpp +259 -0
  228. include/rerun/blueprint/archetypes/dataframe_query.hpp +178 -0
  229. include/rerun/blueprint/archetypes/entity_behavior.hpp +130 -0
  230. include/rerun/blueprint/archetypes/force_center.hpp +115 -0
  231. include/rerun/blueprint/archetypes/force_collision_radius.hpp +141 -0
  232. include/rerun/blueprint/archetypes/force_link.hpp +136 -0
  233. include/rerun/blueprint/archetypes/force_many_body.hpp +124 -0
  234. include/rerun/blueprint/archetypes/force_position.hpp +132 -0
  235. include/rerun/blueprint/archetypes/line_grid3d.hpp +178 -0
  236. include/rerun/blueprint/archetypes/map_background.hpp +104 -0
  237. include/rerun/blueprint/archetypes/map_zoom.hpp +103 -0
  238. include/rerun/blueprint/archetypes/near_clip_plane.hpp +109 -0
  239. include/rerun/blueprint/archetypes/panel_blueprint.hpp +95 -0
  240. include/rerun/blueprint/archetypes/plot_legend.hpp +118 -0
  241. include/rerun/blueprint/archetypes/scalar_axis.hpp +116 -0
  242. include/rerun/blueprint/archetypes/tensor_scalar_mapping.hpp +146 -0
  243. include/rerun/blueprint/archetypes/tensor_slice_selection.hpp +167 -0
  244. include/rerun/blueprint/archetypes/tensor_view_fit.hpp +95 -0
  245. include/rerun/blueprint/archetypes/view_blueprint.hpp +170 -0
  246. include/rerun/blueprint/archetypes/view_contents.hpp +142 -0
  247. include/rerun/blueprint/archetypes/viewport_blueprint.hpp +200 -0
  248. include/rerun/blueprint/archetypes/visible_time_ranges.hpp +116 -0
  249. include/rerun/blueprint/archetypes/visual_bounds2d.hpp +109 -0
  250. include/rerun/blueprint/archetypes/visualizer_overrides.hpp +113 -0
  251. include/rerun/blueprint/archetypes.hpp +29 -0
  252. include/rerun/blueprint/components/active_tab.hpp +82 -0
  253. include/rerun/blueprint/components/apply_latest_at.hpp +79 -0
  254. include/rerun/blueprint/components/auto_layout.hpp +77 -0
  255. include/rerun/blueprint/components/auto_views.hpp +77 -0
  256. include/rerun/blueprint/components/background_kind.hpp +66 -0
  257. include/rerun/blueprint/components/column_share.hpp +78 -0
  258. include/rerun/blueprint/components/component_column_selector.hpp +81 -0
  259. include/rerun/blueprint/components/container_kind.hpp +65 -0
  260. include/rerun/blueprint/components/corner2d.hpp +64 -0
  261. include/rerun/blueprint/components/enabled.hpp +77 -0
  262. include/rerun/blueprint/components/filter_by_range.hpp +74 -0
  263. include/rerun/blueprint/components/filter_is_not_null.hpp +77 -0
  264. include/rerun/blueprint/components/force_distance.hpp +82 -0
  265. include/rerun/blueprint/components/force_iterations.hpp +82 -0
  266. include/rerun/blueprint/components/force_strength.hpp +82 -0
  267. include/rerun/blueprint/components/grid_columns.hpp +78 -0
  268. include/rerun/blueprint/components/grid_spacing.hpp +78 -0
  269. include/rerun/blueprint/components/included_content.hpp +86 -0
  270. include/rerun/blueprint/components/lock_range_during_zoom.hpp +82 -0
  271. include/rerun/blueprint/components/map_provider.hpp +64 -0
  272. include/rerun/blueprint/components/near_clip_plane.hpp +82 -0
  273. include/rerun/blueprint/components/panel_state.hpp +61 -0
  274. include/rerun/blueprint/components/query_expression.hpp +89 -0
  275. include/rerun/blueprint/components/root_container.hpp +77 -0
  276. include/rerun/blueprint/components/row_share.hpp +78 -0
  277. include/rerun/blueprint/components/selected_columns.hpp +76 -0
  278. include/rerun/blueprint/components/tensor_dimension_index_slider.hpp +90 -0
  279. include/rerun/blueprint/components/timeline_name.hpp +76 -0
  280. include/rerun/blueprint/components/view_class.hpp +76 -0
  281. include/rerun/blueprint/components/view_fit.hpp +61 -0
  282. include/rerun/blueprint/components/view_maximized.hpp +79 -0
  283. include/rerun/blueprint/components/view_origin.hpp +81 -0
  284. include/rerun/blueprint/components/viewer_recommendation_hash.hpp +82 -0
  285. include/rerun/blueprint/components/visible_time_range.hpp +77 -0
  286. include/rerun/blueprint/components/visual_bounds2d.hpp +74 -0
  287. include/rerun/blueprint/components/visualizer_override.hpp +86 -0
  288. include/rerun/blueprint/components/zoom_level.hpp +78 -0
  289. include/rerun/blueprint/components.hpp +41 -0
  290. include/rerun/blueprint/datatypes/component_column_selector.hpp +61 -0
  291. include/rerun/blueprint/datatypes/filter_by_range.hpp +59 -0
  292. include/rerun/blueprint/datatypes/filter_is_not_null.hpp +61 -0
  293. include/rerun/blueprint/datatypes/selected_columns.hpp +62 -0
  294. include/rerun/blueprint/datatypes/tensor_dimension_index_slider.hpp +63 -0
  295. include/rerun/blueprint/datatypes.hpp +9 -0
  296. include/rerun/c/arrow_c_data_interface.h +111 -0
  297. include/rerun/c/compiler_utils.h +10 -0
  298. include/rerun/c/rerun.h +627 -0
  299. include/rerun/c/sdk_info.h +28 -0
  300. include/rerun/collection.hpp +496 -0
  301. include/rerun/collection_adapter.hpp +43 -0
  302. include/rerun/collection_adapter_builtins.hpp +138 -0
  303. include/rerun/compiler_utils.hpp +61 -0
  304. include/rerun/component_batch.hpp +163 -0
  305. include/rerun/component_column.hpp +111 -0
  306. include/rerun/component_descriptor.hpp +142 -0
  307. include/rerun/component_type.hpp +35 -0
  308. include/rerun/components/aggregation_policy.hpp +76 -0
  309. include/rerun/components/albedo_factor.hpp +74 -0
  310. include/rerun/components/annotation_context.hpp +102 -0
  311. include/rerun/components/axis_length.hpp +74 -0
  312. include/rerun/components/blob.hpp +73 -0
  313. include/rerun/components/class_id.hpp +71 -0
  314. include/rerun/components/clear_is_recursive.hpp +75 -0
  315. include/rerun/components/color.hpp +99 -0
  316. include/rerun/components/colormap.hpp +99 -0
  317. include/rerun/components/depth_meter.hpp +84 -0
  318. include/rerun/components/draw_order.hpp +79 -0
  319. include/rerun/components/entity_path.hpp +83 -0
  320. include/rerun/components/fill_mode.hpp +72 -0
  321. include/rerun/components/fill_ratio.hpp +79 -0
  322. include/rerun/components/gamma_correction.hpp +80 -0
  323. include/rerun/components/geo_line_string.hpp +63 -0
  324. include/rerun/components/graph_edge.hpp +75 -0
  325. include/rerun/components/graph_node.hpp +79 -0
  326. include/rerun/components/graph_type.hpp +57 -0
  327. include/rerun/components/half_size2d.hpp +91 -0
  328. include/rerun/components/half_size3d.hpp +95 -0
  329. include/rerun/components/image_buffer.hpp +86 -0
  330. include/rerun/components/image_format.hpp +84 -0
  331. include/rerun/components/image_plane_distance.hpp +77 -0
  332. include/rerun/components/interactive.hpp +76 -0
  333. include/rerun/components/keypoint_id.hpp +74 -0
  334. include/rerun/components/lat_lon.hpp +89 -0
  335. include/rerun/components/length.hpp +77 -0
  336. include/rerun/components/line_strip2d.hpp +73 -0
  337. include/rerun/components/line_strip3d.hpp +73 -0
  338. include/rerun/components/magnification_filter.hpp +63 -0
  339. include/rerun/components/marker_shape.hpp +82 -0
  340. include/rerun/components/marker_size.hpp +74 -0
  341. include/rerun/components/media_type.hpp +157 -0
  342. include/rerun/components/name.hpp +83 -0
  343. include/rerun/components/opacity.hpp +77 -0
  344. include/rerun/components/pinhole_projection.hpp +94 -0
  345. include/rerun/components/plane3d.hpp +75 -0
  346. include/rerun/components/pose_rotation_axis_angle.hpp +73 -0
  347. include/rerun/components/pose_rotation_quat.hpp +71 -0
  348. include/rerun/components/pose_scale3d.hpp +102 -0
  349. include/rerun/components/pose_transform_mat3x3.hpp +87 -0
  350. include/rerun/components/pose_translation3d.hpp +96 -0
  351. include/rerun/components/position2d.hpp +86 -0
  352. include/rerun/components/position3d.hpp +90 -0
  353. include/rerun/components/radius.hpp +98 -0
  354. include/rerun/components/range1d.hpp +75 -0
  355. include/rerun/components/resolution.hpp +88 -0
  356. include/rerun/components/rotation_axis_angle.hpp +72 -0
  357. include/rerun/components/rotation_quat.hpp +71 -0
  358. include/rerun/components/scalar.hpp +76 -0
  359. include/rerun/components/scale3d.hpp +102 -0
  360. include/rerun/components/series_visible.hpp +76 -0
  361. include/rerun/components/show_labels.hpp +79 -0
  362. include/rerun/components/stroke_width.hpp +74 -0
  363. include/rerun/components/tensor_data.hpp +94 -0
  364. include/rerun/components/tensor_dimension_index_selection.hpp +77 -0
  365. include/rerun/components/tensor_height_dimension.hpp +71 -0
  366. include/rerun/components/tensor_width_dimension.hpp +71 -0
  367. include/rerun/components/texcoord2d.hpp +101 -0
  368. include/rerun/components/text.hpp +83 -0
  369. include/rerun/components/text_log_level.hpp +110 -0
  370. include/rerun/components/timestamp.hpp +76 -0
  371. include/rerun/components/transform_mat3x3.hpp +92 -0
  372. include/rerun/components/transform_relation.hpp +66 -0
  373. include/rerun/components/translation3d.hpp +96 -0
  374. include/rerun/components/triangle_indices.hpp +85 -0
  375. include/rerun/components/value_range.hpp +78 -0
  376. include/rerun/components/vector2d.hpp +92 -0
  377. include/rerun/components/vector3d.hpp +96 -0
  378. include/rerun/components/video_timestamp.hpp +120 -0
  379. include/rerun/components/view_coordinates.hpp +346 -0
  380. include/rerun/components/visible.hpp +74 -0
  381. include/rerun/components.hpp +77 -0
  382. include/rerun/config.hpp +52 -0
  383. include/rerun/datatypes/angle.hpp +76 -0
  384. include/rerun/datatypes/annotation_info.hpp +76 -0
  385. include/rerun/datatypes/blob.hpp +67 -0
  386. include/rerun/datatypes/bool.hpp +57 -0
  387. include/rerun/datatypes/channel_datatype.hpp +87 -0
  388. include/rerun/datatypes/class_description.hpp +92 -0
  389. include/rerun/datatypes/class_description_map_elem.hpp +69 -0
  390. include/rerun/datatypes/class_id.hpp +62 -0
  391. include/rerun/datatypes/color_model.hpp +68 -0
  392. include/rerun/datatypes/dvec2d.hpp +76 -0
  393. include/rerun/datatypes/entity_path.hpp +60 -0
  394. include/rerun/datatypes/float32.hpp +62 -0
  395. include/rerun/datatypes/float64.hpp +62 -0
  396. include/rerun/datatypes/image_format.hpp +107 -0
  397. include/rerun/datatypes/keypoint_id.hpp +63 -0
  398. include/rerun/datatypes/keypoint_pair.hpp +65 -0
  399. include/rerun/datatypes/mat3x3.hpp +105 -0
  400. include/rerun/datatypes/mat4x4.hpp +119 -0
  401. include/rerun/datatypes/pixel_format.hpp +142 -0
  402. include/rerun/datatypes/plane3d.hpp +60 -0
  403. include/rerun/datatypes/quaternion.hpp +110 -0
  404. include/rerun/datatypes/range1d.hpp +59 -0
  405. include/rerun/datatypes/range2d.hpp +55 -0
  406. include/rerun/datatypes/rgba32.hpp +94 -0
  407. include/rerun/datatypes/rotation_axis_angle.hpp +67 -0
  408. include/rerun/datatypes/tensor_buffer.hpp +529 -0
  409. include/rerun/datatypes/tensor_data.hpp +100 -0
  410. include/rerun/datatypes/tensor_dimension_index_selection.hpp +58 -0
  411. include/rerun/datatypes/tensor_dimension_selection.hpp +56 -0
  412. include/rerun/datatypes/time_int.hpp +62 -0
  413. include/rerun/datatypes/time_range.hpp +55 -0
  414. include/rerun/datatypes/time_range_boundary.hpp +175 -0
  415. include/rerun/datatypes/uint16.hpp +62 -0
  416. include/rerun/datatypes/uint32.hpp +62 -0
  417. include/rerun/datatypes/uint64.hpp +62 -0
  418. include/rerun/datatypes/utf8.hpp +76 -0
  419. include/rerun/datatypes/utf8pair.hpp +62 -0
  420. include/rerun/datatypes/uuid.hpp +60 -0
  421. include/rerun/datatypes/uvec2d.hpp +76 -0
  422. include/rerun/datatypes/uvec3d.hpp +80 -0
  423. include/rerun/datatypes/uvec4d.hpp +59 -0
  424. include/rerun/datatypes/vec2d.hpp +76 -0
  425. include/rerun/datatypes/vec3d.hpp +80 -0
  426. include/rerun/datatypes/vec4d.hpp +84 -0
  427. include/rerun/datatypes/video_timestamp.hpp +67 -0
  428. include/rerun/datatypes/view_coordinates.hpp +87 -0
  429. include/rerun/datatypes/visible_time_range.hpp +57 -0
  430. include/rerun/datatypes.hpp +51 -0
  431. include/rerun/demo_utils.hpp +75 -0
  432. include/rerun/entity_path.hpp +20 -0
  433. include/rerun/error.hpp +180 -0
  434. include/rerun/half.hpp +10 -0
  435. include/rerun/image_utils.hpp +187 -0
  436. include/rerun/indicator_component.hpp +59 -0
  437. include/rerun/loggable.hpp +54 -0
  438. include/rerun/recording_stream.hpp +960 -0
  439. include/rerun/rerun_sdk_export.hpp +25 -0
  440. include/rerun/result.hpp +86 -0
  441. include/rerun/rotation3d.hpp +33 -0
  442. include/rerun/sdk_info.hpp +20 -0
  443. include/rerun/spawn.hpp +21 -0
  444. include/rerun/spawn_options.hpp +57 -0
  445. include/rerun/string_utils.hpp +16 -0
  446. include/rerun/third_party/cxxopts.hpp +2198 -0
  447. include/rerun/time_column.hpp +288 -0
  448. include/rerun/timeline.hpp +38 -0
  449. include/rerun/type_traits.hpp +40 -0
  450. include/rerun.hpp +86 -0
  451. lib/cmake/rerun_sdk/rerun_sdkConfig.cmake +70 -0
  452. lib/cmake/rerun_sdk/rerun_sdkConfigVersion.cmake +83 -0
  453. lib/cmake/rerun_sdk/rerun_sdkTargets-release.cmake +19 -0
  454. lib/cmake/rerun_sdk/rerun_sdkTargets.cmake +108 -0
  455. lib/libarrow.a +0 -0
  456. lib/libarrow_bundled_dependencies.a +0 -0
  457. lib/librerun_c__linux_x64.a +0 -0
  458. lib/librerun_sdk.a +0 -0
  459. lib64/cmake/axel/axel-config.cmake +45 -0
  460. lib64/cmake/axel/axelTargets-release.cmake +19 -0
  461. lib64/cmake/axel/axelTargets.cmake +108 -0
  462. lib64/cmake/momentum/Findre2.cmake +52 -0
  463. lib64/cmake/momentum/momentum-config.cmake +67 -0
  464. lib64/cmake/momentum/momentumTargets-release.cmake +269 -0
  465. lib64/cmake/momentum/momentumTargets.cmake +445 -0
  466. lib64/libaxel.a +0 -0
  467. lib64/libmomentum_app_utils.a +0 -0
  468. lib64/libmomentum_character.a +0 -0
  469. lib64/libmomentum_character_sequence_solver.a +0 -0
  470. lib64/libmomentum_character_solver.a +0 -0
  471. lib64/libmomentum_common.a +0 -0
  472. lib64/libmomentum_diff_ik.a +0 -0
  473. lib64/libmomentum_io.a +0 -0
  474. lib64/libmomentum_io_common.a +0 -0
  475. lib64/libmomentum_io_fbx.a +0 -0
  476. lib64/libmomentum_io_gltf.a +0 -0
  477. lib64/libmomentum_io_legacy_json.a +0 -0
  478. lib64/libmomentum_io_marker.a +0 -0
  479. lib64/libmomentum_io_motion.a +0 -0
  480. lib64/libmomentum_io_shape.a +0 -0
  481. lib64/libmomentum_io_skeleton.a +0 -0
  482. lib64/libmomentum_io_urdf.a +0 -0
  483. lib64/libmomentum_marker_tracker.a +0 -0
  484. lib64/libmomentum_math.a +0 -0
  485. lib64/libmomentum_online_qr.a +0 -0
  486. lib64/libmomentum_process_markers.a +0 -0
  487. lib64/libmomentum_rasterizer.a +0 -0
  488. lib64/libmomentum_rerun.a +0 -0
  489. lib64/libmomentum_simd_constraints.a +0 -0
  490. lib64/libmomentum_simd_generalized_loss.a +0 -0
  491. lib64/libmomentum_skeleton.a +0 -0
  492. lib64/libmomentum_solver.a +0 -0
  493. pymomentum/axel.cpython-312-x86_64-linux-gnu.so +0 -0
  494. pymomentum/backend/__init__.py +16 -0
  495. pymomentum/backend/skel_state_backend.py +614 -0
  496. pymomentum/backend/trs_backend.py +871 -0
  497. pymomentum/backend/utils.py +224 -0
  498. pymomentum/geometry.cpython-312-x86_64-linux-gnu.so +0 -0
  499. pymomentum/marker_tracking.cpython-312-x86_64-linux-gnu.so +0 -0
  500. pymomentum/quaternion.py +740 -0
  501. pymomentum/renderer.cpython-312-x86_64-linux-gnu.so +0 -0
  502. pymomentum/skel_state.py +514 -0
  503. pymomentum/solver.cpython-312-x86_64-linux-gnu.so +0 -0
  504. pymomentum/solver2.cpython-312-x86_64-linux-gnu.so +0 -0
  505. pymomentum/torch/character.py +809 -0
  506. pymomentum/torch/parameter_limits.py +494 -0
  507. pymomentum/torch/utility.py +20 -0
  508. pymomentum/trs.py +535 -0
  509. pymomentum_cpu-0.0.0.dist-info/METADATA +209 -0
  510. pymomentum_cpu-0.0.0.dist-info/RECORD +555 -0
  511. pymomentum_cpu-0.0.0.dist-info/WHEEL +5 -0
  512. pymomentum_cpu-0.0.0.dist-info/licenses/LICENSE +21 -0
  513. pymomentum_cpu.libs/libabsl_base-86f3b38c.so.2505.0.0 +0 -0
  514. pymomentum_cpu.libs/libabsl_city-31b65ca2.so.2505.0.0 +0 -0
  515. pymomentum_cpu.libs/libabsl_debugging_internal-38680253.so.2505.0.0 +0 -0
  516. pymomentum_cpu.libs/libabsl_decode_rust_punycode-750652c3.so.2505.0.0 +0 -0
  517. pymomentum_cpu.libs/libabsl_demangle_internal-9a0351a3.so.2505.0.0 +0 -0
  518. pymomentum_cpu.libs/libabsl_demangle_rust-71629506.so.2505.0.0 +0 -0
  519. pymomentum_cpu.libs/libabsl_examine_stack-57661ecd.so.2505.0.0 +0 -0
  520. pymomentum_cpu.libs/libabsl_hash-8c523b7e.so.2505.0.0 +0 -0
  521. pymomentum_cpu.libs/libabsl_hashtablez_sampler-b5c3e343.so.2505.0.0 +0 -0
  522. pymomentum_cpu.libs/libabsl_int128-295bfed5.so.2505.0.0 +0 -0
  523. pymomentum_cpu.libs/libabsl_kernel_timeout_internal-29296ac1.so.2505.0.0 +0 -0
  524. pymomentum_cpu.libs/libabsl_log_globals-6cfa8af5.so.2505.0.0 +0 -0
  525. pymomentum_cpu.libs/libabsl_log_internal_format-a5c79460.so.2505.0.0 +0 -0
  526. pymomentum_cpu.libs/libabsl_log_internal_globals-481e9a7c.so.2505.0.0 +0 -0
  527. pymomentum_cpu.libs/libabsl_log_internal_log_sink_set-ac08f942.so.2505.0.0 +0 -0
  528. pymomentum_cpu.libs/libabsl_log_internal_message-7dfe150a.so.2505.0.0 +0 -0
  529. pymomentum_cpu.libs/libabsl_log_internal_nullguard-883adc72.so.2505.0.0 +0 -0
  530. pymomentum_cpu.libs/libabsl_log_internal_proto-a5da8c75.so.2505.0.0 +0 -0
  531. pymomentum_cpu.libs/libabsl_log_internal_structured_proto-e601fd9b.so.2505.0.0 +0 -0
  532. pymomentum_cpu.libs/libabsl_log_sink-894261b2.so.2505.0.0 +0 -0
  533. pymomentum_cpu.libs/libabsl_low_level_hash-a3284638.so.2505.0.0 +0 -0
  534. pymomentum_cpu.libs/libabsl_malloc_internal-814569de.so.2505.0.0 +0 -0
  535. pymomentum_cpu.libs/libabsl_raw_hash_set-922d64ad.so.2505.0.0 +0 -0
  536. pymomentum_cpu.libs/libabsl_raw_logging_internal-477f78ec.so.2505.0.0 +0 -0
  537. pymomentum_cpu.libs/libabsl_spinlock_wait-8b85a473.so.2505.0.0 +0 -0
  538. pymomentum_cpu.libs/libabsl_stacktrace-7369e71d.so.2505.0.0 +0 -0
  539. pymomentum_cpu.libs/libabsl_str_format_internal-98de729d.so.2505.0.0 +0 -0
  540. pymomentum_cpu.libs/libabsl_strerror-39a52998.so.2505.0.0 +0 -0
  541. pymomentum_cpu.libs/libabsl_strings-a57d5127.so.2505.0.0 +0 -0
  542. pymomentum_cpu.libs/libabsl_strings_internal-ed8c7c0d.so.2505.0.0 +0 -0
  543. pymomentum_cpu.libs/libabsl_symbolize-eba17dd1.so.2505.0.0 +0 -0
  544. pymomentum_cpu.libs/libabsl_synchronization-2f8cf326.so.2505.0.0 +0 -0
  545. pymomentum_cpu.libs/libabsl_time-066c0dde.so.2505.0.0 +0 -0
  546. pymomentum_cpu.libs/libabsl_time_zone-72867365.so.2505.0.0 +0 -0
  547. pymomentum_cpu.libs/libabsl_tracing_internal-021e37ee.so.2505.0.0 +0 -0
  548. pymomentum_cpu.libs/libabsl_utf8_for_code_point-de2a4d4a.so.2505.0.0 +0 -0
  549. pymomentum_cpu.libs/libconsole_bridge-f26e11cc.so.1.0 +0 -0
  550. pymomentum_cpu.libs/libdeflate-577b71e3.so.0 +0 -0
  551. pymomentum_cpu.libs/libdispenso-67ac1721.so.1.4.0 +0 -0
  552. pymomentum_cpu.libs/libezc3d-4a95ab2c.so +0 -0
  553. pymomentum_cpu.libs/libre2-985fb83c.so.11 +0 -0
  554. pymomentum_cpu.libs/libtinyxml2-8d10763c.so.11.0.0 +0 -0
  555. pymomentum_cpu.libs/liburdfdom_model-7b26ae88.so.4.0 +0 -0
@@ -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 <momentum/character/types.h>
11
+ #include <momentum/math/constants.h>
12
+ #include <momentum/math/types.h>
13
+
14
+ namespace momentum {
15
+
16
+ /// A simplified version of a Maya joint with pre-rotation only (no post-rotation).
17
+ template <typename T>
18
+ struct JointT {
19
+ using Scalar = T;
20
+
21
+ /// Joint name
22
+ std::string name{"uninitialized"};
23
+
24
+ /// Index of the parent joint in the skeleton hierarchy
25
+ size_t parent{kInvalidIndex};
26
+
27
+ // TODO: does it make sense to save its own index too?
28
+
29
+ /// Pre-rotation matrix from its parent's axes to its own axes.
30
+ /// @note: Braces initialization is avoided due to issues with CUDA 11.
31
+ Quaternion<T> preRotation = Quaternion<T>::Identity();
32
+
33
+ /// The constant translation offset from the parent joint to this joint's origin.
34
+ Vector3<T> translationOffset = Vector3<T>::Zero();
35
+
36
+ /// Checks if the current joint is approximately equal to the provided joint.
37
+ [[nodiscard]] bool isApprox(
38
+ const JointT<T>& joint,
39
+ const T& rotTol = Eps<T>(1e-4, 1e-10),
40
+ const T& tranTol = Eigen::NumTraits<Scalar>::dummy_precision()) const {
41
+ if (name != joint.name) {
42
+ return false;
43
+ }
44
+
45
+ if (parent != joint.parent) {
46
+ return false;
47
+ }
48
+
49
+ if (!preRotation.toRotationMatrix().isApprox(joint.preRotation.toRotationMatrix(), rotTol)) {
50
+ return false;
51
+ }
52
+
53
+ if (!translationOffset.isApprox(joint.translationOffset, tranTol)) {
54
+ return false;
55
+ }
56
+
57
+ return true;
58
+ }
59
+
60
+ /// Casts the current joint to another scalar type.
61
+ template <typename U>
62
+ [[nodiscard]] auto cast() const {
63
+ if constexpr (std::is_same_v<T, U>) {
64
+ return *this;
65
+ } else {
66
+ JointT<U> newJoint;
67
+ newJoint.name = name;
68
+ newJoint.parent = parent;
69
+ newJoint.preRotation = preRotation.template cast<U>();
70
+ newJoint.translationOffset = translationOffset.template cast<U>();
71
+ return newJoint;
72
+ }
73
+ }
74
+ };
75
+
76
+ /// A list of joints (e.g., of a skeleton).
77
+ template <typename T>
78
+ using JointListT = std::vector<JointT<T>>;
79
+ using JointList = JointListT<float>;
80
+ using JointListd = JointListT<double>;
81
+
82
+ } // namespace momentum
@@ -0,0 +1,241 @@
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/joint.h>
11
+ #include <momentum/character/types.h>
12
+ #include <momentum/math/transform.h>
13
+ #include <momentum/math/types.h>
14
+
15
+ namespace momentum {
16
+
17
+ /// Represents the state of a joint with local and global transformations.
18
+ ///
19
+ /// Joint transform hierarchy is defined as:
20
+ /// WorldTransform = ParentWorldTransform * Tz * Ty * Tx * Rpre * R * S
21
+ ///
22
+ /// Where:
23
+ /// - Tx, Ty, Tz are translations along each axis
24
+ /// - Rpre is the pre-rotation from the joint definition
25
+ /// - R is the joint rotation (applied in order: rz * ry * rx)
26
+ /// - S is the uniform scale factor
27
+ ///
28
+ /// Each joint has 7 parameters: 3 translation, 3 rotation, and 1 scale.
29
+ template <typename T>
30
+ struct JointStateT {
31
+ /// Local transformation relative to parent joint
32
+ ///
33
+ /// Defined by the joint parameters (translation, rotation, scale)
34
+ TransformT<T> localTransform;
35
+
36
+ /// Global transformation in world space
37
+ ///
38
+ /// Combines parent transformations with local transformation
39
+ TransformT<T> transform;
40
+
41
+ /// Translation axes in global space
42
+ ///
43
+ /// Each column represents one translation axis (X, Y, Z) in global coordinates
44
+ Matrix3<T> translationAxis;
45
+
46
+ /// Rotation axes in global space
47
+ ///
48
+ /// Each column represents one rotation axis (X, Y, Z) in global coordinates
49
+ Matrix3<T> rotationAxis;
50
+
51
+ /// Indicates if derivative data needs recomputation
52
+ ///
53
+ /// When true, derivative methods should not be called as they may return invalid results
54
+ bool derivDirty = true;
55
+
56
+ /// Updates joint state based on joint definition and parameters
57
+ ///
58
+ /// Recursively computes all transformations from parent to child, including
59
+ /// local and global transforms, and optionally derivative information.
60
+ ///
61
+ /// @param joint The joint definition containing offset and pre-rotation
62
+ /// @param parameters The 7 joint parameters [tx, ty, tz, rx, ry, rz, scale]
63
+ /// @param parentState Optional parent joint state for hierarchical transformations
64
+ /// @param computeDeriv Whether to compute derivative information (translation/rotation axes)
65
+ void set(
66
+ const JointT<T>& joint,
67
+ const JointVectorT<T>& parameters,
68
+ const JointStateT<T>* parentState = nullptr,
69
+ bool computeDeriv = true) noexcept;
70
+
71
+ /// Calculates the derivative of a point with respect to rotation around a specific axis
72
+ ///
73
+ /// @param index The rotation axis index (0=X, 1=Y, 2=Z)
74
+ /// @param ref The reference point in global space
75
+ /// @return The derivative vector
76
+ [[nodiscard]] Vector3<T> getRotationDerivative(size_t index, const Vector3<T>& ref) const;
77
+
78
+ /// Calculates the derivative with respect to translation along a specific axis
79
+ ///
80
+ /// @param index The translation axis index (0=X, 1=Y, 2=Z)
81
+ /// @return The derivative vector
82
+ [[nodiscard]] Vector3<T> getTranslationDerivative(size_t index) const;
83
+
84
+ /// Calculates the derivative of a point with respect to uniform scaling
85
+ ///
86
+ /// @param ref The reference point in global space
87
+ /// @return The derivative vector
88
+ [[nodiscard]] Vector3<T> getScaleDerivative(const Vector3<T>& ref) const noexcept;
89
+
90
+ /// Copies state from another JointState with potentially different scalar type
91
+ ///
92
+ /// @tparam T2 Source scalar type
93
+ /// @param rhs Source joint state to copy from
94
+ template <typename T2>
95
+ void set(const JointStateT<T2>& rhs);
96
+
97
+ /// Access the joint's local rotation quaternion
98
+ [[nodiscard]] const Quaternion<T>& localRotation() const {
99
+ return localTransform.rotation;
100
+ }
101
+
102
+ /// Access the joint's local rotation quaternion (mutable)
103
+ Quaternion<T>& localRotation() {
104
+ return localTransform.rotation;
105
+ }
106
+
107
+ /// Access the joint's local translation vector
108
+ [[nodiscard]] const Vector3<T>& localTranslation() const {
109
+ return localTransform.translation;
110
+ }
111
+
112
+ /// Access the joint's local translation vector (mutable)
113
+ Vector3<T>& localTranslation() {
114
+ return localTransform.translation;
115
+ }
116
+
117
+ /// Access the joint's local scale factor
118
+ ///
119
+ /// This scale propagates to all descendant joints
120
+ [[nodiscard]] const T& localScale() const {
121
+ return localTransform.scale;
122
+ }
123
+
124
+ /// Access the joint's local scale factor (mutable)
125
+ T& localScale() {
126
+ return localTransform.scale;
127
+ }
128
+
129
+ /// Access the joint's global rotation quaternion
130
+ [[nodiscard]] const Quaternion<T>& rotation() const {
131
+ return transform.rotation;
132
+ }
133
+
134
+ /// Access the joint's global rotation quaternion (mutable)
135
+ Quaternion<T>& rotation() {
136
+ return transform.rotation;
137
+ }
138
+
139
+ /// Access the joint's global position vector
140
+ [[nodiscard]] const Vector3<T>& translation() const {
141
+ return transform.translation;
142
+ }
143
+
144
+ /// Access the joint's global position vector (mutable)
145
+ Vector3<T>& translation() {
146
+ return transform.translation;
147
+ }
148
+
149
+ /// Access the X component of the global position
150
+ [[nodiscard]] const T& x() const {
151
+ return transform.translation.x();
152
+ }
153
+
154
+ /// Access the X component of the global position (mutable)
155
+ T& x() {
156
+ return transform.translation.x();
157
+ }
158
+
159
+ /// Access the Y component of the global position
160
+ [[nodiscard]] const T& y() const {
161
+ return transform.translation.y();
162
+ }
163
+
164
+ /// Access the Y component of the global position (mutable)
165
+ T& y() {
166
+ return transform.translation.y();
167
+ }
168
+
169
+ /// Access the Z component of the global position
170
+ [[nodiscard]] const T& z() const {
171
+ return transform.translation.z();
172
+ }
173
+
174
+ /// Access the Z component of the global position (mutable)
175
+ T& z() {
176
+ return transform.translation.z();
177
+ }
178
+
179
+ /// Access the W component of the global rotation quaternion
180
+ [[nodiscard]] const T& quatW() const {
181
+ return transform.rotation.w();
182
+ }
183
+
184
+ /// Access the W component of the global rotation quaternion (mutable)
185
+ T& quatW() {
186
+ return transform.rotation.w();
187
+ }
188
+
189
+ /// Access the X component of the global rotation quaternion
190
+ [[nodiscard]] const T& quatX() const {
191
+ return transform.rotation.x();
192
+ }
193
+
194
+ /// Access the X component of the global rotation quaternion (mutable)
195
+ T& quatX() {
196
+ return transform.rotation.x();
197
+ }
198
+
199
+ /// Access the Y component of the global rotation quaternion
200
+ [[nodiscard]] const T& quatY() const {
201
+ return transform.rotation.y();
202
+ }
203
+
204
+ /// Access the Y component of the global rotation quaternion (mutable)
205
+ T& quatY() {
206
+ return transform.rotation.y();
207
+ }
208
+
209
+ /// Access the Z component of the global rotation quaternion
210
+ [[nodiscard]] const T& quatZ() const {
211
+ return transform.rotation.z();
212
+ }
213
+
214
+ /// Access the Z component of the global rotation quaternion (mutable)
215
+ T& quatZ() {
216
+ return transform.rotation.z();
217
+ }
218
+
219
+ /// Access the joint's global scale factor
220
+ ///
221
+ /// This is the cumulative scale from all parent joints
222
+ [[nodiscard]] const T& scale() const {
223
+ return transform.scale;
224
+ }
225
+
226
+ /// Access the joint's global scale factor (mutable)
227
+ T& scale() {
228
+ return transform.scale;
229
+ }
230
+
231
+ EIGEN_MAKE_ALIGNED_OPERATOR_NEW
232
+ };
233
+
234
+ /// Structure describing the state of all joints in a skeleton
235
+ template <typename T>
236
+ using JointStateListT = std::vector<JointStateT<T>>;
237
+
238
+ using JointState = JointStateT<float>;
239
+ using JointStateList = JointStateListT<float>;
240
+
241
+ } // namespace momentum
@@ -0,0 +1,139 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #include <momentum/character/fwd.h>
11
+ #include <momentum/character/types.h>
12
+ #include <momentum/math/fwd.h>
13
+ #include <momentum/math/types.h>
14
+
15
+ namespace momentum {
16
+
17
+ /// @file linear_skinning.h
18
+ /// Functions for linear blend skinning (Skeletal Subspace Deformation)
19
+ ///
20
+ /// Linear blend skinning (LBS), also known as Skeletal Subspace Deformation (SSD),
21
+ /// is a technique used in character animation to deform a mesh based on an underlying
22
+ /// skeleton. Each vertex in the mesh is influenced by one or more joints, with weights
23
+ /// determining how much influence each joint has on the vertex's final position.
24
+ ///
25
+ /// This file provides functions to:
26
+ /// - Apply forward skinning (transform vertices from bind pose to animated pose)
27
+ /// - Apply inverse skinning (transform vertices from animated pose back to bind pose)
28
+ /// - Compute inverse skinning transformations for specific vertices
29
+ ///
30
+ /// Key concepts:
31
+ /// - Bind pose: The reference pose of the character, where skin weights are defined
32
+ /// - Skin weights: Per-vertex weights defining how much influence each joint has
33
+ /// - Joint transformations: Current transformations of the skeleton's joints
34
+ /// - Forward skinning: Applying joint transformations to deform the mesh
35
+ /// - Inverse skinning: Reversing the deformation to return to bind pose
36
+
37
+ /// Applies forward SSD (linear blend skinning) to points, returning new points
38
+ ///
39
+ /// This overload transforms individual points and returns a new vector of transformed points.
40
+ /// Use this when you need to transform arbitrary points without modifying a mesh.
41
+ ///
42
+ /// @param inverseBindPose Inverse bind pose transformations for each joint
43
+ /// @param skin Skin weights defining influence of each joint on vertices
44
+ /// @param points Input points to transform
45
+ /// @param state Current skeleton state containing joint transformations
46
+ /// @return Vector of transformed points
47
+ template <typename T>
48
+ std::vector<Vector3<T>> applySSD(
49
+ const TransformationListT<T>& inverseBindPose,
50
+ const SkinWeights& skin,
51
+ typename DeduceSpanType<const Vector3<T>>::type points,
52
+ const SkeletonStateT<T>& state);
53
+
54
+ /// Applies forward SSD to a mesh using skeleton state, modifying output mesh
55
+ ///
56
+ /// This overload transforms both vertices and normals of the mesh, writing results to outputMesh.
57
+ /// Use this when working with complete meshes and full skeleton state.
58
+ ///
59
+ /// @param inverseBindPose Inverse bind pose transformations for each joint
60
+ /// @param skin Skin weights defining influence of each joint on vertices
61
+ /// @param mesh Input mesh to transform
62
+ /// @param state Current skeleton state containing joint transformations
63
+ /// @param outputMesh Output mesh to store the transformed result
64
+ template <typename T>
65
+ void applySSD(
66
+ const TransformationListT<T>& inverseBindPose,
67
+ const SkinWeights& skin,
68
+ const MeshT<T>& mesh,
69
+ const SkeletonStateT<T>& state,
70
+ MeshT<T>& outputMesh);
71
+
72
+ /// Applies forward SSD to a mesh using raw joint state list, modifying output mesh
73
+ ///
74
+ /// This overload accepts a JointStateList directly instead of a full SkeletonState.
75
+ /// Use this when you have joint transformations but not a complete skeleton state.
76
+ ///
77
+ /// @param inverseBindPose Inverse bind pose transformations for each joint
78
+ /// @param skin Skin weights defining influence of each joint on vertices
79
+ /// @param mesh Input mesh to transform
80
+ /// @param state List of joint states containing transformations
81
+ /// @param outputMesh Output mesh to store the transformed result
82
+ template <typename T>
83
+ void applySSD(
84
+ const TransformationListT<T>& inverseBindPose,
85
+ const SkinWeights& skin,
86
+ const MeshT<T>& mesh,
87
+ const JointStateListT<T>& state,
88
+ MeshT<T>& outputMesh);
89
+
90
+ /// Computes the inverse SSD transformation for a specific vertex
91
+ ///
92
+ /// Returns a transformation matrix that converts from skinned space back to bind pose space.
93
+ /// This is useful for operations that need to work in the original bind pose space.
94
+ ///
95
+ /// @param inverseBindPose Inverse bind pose transformations for each joint
96
+ /// @param skin Skin weights defining influence of each joint on vertices
97
+ /// @param state Current skeleton state containing joint transformations
98
+ /// @param index Index of the vertex to compute inverse transformation for
99
+ /// @return Inverse transformation matrix for the specified vertex
100
+ Affine3f getInverseSSDTransformation(
101
+ const TransformationList& inverseBindPose,
102
+ const SkinWeights& skin,
103
+ const SkeletonState& state,
104
+ size_t index);
105
+
106
+ /// Applies inverse SSD to points, returning new points in bind pose space
107
+ ///
108
+ /// This overload transforms points from skinned space back to bind pose space,
109
+ /// returning a new vector of transformed points.
110
+ ///
111
+ /// @param inverseBindPose Inverse bind pose transformations for each joint
112
+ /// @param skin Skin weights defining influence of each joint on vertices
113
+ /// @param points Input points to transform (in skinned space)
114
+ /// @param state Current skeleton state containing joint transformations
115
+ /// @return Vector of transformed points in bind pose space
116
+ std::vector<Vector3f> applyInverseSSD(
117
+ const TransformationList& inverseBindPose,
118
+ const SkinWeights& skin,
119
+ gsl::span<const Vector3f> points,
120
+ const SkeletonState& state);
121
+
122
+ /// Applies inverse SSD to points, storing results in a mesh
123
+ ///
124
+ /// This overload transforms points from skinned space back to bind pose space,
125
+ /// writing the results directly to the provided mesh's vertices.
126
+ ///
127
+ /// @param inverseBindPose Inverse bind pose transformations for each joint
128
+ /// @param skin Skin weights defining influence of each joint on vertices
129
+ /// @param points Input points to transform (in skinned space)
130
+ /// @param state Current skeleton state containing joint transformations
131
+ /// @param mesh Output mesh to store the transformed vertices
132
+ void applyInverseSSD(
133
+ const TransformationList& inverseBindPose,
134
+ const SkinWeights& skin,
135
+ gsl::span<const Vector3f> points,
136
+ const SkeletonState& state,
137
+ Mesh& mesh);
138
+
139
+ } // 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 <momentum/character/types.h>
11
+ #include <momentum/math/utility.h>
12
+
13
+ namespace momentum {
14
+
15
+ /// Represents a point attached to a joint in a skeleton.
16
+ ///
17
+ /// Locators can be used for various purposes such as tracking specific points
18
+ /// on a character, defining constraints, or serving as targets for inverse kinematics.
19
+ struct Locator {
20
+ /// Name identifier for the locator
21
+ std::string name;
22
+
23
+ /// Index of the parent joint in the skeleton
24
+ size_t parent;
25
+
26
+ /// Position relative to the parent joint's coordinate system
27
+ Vector3f offset;
28
+
29
+ /// Specifies which axes (x,y,z) are locked (1) or free (0)
30
+ Vector3i locked;
31
+
32
+ /// Influence weight of this locator when used in constraints
33
+ float weight;
34
+
35
+ /// Reference position for limit constraints, typically equal to offset when loaded
36
+ Vector3f limitOrigin;
37
+
38
+ /// Controls how strongly the locator should maintain its original position
39
+ /// Higher values create stronger constraints, zero means completely free
40
+ Vector3f limitWeight;
41
+
42
+ /// Creates a locator with the specified properties
43
+ ///
44
+ /// @param name Identifier for the locator
45
+ /// @param parent Index of the parent joint
46
+ /// @param offset Position relative to the parent joint
47
+ /// @param locked Axes that are locked (1) or free (0)
48
+ /// @param weight Influence weight in constraints
49
+ /// @param limitOrigin Reference position for limit constraints
50
+ /// @param limitWeight Strength of position maintenance constraints
51
+ Locator(
52
+ const std::string& name = "uninitialized",
53
+ const size_t parent = kInvalidIndex,
54
+ const Vector3f& offset = Vector3f::Zero(),
55
+ const Vector3i& locked = Vector3i::Zero(),
56
+ const float weight = 1.0f,
57
+ const Vector3f& limitOrigin = Vector3f::Zero(),
58
+ const Vector3f& limitWeight = Vector3f::Zero())
59
+ : name(name),
60
+ parent(parent),
61
+ offset(offset),
62
+ locked(locked),
63
+ weight(weight),
64
+ limitOrigin(limitOrigin),
65
+ limitWeight(limitWeight) {}
66
+
67
+ /// Compares two locators for equality, using approximate comparison for floating-point values
68
+ ///
69
+ /// @param locator The locator to compare with
70
+ /// @return True if all properties are equal (or approximately equal for floating-point values)
71
+ inline bool operator==(const Locator& locator) const {
72
+ return (
73
+ (name == locator.name) && (parent == locator.parent) && offset.isApprox(locator.offset) &&
74
+ locked.isApprox(locator.locked) && isApprox(weight, locator.weight) &&
75
+ limitOrigin.isApprox(locator.limitOrigin) && limitWeight.isApprox(locator.limitWeight));
76
+ }
77
+ };
78
+
79
+ /// A collection of locators attached to a skeleton
80
+ using LocatorList = std::vector<Locator>;
81
+
82
+ } // namespace momentum
@@ -0,0 +1,43 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #include <momentum/character/fwd.h>
11
+ #include <momentum/character/locator.h>
12
+ #include <momentum/character/types.h>
13
+
14
+ namespace momentum {
15
+
16
+ /// Tracks the current world positions of locators in a skeleton.
17
+ ///
18
+ /// This class maintains the transformed positions of locators based on the current
19
+ /// state of the skeleton they're attached to.
20
+ struct LocatorState {
21
+ /// World-space positions of all locators, updated when the skeleton moves
22
+ std::vector<Vector3f> position;
23
+
24
+ public:
25
+ /// Creates an empty locator state with no positions
26
+ LocatorState() noexcept = default;
27
+
28
+ /// Creates a locator state and immediately updates positions based on the given skeleton state
29
+ ///
30
+ /// @param skeletonState Current pose of the skeleton
31
+ /// @param referenceLocators List of locators to track
32
+ LocatorState(const SkeletonState& skeletonState, const LocatorList& referenceLocators) noexcept {
33
+ update(skeletonState, referenceLocators);
34
+ }
35
+
36
+ /// Updates the world positions of all locators based on the current skeleton pose
37
+ ///
38
+ /// @param skeletonState Current pose of the skeleton
39
+ /// @param referenceLocators List of locators to update positions for
40
+ void update(const SkeletonState& skeletonState, const LocatorList& referenceLocators) noexcept;
41
+ };
42
+
43
+ } // namespace momentum
@@ -0,0 +1,48 @@
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/types.h>
11
+
12
+ #include <string>
13
+ #include <vector>
14
+
15
+ namespace momentum {
16
+
17
+ /// Marker represents a motion capture marker that defines an active marker during motion capture.
18
+ struct Marker {
19
+ /// The name of the marker, default is "Undefined"
20
+ std::string name = "Undefined";
21
+
22
+ /// The 3D position of the marker as a Vector3d object, where the unit is assumed to be in
23
+ /// centimeters.
24
+ Vector3d pos = {0.0, 0.0, 0.0};
25
+
26
+ /// The occlusion status of the marker, true if occluded, false otherwise
27
+ bool occluded = true;
28
+ };
29
+
30
+ /// MarkerSequence stores all the frames from a single capture sequence for one subject (motion
31
+ /// capture actor).
32
+ ///
33
+ /// Each frame is a std::vector<Marker> containing the position and occlusion status of
34
+ /// all the markers placed on the subject.
35
+ /// The size of the std::vector<Marker> must be consistent for all frames.
36
+ struct MarkerSequence {
37
+ /// Name of the actor sequence (typically a unique subject name or ID)
38
+ std::string name;
39
+
40
+ /// A 2D vector that specifies the Marker (name/position/occlusion) for all markers
41
+ /// throughout all captured frames. Size: [numFrames][numMarkers]
42
+ std::vector<std::vector<Marker>> frames;
43
+
44
+ /// The frame rate of the motion capture sequence in frames per second (default is 30.0)
45
+ float fps = 30.0f;
46
+ };
47
+
48
+ } // namespace momentum