pymomentum-cpu 0.1.78.post11__cp312-cp312-win_amd64.whl

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

Potentially problematic release.


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

Files changed (512) hide show
  1. include/axel/BoundingBox.h +58 -0
  2. include/axel/Bvh.h +708 -0
  3. include/axel/BvhBase.h +75 -0
  4. include/axel/BvhCommon.h +43 -0
  5. include/axel/BvhEmbree.h +86 -0
  6. include/axel/BvhFactory.h +34 -0
  7. include/axel/Checks.h +21 -0
  8. include/axel/DualContouring.h +79 -0
  9. include/axel/KdTree.h +199 -0
  10. include/axel/Log.h +22 -0
  11. include/axel/MeshToSdf.h +123 -0
  12. include/axel/Profile.h +64 -0
  13. include/axel/Ray.h +45 -0
  14. include/axel/SignedDistanceField.h +248 -0
  15. include/axel/SimdKdTree.h +515 -0
  16. include/axel/TriBvh.h +157 -0
  17. include/axel/TriBvhEmbree.h +57 -0
  18. include/axel/common/Constants.h +27 -0
  19. include/axel/common/Types.h +21 -0
  20. include/axel/common/VectorizationTypes.h +58 -0
  21. include/axel/math/BoundingBoxUtils.h +54 -0
  22. include/axel/math/ContinuousCollisionDetection.h +48 -0
  23. include/axel/math/CoplanarityCheck.h +30 -0
  24. include/axel/math/EdgeEdgeDistance.h +31 -0
  25. include/axel/math/MeshHoleFilling.h +117 -0
  26. include/axel/math/PointTriangleProjection.h +34 -0
  27. include/axel/math/PointTriangleProjectionDefinitions.h +209 -0
  28. include/axel/math/RayTriangleIntersection.h +36 -0
  29. include/momentum/character/blend_shape.h +91 -0
  30. include/momentum/character/blend_shape_base.h +70 -0
  31. include/momentum/character/blend_shape_skinning.h +96 -0
  32. include/momentum/character/character.h +272 -0
  33. include/momentum/character/character_state.h +108 -0
  34. include/momentum/character/character_utility.h +128 -0
  35. include/momentum/character/collision_geometry.h +80 -0
  36. include/momentum/character/collision_geometry_state.h +130 -0
  37. include/momentum/character/fwd.h +262 -0
  38. include/momentum/character/inverse_parameter_transform.h +58 -0
  39. include/momentum/character/joint.h +82 -0
  40. include/momentum/character/joint_state.h +241 -0
  41. include/momentum/character/linear_skinning.h +139 -0
  42. include/momentum/character/locator.h +82 -0
  43. include/momentum/character/locator_state.h +43 -0
  44. include/momentum/character/marker.h +48 -0
  45. include/momentum/character/mesh_state.h +71 -0
  46. include/momentum/character/parameter_limits.h +144 -0
  47. include/momentum/character/parameter_transform.h +250 -0
  48. include/momentum/character/pose_shape.h +65 -0
  49. include/momentum/character/skeleton.h +85 -0
  50. include/momentum/character/skeleton_state.h +181 -0
  51. include/momentum/character/skeleton_utility.h +38 -0
  52. include/momentum/character/skin_weights.h +67 -0
  53. include/momentum/character/skinned_locator.h +80 -0
  54. include/momentum/character/types.h +202 -0
  55. include/momentum/character_sequence_solver/fwd.h +200 -0
  56. include/momentum/character_sequence_solver/model_parameters_sequence_error_function.h +65 -0
  57. include/momentum/character_sequence_solver/multipose_solver.h +65 -0
  58. include/momentum/character_sequence_solver/multipose_solver_function.h +82 -0
  59. include/momentum/character_sequence_solver/sequence_error_function.h +104 -0
  60. include/momentum/character_sequence_solver/sequence_solver.h +144 -0
  61. include/momentum/character_sequence_solver/sequence_solver_function.h +134 -0
  62. include/momentum/character_sequence_solver/state_sequence_error_function.h +109 -0
  63. include/momentum/character_sequence_solver/vertex_sequence_error_function.h +128 -0
  64. include/momentum/character_solver/aim_error_function.h +112 -0
  65. include/momentum/character_solver/collision_error_function.h +92 -0
  66. include/momentum/character_solver/collision_error_function_stateless.h +75 -0
  67. include/momentum/character_solver/constraint_error_function-inl.h +324 -0
  68. include/momentum/character_solver/constraint_error_function.h +248 -0
  69. include/momentum/character_solver/distance_error_function.h +77 -0
  70. include/momentum/character_solver/error_function_utils.h +60 -0
  71. include/momentum/character_solver/fixed_axis_error_function.h +139 -0
  72. include/momentum/character_solver/fwd.h +924 -0
  73. include/momentum/character_solver/gauss_newton_solver_qr.h +64 -0
  74. include/momentum/character_solver/limit_error_function.h +57 -0
  75. include/momentum/character_solver/model_parameters_error_function.h +64 -0
  76. include/momentum/character_solver/normal_error_function.h +73 -0
  77. include/momentum/character_solver/orientation_error_function.h +74 -0
  78. include/momentum/character_solver/plane_error_function.h +102 -0
  79. include/momentum/character_solver/point_triangle_vertex_error_function.h +141 -0
  80. include/momentum/character_solver/pose_prior_error_function.h +80 -0
  81. include/momentum/character_solver/position_error_function.h +75 -0
  82. include/momentum/character_solver/projection_error_function.h +93 -0
  83. include/momentum/character_solver/simd_collision_error_function.h +99 -0
  84. include/momentum/character_solver/simd_normal_error_function.h +157 -0
  85. include/momentum/character_solver/simd_plane_error_function.h +164 -0
  86. include/momentum/character_solver/simd_position_error_function.h +165 -0
  87. include/momentum/character_solver/skeleton_error_function.h +151 -0
  88. include/momentum/character_solver/skeleton_solver_function.h +94 -0
  89. include/momentum/character_solver/skinned_locator_error_function.h +166 -0
  90. include/momentum/character_solver/skinned_locator_triangle_error_function.h +146 -0
  91. include/momentum/character_solver/skinning_weight_iterator.h +80 -0
  92. include/momentum/character_solver/state_error_function.h +94 -0
  93. include/momentum/character_solver/transform_pose.h +80 -0
  94. include/momentum/character_solver/trust_region_qr.h +80 -0
  95. include/momentum/character_solver/vertex_error_function.h +155 -0
  96. include/momentum/character_solver/vertex_projection_error_function.h +126 -0
  97. include/momentum/character_solver/vertex_vertex_distance_error_function.h +151 -0
  98. include/momentum/common/aligned.h +155 -0
  99. include/momentum/common/checks.h +27 -0
  100. include/momentum/common/exception.h +70 -0
  101. include/momentum/common/filesystem.h +20 -0
  102. include/momentum/common/fwd.h +27 -0
  103. include/momentum/common/log.h +173 -0
  104. include/momentum/common/log_channel.h +17 -0
  105. include/momentum/common/memory.h +71 -0
  106. include/momentum/common/profile.h +79 -0
  107. include/momentum/common/progress_bar.h +37 -0
  108. include/momentum/common/string.h +52 -0
  109. include/momentum/diff_ik/ceres_utility.h +73 -0
  110. include/momentum/diff_ik/fully_differentiable_body_ik.h +58 -0
  111. include/momentum/diff_ik/fully_differentiable_distance_error_function.h +69 -0
  112. include/momentum/diff_ik/fully_differentiable_motion_error_function.h +46 -0
  113. include/momentum/diff_ik/fully_differentiable_orientation_error_function.h +114 -0
  114. include/momentum/diff_ik/fully_differentiable_pose_prior_error_function.h +76 -0
  115. include/momentum/diff_ik/fully_differentiable_position_error_function.h +138 -0
  116. include/momentum/diff_ik/fully_differentiable_projection_error_function.h +65 -0
  117. include/momentum/diff_ik/fully_differentiable_skeleton_error_function.h +160 -0
  118. include/momentum/diff_ik/fully_differentiable_state_error_function.h +54 -0
  119. include/momentum/diff_ik/fwd.h +385 -0
  120. include/momentum/diff_ik/union_error_function.h +67 -0
  121. include/momentum/gui/rerun/eigen_adapters.h +70 -0
  122. include/momentum/gui/rerun/logger.h +102 -0
  123. include/momentum/gui/rerun/logging_redirect.h +27 -0
  124. include/momentum/io/character_io.h +56 -0
  125. include/momentum/io/common/gsl_utils.h +50 -0
  126. include/momentum/io/common/stream_utils.h +65 -0
  127. include/momentum/io/fbx/fbx_io.h +109 -0
  128. include/momentum/io/fbx/fbx_memory_stream.h +66 -0
  129. include/momentum/io/fbx/openfbx_loader.h +49 -0
  130. include/momentum/io/fbx/polygon_data.h +60 -0
  131. include/momentum/io/gltf/gltf_builder.h +132 -0
  132. include/momentum/io/gltf/gltf_file_format.h +19 -0
  133. include/momentum/io/gltf/gltf_io.h +148 -0
  134. include/momentum/io/gltf/utils/accessor_utils.h +299 -0
  135. include/momentum/io/gltf/utils/coordinate_utils.h +60 -0
  136. include/momentum/io/gltf/utils/json_utils.h +102 -0
  137. include/momentum/io/legacy_json/legacy_json_io.h +70 -0
  138. include/momentum/io/marker/c3d_io.h +29 -0
  139. include/momentum/io/marker/conversions.h +57 -0
  140. include/momentum/io/marker/coordinate_system.h +30 -0
  141. include/momentum/io/marker/marker_io.h +54 -0
  142. include/momentum/io/marker/trc_io.h +27 -0
  143. include/momentum/io/motion/mmo_io.h +97 -0
  144. include/momentum/io/shape/blend_shape_io.h +70 -0
  145. include/momentum/io/shape/pose_shape_io.h +21 -0
  146. include/momentum/io/skeleton/locator_io.h +41 -0
  147. include/momentum/io/skeleton/mppca_io.h +26 -0
  148. include/momentum/io/skeleton/parameter_limits_io.h +25 -0
  149. include/momentum/io/skeleton/parameter_transform_io.h +41 -0
  150. include/momentum/io/skeleton/parameters_io.h +20 -0
  151. include/momentum/io/urdf/urdf_io.h +26 -0
  152. include/momentum/io/usd/usd_io.h +36 -0
  153. include/momentum/marker_tracking/app_utils.h +62 -0
  154. include/momentum/marker_tracking/marker_tracker.h +213 -0
  155. include/momentum/marker_tracking/process_markers.h +58 -0
  156. include/momentum/marker_tracking/tracker_utils.h +90 -0
  157. include/momentum/math/constants.h +82 -0
  158. include/momentum/math/covariance_matrix.h +84 -0
  159. include/momentum/math/fmt_eigen.h +23 -0
  160. include/momentum/math/fwd.h +132 -0
  161. include/momentum/math/generalized_loss.h +61 -0
  162. include/momentum/math/intersection.h +32 -0
  163. include/momentum/math/mesh.h +84 -0
  164. include/momentum/math/mppca.h +67 -0
  165. include/momentum/math/online_householder_qr.h +516 -0
  166. include/momentum/math/random-inl.h +404 -0
  167. include/momentum/math/random.h +310 -0
  168. include/momentum/math/simd_generalized_loss.h +40 -0
  169. include/momentum/math/transform.h +229 -0
  170. include/momentum/math/types.h +461 -0
  171. include/momentum/math/utility.h +251 -0
  172. include/momentum/rasterizer/camera.h +453 -0
  173. include/momentum/rasterizer/fwd.h +102 -0
  174. include/momentum/rasterizer/geometry.h +83 -0
  175. include/momentum/rasterizer/image.h +18 -0
  176. include/momentum/rasterizer/rasterizer.h +583 -0
  177. include/momentum/rasterizer/tensor.h +140 -0
  178. include/momentum/rasterizer/utility.h +268 -0
  179. include/momentum/simd/simd.h +221 -0
  180. include/momentum/solver/fwd.h +131 -0
  181. include/momentum/solver/gauss_newton_solver.h +136 -0
  182. include/momentum/solver/gradient_descent_solver.h +65 -0
  183. include/momentum/solver/solver.h +155 -0
  184. include/momentum/solver/solver_function.h +126 -0
  185. include/momentum/solver/subset_gauss_newton_solver.h +109 -0
  186. include/rerun/archetypes/annotation_context.hpp +157 -0
  187. include/rerun/archetypes/arrows2d.hpp +271 -0
  188. include/rerun/archetypes/arrows3d.hpp +257 -0
  189. include/rerun/archetypes/asset3d.hpp +262 -0
  190. include/rerun/archetypes/asset_video.hpp +275 -0
  191. include/rerun/archetypes/bar_chart.hpp +261 -0
  192. include/rerun/archetypes/boxes2d.hpp +293 -0
  193. include/rerun/archetypes/boxes3d.hpp +369 -0
  194. include/rerun/archetypes/capsules3d.hpp +333 -0
  195. include/rerun/archetypes/clear.hpp +180 -0
  196. include/rerun/archetypes/depth_image.hpp +425 -0
  197. include/rerun/archetypes/ellipsoids3d.hpp +384 -0
  198. include/rerun/archetypes/encoded_image.hpp +250 -0
  199. include/rerun/archetypes/geo_line_strings.hpp +166 -0
  200. include/rerun/archetypes/geo_points.hpp +177 -0
  201. include/rerun/archetypes/graph_edges.hpp +152 -0
  202. include/rerun/archetypes/graph_nodes.hpp +206 -0
  203. include/rerun/archetypes/image.hpp +434 -0
  204. include/rerun/archetypes/instance_poses3d.hpp +221 -0
  205. include/rerun/archetypes/line_strips2d.hpp +289 -0
  206. include/rerun/archetypes/line_strips3d.hpp +270 -0
  207. include/rerun/archetypes/mesh3d.hpp +387 -0
  208. include/rerun/archetypes/pinhole.hpp +385 -0
  209. include/rerun/archetypes/points2d.hpp +333 -0
  210. include/rerun/archetypes/points3d.hpp +369 -0
  211. include/rerun/archetypes/recording_properties.hpp +132 -0
  212. include/rerun/archetypes/scalar.hpp +170 -0
  213. include/rerun/archetypes/scalars.hpp +153 -0
  214. include/rerun/archetypes/segmentation_image.hpp +305 -0
  215. include/rerun/archetypes/series_line.hpp +274 -0
  216. include/rerun/archetypes/series_lines.hpp +271 -0
  217. include/rerun/archetypes/series_point.hpp +265 -0
  218. include/rerun/archetypes/series_points.hpp +251 -0
  219. include/rerun/archetypes/tensor.hpp +213 -0
  220. include/rerun/archetypes/text_document.hpp +200 -0
  221. include/rerun/archetypes/text_log.hpp +211 -0
  222. include/rerun/archetypes/transform3d.hpp +925 -0
  223. include/rerun/archetypes/video_frame_reference.hpp +295 -0
  224. include/rerun/archetypes/view_coordinates.hpp +393 -0
  225. include/rerun/archetypes.hpp +43 -0
  226. include/rerun/arrow_utils.hpp +32 -0
  227. include/rerun/as_components.hpp +90 -0
  228. include/rerun/blueprint/archetypes/background.hpp +113 -0
  229. include/rerun/blueprint/archetypes/container_blueprint.hpp +259 -0
  230. include/rerun/blueprint/archetypes/dataframe_query.hpp +178 -0
  231. include/rerun/blueprint/archetypes/entity_behavior.hpp +130 -0
  232. include/rerun/blueprint/archetypes/force_center.hpp +115 -0
  233. include/rerun/blueprint/archetypes/force_collision_radius.hpp +141 -0
  234. include/rerun/blueprint/archetypes/force_link.hpp +136 -0
  235. include/rerun/blueprint/archetypes/force_many_body.hpp +124 -0
  236. include/rerun/blueprint/archetypes/force_position.hpp +132 -0
  237. include/rerun/blueprint/archetypes/line_grid3d.hpp +178 -0
  238. include/rerun/blueprint/archetypes/map_background.hpp +104 -0
  239. include/rerun/blueprint/archetypes/map_zoom.hpp +103 -0
  240. include/rerun/blueprint/archetypes/near_clip_plane.hpp +109 -0
  241. include/rerun/blueprint/archetypes/panel_blueprint.hpp +95 -0
  242. include/rerun/blueprint/archetypes/plot_legend.hpp +118 -0
  243. include/rerun/blueprint/archetypes/scalar_axis.hpp +116 -0
  244. include/rerun/blueprint/archetypes/tensor_scalar_mapping.hpp +146 -0
  245. include/rerun/blueprint/archetypes/tensor_slice_selection.hpp +167 -0
  246. include/rerun/blueprint/archetypes/tensor_view_fit.hpp +95 -0
  247. include/rerun/blueprint/archetypes/view_blueprint.hpp +170 -0
  248. include/rerun/blueprint/archetypes/view_contents.hpp +142 -0
  249. include/rerun/blueprint/archetypes/viewport_blueprint.hpp +200 -0
  250. include/rerun/blueprint/archetypes/visible_time_ranges.hpp +116 -0
  251. include/rerun/blueprint/archetypes/visual_bounds2d.hpp +109 -0
  252. include/rerun/blueprint/archetypes/visualizer_overrides.hpp +113 -0
  253. include/rerun/blueprint/archetypes.hpp +29 -0
  254. include/rerun/blueprint/components/active_tab.hpp +82 -0
  255. include/rerun/blueprint/components/apply_latest_at.hpp +79 -0
  256. include/rerun/blueprint/components/auto_layout.hpp +77 -0
  257. include/rerun/blueprint/components/auto_views.hpp +77 -0
  258. include/rerun/blueprint/components/background_kind.hpp +66 -0
  259. include/rerun/blueprint/components/column_share.hpp +78 -0
  260. include/rerun/blueprint/components/component_column_selector.hpp +81 -0
  261. include/rerun/blueprint/components/container_kind.hpp +65 -0
  262. include/rerun/blueprint/components/corner2d.hpp +64 -0
  263. include/rerun/blueprint/components/enabled.hpp +77 -0
  264. include/rerun/blueprint/components/filter_by_range.hpp +74 -0
  265. include/rerun/blueprint/components/filter_is_not_null.hpp +77 -0
  266. include/rerun/blueprint/components/force_distance.hpp +82 -0
  267. include/rerun/blueprint/components/force_iterations.hpp +82 -0
  268. include/rerun/blueprint/components/force_strength.hpp +82 -0
  269. include/rerun/blueprint/components/grid_columns.hpp +78 -0
  270. include/rerun/blueprint/components/grid_spacing.hpp +78 -0
  271. include/rerun/blueprint/components/included_content.hpp +86 -0
  272. include/rerun/blueprint/components/lock_range_during_zoom.hpp +82 -0
  273. include/rerun/blueprint/components/map_provider.hpp +64 -0
  274. include/rerun/blueprint/components/near_clip_plane.hpp +82 -0
  275. include/rerun/blueprint/components/panel_state.hpp +61 -0
  276. include/rerun/blueprint/components/query_expression.hpp +89 -0
  277. include/rerun/blueprint/components/root_container.hpp +77 -0
  278. include/rerun/blueprint/components/row_share.hpp +78 -0
  279. include/rerun/blueprint/components/selected_columns.hpp +76 -0
  280. include/rerun/blueprint/components/tensor_dimension_index_slider.hpp +90 -0
  281. include/rerun/blueprint/components/timeline_name.hpp +76 -0
  282. include/rerun/blueprint/components/view_class.hpp +76 -0
  283. include/rerun/blueprint/components/view_fit.hpp +61 -0
  284. include/rerun/blueprint/components/view_maximized.hpp +79 -0
  285. include/rerun/blueprint/components/view_origin.hpp +81 -0
  286. include/rerun/blueprint/components/viewer_recommendation_hash.hpp +82 -0
  287. include/rerun/blueprint/components/visible_time_range.hpp +77 -0
  288. include/rerun/blueprint/components/visual_bounds2d.hpp +74 -0
  289. include/rerun/blueprint/components/visualizer_override.hpp +86 -0
  290. include/rerun/blueprint/components/zoom_level.hpp +78 -0
  291. include/rerun/blueprint/components.hpp +41 -0
  292. include/rerun/blueprint/datatypes/component_column_selector.hpp +61 -0
  293. include/rerun/blueprint/datatypes/filter_by_range.hpp +59 -0
  294. include/rerun/blueprint/datatypes/filter_is_not_null.hpp +61 -0
  295. include/rerun/blueprint/datatypes/selected_columns.hpp +62 -0
  296. include/rerun/blueprint/datatypes/tensor_dimension_index_slider.hpp +63 -0
  297. include/rerun/blueprint/datatypes.hpp +9 -0
  298. include/rerun/c/arrow_c_data_interface.h +111 -0
  299. include/rerun/c/compiler_utils.h +10 -0
  300. include/rerun/c/rerun.h +627 -0
  301. include/rerun/c/sdk_info.h +28 -0
  302. include/rerun/collection.hpp +496 -0
  303. include/rerun/collection_adapter.hpp +43 -0
  304. include/rerun/collection_adapter_builtins.hpp +138 -0
  305. include/rerun/compiler_utils.hpp +61 -0
  306. include/rerun/component_batch.hpp +163 -0
  307. include/rerun/component_column.hpp +111 -0
  308. include/rerun/component_descriptor.hpp +142 -0
  309. include/rerun/component_type.hpp +35 -0
  310. include/rerun/components/aggregation_policy.hpp +76 -0
  311. include/rerun/components/albedo_factor.hpp +74 -0
  312. include/rerun/components/annotation_context.hpp +102 -0
  313. include/rerun/components/axis_length.hpp +74 -0
  314. include/rerun/components/blob.hpp +73 -0
  315. include/rerun/components/class_id.hpp +71 -0
  316. include/rerun/components/clear_is_recursive.hpp +75 -0
  317. include/rerun/components/color.hpp +99 -0
  318. include/rerun/components/colormap.hpp +99 -0
  319. include/rerun/components/depth_meter.hpp +84 -0
  320. include/rerun/components/draw_order.hpp +79 -0
  321. include/rerun/components/entity_path.hpp +83 -0
  322. include/rerun/components/fill_mode.hpp +72 -0
  323. include/rerun/components/fill_ratio.hpp +79 -0
  324. include/rerun/components/gamma_correction.hpp +80 -0
  325. include/rerun/components/geo_line_string.hpp +63 -0
  326. include/rerun/components/graph_edge.hpp +75 -0
  327. include/rerun/components/graph_node.hpp +79 -0
  328. include/rerun/components/graph_type.hpp +57 -0
  329. include/rerun/components/half_size2d.hpp +91 -0
  330. include/rerun/components/half_size3d.hpp +95 -0
  331. include/rerun/components/image_buffer.hpp +86 -0
  332. include/rerun/components/image_format.hpp +84 -0
  333. include/rerun/components/image_plane_distance.hpp +77 -0
  334. include/rerun/components/interactive.hpp +76 -0
  335. include/rerun/components/keypoint_id.hpp +74 -0
  336. include/rerun/components/lat_lon.hpp +89 -0
  337. include/rerun/components/length.hpp +77 -0
  338. include/rerun/components/line_strip2d.hpp +73 -0
  339. include/rerun/components/line_strip3d.hpp +73 -0
  340. include/rerun/components/magnification_filter.hpp +63 -0
  341. include/rerun/components/marker_shape.hpp +82 -0
  342. include/rerun/components/marker_size.hpp +74 -0
  343. include/rerun/components/media_type.hpp +157 -0
  344. include/rerun/components/name.hpp +83 -0
  345. include/rerun/components/opacity.hpp +77 -0
  346. include/rerun/components/pinhole_projection.hpp +94 -0
  347. include/rerun/components/plane3d.hpp +75 -0
  348. include/rerun/components/pose_rotation_axis_angle.hpp +73 -0
  349. include/rerun/components/pose_rotation_quat.hpp +71 -0
  350. include/rerun/components/pose_scale3d.hpp +102 -0
  351. include/rerun/components/pose_transform_mat3x3.hpp +87 -0
  352. include/rerun/components/pose_translation3d.hpp +96 -0
  353. include/rerun/components/position2d.hpp +86 -0
  354. include/rerun/components/position3d.hpp +90 -0
  355. include/rerun/components/radius.hpp +98 -0
  356. include/rerun/components/range1d.hpp +75 -0
  357. include/rerun/components/resolution.hpp +88 -0
  358. include/rerun/components/rotation_axis_angle.hpp +72 -0
  359. include/rerun/components/rotation_quat.hpp +71 -0
  360. include/rerun/components/scalar.hpp +76 -0
  361. include/rerun/components/scale3d.hpp +102 -0
  362. include/rerun/components/series_visible.hpp +76 -0
  363. include/rerun/components/show_labels.hpp +79 -0
  364. include/rerun/components/stroke_width.hpp +74 -0
  365. include/rerun/components/tensor_data.hpp +94 -0
  366. include/rerun/components/tensor_dimension_index_selection.hpp +77 -0
  367. include/rerun/components/tensor_height_dimension.hpp +71 -0
  368. include/rerun/components/tensor_width_dimension.hpp +71 -0
  369. include/rerun/components/texcoord2d.hpp +101 -0
  370. include/rerun/components/text.hpp +83 -0
  371. include/rerun/components/text_log_level.hpp +110 -0
  372. include/rerun/components/timestamp.hpp +76 -0
  373. include/rerun/components/transform_mat3x3.hpp +92 -0
  374. include/rerun/components/transform_relation.hpp +66 -0
  375. include/rerun/components/translation3d.hpp +96 -0
  376. include/rerun/components/triangle_indices.hpp +85 -0
  377. include/rerun/components/value_range.hpp +78 -0
  378. include/rerun/components/vector2d.hpp +92 -0
  379. include/rerun/components/vector3d.hpp +96 -0
  380. include/rerun/components/video_timestamp.hpp +120 -0
  381. include/rerun/components/view_coordinates.hpp +346 -0
  382. include/rerun/components/visible.hpp +74 -0
  383. include/rerun/components.hpp +77 -0
  384. include/rerun/config.hpp +52 -0
  385. include/rerun/datatypes/angle.hpp +76 -0
  386. include/rerun/datatypes/annotation_info.hpp +76 -0
  387. include/rerun/datatypes/blob.hpp +67 -0
  388. include/rerun/datatypes/bool.hpp +57 -0
  389. include/rerun/datatypes/channel_datatype.hpp +87 -0
  390. include/rerun/datatypes/class_description.hpp +92 -0
  391. include/rerun/datatypes/class_description_map_elem.hpp +69 -0
  392. include/rerun/datatypes/class_id.hpp +62 -0
  393. include/rerun/datatypes/color_model.hpp +68 -0
  394. include/rerun/datatypes/dvec2d.hpp +76 -0
  395. include/rerun/datatypes/entity_path.hpp +60 -0
  396. include/rerun/datatypes/float32.hpp +62 -0
  397. include/rerun/datatypes/float64.hpp +62 -0
  398. include/rerun/datatypes/image_format.hpp +107 -0
  399. include/rerun/datatypes/keypoint_id.hpp +63 -0
  400. include/rerun/datatypes/keypoint_pair.hpp +65 -0
  401. include/rerun/datatypes/mat3x3.hpp +105 -0
  402. include/rerun/datatypes/mat4x4.hpp +119 -0
  403. include/rerun/datatypes/pixel_format.hpp +142 -0
  404. include/rerun/datatypes/plane3d.hpp +60 -0
  405. include/rerun/datatypes/quaternion.hpp +110 -0
  406. include/rerun/datatypes/range1d.hpp +59 -0
  407. include/rerun/datatypes/range2d.hpp +55 -0
  408. include/rerun/datatypes/rgba32.hpp +94 -0
  409. include/rerun/datatypes/rotation_axis_angle.hpp +67 -0
  410. include/rerun/datatypes/tensor_buffer.hpp +529 -0
  411. include/rerun/datatypes/tensor_data.hpp +100 -0
  412. include/rerun/datatypes/tensor_dimension_index_selection.hpp +58 -0
  413. include/rerun/datatypes/tensor_dimension_selection.hpp +56 -0
  414. include/rerun/datatypes/time_int.hpp +62 -0
  415. include/rerun/datatypes/time_range.hpp +55 -0
  416. include/rerun/datatypes/time_range_boundary.hpp +175 -0
  417. include/rerun/datatypes/uint16.hpp +62 -0
  418. include/rerun/datatypes/uint32.hpp +62 -0
  419. include/rerun/datatypes/uint64.hpp +62 -0
  420. include/rerun/datatypes/utf8.hpp +76 -0
  421. include/rerun/datatypes/utf8pair.hpp +62 -0
  422. include/rerun/datatypes/uuid.hpp +60 -0
  423. include/rerun/datatypes/uvec2d.hpp +76 -0
  424. include/rerun/datatypes/uvec3d.hpp +80 -0
  425. include/rerun/datatypes/uvec4d.hpp +59 -0
  426. include/rerun/datatypes/vec2d.hpp +76 -0
  427. include/rerun/datatypes/vec3d.hpp +80 -0
  428. include/rerun/datatypes/vec4d.hpp +84 -0
  429. include/rerun/datatypes/video_timestamp.hpp +67 -0
  430. include/rerun/datatypes/view_coordinates.hpp +87 -0
  431. include/rerun/datatypes/visible_time_range.hpp +57 -0
  432. include/rerun/datatypes.hpp +51 -0
  433. include/rerun/demo_utils.hpp +75 -0
  434. include/rerun/entity_path.hpp +20 -0
  435. include/rerun/error.hpp +180 -0
  436. include/rerun/half.hpp +10 -0
  437. include/rerun/image_utils.hpp +187 -0
  438. include/rerun/indicator_component.hpp +59 -0
  439. include/rerun/loggable.hpp +54 -0
  440. include/rerun/recording_stream.hpp +960 -0
  441. include/rerun/rerun_sdk_export.hpp +25 -0
  442. include/rerun/result.hpp +86 -0
  443. include/rerun/rotation3d.hpp +33 -0
  444. include/rerun/sdk_info.hpp +20 -0
  445. include/rerun/spawn.hpp +21 -0
  446. include/rerun/spawn_options.hpp +57 -0
  447. include/rerun/string_utils.hpp +16 -0
  448. include/rerun/third_party/cxxopts.hpp +2198 -0
  449. include/rerun/time_column.hpp +288 -0
  450. include/rerun/timeline.hpp +38 -0
  451. include/rerun/type_traits.hpp +40 -0
  452. include/rerun.hpp +86 -0
  453. lib/arrow_bundled_dependencies.lib +0 -0
  454. lib/arrow_static.lib +0 -0
  455. lib/axel.lib +0 -0
  456. lib/cmake/axel/axel-config.cmake +45 -0
  457. lib/cmake/axel/axelTargets-release.cmake +19 -0
  458. lib/cmake/axel/axelTargets.cmake +108 -0
  459. lib/cmake/momentum/Findre2.cmake +52 -0
  460. lib/cmake/momentum/momentum-config.cmake +67 -0
  461. lib/cmake/momentum/momentumTargets-release.cmake +259 -0
  462. lib/cmake/momentum/momentumTargets.cmake +377 -0
  463. lib/cmake/rerun_sdk/rerun_sdkConfig.cmake +70 -0
  464. lib/cmake/rerun_sdk/rerun_sdkConfigVersion.cmake +83 -0
  465. lib/cmake/rerun_sdk/rerun_sdkTargets-release.cmake +19 -0
  466. lib/cmake/rerun_sdk/rerun_sdkTargets.cmake +108 -0
  467. lib/momentum_app_utils.lib +0 -0
  468. lib/momentum_character.lib +0 -0
  469. lib/momentum_character_sequence_solver.lib +0 -0
  470. lib/momentum_character_solver.lib +0 -0
  471. lib/momentum_common.lib +0 -0
  472. lib/momentum_diff_ik.lib +0 -0
  473. lib/momentum_io.lib +0 -0
  474. lib/momentum_io_common.lib +0 -0
  475. lib/momentum_io_fbx.lib +0 -0
  476. lib/momentum_io_gltf.lib +0 -0
  477. lib/momentum_io_legacy_json.lib +0 -0
  478. lib/momentum_io_marker.lib +0 -0
  479. lib/momentum_io_motion.lib +0 -0
  480. lib/momentum_io_shape.lib +0 -0
  481. lib/momentum_io_skeleton.lib +0 -0
  482. lib/momentum_io_urdf.lib +0 -0
  483. lib/momentum_marker_tracker.lib +0 -0
  484. lib/momentum_math.lib +0 -0
  485. lib/momentum_online_qr.lib +0 -0
  486. lib/momentum_process_markers.lib +0 -0
  487. lib/momentum_rerun.lib +0 -0
  488. lib/momentum_simd_constraints.lib +0 -0
  489. lib/momentum_simd_generalized_loss.lib +0 -0
  490. lib/momentum_skeleton.lib +0 -0
  491. lib/momentum_solver.lib +0 -0
  492. lib/rerun_c__win_x64.lib +0 -0
  493. lib/rerun_sdk.lib +0 -0
  494. pymomentum/axel.cp312-win_amd64.pyd +0 -0
  495. pymomentum/backend/__init__.py +16 -0
  496. pymomentum/backend/skel_state_backend.py +614 -0
  497. pymomentum/backend/trs_backend.py +871 -0
  498. pymomentum/backend/utils.py +224 -0
  499. pymomentum/geometry.cp312-win_amd64.pyd +0 -0
  500. pymomentum/marker_tracking.cp312-win_amd64.pyd +0 -0
  501. pymomentum/quaternion.py +740 -0
  502. pymomentum/skel_state.py +514 -0
  503. pymomentum/solver.cp312-win_amd64.pyd +0 -0
  504. pymomentum/solver2.cp312-win_amd64.pyd +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.1.78.post11.dist-info/METADATA +121 -0
  510. pymomentum_cpu-0.1.78.post11.dist-info/RECORD +512 -0
  511. pymomentum_cpu-0.1.78.post11.dist-info/WHEEL +5 -0
  512. pymomentum_cpu-0.1.78.post11.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,56 @@
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/math/fwd.h>
12
+ #include <momentum/math/types.h>
13
+
14
+ #include <string>
15
+
16
+ namespace momentum {
17
+
18
+ /// Represents the supported character formats.
19
+ enum class CharacterFormat : uint8_t {
20
+ Fbx, ///< FBX file format.
21
+ Gltf, ///< glTF file format.
22
+ Usd, ///< USD file format.
23
+ Unknown ///< Unknown or unsupported file format.
24
+ };
25
+
26
+ /// High level function to load a character of any type, with a local path.
27
+ ///
28
+ /// @param[in] characterPath The path to the character file.
29
+ /// @param[in] parametersPath The optional path to the file containing additional parameters for the
30
+ /// character.
31
+ /// @param[in] locatorsPath The optional path to the file containing additional locators for the
32
+ /// character.
33
+ /// @return The loaded Character object.
34
+ ///
35
+ /// Currently, only supports .glb and .fbx. If you want to parse from a non-local path, you may need
36
+ /// to parse it using your favorite resource retriever into a buffer and use the buffer version of
37
+ /// this function.
38
+ [[nodiscard]] Character loadFullCharacter(
39
+ const std::string& characterPath,
40
+ const std::string& parametersPath = std::string(),
41
+ const std::string& locatorsPath = std::string());
42
+
43
+ /// Buffer version of loadFullCharacter function, supports .glb and .fbx file formats.
44
+ ///
45
+ /// @param[in] format The character file format.
46
+ /// @param[in] characterBuffer The buffer containing the character data.
47
+ /// @param[in] paramBuffer The optional buffer containing additional parameters for the character.
48
+ /// @param[in] locBuffer The optional buffer containing additional locators for the character.
49
+ /// @return The loaded Character object.
50
+ [[nodiscard]] Character loadFullCharacterFromBuffer(
51
+ CharacterFormat format,
52
+ gsl::span<const std::byte> characterBuffer,
53
+ gsl::span<const std::byte> paramBuffer = gsl::span<const std::byte>(),
54
+ gsl::span<const std::byte> locBuffer = gsl::span<const std::byte>());
55
+
56
+ } // namespace momentum
@@ -0,0 +1,50 @@
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 <gsl/gsl>
11
+
12
+ namespace momentum {
13
+
14
+ /// Casts a span of bytes to a span of a different type
15
+ ///
16
+ /// This function takes a span of bytes and returns a span of a different type, by reinterpreting
17
+ /// the bytes as the new type. This function is useful when working with serialized data or when
18
+ /// dealing with raw memory. The function assumes that the size of the new type is an exact multiple
19
+ /// of the size of the original span.
20
+ ///
21
+ /// @tparam T The type to cast the span to
22
+ /// @param bs The original span of bytes to cast
23
+ ///
24
+ /// @return A span of the new type, with the same number of elements as the original span
25
+ template <typename T>
26
+ [[nodiscard]] gsl::span<T> cast_span(gsl::span<std::byte> bs) {
27
+ auto ptr = reinterpret_cast<T*>(bs.data());
28
+ auto tsize = gsl::narrow<decltype(bs)::size_type>(sizeof(T));
29
+ return {ptr, bs.size_bytes() / tsize};
30
+ }
31
+
32
+ /// Casts a span of const bytes to a span of a different type
33
+ ///
34
+ /// This function takes a span of const bytes and returns a span of a different type, by
35
+ /// reinterpreting the bytes as the new type. This function is useful when working with serialized
36
+ /// data or when dealing with raw memory. The function assumes that the size of the new type is an
37
+ /// exact multiple of the size of the original span.
38
+ ///
39
+ /// @tparam T The type to cast the span to
40
+ /// @param bs The original span of const bytes to cast
41
+ ///
42
+ /// @return A span of the new type, with the same number of elements as the original span
43
+ template <typename T>
44
+ [[nodiscard]] gsl::span<const T> cast_span(gsl::span<const std::byte> bs) {
45
+ auto ptr = reinterpret_cast<const T*>(bs.data());
46
+ auto tsize = gsl::narrow<decltype(bs)::size_type>(sizeof(T));
47
+ return {ptr, bs.size_bytes() / tsize};
48
+ }
49
+
50
+ } // namespace momentum
@@ -0,0 +1,65 @@
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 <gsl/gsl>
11
+
12
+ #include <istream>
13
+ #include <streambuf>
14
+ #include <string>
15
+
16
+ namespace momentum {
17
+
18
+ /// Stream buffer based on a span.
19
+ /// Used to avoid copying the span when creating a std::istream:
20
+ /// spanstreambuf sbuf(str);
21
+ /// std::istream inputStream(&sbuf);
22
+ struct spanstreambuf : std::streambuf {
23
+ /// Construct a spanstreambuf with an optional buffer.
24
+ ///
25
+ /// @param buffer A gsl::span of const std::byte (default: empty span).
26
+ spanstreambuf(gsl::span<const std::byte> buffer = {});
27
+
28
+ /// Destructor.
29
+ virtual ~spanstreambuf() override;
30
+
31
+ protected:
32
+ /// Write a sequence of characters to the output buffer.
33
+ ///
34
+ /// @param s A pointer to the character sequence to be written.
35
+ /// @param n The number of characters to write.
36
+ /// @return The number of characters successfully written.
37
+ std::streamsize xsputn(const char_type* s, std::streamsize n) override;
38
+ };
39
+
40
+ /// istream that takes a span of const bytes as input.
41
+ struct ispanstream : std::istream {
42
+ /// Construct an ispanstream with a buffer.
43
+ ///
44
+ /// @param buffer A gsl::span of const std::byte.
45
+ explicit ispanstream(gsl::span<const std::byte> buffer);
46
+
47
+ /// Destructor.
48
+ virtual ~ispanstream();
49
+
50
+ private:
51
+ /// Internal spanstreambuf instance.
52
+ spanstreambuf sbuf_;
53
+ };
54
+
55
+ /// Reads a line from the input stream, handling line endings for different platforms.
56
+ ///
57
+ /// This function reads a line from the given input stream and stores it in the 'line' parameter.
58
+ /// It properly handles line endings for different platforms (e.g., LF for Unix, CRLF for Windows).
59
+ ///
60
+ /// @param[in,out] is Reference to the input stream from which the line should be read.
61
+ /// @param[in,out] line Reference to the string variable where the line will be stored.
62
+ /// @return Reference to the input stream after reading the line.
63
+ std::istream& GetLineCrossPlatform(std::istream& is, std::string& line);
64
+
65
+ } // namespace momentum
@@ -0,0 +1,109 @@
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/common/filesystem.h>
12
+ #include <momentum/math/types.h>
13
+
14
+ #include <gsl/span>
15
+
16
+ namespace momentum {
17
+
18
+ // UpVector Specifies which canonical axis represents up in the system
19
+ // (typically Y or Z). Maps to fbxsdk::FbxAxisSystem::EUpVector
20
+ enum class FBXUpVector { XAxis = 1, YAxis = 2, ZAxis = 3 };
21
+
22
+ // FrontVector Vector with origin at the screen pointing toward the camera.
23
+ // This is a subset of enum EUpVector because axis cannot be repeated.
24
+ // We use the system of "parity" to define this vector because its value (X,Y or
25
+ // Z axis) really depends on the up-vector. The EPreDefinedAxisSystem list the
26
+ // up-vector, parity and coordinate system values for the predefined systems.
27
+ // Maps to fbxsdk::FbxAxisSystem::EFrontVector
28
+ enum class FBXFrontVector { ParityEven = 1, ParityOdd = 2 };
29
+
30
+ // CoordSystem Specifies the third vector of the system.
31
+ // Maps to fbxsdk::FbxAxisSystem::ECoordSystem
32
+ enum class FBXCoordSystem { RightHanded, LeftHanded };
33
+
34
+ // KeepLocators Specifies whether Nulls in the transform hierarchy should be turned into Locators.
35
+ enum class KeepLocators { No, Yes };
36
+
37
+ // LoadBlendShapes Specifies whether blendshapes should be loaded or not
38
+ enum class LoadBlendShapes { No, Yes };
39
+
40
+ // A struct containing the up, front vectors and coordinate system
41
+ struct FBXCoordSystemInfo {
42
+ // Default to the same orientations as FbxAxisSystem::eMayaYUp
43
+ FBXUpVector upVector = FBXUpVector::YAxis;
44
+ FBXFrontVector frontVector = FBXFrontVector::ParityOdd;
45
+ FBXCoordSystem coordSystem = FBXCoordSystem::RightHanded;
46
+ };
47
+
48
+ // Using keepLocators means the Nulls in the transform hierarchy will be turned into Locators.
49
+ // This is different from historical momentum behavior so it's off by default.
50
+ // Permissive mode allows loading mesh-only characters (without skin weights).
51
+ Character loadFbxCharacter(
52
+ const filesystem::path& inputPath,
53
+ KeepLocators keepLocators = KeepLocators::No,
54
+ bool permissive = false,
55
+ LoadBlendShapes loadBlendShapes = LoadBlendShapes::No);
56
+
57
+ // Using keepLocators means the Nulls in the transform hierarchy will be turned into Locators.
58
+ // This is different from historical momentum behavior so it's off by default.
59
+ // Permissive mode allows loading mesh-only characters (without skin weights).
60
+ Character loadFbxCharacter(
61
+ gsl::span<const std::byte> inputSpan,
62
+ KeepLocators keepLocators = KeepLocators::No,
63
+ bool permissive = false,
64
+ LoadBlendShapes loadBlendShapes = LoadBlendShapes::No);
65
+
66
+ // Permissive mode allows loading mesh-only characters (without skin weights).
67
+ std::tuple<Character, std::vector<MatrixXf>, float> loadFbxCharacterWithMotion(
68
+ const filesystem::path& inputPath,
69
+ KeepLocators keepLocators = KeepLocators::No,
70
+ bool permissive = false,
71
+ LoadBlendShapes loadBlendShapes = LoadBlendShapes::No);
72
+
73
+ // Permissive mode allows loading mesh-only characters (without skin weights).
74
+ std::tuple<Character, std::vector<MatrixXf>, float> loadFbxCharacterWithMotion(
75
+ gsl::span<const std::byte> inputSpan,
76
+ KeepLocators keepLocatorss = KeepLocators::No,
77
+ bool permissive = false,
78
+ LoadBlendShapes loadBlendShape = LoadBlendShapes::No);
79
+
80
+ // Permissive mode allows saving mesh-only characters (without skin weights).
81
+ void saveFbx(
82
+ const filesystem::path& filename,
83
+ const Character& character,
84
+ const MatrixXf& poses = MatrixXf(),
85
+ const VectorXf& identity = VectorXf(),
86
+ double framerate = 120.0,
87
+ bool saveMesh = false,
88
+ const FBXCoordSystemInfo& coordSystemInfo = FBXCoordSystemInfo(),
89
+ bool permissive = false);
90
+
91
+ // Permissive mode allows saving mesh-only characters (without skin weights).
92
+ void saveFbxWithJointParams(
93
+ const filesystem::path& filename,
94
+ const Character& character,
95
+ const MatrixXf& jointParams = MatrixXf(),
96
+ double framerate = 120.0,
97
+ bool saveMesh = false,
98
+ const FBXCoordSystemInfo& coordSystemInfo = FBXCoordSystemInfo(),
99
+ bool permissive = false);
100
+
101
+ // A shorthand of saveFbx() to save both the skeleton and mesh as a model but without any animation
102
+ // Permissive mode allows saving mesh-only characters (without skin weights).
103
+ void saveFbxModel(
104
+ const filesystem::path& filename,
105
+ const Character& character,
106
+ const FBXCoordSystemInfo& coordSystemInfo = FBXCoordSystemInfo(),
107
+ bool permissive = false);
108
+
109
+ } // namespace momentum
@@ -0,0 +1,66 @@
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 <fbxsdk.h>
11
+ #include <fbxsdk/core/fbxstream.h>
12
+ #include <gsl/span>
13
+
14
+ #include <string_view>
15
+
16
+ #define FBX_VERSION_GE(major, minor, patch) \
17
+ ((FBXSDK_VERSION_MAJOR > (major)) || \
18
+ (FBXSDK_VERSION_MAJOR == (major) && FBXSDK_VERSION_MINOR > (minor)) || \
19
+ (FBXSDK_VERSION_MAJOR == (major) && FBXSDK_VERSION_MINOR == (minor) && \
20
+ FBXSDK_VERSION_POINT >= (patch)))
21
+
22
+ namespace momentum {
23
+
24
+ // Simplest FbxStream to read file from a string_view memory buffer
25
+ class FbxMemoryStream : public FbxStream {
26
+ public:
27
+ FbxMemoryStream(gsl::span<const std::byte> buffer, int pReaderId);
28
+ ~FbxMemoryStream() override;
29
+ EState GetState() override;
30
+ bool Open(void* pStreamData) override;
31
+ bool Close() override;
32
+ bool Flush() override;
33
+ #if FBX_VERSION_GE(2020, 3, 2)
34
+ size_t Write(const void* buffer, FbxUInt64 count) override;
35
+ size_t Read(void* buffer, FbxUInt64 count) const override;
36
+ #else
37
+ int Write(const void* buffer, int count) override;
38
+ int Read(void* buffer, int count) const override;
39
+ #endif
40
+ int GetReaderID() const override;
41
+ int GetWriterID() const override;
42
+ void Seek(const FbxInt64& pOffset, const FbxFile::ESeekPos& pSeekPos) override;
43
+ #if FBX_VERSION_GE(2020, 3, 2)
44
+ FbxInt64 GetPosition() const override;
45
+ void SetPosition(FbxInt64 pPosition) override;
46
+ #else
47
+ long GetPosition() const override;
48
+ void SetPosition(long pPosition) override;
49
+ #endif
50
+ int GetError() const override;
51
+ void ClearError() override;
52
+
53
+ private:
54
+ gsl::span<const std::byte> buffer_;
55
+ long length_;
56
+ #if FBX_VERSION_GE(2020, 3, 2)
57
+ mutable FbxInt64 position_{0};
58
+ #else
59
+ mutable long position_;
60
+ #endif
61
+ EState state_;
62
+ int readerId_;
63
+ mutable int errorCode_;
64
+ };
65
+
66
+ } // namespace momentum
@@ -0,0 +1,49 @@
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/common/filesystem.h>
12
+ #include <momentum/io/fbx/fbx_io.h>
13
+ #include <momentum/math/types.h>
14
+
15
+ #include <gsl/span>
16
+
17
+ namespace momentum {
18
+
19
+ // Using keepLocators means the Nulls in the transform hierarchy will be turned into Locators.
20
+ // This is different from historical momentum behavior so it's off by default.
21
+ // Permissive mode allows loading mesh-only characters (without skin weights).
22
+ Character loadOpenFbxCharacter(
23
+ const filesystem::path& inputPath,
24
+ KeepLocators keepLocators = KeepLocators::No,
25
+ bool permissive = false,
26
+ LoadBlendShapes loadBlendShapes = LoadBlendShapes::No);
27
+
28
+ // Permissive mode allows loading mesh-only characters (without skin weights).
29
+ Character loadOpenFbxCharacter(
30
+ gsl::span<const std::byte> inputData,
31
+ KeepLocators keepLocators = KeepLocators::No,
32
+ bool permissive = false,
33
+ LoadBlendShapes loadBlendShapes = LoadBlendShapes::No);
34
+
35
+ // Permissive mode allows loading mesh-only characters (without skin weights).
36
+ std::tuple<Character, std::vector<MatrixXf>, float> loadOpenFbxCharacterWithMotion(
37
+ const filesystem::path& inputPath,
38
+ KeepLocators keepLocators = KeepLocators::No,
39
+ bool permissive = false,
40
+ LoadBlendShapes loadBlendShapes = LoadBlendShapes::No);
41
+
42
+ // Permissive mode allows loading mesh-only characters (without skin weights).
43
+ std::tuple<Character, std::vector<MatrixXf>, float> loadOpenFbxCharacterWithMotion(
44
+ gsl::span<const std::byte> inputData,
45
+ KeepLocators keepLocators = KeepLocators::No,
46
+ bool permissive = false,
47
+ LoadBlendShapes loadBlendShapes = LoadBlendShapes::No);
48
+
49
+ } // namespace momentum
@@ -0,0 +1,60 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #include <momentum/math/types.h>
11
+
12
+ #include <gsl/span>
13
+
14
+ #include <string>
15
+ #include <vector>
16
+
17
+ namespace momentum {
18
+
19
+ // Structure for holding arbitrary polygon data. We will read the data as-is from the
20
+ // FBX file and then triangulate at the end for momentum. Doing it this way allows us
21
+ // to split up the functionality (triangulating while you read complicates handling
22
+ // texture coordinates for example).
23
+ struct PolygonData {
24
+ // We will pack polygons in an array like this:
25
+ // The indices array will contain all the polygons indices packed back-to-back.
26
+ // 1 2 3 4 2 3 4 6 ...
27
+ // The offsets array will include an offset for the start and end of each polygon.
28
+ // 0 4 8 ...
29
+ // The advantage of doing it this way is that we have random access into the
30
+ // polygons. The disadvantage (compared to just providing an array of vertex counts)
31
+ // is that the offset array should always have one more than the number of polygons,
32
+ // which is a little confusing.
33
+ std::vector<uint32_t> indices;
34
+ std::vector<uint32_t> offsets;
35
+
36
+ // The texture coordinate indices for each face.
37
+ // Uses the same offsets array as the indices array.
38
+ // Note that this is allowed to be empty, but if not empty it
39
+ // must be the same size as the indices array.
40
+ std::vector<uint32_t> textureIndices;
41
+
42
+ PolygonData() : offsets{0} {}
43
+
44
+ // If there's a problem with the mesh, returns an error message.
45
+ // If everything is kosher, returns an empty string.
46
+ // This function is used in a few places when reading the mesh from
47
+ // disk to make sure it's valid.
48
+ [[nodiscard]] std::string errorMessage(size_t numVertices) const;
49
+
50
+ // Similar to errorMessage, but the issue is not severe enough to terminate.
51
+ [[nodiscard]] std::string warnMessage(size_t numTexVertices) const;
52
+
53
+ [[nodiscard]] size_t numPolygons() const;
54
+ };
55
+
56
+ std::vector<Eigen::Vector3i> triangulate(
57
+ gsl::span<const uint32_t> indices,
58
+ gsl::span<const uint32_t> offsets);
59
+
60
+ } // namespace momentum
@@ -0,0 +1,132 @@
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/marker.h>
11
+ #include <momentum/character/skeleton.h>
12
+ #include <momentum/common/filesystem.h>
13
+ #include <momentum/io/gltf/gltf_file_format.h>
14
+ #include <momentum/io/gltf/gltf_io.h>
15
+ #include <momentum/math/mesh.h>
16
+ #include <momentum/math/types.h>
17
+
18
+ #include <fx/gltf.h>
19
+
20
+ namespace fx::gltf {
21
+ struct Document;
22
+ } // namespace fx::gltf
23
+
24
+ namespace momentum {
25
+
26
+ using MotionParameters = std::tuple<std::vector<std::string>, MatrixXf>;
27
+ using IdentityParameters = std::tuple<std::vector<std::string>, VectorXf>;
28
+
29
+ /// Helper class to build a glb scene. It supports adding multiple characters
30
+ /// and motions for each character.
31
+ /// By default, momentum extension is added to the glb nodes. This is required if you
32
+ /// want to correctly load the exported character back.
33
+ class GltfBuilder final {
34
+ public:
35
+ GltfBuilder();
36
+
37
+ ~GltfBuilder();
38
+
39
+ GltfBuilder(GltfBuilder const&) = delete;
40
+
41
+ void operator=(GltfBuilder const&) = delete;
42
+
43
+ /// Specify how marker mesh is represented in the glb file
44
+ enum class MarkerMesh : uint8_t { None, UnitCube };
45
+
46
+ /// Add a character to the scene. Each character will have a root node with the character's
47
+ /// name as the parent of the skeleton root and the character mesh.
48
+ /// positionOffset and rotationOffset can be provided as an initial offset to the character.
49
+ void addCharacter(
50
+ const Character& character,
51
+ const Vector3f& positionOffset = Vector3f::Zero(),
52
+ const Quaternionf& rotationOffset = Quaternionf::Identity(),
53
+ const GltfOptions& options = GltfOptions());
54
+
55
+ /// Add a static mesh, such as an environment or a target scan
56
+ void addMesh(const Mesh& mesh, const std::string& name, bool addColor = false);
57
+
58
+ void setFps(float fps);
59
+
60
+ /// Add a motion to the provided character. If addCharacter is not called before adding
61
+ /// the motion, the character will be automatically added with the default settings.
62
+ void addMotion(
63
+ const Character& character,
64
+ float fps = 120.0f,
65
+ const MotionParameters& motion = {},
66
+ const IdentityParameters& offsets = {},
67
+ bool addExtensions = true,
68
+ const std::string& customName = "default");
69
+
70
+ /// Add a skeleton states to the provided character. If addCharacter is not called before adding
71
+ /// the skeleton states, the character will be automatically added with the default settings.
72
+ void addSkeletonStates(
73
+ const Character& character,
74
+ float fps,
75
+ gsl::span<const SkeletonState> skeletonStates,
76
+ const std::string& customName = "default");
77
+
78
+ /// Add marker data to the file
79
+ ///
80
+ /// @param[in] fps The frame rate of the motion capture data in frames per second.
81
+ /// @param[in] markerSequence A 2D vector specifying the Marker data (name/position/occlusion) for
82
+ /// all markers across all captured frames. Size: [numFrames][numMarkers]
83
+ /// @param[in] markerMesh Optional parameter specifying the MarkerMesh type (default is
84
+ /// MarkerMesh::None).
85
+ /// @param[in] animName Optional parameter specifying the animation name (default is "default").
86
+ void addMarkerSequence(
87
+ float fps,
88
+ gsl::span<const std::vector<momentum::Marker>> markerSequence,
89
+ MarkerMesh markerMesh = MarkerMesh::None,
90
+ const std::string& animName = "default");
91
+
92
+ // Save the file with the provided filename. If the fileFormat is 'GltfFileFormat::Extension',
93
+ // will deduct the file format by filename.
94
+ // When embedResources is true, it will set all the existing buffers to embed the data.
95
+ void save(
96
+ const filesystem::path& filename,
97
+ GltfFileFormat fileFormat = GltfFileFormat::Extension,
98
+ bool embedResources = false);
99
+
100
+ static void save(
101
+ fx::gltf::Document& document,
102
+ const filesystem::path& filename,
103
+ GltfFileFormat fileFormat = GltfFileFormat::Extension,
104
+ bool embedResources = false);
105
+
106
+ /// Set all existing buffers to embed resources.
107
+ void forceEmbedResources();
108
+
109
+ static void forceEmbedResources(fx::gltf::Document& document);
110
+
111
+ /// Allow copy the document, but do not allow modify the file
112
+ /// outside of the builder to keep metadata consistent
113
+ const fx::gltf::Document& getDocument();
114
+
115
+ size_t getNumCharacters();
116
+
117
+ size_t getCharacterRootIndex(const std::string& name);
118
+
119
+ size_t getNumJoints(const std::string& name);
120
+
121
+ size_t getNumMotions();
122
+
123
+ float getFps();
124
+
125
+ std::vector<size_t> getCharacterMotions(const std::string& characterName);
126
+
127
+ private:
128
+ struct Impl;
129
+ std::unique_ptr<Impl> impl_;
130
+ };
131
+
132
+ } // namespace momentum
@@ -0,0 +1,19 @@
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
+ namespace momentum {
11
+
12
+ // File format in which the character is saved
13
+ enum class GltfFileFormat {
14
+ Extension = 0, // The file extension is used for deduction (e.g. ".gltf" --> ASCII)
15
+ GltfBinary = 1, // Binary format (generally .glb)
16
+ GltfAscii = 2, // ASCII format (generally .gltf)
17
+ };
18
+
19
+ } // namespace momentum