pymomentum-cpu 0.1.82.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.

Potentially problematic release.


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

Files changed (512) 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/DualContouring.h +79 -0
  9. include/axel/KdTree.h +199 -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 +91 -0
  30. include/momentum/character/blend_shape_base.h +70 -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 +82 -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 +250 -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 +181 -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 +144 -0
  61. include/momentum/character_sequence_solver/sequence_solver_function.h +134 -0
  62. include/momentum/character_sequence_solver/state_sequence_error_function.h +109 -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 +924 -0
  73. include/momentum/character_solver/gauss_newton_solver_qr.h +64 -0
  74. include/momentum/character_solver/limit_error_function.h +57 -0
  75. include/momentum/character_solver/model_parameters_error_function.h +64 -0
  76. include/momentum/character_solver/normal_error_function.h +73 -0
  77. include/momentum/character_solver/orientation_error_function.h +74 -0
  78. include/momentum/character_solver/plane_error_function.h +102 -0
  79. include/momentum/character_solver/point_triangle_vertex_error_function.h +141 -0
  80. include/momentum/character_solver/pose_prior_error_function.h +80 -0
  81. include/momentum/character_solver/position_error_function.h +75 -0
  82. include/momentum/character_solver/projection_error_function.h +93 -0
  83. include/momentum/character_solver/simd_collision_error_function.h +99 -0
  84. include/momentum/character_solver/simd_normal_error_function.h +157 -0
  85. include/momentum/character_solver/simd_plane_error_function.h +164 -0
  86. include/momentum/character_solver/simd_position_error_function.h +165 -0
  87. include/momentum/character_solver/skeleton_error_function.h +151 -0
  88. include/momentum/character_solver/skeleton_solver_function.h +94 -0
  89. include/momentum/character_solver/skinned_locator_error_function.h +166 -0
  90. include/momentum/character_solver/skinned_locator_triangle_error_function.h +146 -0
  91. include/momentum/character_solver/skinning_weight_iterator.h +80 -0
  92. include/momentum/character_solver/state_error_function.h +94 -0
  93. include/momentum/character_solver/transform_pose.h +80 -0
  94. include/momentum/character_solver/trust_region_qr.h +80 -0
  95. include/momentum/character_solver/vertex_error_function.h +155 -0
  96. include/momentum/character_solver/vertex_projection_error_function.h +117 -0
  97. include/momentum/character_solver/vertex_vertex_distance_error_function.h +147 -0
  98. include/momentum/common/aligned.h +155 -0
  99. include/momentum/common/checks.h +27 -0
  100. include/momentum/common/exception.h +70 -0
  101. include/momentum/common/filesystem.h +20 -0
  102. include/momentum/common/fwd.h +27 -0
  103. include/momentum/common/log.h +173 -0
  104. include/momentum/common/log_channel.h +17 -0
  105. include/momentum/common/memory.h +71 -0
  106. include/momentum/common/profile.h +79 -0
  107. include/momentum/common/progress_bar.h +37 -0
  108. include/momentum/common/string.h +52 -0
  109. include/momentum/diff_ik/ceres_utility.h +73 -0
  110. include/momentum/diff_ik/fully_differentiable_body_ik.h +58 -0
  111. include/momentum/diff_ik/fully_differentiable_distance_error_function.h +69 -0
  112. include/momentum/diff_ik/fully_differentiable_motion_error_function.h +46 -0
  113. include/momentum/diff_ik/fully_differentiable_orientation_error_function.h +114 -0
  114. include/momentum/diff_ik/fully_differentiable_pose_prior_error_function.h +76 -0
  115. include/momentum/diff_ik/fully_differentiable_position_error_function.h +138 -0
  116. include/momentum/diff_ik/fully_differentiable_projection_error_function.h +65 -0
  117. include/momentum/diff_ik/fully_differentiable_skeleton_error_function.h +160 -0
  118. include/momentum/diff_ik/fully_differentiable_state_error_function.h +54 -0
  119. include/momentum/diff_ik/fwd.h +385 -0
  120. include/momentum/diff_ik/union_error_function.h +67 -0
  121. include/momentum/gui/rerun/eigen_adapters.h +70 -0
  122. include/momentum/gui/rerun/logger.h +102 -0
  123. include/momentum/gui/rerun/logging_redirect.h +27 -0
  124. include/momentum/io/character_io.h +56 -0
  125. include/momentum/io/common/gsl_utils.h +50 -0
  126. include/momentum/io/common/stream_utils.h +65 -0
  127. include/momentum/io/fbx/fbx_io.h +109 -0
  128. include/momentum/io/fbx/fbx_memory_stream.h +66 -0
  129. include/momentum/io/fbx/openfbx_loader.h +49 -0
  130. include/momentum/io/fbx/polygon_data.h +60 -0
  131. include/momentum/io/gltf/gltf_builder.h +132 -0
  132. include/momentum/io/gltf/gltf_file_format.h +19 -0
  133. include/momentum/io/gltf/gltf_io.h +148 -0
  134. include/momentum/io/gltf/utils/accessor_utils.h +299 -0
  135. include/momentum/io/gltf/utils/coordinate_utils.h +60 -0
  136. include/momentum/io/gltf/utils/json_utils.h +102 -0
  137. include/momentum/io/legacy_json/legacy_json_io.h +70 -0
  138. include/momentum/io/marker/c3d_io.h +30 -0
  139. include/momentum/io/marker/conversions.h +57 -0
  140. include/momentum/io/marker/coordinate_system.h +30 -0
  141. include/momentum/io/marker/marker_io.h +56 -0
  142. include/momentum/io/marker/trc_io.h +27 -0
  143. include/momentum/io/motion/mmo_io.h +97 -0
  144. include/momentum/io/shape/blend_shape_io.h +70 -0
  145. include/momentum/io/shape/pose_shape_io.h +21 -0
  146. include/momentum/io/skeleton/locator_io.h +41 -0
  147. include/momentum/io/skeleton/mppca_io.h +26 -0
  148. include/momentum/io/skeleton/parameter_limits_io.h +25 -0
  149. include/momentum/io/skeleton/parameter_transform_io.h +41 -0
  150. include/momentum/io/skeleton/parameters_io.h +20 -0
  151. include/momentum/io/urdf/urdf_io.h +26 -0
  152. include/momentum/io/usd/usd_io.h +36 -0
  153. include/momentum/marker_tracking/app_utils.h +62 -0
  154. include/momentum/marker_tracking/marker_tracker.h +213 -0
  155. include/momentum/marker_tracking/process_markers.h +58 -0
  156. include/momentum/marker_tracking/tracker_utils.h +90 -0
  157. include/momentum/math/constants.h +82 -0
  158. include/momentum/math/covariance_matrix.h +84 -0
  159. include/momentum/math/fmt_eigen.h +23 -0
  160. include/momentum/math/fwd.h +132 -0
  161. include/momentum/math/generalized_loss.h +61 -0
  162. include/momentum/math/intersection.h +32 -0
  163. include/momentum/math/mesh.h +84 -0
  164. include/momentum/math/mppca.h +67 -0
  165. include/momentum/math/online_householder_qr.h +516 -0
  166. include/momentum/math/random-inl.h +404 -0
  167. include/momentum/math/random.h +310 -0
  168. include/momentum/math/simd_generalized_loss.h +40 -0
  169. include/momentum/math/transform.h +229 -0
  170. include/momentum/math/types.h +461 -0
  171. include/momentum/math/utility.h +251 -0
  172. include/momentum/rasterizer/camera.h +453 -0
  173. include/momentum/rasterizer/fwd.h +102 -0
  174. include/momentum/rasterizer/geometry.h +83 -0
  175. include/momentum/rasterizer/image.h +18 -0
  176. include/momentum/rasterizer/rasterizer.h +583 -0
  177. include/momentum/rasterizer/tensor.h +140 -0
  178. include/momentum/rasterizer/utility.h +268 -0
  179. include/momentum/simd/simd.h +221 -0
  180. include/momentum/solver/fwd.h +131 -0
  181. include/momentum/solver/gauss_newton_solver.h +136 -0
  182. include/momentum/solver/gradient_descent_solver.h +65 -0
  183. include/momentum/solver/solver.h +155 -0
  184. include/momentum/solver/solver_function.h +126 -0
  185. include/momentum/solver/subset_gauss_newton_solver.h +109 -0
  186. include/rerun/archetypes/annotation_context.hpp +157 -0
  187. include/rerun/archetypes/arrows2d.hpp +271 -0
  188. include/rerun/archetypes/arrows3d.hpp +257 -0
  189. include/rerun/archetypes/asset3d.hpp +262 -0
  190. include/rerun/archetypes/asset_video.hpp +275 -0
  191. include/rerun/archetypes/bar_chart.hpp +261 -0
  192. include/rerun/archetypes/boxes2d.hpp +293 -0
  193. include/rerun/archetypes/boxes3d.hpp +369 -0
  194. include/rerun/archetypes/capsules3d.hpp +333 -0
  195. include/rerun/archetypes/clear.hpp +180 -0
  196. include/rerun/archetypes/depth_image.hpp +425 -0
  197. include/rerun/archetypes/ellipsoids3d.hpp +384 -0
  198. include/rerun/archetypes/encoded_image.hpp +250 -0
  199. include/rerun/archetypes/geo_line_strings.hpp +166 -0
  200. include/rerun/archetypes/geo_points.hpp +177 -0
  201. include/rerun/archetypes/graph_edges.hpp +152 -0
  202. include/rerun/archetypes/graph_nodes.hpp +206 -0
  203. include/rerun/archetypes/image.hpp +434 -0
  204. include/rerun/archetypes/instance_poses3d.hpp +221 -0
  205. include/rerun/archetypes/line_strips2d.hpp +289 -0
  206. include/rerun/archetypes/line_strips3d.hpp +270 -0
  207. include/rerun/archetypes/mesh3d.hpp +387 -0
  208. include/rerun/archetypes/pinhole.hpp +385 -0
  209. include/rerun/archetypes/points2d.hpp +333 -0
  210. include/rerun/archetypes/points3d.hpp +369 -0
  211. include/rerun/archetypes/recording_properties.hpp +132 -0
  212. include/rerun/archetypes/scalar.hpp +170 -0
  213. include/rerun/archetypes/scalars.hpp +153 -0
  214. include/rerun/archetypes/segmentation_image.hpp +305 -0
  215. include/rerun/archetypes/series_line.hpp +274 -0
  216. include/rerun/archetypes/series_lines.hpp +271 -0
  217. include/rerun/archetypes/series_point.hpp +265 -0
  218. include/rerun/archetypes/series_points.hpp +251 -0
  219. include/rerun/archetypes/tensor.hpp +213 -0
  220. include/rerun/archetypes/text_document.hpp +200 -0
  221. include/rerun/archetypes/text_log.hpp +211 -0
  222. include/rerun/archetypes/transform3d.hpp +925 -0
  223. include/rerun/archetypes/video_frame_reference.hpp +295 -0
  224. include/rerun/archetypes/view_coordinates.hpp +393 -0
  225. include/rerun/archetypes.hpp +43 -0
  226. include/rerun/arrow_utils.hpp +32 -0
  227. include/rerun/as_components.hpp +90 -0
  228. include/rerun/blueprint/archetypes/background.hpp +113 -0
  229. include/rerun/blueprint/archetypes/container_blueprint.hpp +259 -0
  230. include/rerun/blueprint/archetypes/dataframe_query.hpp +178 -0
  231. include/rerun/blueprint/archetypes/entity_behavior.hpp +130 -0
  232. include/rerun/blueprint/archetypes/force_center.hpp +115 -0
  233. include/rerun/blueprint/archetypes/force_collision_radius.hpp +141 -0
  234. include/rerun/blueprint/archetypes/force_link.hpp +136 -0
  235. include/rerun/blueprint/archetypes/force_many_body.hpp +124 -0
  236. include/rerun/blueprint/archetypes/force_position.hpp +132 -0
  237. include/rerun/blueprint/archetypes/line_grid3d.hpp +178 -0
  238. include/rerun/blueprint/archetypes/map_background.hpp +104 -0
  239. include/rerun/blueprint/archetypes/map_zoom.hpp +103 -0
  240. include/rerun/blueprint/archetypes/near_clip_plane.hpp +109 -0
  241. include/rerun/blueprint/archetypes/panel_blueprint.hpp +95 -0
  242. include/rerun/blueprint/archetypes/plot_legend.hpp +118 -0
  243. include/rerun/blueprint/archetypes/scalar_axis.hpp +116 -0
  244. include/rerun/blueprint/archetypes/tensor_scalar_mapping.hpp +146 -0
  245. include/rerun/blueprint/archetypes/tensor_slice_selection.hpp +167 -0
  246. include/rerun/blueprint/archetypes/tensor_view_fit.hpp +95 -0
  247. include/rerun/blueprint/archetypes/view_blueprint.hpp +170 -0
  248. include/rerun/blueprint/archetypes/view_contents.hpp +142 -0
  249. include/rerun/blueprint/archetypes/viewport_blueprint.hpp +200 -0
  250. include/rerun/blueprint/archetypes/visible_time_ranges.hpp +116 -0
  251. include/rerun/blueprint/archetypes/visual_bounds2d.hpp +109 -0
  252. include/rerun/blueprint/archetypes/visualizer_overrides.hpp +113 -0
  253. include/rerun/blueprint/archetypes.hpp +29 -0
  254. include/rerun/blueprint/components/active_tab.hpp +82 -0
  255. include/rerun/blueprint/components/apply_latest_at.hpp +79 -0
  256. include/rerun/blueprint/components/auto_layout.hpp +77 -0
  257. include/rerun/blueprint/components/auto_views.hpp +77 -0
  258. include/rerun/blueprint/components/background_kind.hpp +66 -0
  259. include/rerun/blueprint/components/column_share.hpp +78 -0
  260. include/rerun/blueprint/components/component_column_selector.hpp +81 -0
  261. include/rerun/blueprint/components/container_kind.hpp +65 -0
  262. include/rerun/blueprint/components/corner2d.hpp +64 -0
  263. include/rerun/blueprint/components/enabled.hpp +77 -0
  264. include/rerun/blueprint/components/filter_by_range.hpp +74 -0
  265. include/rerun/blueprint/components/filter_is_not_null.hpp +77 -0
  266. include/rerun/blueprint/components/force_distance.hpp +82 -0
  267. include/rerun/blueprint/components/force_iterations.hpp +82 -0
  268. include/rerun/blueprint/components/force_strength.hpp +82 -0
  269. include/rerun/blueprint/components/grid_columns.hpp +78 -0
  270. include/rerun/blueprint/components/grid_spacing.hpp +78 -0
  271. include/rerun/blueprint/components/included_content.hpp +86 -0
  272. include/rerun/blueprint/components/lock_range_during_zoom.hpp +82 -0
  273. include/rerun/blueprint/components/map_provider.hpp +64 -0
  274. include/rerun/blueprint/components/near_clip_plane.hpp +82 -0
  275. include/rerun/blueprint/components/panel_state.hpp +61 -0
  276. include/rerun/blueprint/components/query_expression.hpp +89 -0
  277. include/rerun/blueprint/components/root_container.hpp +77 -0
  278. include/rerun/blueprint/components/row_share.hpp +78 -0
  279. include/rerun/blueprint/components/selected_columns.hpp +76 -0
  280. include/rerun/blueprint/components/tensor_dimension_index_slider.hpp +90 -0
  281. include/rerun/blueprint/components/timeline_name.hpp +76 -0
  282. include/rerun/blueprint/components/view_class.hpp +76 -0
  283. include/rerun/blueprint/components/view_fit.hpp +61 -0
  284. include/rerun/blueprint/components/view_maximized.hpp +79 -0
  285. include/rerun/blueprint/components/view_origin.hpp +81 -0
  286. include/rerun/blueprint/components/viewer_recommendation_hash.hpp +82 -0
  287. include/rerun/blueprint/components/visible_time_range.hpp +77 -0
  288. include/rerun/blueprint/components/visual_bounds2d.hpp +74 -0
  289. include/rerun/blueprint/components/visualizer_override.hpp +86 -0
  290. include/rerun/blueprint/components/zoom_level.hpp +78 -0
  291. include/rerun/blueprint/components.hpp +41 -0
  292. include/rerun/blueprint/datatypes/component_column_selector.hpp +61 -0
  293. include/rerun/blueprint/datatypes/filter_by_range.hpp +59 -0
  294. include/rerun/blueprint/datatypes/filter_is_not_null.hpp +61 -0
  295. include/rerun/blueprint/datatypes/selected_columns.hpp +62 -0
  296. include/rerun/blueprint/datatypes/tensor_dimension_index_slider.hpp +63 -0
  297. include/rerun/blueprint/datatypes.hpp +9 -0
  298. include/rerun/c/arrow_c_data_interface.h +111 -0
  299. include/rerun/c/compiler_utils.h +10 -0
  300. include/rerun/c/rerun.h +627 -0
  301. include/rerun/c/sdk_info.h +28 -0
  302. include/rerun/collection.hpp +496 -0
  303. include/rerun/collection_adapter.hpp +43 -0
  304. include/rerun/collection_adapter_builtins.hpp +138 -0
  305. include/rerun/compiler_utils.hpp +61 -0
  306. include/rerun/component_batch.hpp +163 -0
  307. include/rerun/component_column.hpp +111 -0
  308. include/rerun/component_descriptor.hpp +142 -0
  309. include/rerun/component_type.hpp +35 -0
  310. include/rerun/components/aggregation_policy.hpp +76 -0
  311. include/rerun/components/albedo_factor.hpp +74 -0
  312. include/rerun/components/annotation_context.hpp +102 -0
  313. include/rerun/components/axis_length.hpp +74 -0
  314. include/rerun/components/blob.hpp +73 -0
  315. include/rerun/components/class_id.hpp +71 -0
  316. include/rerun/components/clear_is_recursive.hpp +75 -0
  317. include/rerun/components/color.hpp +99 -0
  318. include/rerun/components/colormap.hpp +99 -0
  319. include/rerun/components/depth_meter.hpp +84 -0
  320. include/rerun/components/draw_order.hpp +79 -0
  321. include/rerun/components/entity_path.hpp +83 -0
  322. include/rerun/components/fill_mode.hpp +72 -0
  323. include/rerun/components/fill_ratio.hpp +79 -0
  324. include/rerun/components/gamma_correction.hpp +80 -0
  325. include/rerun/components/geo_line_string.hpp +63 -0
  326. include/rerun/components/graph_edge.hpp +75 -0
  327. include/rerun/components/graph_node.hpp +79 -0
  328. include/rerun/components/graph_type.hpp +57 -0
  329. include/rerun/components/half_size2d.hpp +91 -0
  330. include/rerun/components/half_size3d.hpp +95 -0
  331. include/rerun/components/image_buffer.hpp +86 -0
  332. include/rerun/components/image_format.hpp +84 -0
  333. include/rerun/components/image_plane_distance.hpp +77 -0
  334. include/rerun/components/interactive.hpp +76 -0
  335. include/rerun/components/keypoint_id.hpp +74 -0
  336. include/rerun/components/lat_lon.hpp +89 -0
  337. include/rerun/components/length.hpp +77 -0
  338. include/rerun/components/line_strip2d.hpp +73 -0
  339. include/rerun/components/line_strip3d.hpp +73 -0
  340. include/rerun/components/magnification_filter.hpp +63 -0
  341. include/rerun/components/marker_shape.hpp +82 -0
  342. include/rerun/components/marker_size.hpp +74 -0
  343. include/rerun/components/media_type.hpp +157 -0
  344. include/rerun/components/name.hpp +83 -0
  345. include/rerun/components/opacity.hpp +77 -0
  346. include/rerun/components/pinhole_projection.hpp +94 -0
  347. include/rerun/components/plane3d.hpp +75 -0
  348. include/rerun/components/pose_rotation_axis_angle.hpp +73 -0
  349. include/rerun/components/pose_rotation_quat.hpp +71 -0
  350. include/rerun/components/pose_scale3d.hpp +102 -0
  351. include/rerun/components/pose_transform_mat3x3.hpp +87 -0
  352. include/rerun/components/pose_translation3d.hpp +96 -0
  353. include/rerun/components/position2d.hpp +86 -0
  354. include/rerun/components/position3d.hpp +90 -0
  355. include/rerun/components/radius.hpp +98 -0
  356. include/rerun/components/range1d.hpp +75 -0
  357. include/rerun/components/resolution.hpp +88 -0
  358. include/rerun/components/rotation_axis_angle.hpp +72 -0
  359. include/rerun/components/rotation_quat.hpp +71 -0
  360. include/rerun/components/scalar.hpp +76 -0
  361. include/rerun/components/scale3d.hpp +102 -0
  362. include/rerun/components/series_visible.hpp +76 -0
  363. include/rerun/components/show_labels.hpp +79 -0
  364. include/rerun/components/stroke_width.hpp +74 -0
  365. include/rerun/components/tensor_data.hpp +94 -0
  366. include/rerun/components/tensor_dimension_index_selection.hpp +77 -0
  367. include/rerun/components/tensor_height_dimension.hpp +71 -0
  368. include/rerun/components/tensor_width_dimension.hpp +71 -0
  369. include/rerun/components/texcoord2d.hpp +101 -0
  370. include/rerun/components/text.hpp +83 -0
  371. include/rerun/components/text_log_level.hpp +110 -0
  372. include/rerun/components/timestamp.hpp +76 -0
  373. include/rerun/components/transform_mat3x3.hpp +92 -0
  374. include/rerun/components/transform_relation.hpp +66 -0
  375. include/rerun/components/translation3d.hpp +96 -0
  376. include/rerun/components/triangle_indices.hpp +85 -0
  377. include/rerun/components/value_range.hpp +78 -0
  378. include/rerun/components/vector2d.hpp +92 -0
  379. include/rerun/components/vector3d.hpp +96 -0
  380. include/rerun/components/video_timestamp.hpp +120 -0
  381. include/rerun/components/view_coordinates.hpp +346 -0
  382. include/rerun/components/visible.hpp +74 -0
  383. include/rerun/components.hpp +77 -0
  384. include/rerun/config.hpp +52 -0
  385. include/rerun/datatypes/angle.hpp +76 -0
  386. include/rerun/datatypes/annotation_info.hpp +76 -0
  387. include/rerun/datatypes/blob.hpp +67 -0
  388. include/rerun/datatypes/bool.hpp +57 -0
  389. include/rerun/datatypes/channel_datatype.hpp +87 -0
  390. include/rerun/datatypes/class_description.hpp +92 -0
  391. include/rerun/datatypes/class_description_map_elem.hpp +69 -0
  392. include/rerun/datatypes/class_id.hpp +62 -0
  393. include/rerun/datatypes/color_model.hpp +68 -0
  394. include/rerun/datatypes/dvec2d.hpp +76 -0
  395. include/rerun/datatypes/entity_path.hpp +60 -0
  396. include/rerun/datatypes/float32.hpp +62 -0
  397. include/rerun/datatypes/float64.hpp +62 -0
  398. include/rerun/datatypes/image_format.hpp +107 -0
  399. include/rerun/datatypes/keypoint_id.hpp +63 -0
  400. include/rerun/datatypes/keypoint_pair.hpp +65 -0
  401. include/rerun/datatypes/mat3x3.hpp +105 -0
  402. include/rerun/datatypes/mat4x4.hpp +119 -0
  403. include/rerun/datatypes/pixel_format.hpp +142 -0
  404. include/rerun/datatypes/plane3d.hpp +60 -0
  405. include/rerun/datatypes/quaternion.hpp +110 -0
  406. include/rerun/datatypes/range1d.hpp +59 -0
  407. include/rerun/datatypes/range2d.hpp +55 -0
  408. include/rerun/datatypes/rgba32.hpp +94 -0
  409. include/rerun/datatypes/rotation_axis_angle.hpp +67 -0
  410. include/rerun/datatypes/tensor_buffer.hpp +529 -0
  411. include/rerun/datatypes/tensor_data.hpp +100 -0
  412. include/rerun/datatypes/tensor_dimension_index_selection.hpp +58 -0
  413. include/rerun/datatypes/tensor_dimension_selection.hpp +56 -0
  414. include/rerun/datatypes/time_int.hpp +62 -0
  415. include/rerun/datatypes/time_range.hpp +55 -0
  416. include/rerun/datatypes/time_range_boundary.hpp +175 -0
  417. include/rerun/datatypes/uint16.hpp +62 -0
  418. include/rerun/datatypes/uint32.hpp +62 -0
  419. include/rerun/datatypes/uint64.hpp +62 -0
  420. include/rerun/datatypes/utf8.hpp +76 -0
  421. include/rerun/datatypes/utf8pair.hpp +62 -0
  422. include/rerun/datatypes/uuid.hpp +60 -0
  423. include/rerun/datatypes/uvec2d.hpp +76 -0
  424. include/rerun/datatypes/uvec3d.hpp +80 -0
  425. include/rerun/datatypes/uvec4d.hpp +59 -0
  426. include/rerun/datatypes/vec2d.hpp +76 -0
  427. include/rerun/datatypes/vec3d.hpp +80 -0
  428. include/rerun/datatypes/vec4d.hpp +84 -0
  429. include/rerun/datatypes/video_timestamp.hpp +67 -0
  430. include/rerun/datatypes/view_coordinates.hpp +87 -0
  431. include/rerun/datatypes/visible_time_range.hpp +57 -0
  432. include/rerun/datatypes.hpp +51 -0
  433. include/rerun/demo_utils.hpp +75 -0
  434. include/rerun/entity_path.hpp +20 -0
  435. include/rerun/error.hpp +180 -0
  436. include/rerun/half.hpp +10 -0
  437. include/rerun/image_utils.hpp +187 -0
  438. include/rerun/indicator_component.hpp +59 -0
  439. include/rerun/loggable.hpp +54 -0
  440. include/rerun/recording_stream.hpp +960 -0
  441. include/rerun/rerun_sdk_export.hpp +25 -0
  442. include/rerun/result.hpp +86 -0
  443. include/rerun/rotation3d.hpp +33 -0
  444. include/rerun/sdk_info.hpp +20 -0
  445. include/rerun/spawn.hpp +21 -0
  446. include/rerun/spawn_options.hpp +57 -0
  447. include/rerun/string_utils.hpp +16 -0
  448. include/rerun/third_party/cxxopts.hpp +2198 -0
  449. include/rerun/time_column.hpp +288 -0
  450. include/rerun/timeline.hpp +38 -0
  451. include/rerun/type_traits.hpp +40 -0
  452. include/rerun.hpp +86 -0
  453. lib/cmake/axel/axel-config.cmake +45 -0
  454. lib/cmake/axel/axelTargets-release.cmake +19 -0
  455. lib/cmake/axel/axelTargets.cmake +108 -0
  456. lib/cmake/momentum/Findre2.cmake +52 -0
  457. lib/cmake/momentum/momentum-config.cmake +67 -0
  458. lib/cmake/momentum/momentumTargets-release.cmake +259 -0
  459. lib/cmake/momentum/momentumTargets.cmake +377 -0
  460. lib/cmake/rerun_sdk/rerun_sdkConfig.cmake +70 -0
  461. lib/cmake/rerun_sdk/rerun_sdkConfigVersion.cmake +83 -0
  462. lib/cmake/rerun_sdk/rerun_sdkTargets-release.cmake +19 -0
  463. lib/cmake/rerun_sdk/rerun_sdkTargets.cmake +108 -0
  464. lib/libarrow.a +0 -0
  465. lib/libarrow_bundled_dependencies.a +0 -0
  466. lib/libaxel.a +0 -0
  467. lib/libmomentum_app_utils.a +0 -0
  468. lib/libmomentum_character.a +0 -0
  469. lib/libmomentum_character_sequence_solver.a +0 -0
  470. lib/libmomentum_character_solver.a +0 -0
  471. lib/libmomentum_common.a +0 -0
  472. lib/libmomentum_diff_ik.a +0 -0
  473. lib/libmomentum_io.a +0 -0
  474. lib/libmomentum_io_common.a +0 -0
  475. lib/libmomentum_io_fbx.a +0 -0
  476. lib/libmomentum_io_gltf.a +0 -0
  477. lib/libmomentum_io_legacy_json.a +0 -0
  478. lib/libmomentum_io_marker.a +0 -0
  479. lib/libmomentum_io_motion.a +0 -0
  480. lib/libmomentum_io_shape.a +0 -0
  481. lib/libmomentum_io_skeleton.a +0 -0
  482. lib/libmomentum_io_urdf.a +0 -0
  483. lib/libmomentum_marker_tracker.a +0 -0
  484. lib/libmomentum_math.a +0 -0
  485. lib/libmomentum_online_qr.a +0 -0
  486. lib/libmomentum_process_markers.a +0 -0
  487. lib/libmomentum_rerun.a +0 -0
  488. lib/libmomentum_simd_constraints.a +0 -0
  489. lib/libmomentum_simd_generalized_loss.a +0 -0
  490. lib/libmomentum_skeleton.a +0 -0
  491. lib/libmomentum_solver.a +0 -0
  492. lib/librerun_c__macos_arm64.a +0 -0
  493. lib/librerun_sdk.a +0 -0
  494. pymomentum/axel.cpython-312-darwin.so +0 -0
  495. pymomentum/backend/__init__.py +16 -0
  496. pymomentum/backend/skel_state_backend.py +614 -0
  497. pymomentum/backend/trs_backend.py +871 -0
  498. pymomentum/backend/utils.py +224 -0
  499. pymomentum/geometry.cpython-312-darwin.so +0 -0
  500. pymomentum/marker_tracking.cpython-312-darwin.so +0 -0
  501. pymomentum/quaternion.py +740 -0
  502. pymomentum/skel_state.py +514 -0
  503. pymomentum/solver.cpython-312-darwin.so +0 -0
  504. pymomentum/solver2.cpython-312-darwin.so +0 -0
  505. pymomentum/torch/character.py +856 -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.1.82.post0.dist-info/METADATA +121 -0
  510. pymomentum_cpu-0.1.82.post0.dist-info/RECORD +512 -0
  511. pymomentum_cpu-0.1.82.post0.dist-info/WHEEL +5 -0
  512. pymomentum_cpu-0.1.82.post0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,36 @@
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 <Eigen/Core>
11
+
12
+ namespace axel {
13
+
14
+ template <typename T>
15
+ bool rayTriangleIntersect(
16
+ const Eigen::Vector3<T>& beginRay,
17
+ const Eigen::Vector3<T>& direction,
18
+ const Eigen::Vector3<T>& p0,
19
+ const Eigen::Vector3<T>& p1,
20
+ const Eigen::Vector3<T>& p2,
21
+ Eigen::Vector3<T>& intersectionPoint,
22
+ T& tOut);
23
+
24
+ template <typename T>
25
+ bool rayTriangleIntersect(
26
+ const Eigen::Vector3<T>& beginRay,
27
+ const Eigen::Vector3<T>& direction,
28
+ const Eigen::Vector3<T>& p0,
29
+ const Eigen::Vector3<T>& p1,
30
+ const Eigen::Vector3<T>& p2,
31
+ Eigen::Vector3<T>& intersectionPoint,
32
+ T& tOut,
33
+ T& u,
34
+ T& v);
35
+
36
+ } // namespace axel
@@ -0,0 +1,91 @@
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/blend_shape_base.h>
11
+
12
+ namespace momentum {
13
+
14
+ /// Skinning class that combines blend shape vectors with a base shape
15
+ ///
16
+ /// Extends BlendShapeBase by adding a base shape (e.g., PCA mean) and
17
+ /// functionality for computing deformed shapes and estimating blend coefficients.
18
+ /// Primarily used to model identity-dependent shape deformations.
19
+ struct BlendShape : public BlendShapeBase {
20
+ public:
21
+ BlendShape() : factorizationValid_(false) {}
22
+
23
+ /// @param baseShape Base shape vertices
24
+ /// @param numShapes Number of blend shapes
25
+ BlendShape(gsl::span<const Vector3f> baseShape, size_t numShapes);
26
+
27
+ void setBaseShape(gsl::span<const Vector3f> baseShape) {
28
+ baseShape_.assign(baseShape.begin(), baseShape.end());
29
+ }
30
+
31
+ [[nodiscard]] const std::vector<Vector3f>& getBaseShape() const {
32
+ return baseShape_;
33
+ }
34
+
35
+ /// Whether SVD factorization is up-to-date
36
+ [[nodiscard]] bool getFactorizationValid() const {
37
+ return factorizationValid_;
38
+ }
39
+
40
+ /// Applies blend weights to create a deformed shape
41
+ ///
42
+ /// Adds weighted shape vectors to the base shape
43
+ ///
44
+ /// @tparam T Scalar type (float or double)
45
+ /// @param coefficients Weights for each shape vector
46
+ /// @return Resulting deformed shape
47
+ template <typename T>
48
+ [[nodiscard]] std::vector<Eigen::Vector3<T>> computeShape(
49
+ const BlendWeightsT<T>& coefficients) const;
50
+
51
+ /// Output parameter version of computeShape
52
+ ///
53
+ /// @tparam T Scalar type (float or double)
54
+ /// @param coefficients Weights for each shape vector
55
+ /// @param result [out] Resulting deformed shape
56
+ template <typename T>
57
+ void computeShape(const BlendWeightsT<T>& coefficients, std::vector<Eigen::Vector3<T>>& result)
58
+ const;
59
+
60
+ /// Solves for blend weights that best approximate a target shape
61
+ ///
62
+ /// Uses SVD to find optimal coefficients with optional regularization
63
+ /// and per-vertex weighting
64
+ ///
65
+ /// @param vertices Target shape to approximate
66
+ /// @param regularization Higher values produce smaller coefficients
67
+ /// @param weights Optional per-vertex importance weights
68
+ /// @return Estimated blend shape coefficients
69
+ [[nodiscard]] VectorXf estimateCoefficients(
70
+ gsl::span<const Vector3f> vertices,
71
+ float regularization = 1.0f,
72
+ const VectorXf& weights = VectorXf()) const;
73
+
74
+ /// Overrides base method to also invalidate factorization
75
+ ///
76
+ /// @param index Index of the shape vector to set
77
+ /// @param shapeVector Vector of vertex offsets
78
+ void setShapeVector(size_t index, gsl::span<const Vector3f> shapeVector);
79
+
80
+ /// Compares all components of two blend shapes
81
+ ///
82
+ /// @param blendShape Other blend shape to compare with
83
+ [[nodiscard]] bool isApprox(const BlendShape& blendShape) const;
84
+
85
+ private:
86
+ std::vector<Vector3f> baseShape_;
87
+ mutable Eigen::JacobiSVD<MatrixXf> factorization_;
88
+ mutable bool factorizationValid_;
89
+ };
90
+
91
+ } // namespace momentum
@@ -0,0 +1,70 @@
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/types.h>
12
+
13
+ namespace momentum {
14
+
15
+ /// Skinning class that manages blend shape vectors/offsets
16
+ ///
17
+ /// Used to model facial expressions and potentially other deformations
18
+ /// such as pose-dependent shape changes
19
+ struct BlendShapeBase {
20
+ public:
21
+ BlendShapeBase() = default;
22
+
23
+ /// @param modelSize Number of vertices in the model
24
+ /// @param numShapes Number of blend shapes
25
+ BlendShapeBase(size_t modelSize, size_t numShapes);
26
+
27
+ /// @param shapeVectors Matrix where each column is a shape vector
28
+ void setShapeVectors(const MatrixXf& shapeVectors) {
29
+ shapeVectors_ = shapeVectors;
30
+ }
31
+
32
+ [[nodiscard]] const MatrixXf& getShapeVectors() const {
33
+ return shapeVectors_;
34
+ }
35
+
36
+ /// Calculates weighted combination of shape vectors
37
+ ///
38
+ /// @tparam T Scalar type (float or double)
39
+ /// @param blendWeights Weights for each shape vector
40
+ /// @return Combined vertex offsets
41
+ template <typename T>
42
+ [[nodiscard]] VectorX<T> computeDeltas(const BlendWeightsT<T>& blendWeights) const;
43
+
44
+ /// Adds weighted shape vectors to existing vertices
45
+ ///
46
+ /// @tparam T Scalar type (float or double)
47
+ /// @param blendWeights Weights for each shape vector
48
+ /// @param result [in,out] Vertices to modify
49
+ template <typename T>
50
+ void applyDeltas(const BlendWeightsT<T>& blendWeights, std::vector<Eigen::Vector3<T>>& result)
51
+ const;
52
+
53
+ /// @param index Index of the shape vector to set
54
+ /// @param shapeVector Vector of vertex offsets
55
+ void setShapeVector(size_t index, gsl::span<const Vector3f> shapeVector);
56
+
57
+ [[nodiscard]] Eigen::Index shapeSize() const {
58
+ return shapeVectors_.cols();
59
+ }
60
+
61
+ /// Returns number of vertices (rows/3)
62
+ [[nodiscard]] size_t modelSize() const {
63
+ return shapeVectors_.rows() / 3;
64
+ }
65
+
66
+ protected:
67
+ MatrixXf shapeVectors_;
68
+ };
69
+
70
+ } // namespace momentum
@@ -0,0 +1,96 @@
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
+
14
+ namespace momentum {
15
+
16
+ /// @file blend_shape_skinning.h
17
+ ///
18
+ /// This file provides functions for applying blend shape deformations and skeletal transformations
19
+ /// to character meshes. It contains two main sets of functionality:
20
+ ///
21
+ /// 1. Skinning functions:
22
+ /// - skinWithBlendShapes(character, state, blendWeights, outputMesh): Use when you already have
23
+ /// blend weights calculated and want to apply them directly.
24
+ /// - skinWithBlendShapes(character, state, modelParams, outputMesh): Use when you have model
25
+ /// parameters and need to extract blend weights before skinning. This is more convenient for
26
+ /// high-level character animation where you work with model parameters.
27
+ ///
28
+ /// 2. Weight extraction functions:
29
+ /// - extractBlendWeights(): Use to get blend shape weights from model parameters for
30
+ /// identity/shape
31
+ /// blend shapes (e.g., body shape variations).
32
+ /// - extractFaceExpressionBlendWeights(): Use to get blend shape weights specifically for facial
33
+ /// expressions, which are stored separately from regular blend shapes.
34
+
35
+ /// Applies blend shape deformations and skeletal transformations to a mesh.
36
+ ///
37
+ /// Computes the final vertex positions by applying blend shape offsets to the base mesh,
38
+ /// then transforming the resulting vertices using linear blend skinning based on the
39
+ /// skeleton state. Use this version when you already have pre-calculated blend weights.
40
+ ///
41
+ /// @param character Character containing mesh, blend shapes, and skinning data
42
+ /// @param state Current pose of the skeleton
43
+ /// @param blendWeights Weights for each blend shape
44
+ /// @param outputMesh Mesh to store the resulting deformed vertices
45
+ template <typename T>
46
+ void skinWithBlendShapes(
47
+ const Character& character,
48
+ const SkeletonStateT<T>& state,
49
+ const BlendWeightsT<T>& blendWeights,
50
+ MeshT<T>& outputMesh);
51
+
52
+ /// Applies blend shape deformations and skeletal transformations to a mesh.
53
+ ///
54
+ /// Overload that extracts blend shape weights from model parameters before skinning.
55
+ /// Use this version when working with high-level character animation where you have
56
+ /// model parameters rather than direct blend weights.
57
+ ///
58
+ /// @param character Character containing mesh, blend shapes, and skinning data
59
+ /// @param state Current pose of the skeleton
60
+ /// @param modelParams Model parameters containing blend shape weights
61
+ /// @param outputMesh Mesh to store the resulting deformed vertices
62
+ template <typename T>
63
+ void skinWithBlendShapes(
64
+ const Character& character,
65
+ const SkeletonStateT<T>& state,
66
+ const ModelParametersT<T>& modelParams,
67
+ MeshT<T>& outputMesh);
68
+
69
+ /// Extracts blend shape weights from model parameters.
70
+ ///
71
+ /// Maps from the model parameter space to blend shape weights using the parameter transform.
72
+ /// Use this function to get weights for identity/shape blend shapes (e.g., body shape variations).
73
+ ///
74
+ /// @param paramTransform Mapping between model parameters and blend shape parameters
75
+ /// @param modelParams Current model parameters
76
+ /// @return Vector of blend shape weights
77
+ template <typename T>
78
+ BlendWeightsT<T> extractBlendWeights(
79
+ const ParameterTransform& paramTransform,
80
+ const ModelParametersT<T>& modelParams);
81
+
82
+ /// Extracts facial expression blend shape weights from model parameters.
83
+ ///
84
+ /// Maps from the model parameter space to facial expression blend shape weights
85
+ /// using the parameter transform. Use this function specifically for facial animation
86
+ /// parameters, which are stored separately from regular blend shapes.
87
+ ///
88
+ /// @param paramTransform Mapping between model parameters and face expression parameters
89
+ /// @param modelParams Current model parameters
90
+ /// @return Vector of facial expression blend shape weights
91
+ template <typename T>
92
+ BlendWeightsT<T> extractFaceExpressionBlendWeights(
93
+ const ParameterTransform& paramTransform,
94
+ const ModelParametersT<T>& modelParams);
95
+
96
+ } // namespace momentum
@@ -0,0 +1,272 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #include <momentum/character/collision_geometry.h>
11
+ #include <momentum/character/fwd.h>
12
+ #include <momentum/character/locator.h>
13
+ #include <momentum/character/parameter_limits.h>
14
+ #include <momentum/character/parameter_transform.h>
15
+ #include <momentum/character/skeleton.h>
16
+ #include <momentum/character/skinned_locator.h>
17
+ #include <momentum/character/types.h>
18
+ #include <momentum/math/fwd.h>
19
+
20
+ namespace momentum {
21
+
22
+ /// A character model with skeletal structure, mesh, and optional components.
23
+ template <typename T>
24
+ struct CharacterT {
25
+ /// @{ @name Required components
26
+
27
+ /// Skeletal structure defining the character's joints and hierarchy
28
+ Skeleton skeleton;
29
+
30
+ /// Maps model parameters to joint parameters
31
+ ParameterTransform parameterTransform;
32
+
33
+ /// @}
34
+
35
+ /// @{ @name Optional components
36
+
37
+ /// Constraints on model parameters
38
+ ParameterLimits parameterLimits;
39
+
40
+ /// Points of interest attached to joints
41
+ LocatorList locators;
42
+
43
+ /// Points of interest attached to joints, with skinning weights
44
+ SkinnedLocatorList skinnedLocators;
45
+
46
+ /// 3D mesh representing the character's surface
47
+ Mesh_u mesh;
48
+
49
+ /// Defines how mesh vertices are influenced by joints
50
+ SkinWeights_u skinWeights;
51
+
52
+ /// Pose-dependent shape corrections
53
+ PoseShape_u poseShapes;
54
+
55
+ /// Collision volumes for the character
56
+ CollisionGeometry_u collision;
57
+
58
+ /// Shape variations that can be blended
59
+ BlendShape_const_p blendShape;
60
+
61
+ /// Facial expression blend shapes
62
+ BlendShapeBase_const_p faceExpressionBlendShape;
63
+
64
+ /// Inverse of the bind pose transformations for each joint
65
+ TransformationList inverseBindPose;
66
+
67
+ /// Maps from original joint indices to simplified joint indices
68
+ std::vector<size_t> jointMap;
69
+
70
+ /// Character identifier
71
+ std::string name;
72
+
73
+ /// @}
74
+
75
+ /// Default constructor
76
+ CharacterT();
77
+
78
+ /// Destructor
79
+ ~CharacterT();
80
+
81
+ /// Constructs a character with the specified components
82
+ ///
83
+ /// @param s Skeleton defining joint hierarchy
84
+ /// @param pt Parameter transform mapping model parameters to joint parameters
85
+ /// @param pl Optional parameter limits/constraints
86
+ /// @param l Optional locators attached to joints
87
+ /// @param m Optional mesh representing the character's surface
88
+ /// @param sw Optional skin weights defining how mesh vertices are influenced by joints
89
+ /// @param cg Optional collision geometry
90
+ /// @param bs Optional pose-dependent shape corrections
91
+ /// @param blendShapes Optional shape variations that can be blended
92
+ /// @param faceExpressionBlendShapes Optional facial expression blend shapes
93
+ /// @param nameIn Optional character identifier
94
+ /// @param inverseBindPose Optional inverse bind pose transformations
95
+ CharacterT(
96
+ const Skeleton& s,
97
+ const ParameterTransform& pt,
98
+ const ParameterLimits& pl = ParameterLimits(),
99
+ const LocatorList& l = LocatorList(),
100
+ const Mesh* m = nullptr,
101
+ const SkinWeights* sw = nullptr,
102
+ const CollisionGeometry* cg = nullptr,
103
+ const PoseShape* bs = nullptr,
104
+ BlendShape_const_p blendShapes = {},
105
+ BlendShapeBase_const_p faceExpressionBlendShapes = {},
106
+ const std::string& nameIn = "",
107
+ const momentum::TransformationList& inverseBindPose = {},
108
+ const SkinnedLocatorList& skinnedLocators = {});
109
+
110
+ /// Copy constructor
111
+ CharacterT(const CharacterT& c);
112
+
113
+ /// Move constructor
114
+ CharacterT(CharacterT&& c) noexcept;
115
+
116
+ /// Copy assignment operator
117
+ CharacterT& operator=(const CharacterT& rhs);
118
+
119
+ /// Move assignment operator
120
+ CharacterT& operator=(CharacterT&& rhs) noexcept;
121
+
122
+ /// Creates a simplified character with only joints affected by the specified parameters
123
+ ///
124
+ /// @param activeParams Parameters to keep (defaults to all parameters)
125
+ /// @return A new character with simplified skeleton and parameter transform
126
+ [[nodiscard]] CharacterT simplify(const ParameterSet& activeParams = ParameterSet().flip()) const;
127
+
128
+ /// Creates a simplified character with only the specified joints
129
+ ///
130
+ /// @param activeJoints Boolean vector indicating which joints to keep
131
+ /// @return A new character with only the requested joints
132
+ [[nodiscard]] CharacterT simplifySkeleton(const std::vector<bool>& activeJoints) const;
133
+
134
+ /// Creates a simplified character with only the specified parameters
135
+ ///
136
+ /// @param parameterSet Set of parameters to keep
137
+ /// @return A new character with only the requested parameters
138
+ [[nodiscard]] CharacterT simplifyParameterTransform(const ParameterSet& parameterSet) const;
139
+
140
+ /// Remaps skin weights from original character to simplified version
141
+ ///
142
+ /// @param skinWeights Original skin weights
143
+ /// @param originalCharacter Original character containing the full joint hierarchy
144
+ /// @return Remapped skin weights for the simplified character
145
+ [[nodiscard]] SkinWeights remapSkinWeights(
146
+ const SkinWeights& skinWeights,
147
+ const CharacterT& originalCharacter) const;
148
+
149
+ /// Remaps parameter limits from original character to simplified version
150
+ ///
151
+ /// @param limits Original parameter limits
152
+ /// @param originalCharacter Original character containing the full joint hierarchy
153
+ /// @return Remapped parameter limits for the simplified character
154
+ [[nodiscard]] ParameterLimits remapParameterLimits(
155
+ const ParameterLimits& limits,
156
+ const CharacterT& originalCharacter) const;
157
+
158
+ /// Remaps locators from original character to simplified version
159
+ ///
160
+ /// @param locs Original locators
161
+ /// @param originalCharacter Original character containing the full joint hierarchy
162
+ /// @return Remapped locators for the simplified character
163
+ [[nodiscard]] LocatorList remapLocators(
164
+ const LocatorList& locs,
165
+ const CharacterT& originalCharacter) const;
166
+
167
+ [[nodiscard]] SkinnedLocatorList remapSkinnedLocators(
168
+ const SkinnedLocatorList& locs,
169
+ const CharacterT& originalCharacter) const;
170
+
171
+ /// Determines which joints are affected by the specified parameters
172
+ ///
173
+ /// @param parameterSet Set of parameters to check
174
+ /// @return Boolean vector indicating which joints are affected by the parameters
175
+ [[nodiscard]] std::vector<bool> parametersToActiveJoints(const ParameterSet& parameterSet) const;
176
+
177
+ /// Determines which parameters affect the specified joints
178
+ ///
179
+ /// @param activeJoints Boolean vector indicating which joints to check
180
+ /// @return Set of parameters that affect the specified joints
181
+ [[nodiscard]] ParameterSet activeJointsToParameters(const std::vector<bool>& activeJoints) const;
182
+
183
+ /// Returns parameters representing the character's bind pose
184
+ ///
185
+ /// The bind pose is the rest pose when all model parameters and joint offsets are zero.
186
+ /// When forward kinematics is applied to the bind pose, it results in the rest pose skeleton.
187
+ [[nodiscard]] CharacterParameters bindPose() const;
188
+
189
+ /// Initializes the parameter transform with the correct dimensions for this character
190
+ void initParameterTransform();
191
+
192
+ /// Resets the joint map to identity (each joint maps to itself)
193
+ void resetJointMap();
194
+
195
+ /// Initializes the inverse bind pose transformations
196
+ ///
197
+ /// The inverse bind pose is a set of affine transformations for each joint that
198
+ /// map from world space to local joint space in the bind pose configuration.
199
+ void initInverseBindPose();
200
+
201
+ /// Splits character parameters into active and inactive components
202
+ ///
203
+ /// @param character Character to use for the parameter transform
204
+ /// @param parameters Input parameters to split
205
+ /// @param parameterSet Set indicating which parameters are active
206
+ /// @return Parameters with active parameters zeroed in pose and applied to offsets
207
+ [[nodiscard]] static CharacterParameters splitParameters(
208
+ const CharacterT& character,
209
+ const CharacterParameters& parameters,
210
+ const ParameterSet& parameterSet);
211
+
212
+ /// Creates a new character with the specified blend shapes
213
+ ///
214
+ /// @param blendShape_in Blend shapes to add to the character
215
+ /// @param maxBlendShapes Maximum number of blend shape parameters to add (use all if <= 0)
216
+ /// @return A new character with the specified blend shapes
217
+ [[nodiscard]] CharacterT withBlendShape(
218
+ BlendShape_const_p blendShape_in,
219
+ Eigen::Index maxBlendShapes) const;
220
+
221
+ /// Creates a new character with the specified face expression blend shapes
222
+ ///
223
+ /// @param blendShape_in Face expression blend shapes to add to the character
224
+ /// @param maxBlendShapes Maximum number of blend shape parameters to add (use all if <= 0)
225
+ /// @return A new character with the specified face expression blend shapes
226
+ [[nodiscard]] CharacterT withFaceExpressionBlendShape(
227
+ BlendShapeBase_const_p blendShape_in,
228
+ Eigen::Index maxBlendShapes = -1) const;
229
+
230
+ /// Adds blend shapes to this character
231
+ ///
232
+ /// @param blendShape_in Blend shapes to add to the character
233
+ /// @param maxBlendShapes Maximum number of blend shape parameters to add (use all if <= 0)
234
+ void addBlendShape(const BlendShape_const_p& blendShape_in, Eigen::Index maxBlendShapes);
235
+
236
+ /// Adds face expression blend shapes to this character
237
+ ///
238
+ /// @param blendShape_in Face expression blend shapes to add to the character
239
+ /// @param maxBlendShapes Maximum number of blend shape parameters to add (use all if <= 0)
240
+ void addFaceExpressionBlendShape(
241
+ const BlendShapeBase_const_p& blendShape_in,
242
+ Eigen::Index maxBlendShapes = -1);
243
+
244
+ /// Creates a new character with blend shapes baked into the mesh
245
+ ///
246
+ /// @param modelParams Model parameters containing blend shape weights
247
+ /// @return A new character with blend shapes baked into the mesh
248
+ [[nodiscard]] CharacterT bakeBlendShape(const ModelParameters& modelParams) const;
249
+
250
+ /// Creates a new character with blend shapes baked into the mesh
251
+ ///
252
+ /// @param blendWeights Blend shape weights to apply
253
+ /// @return A new character with blend shapes baked into the mesh
254
+ [[nodiscard]] CharacterT bakeBlendShape(const BlendWeights& blendWeights) const;
255
+
256
+ /// Generic "bake-out" for turning a character into self-contained geometry.
257
+ ///
258
+ /// @param[in] modelParams Current pose/scale/blend-shape parameters.
259
+ /// @param[in] bakeBlendShapes Set true (default) to apply blend-shape deltas and remove their
260
+ /// parameters from the character.
261
+ /// @param[in] bakeScales Set true (default) to evaluate the posed skeleton, run
262
+ /// Linear-Blend-Skinning once, and remove all scaling parameters from the character.
263
+ ///
264
+ /// The returned character contains a static mesh with all requested deformations baked in, while
265
+ /// still supporting any parameters you elected to keep.
266
+ [[nodiscard]] CharacterT bake(
267
+ const ModelParameters& modelParams,
268
+ bool bakeBlendShapes = true,
269
+ bool bakeScales = true) const;
270
+ };
271
+
272
+ } // namespace momentum
@@ -0,0 +1,108 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #include <momentum/character/character.h>
11
+ #include <momentum/character/locator_state.h>
12
+ #include <momentum/character/skeleton_state.h>
13
+ #include <momentum/math/fwd.h>
14
+
15
+ namespace momentum {
16
+
17
+ /// Represents the complete state of a character at a specific point in time.
18
+ ///
19
+ /// Stores the character's parameters, skeleton state, locator positions,
20
+ /// skinned mesh, and collision geometry state. This class is used for
21
+ /// character animation and rendering.
22
+ template <typename T>
23
+ struct CharacterStateT {
24
+ /// Model parameters and joint offsets
25
+ CharacterParameters parameters;
26
+
27
+ /// Joint transformations
28
+ SkeletonState skeletonState;
29
+
30
+ /// Locator positions and orientations
31
+ LocatorState locatorState;
32
+
33
+ /// Skinned mesh (may be null if updateMesh=false)
34
+ Mesh_u meshState;
35
+
36
+ /// Collision geometry state (may be null if updateCollision=false)
37
+ CollisionGeometryState_u collisionState;
38
+
39
+ /// Creates an empty character state
40
+ CharacterStateT();
41
+
42
+ /// Creates a deep copy of another character state
43
+ explicit CharacterStateT(const CharacterStateT& other);
44
+
45
+ /// Move constructor
46
+ CharacterStateT(CharacterStateT&& c) noexcept;
47
+
48
+ /// Copy assignment is disabled
49
+ CharacterStateT& operator=(const CharacterStateT& rhs) = delete;
50
+
51
+ /// Move assignment operator
52
+ CharacterStateT& operator=(CharacterStateT&& rhs) noexcept;
53
+
54
+ /// Destructor
55
+ ~CharacterStateT();
56
+
57
+ /// Creates a character state in bind pose
58
+ ///
59
+ /// @param referenceCharacter The character to use as reference
60
+ /// @param updateMesh Whether to compute the skinned mesh
61
+ /// @param updateCollision Whether to update collision geometry
62
+ explicit CharacterStateT(
63
+ const CharacterT<T>& referenceCharacter,
64
+ bool updateMesh = true,
65
+ bool updateCollision = true);
66
+
67
+ /// Creates a character state with specific parameters
68
+ ///
69
+ /// @param parameters The character parameters to use
70
+ /// @param referenceCharacter The character to use as reference
71
+ /// @param updateMesh Whether to compute the skinned mesh
72
+ /// @param updateCollision Whether to update collision geometry
73
+ /// @param applyLimits Whether to apply joint parameter limits
74
+ CharacterStateT(
75
+ const CharacterParameters& parameters,
76
+ const CharacterT<T>& referenceCharacter,
77
+ bool updateMesh = true,
78
+ bool updateCollision = true,
79
+ bool applyLimits = true);
80
+
81
+ /// Updates the character state with specific parameters
82
+ ///
83
+ /// If parameters.offsets is empty, it will be initialized with zeros.
84
+ ///
85
+ /// @param parameters The character parameters to use
86
+ /// @param referenceCharacter The character to use as reference
87
+ /// @param updateMesh Whether to compute the skinned mesh
88
+ /// @param updateCollision Whether to update collision geometry
89
+ /// @param applyLimits Whether to apply joint parameter limits
90
+ void set(
91
+ const CharacterParameters& parameters,
92
+ const CharacterT<T>& referenceCharacter,
93
+ bool updateMesh = true,
94
+ bool updateCollision = true,
95
+ bool applyLimits = true);
96
+
97
+ /// Sets the character state to the bind pose
98
+ ///
99
+ /// @param referenceCharacter The character to use as reference
100
+ /// @param updateMesh Whether to compute the skinned mesh
101
+ /// @param updateCollision Whether to update collision geometry
102
+ void setBindPose(
103
+ const CharacterT<T>& referenceCharacter,
104
+ bool updateMesh = true,
105
+ bool updateCollision = true);
106
+ };
107
+
108
+ } // namespace momentum