pymomentum-cpu 0.1.93.post0__cp312-cp312-macosx_14_0_arm64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (517) hide show
  1. include/axel/BoundingBox.h +59 -0
  2. include/axel/Bvh.h +708 -0
  3. include/axel/BvhBase.h +75 -0
  4. include/axel/BvhCommon.h +43 -0
  5. include/axel/BvhEmbree.h +87 -0
  6. include/axel/BvhFactory.h +34 -0
  7. include/axel/Checks.h +21 -0
  8. include/axel/DualContouring.h +79 -0
  9. include/axel/KdTree.h +208 -0
  10. include/axel/Log.h +22 -0
  11. include/axel/MeshToSdf.h +123 -0
  12. include/axel/Profile.h +64 -0
  13. include/axel/Ray.h +45 -0
  14. include/axel/SignedDistanceField.h +248 -0
  15. include/axel/SimdKdTree.h +515 -0
  16. include/axel/TriBvh.h +157 -0
  17. include/axel/TriBvhEmbree.h +57 -0
  18. include/axel/common/Constants.h +27 -0
  19. include/axel/common/Types.h +21 -0
  20. include/axel/common/VectorizationTypes.h +58 -0
  21. include/axel/math/BoundingBoxUtils.h +54 -0
  22. include/axel/math/ContinuousCollisionDetection.h +48 -0
  23. include/axel/math/CoplanarityCheck.h +30 -0
  24. include/axel/math/EdgeEdgeDistance.h +31 -0
  25. include/axel/math/MeshHoleFilling.h +117 -0
  26. include/axel/math/PointTriangleProjection.h +34 -0
  27. include/axel/math/PointTriangleProjectionDefinitions.h +209 -0
  28. include/axel/math/RayTriangleIntersection.h +36 -0
  29. include/momentum/character/blend_shape.h +97 -0
  30. include/momentum/character/blend_shape_base.h +86 -0
  31. include/momentum/character/blend_shape_skinning.h +96 -0
  32. include/momentum/character/character.h +272 -0
  33. include/momentum/character/character_state.h +108 -0
  34. include/momentum/character/character_utility.h +128 -0
  35. include/momentum/character/collision_geometry.h +80 -0
  36. include/momentum/character/collision_geometry_state.h +130 -0
  37. include/momentum/character/fwd.h +262 -0
  38. include/momentum/character/inverse_parameter_transform.h +58 -0
  39. include/momentum/character/joint.h +82 -0
  40. include/momentum/character/joint_state.h +241 -0
  41. include/momentum/character/linear_skinning.h +139 -0
  42. include/momentum/character/locator.h +94 -0
  43. include/momentum/character/locator_state.h +43 -0
  44. include/momentum/character/marker.h +48 -0
  45. include/momentum/character/mesh_state.h +71 -0
  46. include/momentum/character/parameter_limits.h +144 -0
  47. include/momentum/character/parameter_transform.h +207 -0
  48. include/momentum/character/pose_shape.h +65 -0
  49. include/momentum/character/skeleton.h +85 -0
  50. include/momentum/character/skeleton_state.h +227 -0
  51. include/momentum/character/skeleton_utility.h +38 -0
  52. include/momentum/character/skin_weights.h +67 -0
  53. include/momentum/character/skinned_locator.h +80 -0
  54. include/momentum/character/types.h +202 -0
  55. include/momentum/character_sequence_solver/fwd.h +200 -0
  56. include/momentum/character_sequence_solver/model_parameters_sequence_error_function.h +65 -0
  57. include/momentum/character_sequence_solver/multipose_solver.h +65 -0
  58. include/momentum/character_sequence_solver/multipose_solver_function.h +82 -0
  59. include/momentum/character_sequence_solver/sequence_error_function.h +104 -0
  60. include/momentum/character_sequence_solver/sequence_solver.h +155 -0
  61. include/momentum/character_sequence_solver/sequence_solver_function.h +158 -0
  62. include/momentum/character_sequence_solver/state_sequence_error_function.h +117 -0
  63. include/momentum/character_sequence_solver/vertex_sequence_error_function.h +123 -0
  64. include/momentum/character_solver/aim_error_function.h +112 -0
  65. include/momentum/character_solver/collision_error_function.h +92 -0
  66. include/momentum/character_solver/collision_error_function_stateless.h +75 -0
  67. include/momentum/character_solver/constraint_error_function-inl.h +324 -0
  68. include/momentum/character_solver/constraint_error_function.h +248 -0
  69. include/momentum/character_solver/distance_error_function.h +77 -0
  70. include/momentum/character_solver/error_function_utils.h +60 -0
  71. include/momentum/character_solver/fixed_axis_error_function.h +139 -0
  72. include/momentum/character_solver/fwd.h +943 -0
  73. include/momentum/character_solver/gauss_newton_solver_qr.h +64 -0
  74. include/momentum/character_solver/height_error_function.h +176 -0
  75. include/momentum/character_solver/joint_to_joint_distance_error_function.h +111 -0
  76. include/momentum/character_solver/limit_error_function.h +57 -0
  77. include/momentum/character_solver/model_parameters_error_function.h +64 -0
  78. include/momentum/character_solver/normal_error_function.h +73 -0
  79. include/momentum/character_solver/orientation_error_function.h +74 -0
  80. include/momentum/character_solver/plane_error_function.h +102 -0
  81. include/momentum/character_solver/point_triangle_vertex_error_function.h +141 -0
  82. include/momentum/character_solver/pose_prior_error_function.h +80 -0
  83. include/momentum/character_solver/position_error_function.h +75 -0
  84. include/momentum/character_solver/projection_error_function.h +93 -0
  85. include/momentum/character_solver/simd_collision_error_function.h +99 -0
  86. include/momentum/character_solver/simd_normal_error_function.h +157 -0
  87. include/momentum/character_solver/simd_plane_error_function.h +164 -0
  88. include/momentum/character_solver/simd_position_error_function.h +165 -0
  89. include/momentum/character_solver/skeleton_error_function.h +151 -0
  90. include/momentum/character_solver/skeleton_solver_function.h +94 -0
  91. include/momentum/character_solver/skinned_locator_error_function.h +166 -0
  92. include/momentum/character_solver/skinned_locator_triangle_error_function.h +146 -0
  93. include/momentum/character_solver/skinning_weight_iterator.h +80 -0
  94. include/momentum/character_solver/state_error_function.h +119 -0
  95. include/momentum/character_solver/transform_pose.h +80 -0
  96. include/momentum/character_solver/trust_region_qr.h +80 -0
  97. include/momentum/character_solver/vertex_error_function.h +155 -0
  98. include/momentum/character_solver/vertex_projection_error_function.h +117 -0
  99. include/momentum/character_solver/vertex_vertex_distance_error_function.h +147 -0
  100. include/momentum/common/aligned.h +155 -0
  101. include/momentum/common/checks.h +27 -0
  102. include/momentum/common/exception.h +70 -0
  103. include/momentum/common/filesystem.h +20 -0
  104. include/momentum/common/fwd.h +27 -0
  105. include/momentum/common/log.h +173 -0
  106. include/momentum/common/log_channel.h +17 -0
  107. include/momentum/common/memory.h +71 -0
  108. include/momentum/common/profile.h +79 -0
  109. include/momentum/common/progress_bar.h +37 -0
  110. include/momentum/common/string.h +52 -0
  111. include/momentum/diff_ik/ceres_utility.h +73 -0
  112. include/momentum/diff_ik/fully_differentiable_body_ik.h +58 -0
  113. include/momentum/diff_ik/fully_differentiable_distance_error_function.h +69 -0
  114. include/momentum/diff_ik/fully_differentiable_motion_error_function.h +46 -0
  115. include/momentum/diff_ik/fully_differentiable_orientation_error_function.h +114 -0
  116. include/momentum/diff_ik/fully_differentiable_pose_prior_error_function.h +76 -0
  117. include/momentum/diff_ik/fully_differentiable_position_error_function.h +138 -0
  118. include/momentum/diff_ik/fully_differentiable_projection_error_function.h +65 -0
  119. include/momentum/diff_ik/fully_differentiable_skeleton_error_function.h +160 -0
  120. include/momentum/diff_ik/fully_differentiable_state_error_function.h +54 -0
  121. include/momentum/diff_ik/fwd.h +385 -0
  122. include/momentum/diff_ik/union_error_function.h +67 -0
  123. include/momentum/gui/rerun/eigen_adapters.h +70 -0
  124. include/momentum/gui/rerun/logger.h +102 -0
  125. include/momentum/gui/rerun/logging_redirect.h +27 -0
  126. include/momentum/io/character_io.h +98 -0
  127. include/momentum/io/common/gsl_utils.h +50 -0
  128. include/momentum/io/common/stream_utils.h +65 -0
  129. include/momentum/io/fbx/fbx_io.h +135 -0
  130. include/momentum/io/fbx/fbx_memory_stream.h +70 -0
  131. include/momentum/io/fbx/openfbx_loader.h +62 -0
  132. include/momentum/io/fbx/polygon_data.h +60 -0
  133. include/momentum/io/file_save_options.h +107 -0
  134. include/momentum/io/gltf/gltf_builder.h +141 -0
  135. include/momentum/io/gltf/gltf_io.h +149 -0
  136. include/momentum/io/gltf/utils/accessor_utils.h +299 -0
  137. include/momentum/io/gltf/utils/coordinate_utils.h +60 -0
  138. include/momentum/io/gltf/utils/json_utils.h +102 -0
  139. include/momentum/io/legacy_json/legacy_json_io.h +70 -0
  140. include/momentum/io/marker/c3d_io.h +30 -0
  141. include/momentum/io/marker/conversions.h +57 -0
  142. include/momentum/io/marker/coordinate_system.h +30 -0
  143. include/momentum/io/marker/marker_io.h +56 -0
  144. include/momentum/io/marker/trc_io.h +27 -0
  145. include/momentum/io/motion/mmo_io.h +97 -0
  146. include/momentum/io/shape/blend_shape_io.h +82 -0
  147. include/momentum/io/shape/pose_shape_io.h +21 -0
  148. include/momentum/io/skeleton/locator_io.h +41 -0
  149. include/momentum/io/skeleton/mppca_io.h +26 -0
  150. include/momentum/io/skeleton/parameter_limits_io.h +38 -0
  151. include/momentum/io/skeleton/parameter_transform_io.h +80 -0
  152. include/momentum/io/skeleton/parameters_io.h +20 -0
  153. include/momentum/io/skeleton/utility.h +67 -0
  154. include/momentum/io/urdf/urdf_io.h +26 -0
  155. include/momentum/io/usd/usd_io.h +36 -0
  156. include/momentum/marker_tracking/app_utils.h +64 -0
  157. include/momentum/marker_tracking/marker_tracker.h +221 -0
  158. include/momentum/marker_tracking/process_markers.h +58 -0
  159. include/momentum/marker_tracking/tracker_utils.h +99 -0
  160. include/momentum/math/constants.h +82 -0
  161. include/momentum/math/covariance_matrix.h +84 -0
  162. include/momentum/math/fmt_eigen.h +23 -0
  163. include/momentum/math/fwd.h +132 -0
  164. include/momentum/math/generalized_loss.h +61 -0
  165. include/momentum/math/intersection.h +32 -0
  166. include/momentum/math/mesh.h +84 -0
  167. include/momentum/math/mppca.h +67 -0
  168. include/momentum/math/online_householder_qr.h +516 -0
  169. include/momentum/math/random-inl.h +404 -0
  170. include/momentum/math/random.h +310 -0
  171. include/momentum/math/simd_generalized_loss.h +40 -0
  172. include/momentum/math/transform.h +229 -0
  173. include/momentum/math/types.h +461 -0
  174. include/momentum/math/utility.h +324 -0
  175. include/momentum/rasterizer/camera.h +453 -0
  176. include/momentum/rasterizer/fwd.h +102 -0
  177. include/momentum/rasterizer/geometry.h +83 -0
  178. include/momentum/rasterizer/image.h +18 -0
  179. include/momentum/rasterizer/rasterizer.h +583 -0
  180. include/momentum/rasterizer/tensor.h +140 -0
  181. include/momentum/rasterizer/text_rasterizer.h +89 -0
  182. include/momentum/rasterizer/utility.h +268 -0
  183. include/momentum/simd/simd.h +221 -0
  184. include/momentum/solver/fwd.h +131 -0
  185. include/momentum/solver/gauss_newton_solver.h +136 -0
  186. include/momentum/solver/gradient_descent_solver.h +65 -0
  187. include/momentum/solver/solver.h +155 -0
  188. include/momentum/solver/solver_function.h +126 -0
  189. include/momentum/solver/subset_gauss_newton_solver.h +109 -0
  190. include/rerun/archetypes/annotation_context.hpp +157 -0
  191. include/rerun/archetypes/arrows2d.hpp +271 -0
  192. include/rerun/archetypes/arrows3d.hpp +257 -0
  193. include/rerun/archetypes/asset3d.hpp +262 -0
  194. include/rerun/archetypes/asset_video.hpp +275 -0
  195. include/rerun/archetypes/bar_chart.hpp +261 -0
  196. include/rerun/archetypes/boxes2d.hpp +293 -0
  197. include/rerun/archetypes/boxes3d.hpp +369 -0
  198. include/rerun/archetypes/capsules3d.hpp +333 -0
  199. include/rerun/archetypes/clear.hpp +180 -0
  200. include/rerun/archetypes/depth_image.hpp +425 -0
  201. include/rerun/archetypes/ellipsoids3d.hpp +384 -0
  202. include/rerun/archetypes/encoded_image.hpp +250 -0
  203. include/rerun/archetypes/geo_line_strings.hpp +166 -0
  204. include/rerun/archetypes/geo_points.hpp +177 -0
  205. include/rerun/archetypes/graph_edges.hpp +152 -0
  206. include/rerun/archetypes/graph_nodes.hpp +206 -0
  207. include/rerun/archetypes/image.hpp +434 -0
  208. include/rerun/archetypes/instance_poses3d.hpp +221 -0
  209. include/rerun/archetypes/line_strips2d.hpp +289 -0
  210. include/rerun/archetypes/line_strips3d.hpp +270 -0
  211. include/rerun/archetypes/mesh3d.hpp +387 -0
  212. include/rerun/archetypes/pinhole.hpp +385 -0
  213. include/rerun/archetypes/points2d.hpp +333 -0
  214. include/rerun/archetypes/points3d.hpp +369 -0
  215. include/rerun/archetypes/recording_properties.hpp +132 -0
  216. include/rerun/archetypes/scalar.hpp +170 -0
  217. include/rerun/archetypes/scalars.hpp +153 -0
  218. include/rerun/archetypes/segmentation_image.hpp +305 -0
  219. include/rerun/archetypes/series_line.hpp +274 -0
  220. include/rerun/archetypes/series_lines.hpp +271 -0
  221. include/rerun/archetypes/series_point.hpp +265 -0
  222. include/rerun/archetypes/series_points.hpp +251 -0
  223. include/rerun/archetypes/tensor.hpp +213 -0
  224. include/rerun/archetypes/text_document.hpp +200 -0
  225. include/rerun/archetypes/text_log.hpp +211 -0
  226. include/rerun/archetypes/transform3d.hpp +925 -0
  227. include/rerun/archetypes/video_frame_reference.hpp +295 -0
  228. include/rerun/archetypes/view_coordinates.hpp +393 -0
  229. include/rerun/archetypes.hpp +43 -0
  230. include/rerun/arrow_utils.hpp +32 -0
  231. include/rerun/as_components.hpp +90 -0
  232. include/rerun/blueprint/archetypes/background.hpp +113 -0
  233. include/rerun/blueprint/archetypes/container_blueprint.hpp +259 -0
  234. include/rerun/blueprint/archetypes/dataframe_query.hpp +178 -0
  235. include/rerun/blueprint/archetypes/entity_behavior.hpp +130 -0
  236. include/rerun/blueprint/archetypes/force_center.hpp +115 -0
  237. include/rerun/blueprint/archetypes/force_collision_radius.hpp +141 -0
  238. include/rerun/blueprint/archetypes/force_link.hpp +136 -0
  239. include/rerun/blueprint/archetypes/force_many_body.hpp +124 -0
  240. include/rerun/blueprint/archetypes/force_position.hpp +132 -0
  241. include/rerun/blueprint/archetypes/line_grid3d.hpp +178 -0
  242. include/rerun/blueprint/archetypes/map_background.hpp +104 -0
  243. include/rerun/blueprint/archetypes/map_zoom.hpp +103 -0
  244. include/rerun/blueprint/archetypes/near_clip_plane.hpp +109 -0
  245. include/rerun/blueprint/archetypes/panel_blueprint.hpp +95 -0
  246. include/rerun/blueprint/archetypes/plot_legend.hpp +118 -0
  247. include/rerun/blueprint/archetypes/scalar_axis.hpp +116 -0
  248. include/rerun/blueprint/archetypes/tensor_scalar_mapping.hpp +146 -0
  249. include/rerun/blueprint/archetypes/tensor_slice_selection.hpp +167 -0
  250. include/rerun/blueprint/archetypes/tensor_view_fit.hpp +95 -0
  251. include/rerun/blueprint/archetypes/view_blueprint.hpp +170 -0
  252. include/rerun/blueprint/archetypes/view_contents.hpp +142 -0
  253. include/rerun/blueprint/archetypes/viewport_blueprint.hpp +200 -0
  254. include/rerun/blueprint/archetypes/visible_time_ranges.hpp +116 -0
  255. include/rerun/blueprint/archetypes/visual_bounds2d.hpp +109 -0
  256. include/rerun/blueprint/archetypes/visualizer_overrides.hpp +113 -0
  257. include/rerun/blueprint/archetypes.hpp +29 -0
  258. include/rerun/blueprint/components/active_tab.hpp +82 -0
  259. include/rerun/blueprint/components/apply_latest_at.hpp +79 -0
  260. include/rerun/blueprint/components/auto_layout.hpp +77 -0
  261. include/rerun/blueprint/components/auto_views.hpp +77 -0
  262. include/rerun/blueprint/components/background_kind.hpp +66 -0
  263. include/rerun/blueprint/components/column_share.hpp +78 -0
  264. include/rerun/blueprint/components/component_column_selector.hpp +81 -0
  265. include/rerun/blueprint/components/container_kind.hpp +65 -0
  266. include/rerun/blueprint/components/corner2d.hpp +64 -0
  267. include/rerun/blueprint/components/enabled.hpp +77 -0
  268. include/rerun/blueprint/components/filter_by_range.hpp +74 -0
  269. include/rerun/blueprint/components/filter_is_not_null.hpp +77 -0
  270. include/rerun/blueprint/components/force_distance.hpp +82 -0
  271. include/rerun/blueprint/components/force_iterations.hpp +82 -0
  272. include/rerun/blueprint/components/force_strength.hpp +82 -0
  273. include/rerun/blueprint/components/grid_columns.hpp +78 -0
  274. include/rerun/blueprint/components/grid_spacing.hpp +78 -0
  275. include/rerun/blueprint/components/included_content.hpp +86 -0
  276. include/rerun/blueprint/components/lock_range_during_zoom.hpp +82 -0
  277. include/rerun/blueprint/components/map_provider.hpp +64 -0
  278. include/rerun/blueprint/components/near_clip_plane.hpp +82 -0
  279. include/rerun/blueprint/components/panel_state.hpp +61 -0
  280. include/rerun/blueprint/components/query_expression.hpp +89 -0
  281. include/rerun/blueprint/components/root_container.hpp +77 -0
  282. include/rerun/blueprint/components/row_share.hpp +78 -0
  283. include/rerun/blueprint/components/selected_columns.hpp +76 -0
  284. include/rerun/blueprint/components/tensor_dimension_index_slider.hpp +90 -0
  285. include/rerun/blueprint/components/timeline_name.hpp +76 -0
  286. include/rerun/blueprint/components/view_class.hpp +76 -0
  287. include/rerun/blueprint/components/view_fit.hpp +61 -0
  288. include/rerun/blueprint/components/view_maximized.hpp +79 -0
  289. include/rerun/blueprint/components/view_origin.hpp +81 -0
  290. include/rerun/blueprint/components/viewer_recommendation_hash.hpp +82 -0
  291. include/rerun/blueprint/components/visible_time_range.hpp +77 -0
  292. include/rerun/blueprint/components/visual_bounds2d.hpp +74 -0
  293. include/rerun/blueprint/components/visualizer_override.hpp +86 -0
  294. include/rerun/blueprint/components/zoom_level.hpp +78 -0
  295. include/rerun/blueprint/components.hpp +41 -0
  296. include/rerun/blueprint/datatypes/component_column_selector.hpp +61 -0
  297. include/rerun/blueprint/datatypes/filter_by_range.hpp +59 -0
  298. include/rerun/blueprint/datatypes/filter_is_not_null.hpp +61 -0
  299. include/rerun/blueprint/datatypes/selected_columns.hpp +62 -0
  300. include/rerun/blueprint/datatypes/tensor_dimension_index_slider.hpp +63 -0
  301. include/rerun/blueprint/datatypes.hpp +9 -0
  302. include/rerun/c/arrow_c_data_interface.h +111 -0
  303. include/rerun/c/compiler_utils.h +10 -0
  304. include/rerun/c/rerun.h +627 -0
  305. include/rerun/c/sdk_info.h +28 -0
  306. include/rerun/collection.hpp +496 -0
  307. include/rerun/collection_adapter.hpp +43 -0
  308. include/rerun/collection_adapter_builtins.hpp +138 -0
  309. include/rerun/compiler_utils.hpp +61 -0
  310. include/rerun/component_batch.hpp +163 -0
  311. include/rerun/component_column.hpp +111 -0
  312. include/rerun/component_descriptor.hpp +142 -0
  313. include/rerun/component_type.hpp +35 -0
  314. include/rerun/components/aggregation_policy.hpp +76 -0
  315. include/rerun/components/albedo_factor.hpp +74 -0
  316. include/rerun/components/annotation_context.hpp +102 -0
  317. include/rerun/components/axis_length.hpp +74 -0
  318. include/rerun/components/blob.hpp +73 -0
  319. include/rerun/components/class_id.hpp +71 -0
  320. include/rerun/components/clear_is_recursive.hpp +75 -0
  321. include/rerun/components/color.hpp +99 -0
  322. include/rerun/components/colormap.hpp +99 -0
  323. include/rerun/components/depth_meter.hpp +84 -0
  324. include/rerun/components/draw_order.hpp +79 -0
  325. include/rerun/components/entity_path.hpp +83 -0
  326. include/rerun/components/fill_mode.hpp +72 -0
  327. include/rerun/components/fill_ratio.hpp +79 -0
  328. include/rerun/components/gamma_correction.hpp +80 -0
  329. include/rerun/components/geo_line_string.hpp +63 -0
  330. include/rerun/components/graph_edge.hpp +75 -0
  331. include/rerun/components/graph_node.hpp +79 -0
  332. include/rerun/components/graph_type.hpp +57 -0
  333. include/rerun/components/half_size2d.hpp +91 -0
  334. include/rerun/components/half_size3d.hpp +95 -0
  335. include/rerun/components/image_buffer.hpp +86 -0
  336. include/rerun/components/image_format.hpp +84 -0
  337. include/rerun/components/image_plane_distance.hpp +77 -0
  338. include/rerun/components/interactive.hpp +76 -0
  339. include/rerun/components/keypoint_id.hpp +74 -0
  340. include/rerun/components/lat_lon.hpp +89 -0
  341. include/rerun/components/length.hpp +77 -0
  342. include/rerun/components/line_strip2d.hpp +73 -0
  343. include/rerun/components/line_strip3d.hpp +73 -0
  344. include/rerun/components/magnification_filter.hpp +63 -0
  345. include/rerun/components/marker_shape.hpp +82 -0
  346. include/rerun/components/marker_size.hpp +74 -0
  347. include/rerun/components/media_type.hpp +157 -0
  348. include/rerun/components/name.hpp +83 -0
  349. include/rerun/components/opacity.hpp +77 -0
  350. include/rerun/components/pinhole_projection.hpp +94 -0
  351. include/rerun/components/plane3d.hpp +75 -0
  352. include/rerun/components/pose_rotation_axis_angle.hpp +73 -0
  353. include/rerun/components/pose_rotation_quat.hpp +71 -0
  354. include/rerun/components/pose_scale3d.hpp +102 -0
  355. include/rerun/components/pose_transform_mat3x3.hpp +87 -0
  356. include/rerun/components/pose_translation3d.hpp +96 -0
  357. include/rerun/components/position2d.hpp +86 -0
  358. include/rerun/components/position3d.hpp +90 -0
  359. include/rerun/components/radius.hpp +98 -0
  360. include/rerun/components/range1d.hpp +75 -0
  361. include/rerun/components/resolution.hpp +88 -0
  362. include/rerun/components/rotation_axis_angle.hpp +72 -0
  363. include/rerun/components/rotation_quat.hpp +71 -0
  364. include/rerun/components/scalar.hpp +76 -0
  365. include/rerun/components/scale3d.hpp +102 -0
  366. include/rerun/components/series_visible.hpp +76 -0
  367. include/rerun/components/show_labels.hpp +79 -0
  368. include/rerun/components/stroke_width.hpp +74 -0
  369. include/rerun/components/tensor_data.hpp +94 -0
  370. include/rerun/components/tensor_dimension_index_selection.hpp +77 -0
  371. include/rerun/components/tensor_height_dimension.hpp +71 -0
  372. include/rerun/components/tensor_width_dimension.hpp +71 -0
  373. include/rerun/components/texcoord2d.hpp +101 -0
  374. include/rerun/components/text.hpp +83 -0
  375. include/rerun/components/text_log_level.hpp +110 -0
  376. include/rerun/components/timestamp.hpp +76 -0
  377. include/rerun/components/transform_mat3x3.hpp +92 -0
  378. include/rerun/components/transform_relation.hpp +66 -0
  379. include/rerun/components/translation3d.hpp +96 -0
  380. include/rerun/components/triangle_indices.hpp +85 -0
  381. include/rerun/components/value_range.hpp +78 -0
  382. include/rerun/components/vector2d.hpp +92 -0
  383. include/rerun/components/vector3d.hpp +96 -0
  384. include/rerun/components/video_timestamp.hpp +120 -0
  385. include/rerun/components/view_coordinates.hpp +346 -0
  386. include/rerun/components/visible.hpp +74 -0
  387. include/rerun/components.hpp +77 -0
  388. include/rerun/config.hpp +52 -0
  389. include/rerun/datatypes/angle.hpp +76 -0
  390. include/rerun/datatypes/annotation_info.hpp +76 -0
  391. include/rerun/datatypes/blob.hpp +67 -0
  392. include/rerun/datatypes/bool.hpp +57 -0
  393. include/rerun/datatypes/channel_datatype.hpp +87 -0
  394. include/rerun/datatypes/class_description.hpp +92 -0
  395. include/rerun/datatypes/class_description_map_elem.hpp +69 -0
  396. include/rerun/datatypes/class_id.hpp +62 -0
  397. include/rerun/datatypes/color_model.hpp +68 -0
  398. include/rerun/datatypes/dvec2d.hpp +76 -0
  399. include/rerun/datatypes/entity_path.hpp +60 -0
  400. include/rerun/datatypes/float32.hpp +62 -0
  401. include/rerun/datatypes/float64.hpp +62 -0
  402. include/rerun/datatypes/image_format.hpp +107 -0
  403. include/rerun/datatypes/keypoint_id.hpp +63 -0
  404. include/rerun/datatypes/keypoint_pair.hpp +65 -0
  405. include/rerun/datatypes/mat3x3.hpp +105 -0
  406. include/rerun/datatypes/mat4x4.hpp +119 -0
  407. include/rerun/datatypes/pixel_format.hpp +142 -0
  408. include/rerun/datatypes/plane3d.hpp +60 -0
  409. include/rerun/datatypes/quaternion.hpp +110 -0
  410. include/rerun/datatypes/range1d.hpp +59 -0
  411. include/rerun/datatypes/range2d.hpp +55 -0
  412. include/rerun/datatypes/rgba32.hpp +94 -0
  413. include/rerun/datatypes/rotation_axis_angle.hpp +67 -0
  414. include/rerun/datatypes/tensor_buffer.hpp +529 -0
  415. include/rerun/datatypes/tensor_data.hpp +100 -0
  416. include/rerun/datatypes/tensor_dimension_index_selection.hpp +58 -0
  417. include/rerun/datatypes/tensor_dimension_selection.hpp +56 -0
  418. include/rerun/datatypes/time_int.hpp +62 -0
  419. include/rerun/datatypes/time_range.hpp +55 -0
  420. include/rerun/datatypes/time_range_boundary.hpp +175 -0
  421. include/rerun/datatypes/uint16.hpp +62 -0
  422. include/rerun/datatypes/uint32.hpp +62 -0
  423. include/rerun/datatypes/uint64.hpp +62 -0
  424. include/rerun/datatypes/utf8.hpp +76 -0
  425. include/rerun/datatypes/utf8pair.hpp +62 -0
  426. include/rerun/datatypes/uuid.hpp +60 -0
  427. include/rerun/datatypes/uvec2d.hpp +76 -0
  428. include/rerun/datatypes/uvec3d.hpp +80 -0
  429. include/rerun/datatypes/uvec4d.hpp +59 -0
  430. include/rerun/datatypes/vec2d.hpp +76 -0
  431. include/rerun/datatypes/vec3d.hpp +80 -0
  432. include/rerun/datatypes/vec4d.hpp +84 -0
  433. include/rerun/datatypes/video_timestamp.hpp +67 -0
  434. include/rerun/datatypes/view_coordinates.hpp +87 -0
  435. include/rerun/datatypes/visible_time_range.hpp +57 -0
  436. include/rerun/datatypes.hpp +51 -0
  437. include/rerun/demo_utils.hpp +75 -0
  438. include/rerun/entity_path.hpp +20 -0
  439. include/rerun/error.hpp +180 -0
  440. include/rerun/half.hpp +10 -0
  441. include/rerun/image_utils.hpp +187 -0
  442. include/rerun/indicator_component.hpp +59 -0
  443. include/rerun/loggable.hpp +54 -0
  444. include/rerun/recording_stream.hpp +960 -0
  445. include/rerun/rerun_sdk_export.hpp +25 -0
  446. include/rerun/result.hpp +86 -0
  447. include/rerun/rotation3d.hpp +33 -0
  448. include/rerun/sdk_info.hpp +20 -0
  449. include/rerun/spawn.hpp +21 -0
  450. include/rerun/spawn_options.hpp +57 -0
  451. include/rerun/string_utils.hpp +16 -0
  452. include/rerun/third_party/cxxopts.hpp +2198 -0
  453. include/rerun/time_column.hpp +288 -0
  454. include/rerun/timeline.hpp +38 -0
  455. include/rerun/type_traits.hpp +40 -0
  456. include/rerun.hpp +86 -0
  457. lib/cmake/axel/axel-config.cmake +45 -0
  458. lib/cmake/axel/axelTargets-release.cmake +19 -0
  459. lib/cmake/axel/axelTargets.cmake +108 -0
  460. lib/cmake/momentum/FindFbxSdk.cmake +115 -0
  461. lib/cmake/momentum/Findre2.cmake +52 -0
  462. lib/cmake/momentum/momentum-config.cmake +67 -0
  463. lib/cmake/momentum/momentumTargets-release.cmake +259 -0
  464. lib/cmake/momentum/momentumTargets.cmake +385 -0
  465. lib/cmake/rerun_sdk/rerun_sdkConfig.cmake +70 -0
  466. lib/cmake/rerun_sdk/rerun_sdkConfigVersion.cmake +83 -0
  467. lib/cmake/rerun_sdk/rerun_sdkTargets-release.cmake +19 -0
  468. lib/cmake/rerun_sdk/rerun_sdkTargets.cmake +108 -0
  469. lib/libarrow.a +0 -0
  470. lib/libarrow_bundled_dependencies.a +0 -0
  471. lib/libaxel.a +0 -0
  472. lib/libmomentum_app_utils.a +0 -0
  473. lib/libmomentum_character.a +0 -0
  474. lib/libmomentum_character_sequence_solver.a +0 -0
  475. lib/libmomentum_character_solver.a +0 -0
  476. lib/libmomentum_common.a +0 -0
  477. lib/libmomentum_diff_ik.a +0 -0
  478. lib/libmomentum_io.a +0 -0
  479. lib/libmomentum_io_common.a +0 -0
  480. lib/libmomentum_io_fbx.a +0 -0
  481. lib/libmomentum_io_gltf.a +0 -0
  482. lib/libmomentum_io_legacy_json.a +0 -0
  483. lib/libmomentum_io_marker.a +0 -0
  484. lib/libmomentum_io_motion.a +0 -0
  485. lib/libmomentum_io_shape.a +0 -0
  486. lib/libmomentum_io_skeleton.a +0 -0
  487. lib/libmomentum_io_urdf.a +0 -0
  488. lib/libmomentum_marker_tracker.a +0 -0
  489. lib/libmomentum_math.a +0 -0
  490. lib/libmomentum_online_qr.a +0 -0
  491. lib/libmomentum_process_markers.a +0 -0
  492. lib/libmomentum_rerun.a +0 -0
  493. lib/libmomentum_simd_constraints.a +0 -0
  494. lib/libmomentum_simd_generalized_loss.a +0 -0
  495. lib/libmomentum_skeleton.a +0 -0
  496. lib/libmomentum_solver.a +0 -0
  497. lib/librerun_c__macos_arm64.a +0 -0
  498. lib/librerun_sdk.a +0 -0
  499. pymomentum/axel.cpython-312-darwin.so +0 -0
  500. pymomentum/backend/__init__.py +16 -0
  501. pymomentum/backend/skel_state_backend.py +631 -0
  502. pymomentum/backend/trs_backend.py +889 -0
  503. pymomentum/backend/utils.py +224 -0
  504. pymomentum/geometry.cpython-312-darwin.so +0 -0
  505. pymomentum/marker_tracking.cpython-312-darwin.so +0 -0
  506. pymomentum/quaternion.py +740 -0
  507. pymomentum/skel_state.py +514 -0
  508. pymomentum/solver.cpython-312-darwin.so +0 -0
  509. pymomentum/solver2.cpython-312-darwin.so +0 -0
  510. pymomentum/torch/character.py +868 -0
  511. pymomentum/torch/parameter_limits.py +494 -0
  512. pymomentum/torch/utility.py +20 -0
  513. pymomentum/trs.py +535 -0
  514. pymomentum_cpu-0.1.93.post0.dist-info/METADATA +126 -0
  515. pymomentum_cpu-0.1.93.post0.dist-info/RECORD +517 -0
  516. pymomentum_cpu-0.1.93.post0.dist-info/WHEEL +5 -0
  517. pymomentum_cpu-0.1.93.post0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,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
@@ -0,0 +1,128 @@
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
+
12
+ namespace momentum {
13
+
14
+ /// Scales the character (mesh and skeleton) by the desired amount.
15
+ ///
16
+ /// Note that this should primarily be used when transforming the character into different units. If
17
+ /// you simply want to apply an identity-specific scale to the character, you should use the
18
+ /// 'scale_global' parameter in the ParameterTransform class.
19
+ ///
20
+ /// @param[in] character Character to be scaled
21
+ /// @param[in] scale Scale factor to apply
22
+ /// @return A new Character object that has been scaled
23
+ [[nodiscard]] Character scaleCharacter(const Character& character, float scale);
24
+
25
+ /// Transforms the character (mesh and skeleton) by the desired transformation matrix. The
26
+ /// transformation matrix should not have any scale or shear.
27
+ ///
28
+ /// Note that this should primarily be used for transforming models between different coordinate
29
+ /// spaces (e.g. y-up vs. z-up). If you want to move a character around the scene, you should
30
+ /// preferably use the model parameters.
31
+ ///
32
+ /// @param[in] character Character to be transformed
33
+ /// @param[in] xform Transformation to apply
34
+ /// @return A new Character object that has been transformed
35
+ [[nodiscard]] Character transformCharacter(const Character& character, const Affine3f& xform);
36
+
37
+ /// Replaces the part of target_character's skeleton rooted at target_root with the part of
38
+ /// source_character's skeleton rooted at source_root.
39
+ ///
40
+ /// This function is typically used to swap one character's hand skeleton with another, for example.
41
+ ///
42
+ /// @param[in] srcCharacter The source character whose skeleton will be copied.
43
+ /// @param[in] tgtCharacter The target character whose skeleton will be replaced.
44
+ /// @param[in] srcRootJoint Root of the source skeleton hierarchy to be copied.
45
+ /// @param[in] tgtRootJoint Root of the target skeleton hierarchy to be replaced.
46
+ /// @return A new Character that is identical to tgtCharacter except that the skeleton under
47
+ /// tgtRootJoint has been replaced by the part of srcCharacter's skeleton rooted at srcRootJoint.
48
+ [[nodiscard]] Character replaceSkeletonHierarchy(
49
+ const Character& srcCharacter,
50
+ const Character& tgtCharacter,
51
+ const std::string& srcRootJoint,
52
+ const std::string& tgtRootJoint);
53
+
54
+ /// Removes the specified joints and any joints parented beneath them from the character.
55
+ ///
56
+ /// Currently, it is necessary to remove child joints to prevent dangling joints. Mesh points
57
+ /// skinned to the removed joints are re-skinned to their parent joint in the hierarchy.
58
+ ///
59
+ /// @param[in] character The character from which joints will be removed.
60
+ /// @param[in] jointsToRemove A vector of joint indices to be removed.
61
+ /// @return A new Character object that is identical to the original except for the removal of
62
+ /// specified joints.
63
+ [[nodiscard]] Character removeJoints(
64
+ const Character& character,
65
+ std::span<const size_t> jointsToRemove);
66
+
67
+ /// Maps the input ModelParameter motion to a target character by matching model parameter names.
68
+ /// Mismatched names will be discarded (source) or set to zero (target).
69
+ ///
70
+ /// @param[in] inputMotion Input ModelParameter motion with names.
71
+ /// @param[in] targetCharacter Target character that defines its own ModelParameters.
72
+ /// @return A matrix of model parameters for the target character.
73
+ MatrixXf mapMotionToCharacter(
74
+ const MotionParameters& inputMotion,
75
+ const Character& targetCharacter);
76
+
77
+ /// Maps the input JointParameter vector to a target character by matching joint names. Mismatched
78
+ /// names will be discarded (source) or set to zero (target). For every matched joint, all 7
79
+ /// parameters will be copied over.
80
+ ///
81
+ /// @param[in] inputIdentity Input JointParameter vector with joint names.
82
+ /// @param[in] targetCharacter Target character that defines its own Joints.
83
+ /// @return A vector of joint parameters for the target character.
84
+ VectorXf mapIdentityToCharacter(
85
+ const IdentityParameters& inputIdentity,
86
+ const Character& targetCharacter);
87
+
88
+ /// Reduces the mesh to only include the specified vertices and associated faces
89
+ ///
90
+ /// @param[in] character Character to be reduced
91
+ /// @param[in] activeVertices Boolean vector indicating which vertices to keep
92
+ /// @return A new character with mesh reduced to the specified vertices
93
+ template <typename T>
94
+ [[nodiscard]] CharacterT<T> reduceMeshByVertices(
95
+ const CharacterT<T>& character,
96
+ const std::vector<bool>& activeVertices);
97
+
98
+ /// Reduces the mesh to only include the specified faces and associated vertices
99
+ ///
100
+ /// @param[in] character Character to be reduced
101
+ /// @param[in] activeFaces Boolean vector indicating which faces to keep
102
+ /// @return A new character with mesh reduced to the specified faces
103
+ template <typename T>
104
+ [[nodiscard]] CharacterT<T> reduceMeshByFaces(
105
+ const CharacterT<T>& character,
106
+ const std::vector<bool>& activeFaces);
107
+
108
+ /// Converts vertex selection to face selection
109
+ ///
110
+ /// @param[in] character Character containing the mesh
111
+ /// @param[in] activeVertices Boolean vector indicating which vertices are active
112
+ /// @return Boolean vector indicating which faces only contain active vertices
113
+ template <typename T>
114
+ [[nodiscard]] std::vector<bool> verticesToFaces(
115
+ const MeshT<T>& mesh,
116
+ const std::vector<bool>& activeVertices);
117
+
118
+ /// Converts face selection to vertex selection
119
+ ///
120
+ /// @param[in] character Character containing the mesh
121
+ /// @param[in] activeFaces Boolean vector indicating which faces are active
122
+ /// @return Boolean vector indicating which vertices are used by active faces
123
+ template <typename T>
124
+ [[nodiscard]] std::vector<bool> facesToVertices(
125
+ const MeshT<T>& mesh,
126
+ const std::vector<bool>& activeFaces);
127
+
128
+ } // 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/types.h>
11
+ #include <momentum/common/memory.h>
12
+ #include <momentum/math/constants.h>
13
+ #include <momentum/math/transform.h>
14
+ #include <momentum/math/utility.h>
15
+
16
+ namespace momentum {
17
+
18
+ /// Tapered capsule collision geometry for character collision detection.
19
+ ///
20
+ /// Defined by a transformation, length, and two radii at the endpoints, creating
21
+ /// a capsule with potentially different radii at each end.
22
+ template <typename S>
23
+ struct TaperedCapsuleT {
24
+ using Scalar = S;
25
+
26
+ /// Transformation defining the orientation and starting point relative to the parent coordinate
27
+ /// system.
28
+ TransformT<S> transformation;
29
+
30
+ /// Radii at the two endpoints of the capsule.
31
+ Vector2<S> radius;
32
+
33
+ /// Parent joint to which the geometry is attached.
34
+ size_t parent;
35
+
36
+ /// Length of the collision geometry along the x-axis.
37
+ S length;
38
+
39
+ TaperedCapsuleT()
40
+ : transformation(TransformT<S>()),
41
+ radius(Vector2<S>::Zero()),
42
+ parent(kInvalidIndex),
43
+ length(S(0)) {
44
+ // Empty
45
+ }
46
+
47
+ /// Checks if the current capsule is approximately equal to another.
48
+ [[nodiscard]] bool isApprox(const TaperedCapsuleT& other, const S& tol = Eps<S>(1e-4f, 1e-10))
49
+ const {
50
+ if (!transformation.isApprox(other.transformation, tol)) {
51
+ return false;
52
+ }
53
+
54
+ if (!radius.isApprox(other.radius)) {
55
+ return false;
56
+ }
57
+
58
+ if (parent != other.parent) {
59
+ return false;
60
+ }
61
+
62
+ if (!::momentum::isApprox(length, other.length)) {
63
+ return false;
64
+ }
65
+
66
+ return true;
67
+ }
68
+ };
69
+
70
+ /// Collection of tapered capsules representing a character's collision geometry.
71
+ template <typename S>
72
+ using CollisionGeometryT = std::vector<TaperedCapsuleT<S>>;
73
+
74
+ using CollisionGeometry = CollisionGeometryT<float>;
75
+ using CollisionGeometryd = CollisionGeometryT<double>;
76
+
77
+ MOMENTUM_DEFINE_POINTERS(CollisionGeometry)
78
+ MOMENTUM_DEFINE_POINTERS(CollisionGeometryd)
79
+
80
+ } // namespace momentum
@@ -0,0 +1,130 @@
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
+
13
+ #include <axel/BoundingBox.h>
14
+
15
+ namespace momentum {
16
+
17
+ /// Represents collision geometry states using a Structure of Arrays (SoA) format.
18
+ template <typename T>
19
+ struct CollisionGeometryStateT {
20
+ // ASCII Art to visualize the capsule:
21
+ //
22
+ // ^
23
+ // :
24
+ // :________________________________________
25
+ // /: :\
26
+ // / : : \
27
+ // | :(origin) : |
28
+ // | O-------------(direction)--------------->:--|------------------> X-axis
29
+ // | : : |
30
+ // \ : (radius[0]) : / (radius[1])
31
+ // \:________________________________________:/
32
+ //
33
+ //
34
+ // Note: radius[0] and radius[1] can be different.
35
+
36
+ /// Capsule's origin in global coordinates.
37
+ std::vector<Vector3<T>> origin;
38
+
39
+ /// Capsule's direction vector (representing the X-axis) in global coordinates.
40
+ std::vector<Vector3<T>> direction;
41
+
42
+ /// Scaled radii of the capsule's endpoints.
43
+ std::vector<Vector2<T>> radius;
44
+
45
+ /// Signed difference between the capsule's radii (radius[1] - radius[0]).
46
+ std::vector<T> delta;
47
+
48
+ /// Updates the state based on a given skeleton state and collision geometry.
49
+ void update(const SkeletonStateT<T>& skeletonState, const CollisionGeometry& collisionGeometry);
50
+ };
51
+
52
+ /// Determines if two tapered capsules overlap.
53
+ ///
54
+ /// @param originA Origin of the first capsule
55
+ /// @param directionA Direction vector of the first capsule
56
+ /// @param radiiA Radii at the endpoints of the first capsule
57
+ /// @param deltaA Difference between radii of the first capsule
58
+ /// @param originB Origin of the second capsule
59
+ /// @param directionB Direction vector of the second capsule
60
+ /// @param radiiB Radii at the endpoints of the second capsule
61
+ /// @param deltaB Difference between radii of the second capsule
62
+ /// @param outDistance Output parameter for the distance between the closest points
63
+ /// (normalized). No modification on return false.
64
+ /// @param outOverlap Output parameter for the overlap amount (positive if overlapping)
65
+ /// @return True if the capsules overlap, false otherwise
66
+ template <typename T>
67
+ bool overlaps(
68
+ const Vector3<T>& originA,
69
+ const Vector3<T>& directionA,
70
+ const Vector2<T>& radiiA,
71
+ T deltaA,
72
+ const Vector3<T>& originB,
73
+ const Vector3<T>& directionB,
74
+ const Vector2<T>& radiiB,
75
+ T deltaB,
76
+ T& outDistance,
77
+ Vector2<T>& outClosestPoints,
78
+ T& outOverlap) {
79
+ // Sum of the maximum radii of the tapered capsules
80
+ const T maxRadiiSum = radiiA.maxCoeff() + radiiB.maxCoeff();
81
+
82
+ // Determine the closest points on the segments of the tapered capsules
83
+ auto [success, closestDist, closestPoints] =
84
+ closestPointsOnSegments<T>(originA, directionA, originB, directionB, maxRadiiSum);
85
+
86
+ if (!success) {
87
+ return false;
88
+ }
89
+
90
+ // Store the closest points to the output argument
91
+ outClosestPoints = closestPoints;
92
+
93
+ // Calculate the radii at the closest points
94
+ const T radiusAtClosestPoints =
95
+ radiiA[0] + closestPoints[0] * deltaA + radiiB[0] + closestPoints[1] * deltaB;
96
+
97
+ // Determine the overlap and distance between the closest points
98
+ outOverlap = radiusAtClosestPoints - closestDist;
99
+ outDistance = closestDist;
100
+
101
+ // Check for overlap and sufficient proximity
102
+ return (outOverlap > T(0)) && (closestDist >= Eps<T>(1e-8, 1e-17));
103
+ }
104
+
105
+ /// Updates an axis-aligned bounding box to encompass a tapered capsule.
106
+ ///
107
+ /// @param aabb The bounding box to update
108
+ /// @param originA Origin of the capsule
109
+ /// @param direction Direction vector of the capsule
110
+ /// @param radii Radii at the endpoints of the capsule
111
+ template <typename T>
112
+ void updateAabb(
113
+ axel::BoundingBox<T>& aabb,
114
+ const Vector3<T>& originA,
115
+ const Vector3<T>& direction,
116
+ const Vector2<T>& radii) {
117
+ const Vector3<T> radius0 = Vector3<T>::Constant(radii[0]);
118
+ const Vector3<T> radius1 = Vector3<T>::Constant(radii[1]);
119
+ const Vector3<T> originB = originA + direction;
120
+
121
+ const Vector3<T> minA = originA - radius0;
122
+ const Vector3<T> maxA = originA + radius0;
123
+ const Vector3<T> minB = originB - radius1;
124
+ const Vector3<T> maxB = originB + radius1;
125
+
126
+ aabb.aabb.min() = minA.cwiseMin(minB);
127
+ aabb.aabb.max() = maxA.cwiseMax(maxB);
128
+ }
129
+
130
+ } // namespace momentum