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,80 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #include <momentum/character/fwd.h>
11
+ #include <momentum/character/skin_weights.h>
12
+ #include <momentum/math/fwd.h>
13
+
14
+ namespace momentum {
15
+
16
+ template <typename T>
17
+ struct BoneWeightT {
18
+ size_t parentBone{};
19
+ float weight{};
20
+ Eigen::Vector3<T> weightedWorldSpacePoint;
21
+
22
+ bool operator<(const BoneWeightT<T>& rhs) const {
23
+ return parentBone < rhs.parentBone;
24
+ }
25
+
26
+ bool operator>(const BoneWeightT<T>& rhs) const {
27
+ return parentBone > rhs.parentBone;
28
+ }
29
+
30
+ BoneWeightT<T>& operator+=(const BoneWeightT<T>& rhs) {
31
+ this->weight += rhs.weight;
32
+ this->weightedWorldSpacePoint += rhs.weightedWorldSpacePoint;
33
+ return *this;
34
+ }
35
+ };
36
+
37
+ // When we compute the derivatives of skinned points, we usually
38
+ // end up with a loop like this:
39
+ // for each skinned point i
40
+ // for each skinning bone and weight B_ij, w_ij
41
+ // for each ancestor k
42
+ // compute the weighted change in the skinned point wrt the ancestor
43
+ // The redundancy here is that most points are skinned to a set of bones in the
44
+ // same hierarchy (for example, two parts of the arm) and so it's redundant to
45
+ // walk up the whole hierarchy from scratch for each skinned bone.
46
+ //
47
+ // This class instead does a single pass up the tree from leaf-most to root-most
48
+ // skinned bones, accumulating skinning weights along the way. By packaging it
49
+ // in this class we hide the complexity and simplify the jacobian/gradient
50
+ // calculation.
51
+ template <typename T>
52
+ class SkinningWeightIteratorT {
53
+ public:
54
+ SkinningWeightIteratorT(
55
+ const Character& character,
56
+ const MeshT<T>& restMesh,
57
+ const SkeletonStateT<T>& skelState,
58
+ int vertexIndex);
59
+
60
+ SkinningWeightIteratorT(
61
+ const Character& character,
62
+ const SkinnedLocator& locator,
63
+ const Eigen::Vector3<T>& locatorPosition,
64
+ const SkeletonStateT<T>& skelState);
65
+
66
+ [[nodiscard]] bool finished() const;
67
+
68
+ // Returns the tuple <parent bone index, bone weight, vertex position in world space wrt the
69
+ // current bone>
70
+ std::tuple<size_t, T, Eigen::Vector3<T>> next();
71
+
72
+ private:
73
+ void checkInvariants();
74
+
75
+ std::array<BoneWeightT<T>, kMaxSkinJoints> boneWeights;
76
+ int nBoneWeights;
77
+ const Character& character;
78
+ };
79
+
80
+ } // namespace momentum
@@ -0,0 +1,90 @@
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/skeleton_state.h>
11
+ #include <momentum/character_solver/fwd.h>
12
+ #include <momentum/character_solver/skeleton_error_function.h>
13
+
14
+ namespace momentum {
15
+
16
+ template <typename T>
17
+ class StateErrorFunctionT : public SkeletonErrorFunctionT<T> {
18
+ public:
19
+ StateErrorFunctionT(const Skeleton& skel, const ParameterTransform& pt);
20
+ explicit StateErrorFunctionT(const Character& character);
21
+
22
+ [[nodiscard]] double getError(const ModelParametersT<T>& params, const SkeletonStateT<T>& state)
23
+ final;
24
+
25
+ double getGradient(
26
+ const ModelParametersT<T>& params,
27
+ const SkeletonStateT<T>& state,
28
+ Eigen::Ref<Eigen::VectorX<T>> gradient) final;
29
+
30
+ double getJacobian(
31
+ const ModelParametersT<T>& params,
32
+ const SkeletonStateT<T>& state,
33
+ Eigen::Ref<Eigen::MatrixX<T>> jacobian,
34
+ Eigen::Ref<Eigen::VectorX<T>> residual,
35
+ int& usedRows) final;
36
+
37
+ [[nodiscard]] size_t getJacobianSize() const final;
38
+
39
+ void reset();
40
+ void setTargetState(const SkeletonStateT<T>* target);
41
+ void setTargetState(const SkeletonStateT<T>& target);
42
+ void setTargetState(TransformListT<T> target);
43
+ void setTargetWeight(const Eigen::VectorX<T>& weights);
44
+ void setTargetWeights(const Eigen::VectorX<T>& posWeight, const Eigen::VectorX<T>& rotWeight);
45
+
46
+ /// Set the target position weights for each joint.
47
+ /// @param posWeight Per-joint position weights.
48
+ void setPositionTargetWeights(const Eigen::VectorX<T>& posWeight);
49
+
50
+ /// Set the target rotation weights for each joint.
51
+ /// @param rotWeight Per-joint rotation weights.
52
+ void setRotationTargetWeights(const Eigen::VectorX<T>& rotWeight);
53
+
54
+ void setWeights(const float posWeight, const float rotationWeight) {
55
+ posWgt_ = posWeight;
56
+ rotWgt_ = rotationWeight;
57
+ }
58
+
59
+ [[nodiscard]] const TransformListT<T>& getTargetState() const {
60
+ return this->targetState_;
61
+ }
62
+
63
+ [[nodiscard]] const Eigen::VectorX<T>& getPositionWeights() const {
64
+ return targetPositionWeights_;
65
+ }
66
+ [[nodiscard]] const Eigen::VectorX<T>& getRotationWeights() const {
67
+ return targetRotationWeights_;
68
+ }
69
+ [[nodiscard]] const T& getPositionWeight() const {
70
+ return posWgt_;
71
+ }
72
+ [[nodiscard]] const T& getRotationWeight() const {
73
+ return rotWgt_;
74
+ }
75
+
76
+ private:
77
+ TransformListT<T> targetState_;
78
+ Eigen::VectorX<T> targetPositionWeights_;
79
+ Eigen::VectorX<T> targetRotationWeights_;
80
+
81
+ T posWgt_;
82
+ T rotWgt_;
83
+
84
+ public:
85
+ // weights for the error functions
86
+ static constexpr T kPositionWeight = 1e-3f;
87
+ static constexpr T kOrientationWeight = 1e+0f;
88
+ };
89
+
90
+ } // namespace momentum
@@ -0,0 +1,80 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #include <momentum/character/character.h>
11
+ #include <momentum/character_solver/fwd.h>
12
+ #include <momentum/math/random.h>
13
+ #include <momentum/math/transform.h>
14
+ #include <momentum/math/types.h>
15
+ #include <momentum/solver/fwd.h>
16
+
17
+ namespace momentum {
18
+
19
+ /// Function which computes a new set of model parameters such that the character pose is a rigidly
20
+ /// transformed version of the original pose. While there is technically a closed form solution
21
+ /// for any given skeleton, this is complicated in momentum because different
22
+ /// characters attach the rigid parameters to different joints, so a fully general solution uses IK.
23
+ /// However, getting it right requires dealing with local minima issues in Euler angles and other
24
+ /// challenges. So centralizing this functionality in a single place is useful.
25
+ ///
26
+ /// @param[in] ensureContinuousOutput If true, the output model parameters will be solved
27
+ /// sequentially so that the resulting output is continuous where possible. This helps to avoid
28
+ /// issues with Euler flipping.
29
+ template <typename T>
30
+ std::vector<ModelParametersT<T>> transformPose(
31
+ const Character& character,
32
+ const std::vector<ModelParametersT<T>>& modelParameters,
33
+ const std::vector<TransformT<T>>& transforms,
34
+ bool ensureContinuousOutput = true);
35
+
36
+ template <typename T>
37
+ std::vector<ModelParametersT<T>> transformPose(
38
+ const Character& character,
39
+ const std::vector<ModelParametersT<T>>& modelParameters,
40
+ const TransformT<T>& transforms);
41
+
42
+ /// Solver which can be reused to repeatedly apply the transformPose function listed above.
43
+ template <typename T>
44
+ class PoseTransformSolverT {
45
+ public:
46
+ explicit PoseTransformSolverT(const Character& character);
47
+ ~PoseTransformSolverT();
48
+
49
+ /// Applies a rigid transform to the given model parameters.
50
+ /// @param[in,out] modelParameters The model parameters to be transformed.
51
+ /// @param[in] transform The transform to apply.
52
+ /// @param[in] modelParametersPrev The previous pose, which is used to ensure continuity (the
53
+ /// solver will initialize using the previous frame's rigid parameters).
54
+ void transformPose(
55
+ ModelParametersT<T>& modelParameters,
56
+ const TransformT<T>& transform,
57
+ const ModelParametersT<T>& modelParametersPrev = ModelParametersT<T>{});
58
+
59
+ private:
60
+ Eigen::Index numModelParametersFull_;
61
+
62
+ momentum::Character characterSimplified_;
63
+ momentum::ParameterTransformT<T> parameterTransformSimplified_;
64
+ size_t rootJointSimplified_;
65
+ momentum::ParameterSet rigidParametersSimplified_;
66
+ std::vector<size_t> simplifiedParamToFullParamIdx_;
67
+
68
+ momentum::ModelParametersT<T> solvedParametersSimplified_;
69
+ momentum::SkeletonStateT<T> skelStateSimplified_;
70
+
71
+ std::shared_ptr<momentum::PositionErrorFunctionT<T>> positionError_;
72
+ std::shared_ptr<momentum::OrientationErrorFunctionT<T>> orientationError_;
73
+
74
+ std::unique_ptr<momentum::SkeletonSolverFunctionT<T>> solverFunction_;
75
+ std::unique_ptr<momentum::SolverT<T>> solver_;
76
+
77
+ momentum::Random<> rng_;
78
+ };
79
+
80
+ } // namespace momentum
@@ -0,0 +1,78 @@
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/skeleton_state.h>
11
+ #include <momentum/character_solver/fwd.h>
12
+ #include <momentum/character_solver/skeleton_solver_function.h>
13
+ #include <momentum/math/online_householder_qr.h>
14
+ #include <momentum/solver/solver.h>
15
+
16
+ #include <Eigen/Core>
17
+
18
+ namespace momentum {
19
+
20
+ /// Trust Region with QR decomposition specific options
21
+ struct TrustRegionQROptions : SolverOptions {
22
+ /// Trust region radius parameter for the Trust Region solver with QR decomposition.
23
+ float trustRegionRadius_ = 1.0f;
24
+
25
+ TrustRegionQROptions() = default;
26
+
27
+ /* implicit */ TrustRegionQROptions(const SolverOptions& baseOptions)
28
+ : SolverOptions(baseOptions) {
29
+ // Empty
30
+ }
31
+ };
32
+
33
+ template <typename T>
34
+ class TrustRegionQRT : public SolverT<T> {
35
+ public:
36
+ TrustRegionQRT(const SolverOptions& options, SkeletonSolverFunctionT<T>* solverFun);
37
+
38
+ [[nodiscard]] std::string_view getName() const override;
39
+
40
+ void setOptions(const SolverOptions& options) final;
41
+
42
+ void iter() {
43
+ doIteration();
44
+ this->iteration_++;
45
+ }
46
+
47
+ void init() {
48
+ this->iteration_ = 0;
49
+ initializeSolver();
50
+ }
51
+
52
+ Eigen::VectorX<T> getP() {
53
+ return this->parameters_;
54
+ }
55
+
56
+ protected:
57
+ void doIteration() final;
58
+ void initializeSolver() final;
59
+
60
+ private:
61
+ ResizeableMatrix<T> jacobian_;
62
+ ResizeableMatrix<T> residual_;
63
+
64
+ Eigen::VectorX<T> gradientSub_;
65
+ Eigen::MatrixX<T> lambdaDiag_;
66
+ Eigen::VectorX<T> lambdaZero_;
67
+
68
+ OnlineHouseholderQR<T> qrSolver_;
69
+
70
+ SkeletonStateT<T> skeletonState_;
71
+
72
+ T trustRegionRadius_;
73
+ T maxTrustRegionRadius_ = 10.0;
74
+ T curTrustRegionRadius_ = 1.0;
75
+ Eigen::MatrixX<T> Rmatrix_;
76
+ };
77
+
78
+ } // namespace momentum
@@ -0,0 +1,154 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #include <momentum/character_solver/fwd.h>
11
+ #include <momentum/character_solver/plane_error_function.h>
12
+ #include <momentum/character_solver/position_error_function.h>
13
+ #include <momentum/character_solver/skeleton_error_function.h>
14
+ #include <momentum/math/fwd.h>
15
+
16
+ namespace momentum {
17
+
18
+ template <typename T>
19
+ struct VertexConstraintT {
20
+ int vertexIndex = -1;
21
+ T weight = 1;
22
+ Eigen::Vector3<T> targetPosition;
23
+ Eigen::Vector3<T> targetNormal;
24
+
25
+ template <typename T2>
26
+ VertexConstraintT<T2> cast() const {
27
+ return {
28
+ this->vertexIndex,
29
+ static_cast<T2>(this->weight),
30
+ this->targetPosition.template cast<T2>(),
31
+ this->targetNormal.template cast<T2>()};
32
+ }
33
+ };
34
+
35
+ enum class VertexConstraintType {
36
+ Position, // Target the vertex position
37
+ Plane, // point-to-plane distance using the target normal
38
+ Normal, // point-to-plane distance using the source (body) normal
39
+ SymmetricNormal, // Point-to-plane using a 50/50 mix of source and target normal
40
+ };
41
+
42
+ [[nodiscard]] std::string_view toString(VertexConstraintType type);
43
+
44
+ template <typename T>
45
+ class VertexErrorFunctionT : public SkeletonErrorFunctionT<T> {
46
+ public:
47
+ explicit VertexErrorFunctionT(
48
+ const Character& character,
49
+ VertexConstraintType type = VertexConstraintType::Position,
50
+ uint32_t maxThreads = 0);
51
+ virtual ~VertexErrorFunctionT() override;
52
+
53
+ [[nodiscard]] double getError(
54
+ const ModelParametersT<T>& modelParameters,
55
+ const SkeletonStateT<T>& state) final;
56
+
57
+ double getGradient(
58
+ const ModelParametersT<T>& modelParameters,
59
+ const SkeletonStateT<T>& state,
60
+ Eigen::Ref<Eigen::VectorX<T>> gradient) final;
61
+
62
+ double getJacobian(
63
+ const ModelParametersT<T>& modelParameters,
64
+ const SkeletonStateT<T>& state,
65
+ Eigen::Ref<Eigen::MatrixX<T>> jacobian,
66
+ Eigen::Ref<Eigen::VectorX<T>> residual,
67
+ int& usedRows) final;
68
+
69
+ [[nodiscard]] size_t getJacobianSize() const final;
70
+
71
+ void addConstraint(
72
+ int vertexIndex,
73
+ T weight,
74
+ const Eigen::Vector3<T>& targetPosition,
75
+ const Eigen::Vector3<T>& targetNormal);
76
+ void clearConstraints();
77
+
78
+ [[nodiscard]] const std::vector<VertexConstraintT<T>>& getConstraints() const {
79
+ return constraints_;
80
+ }
81
+
82
+ [[nodiscard]] size_t numConstraints() const {
83
+ return constraints_.size();
84
+ }
85
+
86
+ static constexpr T kPositionWeight = PositionErrorFunctionT<T>::kLegacyWeight;
87
+ static constexpr T kPlaneWeight = PlaneErrorFunctionT<T>::kLegacyWeight;
88
+
89
+ [[nodiscard]] const Character& getCharacter() const {
90
+ return character_;
91
+ }
92
+
93
+ private:
94
+ double calculatePositionJacobian(
95
+ const ModelParametersT<T>& modelParameters,
96
+ const SkeletonStateT<T>& state,
97
+ const VertexConstraintT<T>& constr,
98
+ Ref<Eigen::MatrixX<T>> jac,
99
+ Ref<Eigen::VectorX<T>> res) const;
100
+
101
+ double calculateNormalJacobian(
102
+ const ModelParametersT<T>& modelParameters,
103
+ const SkeletonStateT<T>& state,
104
+ const VertexConstraintT<T>& constr,
105
+ T sourceNormalWeight,
106
+ T targetNormalWeight,
107
+ Ref<Eigen::MatrixX<T>> jac,
108
+ T& res) const;
109
+
110
+ double calculatePositionGradient(
111
+ const ModelParametersT<T>& modelParameters,
112
+ const SkeletonStateT<T>& state,
113
+ const VertexConstraintT<T>& constr,
114
+ Eigen::Ref<Eigen::VectorX<T>> gradient) const;
115
+
116
+ double calculateNormalGradient(
117
+ const ModelParametersT<T>& modelParameters,
118
+ const SkeletonStateT<T>& state,
119
+ const VertexConstraintT<T>& constr,
120
+ T sourceNormalWeight,
121
+ T targetNormalWeight,
122
+ Eigen::Ref<Eigen::VectorX<T>> gradient) const;
123
+
124
+ // Utility function used now in calculateNormalJacobian and calculatePositionGradient
125
+ // to calculate derivatives with respect to position in world space (considering skinning)
126
+ void calculateDWorldPos(
127
+ const SkeletonStateT<T>& state,
128
+ const VertexConstraintT<T>& constr,
129
+ const Eigen::Vector3<T>& d_restPos,
130
+ Eigen::Vector3<T>& d_worldPos) const;
131
+
132
+ std::pair<T, T> computeNormalWeights() const;
133
+
134
+ const Character& character_;
135
+
136
+ std::vector<VertexConstraintT<T>> constraints_;
137
+
138
+ std::unique_ptr<MeshT<T>>
139
+ neutralMesh_; // Rest mesh without facial expression basis,
140
+ // used to restore the neutral shape after facial expressions are applied.
141
+ // Not used with there is a shape basis.
142
+ std::unique_ptr<MeshT<T>> restMesh_; // The rest positions of the mesh after shape basis
143
+ // (and potentially facial expression) has been applied
144
+ std::unique_ptr<MeshT<T>>
145
+ posedMesh_; // The posed mesh after the skeleton transforms have been applied.
146
+
147
+ const VertexConstraintType constraintType_;
148
+
149
+ uint32_t maxThreads_;
150
+
151
+ void updateMeshes(const ModelParametersT<T>& modelParameters, const SkeletonStateT<T>& state);
152
+ };
153
+
154
+ } // namespace momentum
@@ -0,0 +1,118 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #include <momentum/character_solver/fwd.h>
11
+ #include <momentum/character_solver/skeleton_error_function.h>
12
+ #include <momentum/math/fwd.h>
13
+
14
+ namespace momentum {
15
+
16
+ template <typename T>
17
+ struct VertexProjectionConstraintT {
18
+ int vertexIndex = -1;
19
+ T weight = 1;
20
+ Eigen::Vector2<T> targetPosition;
21
+ Eigen::Matrix<T, 3, 4> projection; // Projection matrix
22
+
23
+ template <typename T2>
24
+ VertexProjectionConstraintT<T2> cast() const {
25
+ return {
26
+ this->vertexIndex,
27
+ (T)this->weight,
28
+ this->targetPosition.template cast<T2>(),
29
+ };
30
+ }
31
+ };
32
+
33
+ template <typename T>
34
+ class VertexProjectionErrorFunctionT : public SkeletonErrorFunctionT<T> {
35
+ public:
36
+ explicit VertexProjectionErrorFunctionT(const Character& character, uint32_t maxThreads = 0);
37
+ ~VertexProjectionErrorFunctionT() override;
38
+
39
+ [[nodiscard]] double getError(
40
+ const ModelParametersT<T>& modelParameters,
41
+ const SkeletonStateT<T>& state) final;
42
+
43
+ double getGradient(
44
+ const ModelParametersT<T>& modelParameters,
45
+ const SkeletonStateT<T>& state,
46
+ Eigen::Ref<Eigen::VectorX<T>> gradient) final;
47
+
48
+ double getJacobian(
49
+ const ModelParametersT<T>& modelParameters,
50
+ const SkeletonStateT<T>& state,
51
+ Eigen::Ref<Eigen::MatrixX<T>> jacobian,
52
+ Eigen::Ref<Eigen::VectorX<T>> residual,
53
+ int& usedRows) final;
54
+
55
+ [[nodiscard]] size_t getJacobianSize() const final;
56
+
57
+ void addConstraint(
58
+ int vertexIndex,
59
+ T weight,
60
+ const Eigen::Vector2<T>& targetPosition,
61
+ const Eigen::Matrix<T, 3, 4>& projection);
62
+ void clearConstraints();
63
+
64
+ [[nodiscard]] const std::vector<VertexProjectionConstraintT<T>>& getConstraints() const {
65
+ return constraints_;
66
+ }
67
+
68
+ [[nodiscard]] const Character& getCharacter() const {
69
+ return character_;
70
+ }
71
+
72
+ [[nodiscard]] size_t numConstraints() const {
73
+ return constraints_.size();
74
+ }
75
+
76
+ private:
77
+ double calculateJacobian(
78
+ const ModelParametersT<T>& modelParameters,
79
+ const SkeletonStateT<T>& state,
80
+ const VertexProjectionConstraintT<T>& constr,
81
+ Ref<Eigen::MatrixX<T>> jac,
82
+ Ref<Eigen::VectorX<T>> res) const;
83
+
84
+ double calculateGradient(
85
+ const ModelParametersT<T>& modelParameters,
86
+ const SkeletonStateT<T>& state,
87
+ const VertexProjectionConstraintT<T>& constr,
88
+ Eigen::Ref<Eigen::VectorX<T>> gradient) const;
89
+
90
+ // Utility function used now in calculateJacobian and calculateGradient
91
+ // to calculate derivatives with respect to position in world space (considering skinning)
92
+ void calculateDWorldPos(
93
+ const SkeletonStateT<T>& state,
94
+ const VertexProjectionConstraintT<T>& constr,
95
+ const Eigen::Vector3<T>& d_restPos,
96
+ Eigen::Vector3<T>& d_worldPos) const;
97
+
98
+ void updateMeshes(const ModelParametersT<T>& modelParameters, const SkeletonStateT<T>& state);
99
+
100
+ const Character& character_;
101
+
102
+ std::vector<VertexProjectionConstraintT<T>> constraints_;
103
+
104
+ std::unique_ptr<MeshT<T>>
105
+ neutralMesh_; // Rest mesh without facial expression basis,
106
+ // used to restore the neutral shape after facial expressions are applied.
107
+ // Not used with there is a shape basis.
108
+ std::unique_ptr<MeshT<T>> restMesh_; // The rest positions of the mesh after shape basis
109
+ // (and potentially facial expression) has been applied
110
+ std::unique_ptr<MeshT<T>>
111
+ posedMesh_; // The posed mesh after the skeleton transforms have been applied.
112
+
113
+ uint32_t maxThreads_;
114
+
115
+ T _nearClip = 1.0f;
116
+ };
117
+
118
+ } // namespace momentum