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.
- include/axel/BoundingBox.h +59 -0
- include/axel/Bvh.h +708 -0
- include/axel/BvhBase.h +75 -0
- include/axel/BvhCommon.h +43 -0
- include/axel/BvhEmbree.h +87 -0
- include/axel/BvhFactory.h +34 -0
- include/axel/Checks.h +21 -0
- include/axel/DualContouring.h +79 -0
- include/axel/KdTree.h +208 -0
- include/axel/Log.h +22 -0
- include/axel/MeshToSdf.h +123 -0
- include/axel/Profile.h +64 -0
- include/axel/Ray.h +45 -0
- include/axel/SignedDistanceField.h +248 -0
- include/axel/SimdKdTree.h +515 -0
- include/axel/TriBvh.h +157 -0
- include/axel/TriBvhEmbree.h +57 -0
- include/axel/common/Constants.h +27 -0
- include/axel/common/Types.h +21 -0
- include/axel/common/VectorizationTypes.h +58 -0
- include/axel/math/BoundingBoxUtils.h +54 -0
- include/axel/math/ContinuousCollisionDetection.h +48 -0
- include/axel/math/CoplanarityCheck.h +30 -0
- include/axel/math/EdgeEdgeDistance.h +31 -0
- include/axel/math/MeshHoleFilling.h +117 -0
- include/axel/math/PointTriangleProjection.h +34 -0
- include/axel/math/PointTriangleProjectionDefinitions.h +209 -0
- include/axel/math/RayTriangleIntersection.h +36 -0
- include/momentum/character/blend_shape.h +97 -0
- include/momentum/character/blend_shape_base.h +86 -0
- include/momentum/character/blend_shape_skinning.h +96 -0
- include/momentum/character/character.h +272 -0
- include/momentum/character/character_state.h +108 -0
- include/momentum/character/character_utility.h +128 -0
- include/momentum/character/collision_geometry.h +80 -0
- include/momentum/character/collision_geometry_state.h +130 -0
- include/momentum/character/fwd.h +262 -0
- include/momentum/character/inverse_parameter_transform.h +58 -0
- include/momentum/character/joint.h +82 -0
- include/momentum/character/joint_state.h +241 -0
- include/momentum/character/linear_skinning.h +139 -0
- include/momentum/character/locator.h +94 -0
- include/momentum/character/locator_state.h +43 -0
- include/momentum/character/marker.h +48 -0
- include/momentum/character/mesh_state.h +71 -0
- include/momentum/character/parameter_limits.h +144 -0
- include/momentum/character/parameter_transform.h +207 -0
- include/momentum/character/pose_shape.h +65 -0
- include/momentum/character/skeleton.h +85 -0
- include/momentum/character/skeleton_state.h +227 -0
- include/momentum/character/skeleton_utility.h +38 -0
- include/momentum/character/skin_weights.h +67 -0
- include/momentum/character/skinned_locator.h +80 -0
- include/momentum/character/types.h +202 -0
- include/momentum/character_sequence_solver/fwd.h +200 -0
- include/momentum/character_sequence_solver/model_parameters_sequence_error_function.h +65 -0
- include/momentum/character_sequence_solver/multipose_solver.h +65 -0
- include/momentum/character_sequence_solver/multipose_solver_function.h +82 -0
- include/momentum/character_sequence_solver/sequence_error_function.h +104 -0
- include/momentum/character_sequence_solver/sequence_solver.h +155 -0
- include/momentum/character_sequence_solver/sequence_solver_function.h +158 -0
- include/momentum/character_sequence_solver/state_sequence_error_function.h +117 -0
- include/momentum/character_sequence_solver/vertex_sequence_error_function.h +123 -0
- include/momentum/character_solver/aim_error_function.h +112 -0
- include/momentum/character_solver/collision_error_function.h +92 -0
- include/momentum/character_solver/collision_error_function_stateless.h +75 -0
- include/momentum/character_solver/constraint_error_function-inl.h +324 -0
- include/momentum/character_solver/constraint_error_function.h +248 -0
- include/momentum/character_solver/distance_error_function.h +77 -0
- include/momentum/character_solver/error_function_utils.h +60 -0
- include/momentum/character_solver/fixed_axis_error_function.h +139 -0
- include/momentum/character_solver/fwd.h +943 -0
- include/momentum/character_solver/gauss_newton_solver_qr.h +64 -0
- include/momentum/character_solver/height_error_function.h +176 -0
- include/momentum/character_solver/joint_to_joint_distance_error_function.h +111 -0
- include/momentum/character_solver/limit_error_function.h +57 -0
- include/momentum/character_solver/model_parameters_error_function.h +64 -0
- include/momentum/character_solver/normal_error_function.h +73 -0
- include/momentum/character_solver/orientation_error_function.h +74 -0
- include/momentum/character_solver/plane_error_function.h +102 -0
- include/momentum/character_solver/point_triangle_vertex_error_function.h +141 -0
- include/momentum/character_solver/pose_prior_error_function.h +80 -0
- include/momentum/character_solver/position_error_function.h +75 -0
- include/momentum/character_solver/projection_error_function.h +93 -0
- include/momentum/character_solver/simd_collision_error_function.h +99 -0
- include/momentum/character_solver/simd_normal_error_function.h +157 -0
- include/momentum/character_solver/simd_plane_error_function.h +164 -0
- include/momentum/character_solver/simd_position_error_function.h +165 -0
- include/momentum/character_solver/skeleton_error_function.h +151 -0
- include/momentum/character_solver/skeleton_solver_function.h +94 -0
- include/momentum/character_solver/skinned_locator_error_function.h +166 -0
- include/momentum/character_solver/skinned_locator_triangle_error_function.h +146 -0
- include/momentum/character_solver/skinning_weight_iterator.h +80 -0
- include/momentum/character_solver/state_error_function.h +119 -0
- include/momentum/character_solver/transform_pose.h +80 -0
- include/momentum/character_solver/trust_region_qr.h +80 -0
- include/momentum/character_solver/vertex_error_function.h +155 -0
- include/momentum/character_solver/vertex_projection_error_function.h +117 -0
- include/momentum/character_solver/vertex_vertex_distance_error_function.h +147 -0
- include/momentum/common/aligned.h +155 -0
- include/momentum/common/checks.h +27 -0
- include/momentum/common/exception.h +70 -0
- include/momentum/common/filesystem.h +20 -0
- include/momentum/common/fwd.h +27 -0
- include/momentum/common/log.h +173 -0
- include/momentum/common/log_channel.h +17 -0
- include/momentum/common/memory.h +71 -0
- include/momentum/common/profile.h +79 -0
- include/momentum/common/progress_bar.h +37 -0
- include/momentum/common/string.h +52 -0
- include/momentum/diff_ik/ceres_utility.h +73 -0
- include/momentum/diff_ik/fully_differentiable_body_ik.h +58 -0
- include/momentum/diff_ik/fully_differentiable_distance_error_function.h +69 -0
- include/momentum/diff_ik/fully_differentiable_motion_error_function.h +46 -0
- include/momentum/diff_ik/fully_differentiable_orientation_error_function.h +114 -0
- include/momentum/diff_ik/fully_differentiable_pose_prior_error_function.h +76 -0
- include/momentum/diff_ik/fully_differentiable_position_error_function.h +138 -0
- include/momentum/diff_ik/fully_differentiable_projection_error_function.h +65 -0
- include/momentum/diff_ik/fully_differentiable_skeleton_error_function.h +160 -0
- include/momentum/diff_ik/fully_differentiable_state_error_function.h +54 -0
- include/momentum/diff_ik/fwd.h +385 -0
- include/momentum/diff_ik/union_error_function.h +67 -0
- include/momentum/gui/rerun/eigen_adapters.h +70 -0
- include/momentum/gui/rerun/logger.h +102 -0
- include/momentum/gui/rerun/logging_redirect.h +27 -0
- include/momentum/io/character_io.h +98 -0
- include/momentum/io/common/gsl_utils.h +50 -0
- include/momentum/io/common/stream_utils.h +65 -0
- include/momentum/io/fbx/fbx_io.h +135 -0
- include/momentum/io/fbx/fbx_memory_stream.h +70 -0
- include/momentum/io/fbx/openfbx_loader.h +62 -0
- include/momentum/io/fbx/polygon_data.h +60 -0
- include/momentum/io/file_save_options.h +107 -0
- include/momentum/io/gltf/gltf_builder.h +141 -0
- include/momentum/io/gltf/gltf_io.h +149 -0
- include/momentum/io/gltf/utils/accessor_utils.h +299 -0
- include/momentum/io/gltf/utils/coordinate_utils.h +60 -0
- include/momentum/io/gltf/utils/json_utils.h +102 -0
- include/momentum/io/legacy_json/legacy_json_io.h +70 -0
- include/momentum/io/marker/c3d_io.h +30 -0
- include/momentum/io/marker/conversions.h +57 -0
- include/momentum/io/marker/coordinate_system.h +30 -0
- include/momentum/io/marker/marker_io.h +56 -0
- include/momentum/io/marker/trc_io.h +27 -0
- include/momentum/io/motion/mmo_io.h +97 -0
- include/momentum/io/shape/blend_shape_io.h +82 -0
- include/momentum/io/shape/pose_shape_io.h +21 -0
- include/momentum/io/skeleton/locator_io.h +41 -0
- include/momentum/io/skeleton/mppca_io.h +26 -0
- include/momentum/io/skeleton/parameter_limits_io.h +38 -0
- include/momentum/io/skeleton/parameter_transform_io.h +80 -0
- include/momentum/io/skeleton/parameters_io.h +20 -0
- include/momentum/io/skeleton/utility.h +67 -0
- include/momentum/io/urdf/urdf_io.h +26 -0
- include/momentum/io/usd/usd_io.h +36 -0
- include/momentum/marker_tracking/app_utils.h +64 -0
- include/momentum/marker_tracking/marker_tracker.h +221 -0
- include/momentum/marker_tracking/process_markers.h +58 -0
- include/momentum/marker_tracking/tracker_utils.h +99 -0
- include/momentum/math/constants.h +82 -0
- include/momentum/math/covariance_matrix.h +84 -0
- include/momentum/math/fmt_eigen.h +23 -0
- include/momentum/math/fwd.h +132 -0
- include/momentum/math/generalized_loss.h +61 -0
- include/momentum/math/intersection.h +32 -0
- include/momentum/math/mesh.h +84 -0
- include/momentum/math/mppca.h +67 -0
- include/momentum/math/online_householder_qr.h +516 -0
- include/momentum/math/random-inl.h +404 -0
- include/momentum/math/random.h +310 -0
- include/momentum/math/simd_generalized_loss.h +40 -0
- include/momentum/math/transform.h +229 -0
- include/momentum/math/types.h +461 -0
- include/momentum/math/utility.h +324 -0
- include/momentum/rasterizer/camera.h +453 -0
- include/momentum/rasterizer/fwd.h +102 -0
- include/momentum/rasterizer/geometry.h +83 -0
- include/momentum/rasterizer/image.h +18 -0
- include/momentum/rasterizer/rasterizer.h +583 -0
- include/momentum/rasterizer/tensor.h +140 -0
- include/momentum/rasterizer/text_rasterizer.h +89 -0
- include/momentum/rasterizer/utility.h +268 -0
- include/momentum/simd/simd.h +221 -0
- include/momentum/solver/fwd.h +131 -0
- include/momentum/solver/gauss_newton_solver.h +136 -0
- include/momentum/solver/gradient_descent_solver.h +65 -0
- include/momentum/solver/solver.h +155 -0
- include/momentum/solver/solver_function.h +126 -0
- include/momentum/solver/subset_gauss_newton_solver.h +109 -0
- include/rerun/archetypes/annotation_context.hpp +157 -0
- include/rerun/archetypes/arrows2d.hpp +271 -0
- include/rerun/archetypes/arrows3d.hpp +257 -0
- include/rerun/archetypes/asset3d.hpp +262 -0
- include/rerun/archetypes/asset_video.hpp +275 -0
- include/rerun/archetypes/bar_chart.hpp +261 -0
- include/rerun/archetypes/boxes2d.hpp +293 -0
- include/rerun/archetypes/boxes3d.hpp +369 -0
- include/rerun/archetypes/capsules3d.hpp +333 -0
- include/rerun/archetypes/clear.hpp +180 -0
- include/rerun/archetypes/depth_image.hpp +425 -0
- include/rerun/archetypes/ellipsoids3d.hpp +384 -0
- include/rerun/archetypes/encoded_image.hpp +250 -0
- include/rerun/archetypes/geo_line_strings.hpp +166 -0
- include/rerun/archetypes/geo_points.hpp +177 -0
- include/rerun/archetypes/graph_edges.hpp +152 -0
- include/rerun/archetypes/graph_nodes.hpp +206 -0
- include/rerun/archetypes/image.hpp +434 -0
- include/rerun/archetypes/instance_poses3d.hpp +221 -0
- include/rerun/archetypes/line_strips2d.hpp +289 -0
- include/rerun/archetypes/line_strips3d.hpp +270 -0
- include/rerun/archetypes/mesh3d.hpp +387 -0
- include/rerun/archetypes/pinhole.hpp +385 -0
- include/rerun/archetypes/points2d.hpp +333 -0
- include/rerun/archetypes/points3d.hpp +369 -0
- include/rerun/archetypes/recording_properties.hpp +132 -0
- include/rerun/archetypes/scalar.hpp +170 -0
- include/rerun/archetypes/scalars.hpp +153 -0
- include/rerun/archetypes/segmentation_image.hpp +305 -0
- include/rerun/archetypes/series_line.hpp +274 -0
- include/rerun/archetypes/series_lines.hpp +271 -0
- include/rerun/archetypes/series_point.hpp +265 -0
- include/rerun/archetypes/series_points.hpp +251 -0
- include/rerun/archetypes/tensor.hpp +213 -0
- include/rerun/archetypes/text_document.hpp +200 -0
- include/rerun/archetypes/text_log.hpp +211 -0
- include/rerun/archetypes/transform3d.hpp +925 -0
- include/rerun/archetypes/video_frame_reference.hpp +295 -0
- include/rerun/archetypes/view_coordinates.hpp +393 -0
- include/rerun/archetypes.hpp +43 -0
- include/rerun/arrow_utils.hpp +32 -0
- include/rerun/as_components.hpp +90 -0
- include/rerun/blueprint/archetypes/background.hpp +113 -0
- include/rerun/blueprint/archetypes/container_blueprint.hpp +259 -0
- include/rerun/blueprint/archetypes/dataframe_query.hpp +178 -0
- include/rerun/blueprint/archetypes/entity_behavior.hpp +130 -0
- include/rerun/blueprint/archetypes/force_center.hpp +115 -0
- include/rerun/blueprint/archetypes/force_collision_radius.hpp +141 -0
- include/rerun/blueprint/archetypes/force_link.hpp +136 -0
- include/rerun/blueprint/archetypes/force_many_body.hpp +124 -0
- include/rerun/blueprint/archetypes/force_position.hpp +132 -0
- include/rerun/blueprint/archetypes/line_grid3d.hpp +178 -0
- include/rerun/blueprint/archetypes/map_background.hpp +104 -0
- include/rerun/blueprint/archetypes/map_zoom.hpp +103 -0
- include/rerun/blueprint/archetypes/near_clip_plane.hpp +109 -0
- include/rerun/blueprint/archetypes/panel_blueprint.hpp +95 -0
- include/rerun/blueprint/archetypes/plot_legend.hpp +118 -0
- include/rerun/blueprint/archetypes/scalar_axis.hpp +116 -0
- include/rerun/blueprint/archetypes/tensor_scalar_mapping.hpp +146 -0
- include/rerun/blueprint/archetypes/tensor_slice_selection.hpp +167 -0
- include/rerun/blueprint/archetypes/tensor_view_fit.hpp +95 -0
- include/rerun/blueprint/archetypes/view_blueprint.hpp +170 -0
- include/rerun/blueprint/archetypes/view_contents.hpp +142 -0
- include/rerun/blueprint/archetypes/viewport_blueprint.hpp +200 -0
- include/rerun/blueprint/archetypes/visible_time_ranges.hpp +116 -0
- include/rerun/blueprint/archetypes/visual_bounds2d.hpp +109 -0
- include/rerun/blueprint/archetypes/visualizer_overrides.hpp +113 -0
- include/rerun/blueprint/archetypes.hpp +29 -0
- include/rerun/blueprint/components/active_tab.hpp +82 -0
- include/rerun/blueprint/components/apply_latest_at.hpp +79 -0
- include/rerun/blueprint/components/auto_layout.hpp +77 -0
- include/rerun/blueprint/components/auto_views.hpp +77 -0
- include/rerun/blueprint/components/background_kind.hpp +66 -0
- include/rerun/blueprint/components/column_share.hpp +78 -0
- include/rerun/blueprint/components/component_column_selector.hpp +81 -0
- include/rerun/blueprint/components/container_kind.hpp +65 -0
- include/rerun/blueprint/components/corner2d.hpp +64 -0
- include/rerun/blueprint/components/enabled.hpp +77 -0
- include/rerun/blueprint/components/filter_by_range.hpp +74 -0
- include/rerun/blueprint/components/filter_is_not_null.hpp +77 -0
- include/rerun/blueprint/components/force_distance.hpp +82 -0
- include/rerun/blueprint/components/force_iterations.hpp +82 -0
- include/rerun/blueprint/components/force_strength.hpp +82 -0
- include/rerun/blueprint/components/grid_columns.hpp +78 -0
- include/rerun/blueprint/components/grid_spacing.hpp +78 -0
- include/rerun/blueprint/components/included_content.hpp +86 -0
- include/rerun/blueprint/components/lock_range_during_zoom.hpp +82 -0
- include/rerun/blueprint/components/map_provider.hpp +64 -0
- include/rerun/blueprint/components/near_clip_plane.hpp +82 -0
- include/rerun/blueprint/components/panel_state.hpp +61 -0
- include/rerun/blueprint/components/query_expression.hpp +89 -0
- include/rerun/blueprint/components/root_container.hpp +77 -0
- include/rerun/blueprint/components/row_share.hpp +78 -0
- include/rerun/blueprint/components/selected_columns.hpp +76 -0
- include/rerun/blueprint/components/tensor_dimension_index_slider.hpp +90 -0
- include/rerun/blueprint/components/timeline_name.hpp +76 -0
- include/rerun/blueprint/components/view_class.hpp +76 -0
- include/rerun/blueprint/components/view_fit.hpp +61 -0
- include/rerun/blueprint/components/view_maximized.hpp +79 -0
- include/rerun/blueprint/components/view_origin.hpp +81 -0
- include/rerun/blueprint/components/viewer_recommendation_hash.hpp +82 -0
- include/rerun/blueprint/components/visible_time_range.hpp +77 -0
- include/rerun/blueprint/components/visual_bounds2d.hpp +74 -0
- include/rerun/blueprint/components/visualizer_override.hpp +86 -0
- include/rerun/blueprint/components/zoom_level.hpp +78 -0
- include/rerun/blueprint/components.hpp +41 -0
- include/rerun/blueprint/datatypes/component_column_selector.hpp +61 -0
- include/rerun/blueprint/datatypes/filter_by_range.hpp +59 -0
- include/rerun/blueprint/datatypes/filter_is_not_null.hpp +61 -0
- include/rerun/blueprint/datatypes/selected_columns.hpp +62 -0
- include/rerun/blueprint/datatypes/tensor_dimension_index_slider.hpp +63 -0
- include/rerun/blueprint/datatypes.hpp +9 -0
- include/rerun/c/arrow_c_data_interface.h +111 -0
- include/rerun/c/compiler_utils.h +10 -0
- include/rerun/c/rerun.h +627 -0
- include/rerun/c/sdk_info.h +28 -0
- include/rerun/collection.hpp +496 -0
- include/rerun/collection_adapter.hpp +43 -0
- include/rerun/collection_adapter_builtins.hpp +138 -0
- include/rerun/compiler_utils.hpp +61 -0
- include/rerun/component_batch.hpp +163 -0
- include/rerun/component_column.hpp +111 -0
- include/rerun/component_descriptor.hpp +142 -0
- include/rerun/component_type.hpp +35 -0
- include/rerun/components/aggregation_policy.hpp +76 -0
- include/rerun/components/albedo_factor.hpp +74 -0
- include/rerun/components/annotation_context.hpp +102 -0
- include/rerun/components/axis_length.hpp +74 -0
- include/rerun/components/blob.hpp +73 -0
- include/rerun/components/class_id.hpp +71 -0
- include/rerun/components/clear_is_recursive.hpp +75 -0
- include/rerun/components/color.hpp +99 -0
- include/rerun/components/colormap.hpp +99 -0
- include/rerun/components/depth_meter.hpp +84 -0
- include/rerun/components/draw_order.hpp +79 -0
- include/rerun/components/entity_path.hpp +83 -0
- include/rerun/components/fill_mode.hpp +72 -0
- include/rerun/components/fill_ratio.hpp +79 -0
- include/rerun/components/gamma_correction.hpp +80 -0
- include/rerun/components/geo_line_string.hpp +63 -0
- include/rerun/components/graph_edge.hpp +75 -0
- include/rerun/components/graph_node.hpp +79 -0
- include/rerun/components/graph_type.hpp +57 -0
- include/rerun/components/half_size2d.hpp +91 -0
- include/rerun/components/half_size3d.hpp +95 -0
- include/rerun/components/image_buffer.hpp +86 -0
- include/rerun/components/image_format.hpp +84 -0
- include/rerun/components/image_plane_distance.hpp +77 -0
- include/rerun/components/interactive.hpp +76 -0
- include/rerun/components/keypoint_id.hpp +74 -0
- include/rerun/components/lat_lon.hpp +89 -0
- include/rerun/components/length.hpp +77 -0
- include/rerun/components/line_strip2d.hpp +73 -0
- include/rerun/components/line_strip3d.hpp +73 -0
- include/rerun/components/magnification_filter.hpp +63 -0
- include/rerun/components/marker_shape.hpp +82 -0
- include/rerun/components/marker_size.hpp +74 -0
- include/rerun/components/media_type.hpp +157 -0
- include/rerun/components/name.hpp +83 -0
- include/rerun/components/opacity.hpp +77 -0
- include/rerun/components/pinhole_projection.hpp +94 -0
- include/rerun/components/plane3d.hpp +75 -0
- include/rerun/components/pose_rotation_axis_angle.hpp +73 -0
- include/rerun/components/pose_rotation_quat.hpp +71 -0
- include/rerun/components/pose_scale3d.hpp +102 -0
- include/rerun/components/pose_transform_mat3x3.hpp +87 -0
- include/rerun/components/pose_translation3d.hpp +96 -0
- include/rerun/components/position2d.hpp +86 -0
- include/rerun/components/position3d.hpp +90 -0
- include/rerun/components/radius.hpp +98 -0
- include/rerun/components/range1d.hpp +75 -0
- include/rerun/components/resolution.hpp +88 -0
- include/rerun/components/rotation_axis_angle.hpp +72 -0
- include/rerun/components/rotation_quat.hpp +71 -0
- include/rerun/components/scalar.hpp +76 -0
- include/rerun/components/scale3d.hpp +102 -0
- include/rerun/components/series_visible.hpp +76 -0
- include/rerun/components/show_labels.hpp +79 -0
- include/rerun/components/stroke_width.hpp +74 -0
- include/rerun/components/tensor_data.hpp +94 -0
- include/rerun/components/tensor_dimension_index_selection.hpp +77 -0
- include/rerun/components/tensor_height_dimension.hpp +71 -0
- include/rerun/components/tensor_width_dimension.hpp +71 -0
- include/rerun/components/texcoord2d.hpp +101 -0
- include/rerun/components/text.hpp +83 -0
- include/rerun/components/text_log_level.hpp +110 -0
- include/rerun/components/timestamp.hpp +76 -0
- include/rerun/components/transform_mat3x3.hpp +92 -0
- include/rerun/components/transform_relation.hpp +66 -0
- include/rerun/components/translation3d.hpp +96 -0
- include/rerun/components/triangle_indices.hpp +85 -0
- include/rerun/components/value_range.hpp +78 -0
- include/rerun/components/vector2d.hpp +92 -0
- include/rerun/components/vector3d.hpp +96 -0
- include/rerun/components/video_timestamp.hpp +120 -0
- include/rerun/components/view_coordinates.hpp +346 -0
- include/rerun/components/visible.hpp +74 -0
- include/rerun/components.hpp +77 -0
- include/rerun/config.hpp +52 -0
- include/rerun/datatypes/angle.hpp +76 -0
- include/rerun/datatypes/annotation_info.hpp +76 -0
- include/rerun/datatypes/blob.hpp +67 -0
- include/rerun/datatypes/bool.hpp +57 -0
- include/rerun/datatypes/channel_datatype.hpp +87 -0
- include/rerun/datatypes/class_description.hpp +92 -0
- include/rerun/datatypes/class_description_map_elem.hpp +69 -0
- include/rerun/datatypes/class_id.hpp +62 -0
- include/rerun/datatypes/color_model.hpp +68 -0
- include/rerun/datatypes/dvec2d.hpp +76 -0
- include/rerun/datatypes/entity_path.hpp +60 -0
- include/rerun/datatypes/float32.hpp +62 -0
- include/rerun/datatypes/float64.hpp +62 -0
- include/rerun/datatypes/image_format.hpp +107 -0
- include/rerun/datatypes/keypoint_id.hpp +63 -0
- include/rerun/datatypes/keypoint_pair.hpp +65 -0
- include/rerun/datatypes/mat3x3.hpp +105 -0
- include/rerun/datatypes/mat4x4.hpp +119 -0
- include/rerun/datatypes/pixel_format.hpp +142 -0
- include/rerun/datatypes/plane3d.hpp +60 -0
- include/rerun/datatypes/quaternion.hpp +110 -0
- include/rerun/datatypes/range1d.hpp +59 -0
- include/rerun/datatypes/range2d.hpp +55 -0
- include/rerun/datatypes/rgba32.hpp +94 -0
- include/rerun/datatypes/rotation_axis_angle.hpp +67 -0
- include/rerun/datatypes/tensor_buffer.hpp +529 -0
- include/rerun/datatypes/tensor_data.hpp +100 -0
- include/rerun/datatypes/tensor_dimension_index_selection.hpp +58 -0
- include/rerun/datatypes/tensor_dimension_selection.hpp +56 -0
- include/rerun/datatypes/time_int.hpp +62 -0
- include/rerun/datatypes/time_range.hpp +55 -0
- include/rerun/datatypes/time_range_boundary.hpp +175 -0
- include/rerun/datatypes/uint16.hpp +62 -0
- include/rerun/datatypes/uint32.hpp +62 -0
- include/rerun/datatypes/uint64.hpp +62 -0
- include/rerun/datatypes/utf8.hpp +76 -0
- include/rerun/datatypes/utf8pair.hpp +62 -0
- include/rerun/datatypes/uuid.hpp +60 -0
- include/rerun/datatypes/uvec2d.hpp +76 -0
- include/rerun/datatypes/uvec3d.hpp +80 -0
- include/rerun/datatypes/uvec4d.hpp +59 -0
- include/rerun/datatypes/vec2d.hpp +76 -0
- include/rerun/datatypes/vec3d.hpp +80 -0
- include/rerun/datatypes/vec4d.hpp +84 -0
- include/rerun/datatypes/video_timestamp.hpp +67 -0
- include/rerun/datatypes/view_coordinates.hpp +87 -0
- include/rerun/datatypes/visible_time_range.hpp +57 -0
- include/rerun/datatypes.hpp +51 -0
- include/rerun/demo_utils.hpp +75 -0
- include/rerun/entity_path.hpp +20 -0
- include/rerun/error.hpp +180 -0
- include/rerun/half.hpp +10 -0
- include/rerun/image_utils.hpp +187 -0
- include/rerun/indicator_component.hpp +59 -0
- include/rerun/loggable.hpp +54 -0
- include/rerun/recording_stream.hpp +960 -0
- include/rerun/rerun_sdk_export.hpp +25 -0
- include/rerun/result.hpp +86 -0
- include/rerun/rotation3d.hpp +33 -0
- include/rerun/sdk_info.hpp +20 -0
- include/rerun/spawn.hpp +21 -0
- include/rerun/spawn_options.hpp +57 -0
- include/rerun/string_utils.hpp +16 -0
- include/rerun/third_party/cxxopts.hpp +2198 -0
- include/rerun/time_column.hpp +288 -0
- include/rerun/timeline.hpp +38 -0
- include/rerun/type_traits.hpp +40 -0
- include/rerun.hpp +86 -0
- lib/cmake/axel/axel-config.cmake +45 -0
- lib/cmake/axel/axelTargets-release.cmake +19 -0
- lib/cmake/axel/axelTargets.cmake +108 -0
- lib/cmake/momentum/FindFbxSdk.cmake +115 -0
- lib/cmake/momentum/Findre2.cmake +52 -0
- lib/cmake/momentum/momentum-config.cmake +67 -0
- lib/cmake/momentum/momentumTargets-release.cmake +259 -0
- lib/cmake/momentum/momentumTargets.cmake +385 -0
- lib/cmake/rerun_sdk/rerun_sdkConfig.cmake +70 -0
- lib/cmake/rerun_sdk/rerun_sdkConfigVersion.cmake +83 -0
- lib/cmake/rerun_sdk/rerun_sdkTargets-release.cmake +19 -0
- lib/cmake/rerun_sdk/rerun_sdkTargets.cmake +108 -0
- lib/libarrow.a +0 -0
- lib/libarrow_bundled_dependencies.a +0 -0
- lib/libaxel.a +0 -0
- lib/libmomentum_app_utils.a +0 -0
- lib/libmomentum_character.a +0 -0
- lib/libmomentum_character_sequence_solver.a +0 -0
- lib/libmomentum_character_solver.a +0 -0
- lib/libmomentum_common.a +0 -0
- lib/libmomentum_diff_ik.a +0 -0
- lib/libmomentum_io.a +0 -0
- lib/libmomentum_io_common.a +0 -0
- lib/libmomentum_io_fbx.a +0 -0
- lib/libmomentum_io_gltf.a +0 -0
- lib/libmomentum_io_legacy_json.a +0 -0
- lib/libmomentum_io_marker.a +0 -0
- lib/libmomentum_io_motion.a +0 -0
- lib/libmomentum_io_shape.a +0 -0
- lib/libmomentum_io_skeleton.a +0 -0
- lib/libmomentum_io_urdf.a +0 -0
- lib/libmomentum_marker_tracker.a +0 -0
- lib/libmomentum_math.a +0 -0
- lib/libmomentum_online_qr.a +0 -0
- lib/libmomentum_process_markers.a +0 -0
- lib/libmomentum_rerun.a +0 -0
- lib/libmomentum_simd_constraints.a +0 -0
- lib/libmomentum_simd_generalized_loss.a +0 -0
- lib/libmomentum_skeleton.a +0 -0
- lib/libmomentum_solver.a +0 -0
- lib/librerun_c__macos_arm64.a +0 -0
- lib/librerun_sdk.a +0 -0
- pymomentum/axel.cpython-312-darwin.so +0 -0
- pymomentum/backend/__init__.py +16 -0
- pymomentum/backend/skel_state_backend.py +631 -0
- pymomentum/backend/trs_backend.py +889 -0
- pymomentum/backend/utils.py +224 -0
- pymomentum/geometry.cpython-312-darwin.so +0 -0
- pymomentum/marker_tracking.cpython-312-darwin.so +0 -0
- pymomentum/quaternion.py +740 -0
- pymomentum/skel_state.py +514 -0
- pymomentum/solver.cpython-312-darwin.so +0 -0
- pymomentum/solver2.cpython-312-darwin.so +0 -0
- pymomentum/torch/character.py +868 -0
- pymomentum/torch/parameter_limits.py +494 -0
- pymomentum/torch/utility.py +20 -0
- pymomentum/trs.py +535 -0
- pymomentum_cpu-0.1.93.post0.dist-info/METADATA +126 -0
- pymomentum_cpu-0.1.93.post0.dist-info/RECORD +517 -0
- pymomentum_cpu-0.1.93.post0.dist-info/WHEEL +5 -0
- pymomentum_cpu-0.1.93.post0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/character/fwd.h>
|
|
11
|
+
#include <momentum/character/parameter_limits.h>
|
|
12
|
+
|
|
13
|
+
namespace momentum {
|
|
14
|
+
|
|
15
|
+
namespace io_detail {
|
|
16
|
+
// Forward declaration
|
|
17
|
+
class SectionContent;
|
|
18
|
+
} // namespace io_detail
|
|
19
|
+
|
|
20
|
+
// Internal overload for use within momentum parsing
|
|
21
|
+
ParameterLimits parseParameterLimits(
|
|
22
|
+
const io_detail::SectionContent& content,
|
|
23
|
+
const Skeleton& skeleton,
|
|
24
|
+
const ParameterTransform& parameterTransform);
|
|
25
|
+
|
|
26
|
+
// Public API for external use
|
|
27
|
+
ParameterLimits parseParameterLimits(
|
|
28
|
+
const std::string& data,
|
|
29
|
+
const Skeleton& skeleton,
|
|
30
|
+
const ParameterTransform& parameterTransform,
|
|
31
|
+
size_t lineOffset = 0);
|
|
32
|
+
|
|
33
|
+
std::string writeParameterLimits(
|
|
34
|
+
const ParameterLimits& parameterLimits,
|
|
35
|
+
const Skeleton& skeleton,
|
|
36
|
+
const ParameterTransform& parameterTransform);
|
|
37
|
+
|
|
38
|
+
} // 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/parameter_limits.h>
|
|
11
|
+
#include <momentum/character/parameter_transform.h>
|
|
12
|
+
#include <momentum/common/filesystem.h>
|
|
13
|
+
|
|
14
|
+
#include <span>
|
|
15
|
+
|
|
16
|
+
#include <string>
|
|
17
|
+
#include <unordered_map>
|
|
18
|
+
|
|
19
|
+
namespace momentum {
|
|
20
|
+
|
|
21
|
+
namespace io_detail {
|
|
22
|
+
// Forward declaration
|
|
23
|
+
class SectionContent;
|
|
24
|
+
} // namespace io_detail
|
|
25
|
+
|
|
26
|
+
std::unordered_map<std::string, std::string> loadMomentumModel(const filesystem::path& filename);
|
|
27
|
+
|
|
28
|
+
std::unordered_map<std::string, std::string> loadMomentumModelFromBuffer(
|
|
29
|
+
std::span<const std::byte> buffer);
|
|
30
|
+
|
|
31
|
+
// Internal overloads for use within momentum parsing
|
|
32
|
+
ParameterTransform parseParameterTransform(
|
|
33
|
+
const io_detail::SectionContent& content,
|
|
34
|
+
const Skeleton& skeleton);
|
|
35
|
+
ParameterSets parseParameterSets(
|
|
36
|
+
const io_detail::SectionContent& content,
|
|
37
|
+
const ParameterTransform& pt);
|
|
38
|
+
PoseConstraints parsePoseConstraints(
|
|
39
|
+
const io_detail::SectionContent& content,
|
|
40
|
+
const ParameterTransform& pt);
|
|
41
|
+
|
|
42
|
+
// Public APIs for external use
|
|
43
|
+
ParameterTransform
|
|
44
|
+
parseParameterTransform(const std::string& data, const Skeleton& skeleton, size_t lineOffset = 0);
|
|
45
|
+
|
|
46
|
+
ParameterSets
|
|
47
|
+
parseParameterSets(const std::string& data, const ParameterTransform& pt, size_t lineOffset = 0);
|
|
48
|
+
|
|
49
|
+
PoseConstraints
|
|
50
|
+
parsePoseConstraints(const std::string& data, const ParameterTransform& pt, size_t lineOffset = 0);
|
|
51
|
+
|
|
52
|
+
// load transform definition from file
|
|
53
|
+
std::tuple<ParameterTransform, ParameterLimits> loadModelDefinition(
|
|
54
|
+
const filesystem::path& filename,
|
|
55
|
+
const Skeleton& skeleton);
|
|
56
|
+
|
|
57
|
+
std::tuple<ParameterTransform, ParameterLimits> loadModelDefinition(
|
|
58
|
+
std::span<const std::byte> rawData,
|
|
59
|
+
const Skeleton& skeleton);
|
|
60
|
+
|
|
61
|
+
// Write functions to serialize model definition components
|
|
62
|
+
std::string writeParameterTransform(
|
|
63
|
+
const ParameterTransform& parameterTransform,
|
|
64
|
+
const Skeleton& skeleton);
|
|
65
|
+
|
|
66
|
+
std::string writeParameterSets(const ParameterSets& parameterSets);
|
|
67
|
+
|
|
68
|
+
std::string writePoseConstraints(const PoseConstraints& poseConstraints);
|
|
69
|
+
|
|
70
|
+
/// Write complete model definition file
|
|
71
|
+
/// @param skeleton The character's skeletal structure
|
|
72
|
+
/// @param parameterTransform Maps model parameters to joint parameters
|
|
73
|
+
/// @param parameterLimits Constraints on model parameters (can be empty)
|
|
74
|
+
/// @return String containing the complete model definition
|
|
75
|
+
std::string writeModelDefinition(
|
|
76
|
+
const Skeleton& skeleton,
|
|
77
|
+
const ParameterTransform& parameterTransform,
|
|
78
|
+
const ParameterLimits& parameterLimits);
|
|
79
|
+
|
|
80
|
+
} // namespace momentum
|
|
@@ -0,0 +1,20 @@
|
|
|
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
|
+
|
|
12
|
+
#include <string>
|
|
13
|
+
#include <unordered_map>
|
|
14
|
+
|
|
15
|
+
namespace momentum {
|
|
16
|
+
|
|
17
|
+
// Load the input parameters onto the character
|
|
18
|
+
void loadParameters(std::unordered_map<std::string, std::string>& param, Character& character);
|
|
19
|
+
|
|
20
|
+
} // namespace momentum
|
|
@@ -0,0 +1,67 @@
|
|
|
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 <sstream>
|
|
11
|
+
#include <string>
|
|
12
|
+
#include <string_view>
|
|
13
|
+
#include <vector>
|
|
14
|
+
|
|
15
|
+
namespace momentum {
|
|
16
|
+
namespace io_detail {
|
|
17
|
+
|
|
18
|
+
/// Represents a single segment of a section (when sections are split across the file)
|
|
19
|
+
struct SectionSegment {
|
|
20
|
+
std::string content;
|
|
21
|
+
size_t startLine;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
/// Holds all segments of a section and provides line-aware iteration
|
|
25
|
+
/// This is used internally to track line numbers across potentially duplicate sections
|
|
26
|
+
class SectionContent {
|
|
27
|
+
public:
|
|
28
|
+
void addSegment(std::string_view content, size_t startLine) {
|
|
29
|
+
segments_.push_back({std::string(content), startLine});
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
[[nodiscard]] bool empty() const {
|
|
33
|
+
return segments_.empty();
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/// Iterator that walks through all segments while tracking line numbers
|
|
37
|
+
class LineIterator {
|
|
38
|
+
public:
|
|
39
|
+
explicit LineIterator(const std::vector<SectionSegment>& segments);
|
|
40
|
+
|
|
41
|
+
/// Get the next line from the sections
|
|
42
|
+
/// @return true if a line was read, false if end of all segments reached
|
|
43
|
+
bool getline(std::string& line);
|
|
44
|
+
|
|
45
|
+
/// Get the current line number in the original file
|
|
46
|
+
[[nodiscard]] size_t currentLine() const;
|
|
47
|
+
|
|
48
|
+
private:
|
|
49
|
+
const std::vector<SectionSegment>& segments_;
|
|
50
|
+
size_t segmentIndex_;
|
|
51
|
+
size_t lineInSegment_;
|
|
52
|
+
std::istringstream currentStream_;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
[[nodiscard]] LineIterator begin() const {
|
|
56
|
+
return LineIterator(segments_);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/// Get all content as a single concatenated string (for backward compatibility)
|
|
60
|
+
[[nodiscard]] std::string toString() const;
|
|
61
|
+
|
|
62
|
+
private:
|
|
63
|
+
std::vector<SectionSegment> segments_;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
} // namespace io_detail
|
|
67
|
+
} // namespace momentum
|
|
@@ -0,0 +1,26 @@
|
|
|
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/common/filesystem.h>
|
|
12
|
+
#include <momentum/math/types.h>
|
|
13
|
+
|
|
14
|
+
#include <span>
|
|
15
|
+
|
|
16
|
+
namespace momentum {
|
|
17
|
+
|
|
18
|
+
/// Loads a character from a URDF file.
|
|
19
|
+
template <typename T = float>
|
|
20
|
+
CharacterT<T> loadUrdfCharacter(const filesystem::path& filepath);
|
|
21
|
+
|
|
22
|
+
/// Loads a character from a URDF file using the provided byte data.
|
|
23
|
+
template <typename T = float>
|
|
24
|
+
[[nodiscard]] CharacterT<T> loadUrdfCharacter(std::span<const std::byte> bytes);
|
|
25
|
+
|
|
26
|
+
} // namespace momentum
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/character/fwd.h>
|
|
11
|
+
#include <momentum/common/filesystem.h>
|
|
12
|
+
#include <momentum/math/types.h>
|
|
13
|
+
|
|
14
|
+
#include <span>
|
|
15
|
+
|
|
16
|
+
namespace momentum {
|
|
17
|
+
|
|
18
|
+
/// Load a USD character from a local file path.
|
|
19
|
+
///
|
|
20
|
+
/// @param[in] inputPath The path to the USD character file.
|
|
21
|
+
/// @return The loaded Character object.
|
|
22
|
+
Character loadUsdCharacter(const filesystem::path& inputPath);
|
|
23
|
+
|
|
24
|
+
/// Load a USD character from a buffer.
|
|
25
|
+
///
|
|
26
|
+
/// @param[in] inputSpan The buffer containing the USD character data.
|
|
27
|
+
/// @return The loaded Character object.
|
|
28
|
+
Character loadUsdCharacter(std::span<const std::byte> inputSpan);
|
|
29
|
+
|
|
30
|
+
/// Save a character to a USD file.
|
|
31
|
+
///
|
|
32
|
+
/// @param[in] filename The path to save the USD file.
|
|
33
|
+
/// @param[in] character The Character object to save.
|
|
34
|
+
void saveUsd(const filesystem::path& filename, const Character& character);
|
|
35
|
+
|
|
36
|
+
} // namespace momentum
|
|
@@ -0,0 +1,64 @@
|
|
|
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/marker.h>
|
|
12
|
+
#include <momentum/marker_tracking/marker_tracker.h>
|
|
13
|
+
|
|
14
|
+
#include <CLI/CLI.hpp>
|
|
15
|
+
|
|
16
|
+
namespace momentum {
|
|
17
|
+
|
|
18
|
+
struct IOOptions {
|
|
19
|
+
std::string inputFile;
|
|
20
|
+
std::string outputFile;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
struct ModelOptions {
|
|
24
|
+
std::string model;
|
|
25
|
+
std::string parameters;
|
|
26
|
+
std::string locators;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
void addIOOptions(CLI::App& app, std::shared_ptr<IOOptions> ioOptions);
|
|
30
|
+
void addModelOptions(CLI::App& app, std::shared_ptr<ModelOptions> modelOptions);
|
|
31
|
+
void addCalibrationOptions(CLI::App& app, std::shared_ptr<CalibrationConfig> config);
|
|
32
|
+
void addTrackingOptions(CLI::App& app, std::shared_ptr<TrackingConfig> config);
|
|
33
|
+
void addRefineOptions(CLI::App& app, std::shared_ptr<RefineConfig> config);
|
|
34
|
+
|
|
35
|
+
std::tuple<momentum::Character, momentum::ModelParameters> loadCalibratedModel(
|
|
36
|
+
const std::string& modelFile);
|
|
37
|
+
|
|
38
|
+
std::tuple<momentum::Character, momentum::ModelParameters> loadCharacterWithIdentity(
|
|
39
|
+
const ModelOptions& modelFiles);
|
|
40
|
+
|
|
41
|
+
/// Save the given character and motion to a GLB or FBX file.
|
|
42
|
+
///
|
|
43
|
+
/// @param[in] outFile The GLB/FBX file to save to
|
|
44
|
+
/// @param[in] character The GLB/FBX file to save to
|
|
45
|
+
/// @param[in] identity The identity parameters used for the character
|
|
46
|
+
/// @param[in] finalMotion The motion save to the file. (Note: this may be modified to remove
|
|
47
|
+
/// scaling parameters if saveScaleToMotion is false)
|
|
48
|
+
/// @param[in] markerData Marker data to save to the file
|
|
49
|
+
/// @param[in] fps Framerate of the motion
|
|
50
|
+
/// @param[in] saveMarkerMesh (optional) Whether to save a visible cube mesh for the markers
|
|
51
|
+
/// @param[in] saveScaleToMotion (optional) Whether to save the scale parameters to the motion or
|
|
52
|
+
/// identity parameter vectors (saving to motion is preferred)
|
|
53
|
+
/// @param[in] timestamps Per-frame timestamps. Size should match motion columns.
|
|
54
|
+
void saveMotion(
|
|
55
|
+
const std::string& outFile,
|
|
56
|
+
const momentum::Character& character,
|
|
57
|
+
const momentum::ModelParameters& identity,
|
|
58
|
+
Eigen::MatrixXf& finalMotion,
|
|
59
|
+
std::span<const std::vector<momentum::Marker>> markerData,
|
|
60
|
+
double fps,
|
|
61
|
+
bool saveMarkerMesh = true,
|
|
62
|
+
std::span<const int64_t> timestamps = {});
|
|
63
|
+
|
|
64
|
+
} // namespace momentum
|
|
@@ -0,0 +1,221 @@
|
|
|
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/marker.h>
|
|
12
|
+
|
|
13
|
+
namespace momentum {
|
|
14
|
+
|
|
15
|
+
/// Common configuration for a tracking problem
|
|
16
|
+
struct BaseConfig {
|
|
17
|
+
/// Minimum percentage of visible markers in a frame to consider for tracking. We will skip frames
|
|
18
|
+
/// with too few visible markers as they may be better filled in through a smoothing pass.
|
|
19
|
+
float minVisPercent = 0.f;
|
|
20
|
+
/// Parameter to control what loss function to use. Refer to comments in GeneralizedLoss class for
|
|
21
|
+
/// details. Use a smaller alpha when data is noisy; otherwise L2 is good.
|
|
22
|
+
float lossAlpha = 2.0;
|
|
23
|
+
/// Max number of solver iterations to run.
|
|
24
|
+
size_t maxIter = 30;
|
|
25
|
+
/// Regularization parameter (lambda) for Levenberg-Marquardt solver.
|
|
26
|
+
float regularization = 0.05f;
|
|
27
|
+
/// True to print and save debug information.
|
|
28
|
+
bool debug = false;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/// Configuration for running body and/or locator calibration
|
|
32
|
+
struct CalibrationConfig : public BaseConfig {
|
|
33
|
+
/// Number of frames used in calibration. It will be a uniform sample from the input.
|
|
34
|
+
size_t calibFrames = 100;
|
|
35
|
+
/// Number of iterations to run the main calibration loop. It could be larger if calibrating for
|
|
36
|
+
/// locators only.
|
|
37
|
+
size_t majorIter = 3;
|
|
38
|
+
/// True to only solve for a global body scale without changing individual bone length.
|
|
39
|
+
bool globalScaleOnly = false;
|
|
40
|
+
/// True to calibrate only the locators and not the body.
|
|
41
|
+
bool locatorsOnly = false;
|
|
42
|
+
/// Sample uniformly or do a greedy importance sampling
|
|
43
|
+
size_t greedySampling = 0;
|
|
44
|
+
/// True to lock the floor constraints to the floor in the first frame
|
|
45
|
+
bool enforceFloorInFirstFrame = false;
|
|
46
|
+
/// Name of a pose constraint set to use for the first frame
|
|
47
|
+
std::string firstFramePoseConstraintSet;
|
|
48
|
+
/// Calibrate the character's shape
|
|
49
|
+
bool calibShape = false;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
/// Configuration for pose tracking given a calibrated body and locators
|
|
53
|
+
struct TrackingConfig : public BaseConfig {
|
|
54
|
+
/// The weight for the smoothness error function.
|
|
55
|
+
float smoothing = 0;
|
|
56
|
+
/// The weight for the collision error function.
|
|
57
|
+
float collisionErrorWeight = 0.0;
|
|
58
|
+
/// Smoothing weights per model parameter. The size of this vector should be equal to number of
|
|
59
|
+
/// model parameters and this overrides the value specific in smoothing
|
|
60
|
+
Eigen::VectorXf smoothingWeights{};
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
/// Configuration for refining an already tracked motion, eg. add smoothing and/or collision
|
|
64
|
+
/// handling; improve residuals with extra dofs etc.
|
|
65
|
+
struct RefineConfig : public TrackingConfig {
|
|
66
|
+
/// Minimize changes to calibration parameters when in calibration mode, by regularizing towards
|
|
67
|
+
/// the input value with this regularizer weight.
|
|
68
|
+
float regularizer = 0.0;
|
|
69
|
+
/// Calibrate identity parameters when refining the motion.
|
|
70
|
+
bool calibId = false;
|
|
71
|
+
/// Calibrate locators when refining the motion.
|
|
72
|
+
bool calibLocators = false;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
/// Use multiple frames to solve for global parameters such as body proportions and/or marker
|
|
76
|
+
/// offsets together with the motion. It can also be used to smooth out a motion with or without
|
|
77
|
+
/// solving for global parameters, for example to fill gaps when there are missing markers.
|
|
78
|
+
///
|
|
79
|
+
/// @param[in] markerData Marker data.
|
|
80
|
+
/// @param[in] character Character definition.
|
|
81
|
+
/// @param[in] globalParams Bitset to indicate global parameters to solve for; could be all zeros
|
|
82
|
+
/// for post-process a motion.
|
|
83
|
+
/// @param[in] initialMotion Initial values of all parameters. It should be the same length as
|
|
84
|
+
/// markerData, but only frames used in solving are used. Values in unused frames do not matter.
|
|
85
|
+
/// Number of parameters should be the same as defined in character.
|
|
86
|
+
/// @param[in] config Solving options.
|
|
87
|
+
/// @param[in] frameStride Frame stride to select solver frames (ie. uniform sample).
|
|
88
|
+
/// @param[in] enforceFloorInFirstFrame Flag to enforce the floor contact constraints in first frame
|
|
89
|
+
/// @param[in] firstFramePoseConstraintSet Name of a pose constraint set to use for the first frame
|
|
90
|
+
///
|
|
91
|
+
/// @return The solved motion. It has the same length as markerData. It repeats the same solved pose
|
|
92
|
+
/// within a frame stride.
|
|
93
|
+
Eigen::MatrixXf trackSequence(
|
|
94
|
+
std::span<const std::vector<momentum::Marker>> markerData,
|
|
95
|
+
const momentum::Character& character,
|
|
96
|
+
const momentum::ParameterSet& globalParams,
|
|
97
|
+
const Eigen::MatrixXf& initialMotion,
|
|
98
|
+
const TrackingConfig& config,
|
|
99
|
+
float regularizer = 0.0,
|
|
100
|
+
size_t frameStride = 1,
|
|
101
|
+
bool enforceFloorInFirstFrame = false,
|
|
102
|
+
const std::string& firstFramePoseConstraintSet = "");
|
|
103
|
+
|
|
104
|
+
/// Use multiple frames to solve for global parameters such as body proportions and/or marker
|
|
105
|
+
/// offsets together with the motion.
|
|
106
|
+
///
|
|
107
|
+
/// @param[in] markerData Marker data.
|
|
108
|
+
/// @param[in] character Character definition.
|
|
109
|
+
/// @param[in] globalParams Bitset to indicate global parameters to solve for; could be all zeros
|
|
110
|
+
/// for post-process a motion.
|
|
111
|
+
/// @param[in] initialMotion Initial values of all parameters. It should be the same length as
|
|
112
|
+
/// markerData, but only frames used in solving are used. Values in unused frames do not matter.
|
|
113
|
+
/// Number of parameters should be the same as defined in character.
|
|
114
|
+
/// @param[in] config Solving options.
|
|
115
|
+
/// @param[in] frames List of frames to solve for.
|
|
116
|
+
/// @param[in] enforceFloorInFirstFrame Flag to enforce the floor contact constraints in first frame
|
|
117
|
+
/// @param[in] firstFramePoseConstraintSet Name of a pose constraint set to use for the first frame
|
|
118
|
+
///
|
|
119
|
+
/// @return The solved motion. It has the same length as markerData. It repeats the same solved pose
|
|
120
|
+
/// within a frame stride.
|
|
121
|
+
Eigen::MatrixXf trackSequence(
|
|
122
|
+
std::span<const std::vector<momentum::Marker>> markerData,
|
|
123
|
+
const momentum::Character& character,
|
|
124
|
+
const momentum::ParameterSet& globalParams,
|
|
125
|
+
const Eigen::MatrixXf& initialMotion,
|
|
126
|
+
const TrackingConfig& config,
|
|
127
|
+
const std::vector<size_t>& frames,
|
|
128
|
+
float regularizer = 0.0,
|
|
129
|
+
bool enforceFloorInFirstFrame = false,
|
|
130
|
+
const std::string& firstFramePoseConstraintSet = "");
|
|
131
|
+
|
|
132
|
+
/// Track poses per-frame given a calibrated character.
|
|
133
|
+
///
|
|
134
|
+
/// @param[in] markerData Input marker data.
|
|
135
|
+
/// @param[in] character Character definition.
|
|
136
|
+
/// @param[in] globalParams Calibrated identity info; could be repurposed to pass in an initial pose
|
|
137
|
+
/// too.
|
|
138
|
+
/// @param[in] config Solving options.
|
|
139
|
+
/// @param[in] frameStride Frame stride to select solver frames (ie. uniform sample).
|
|
140
|
+
///
|
|
141
|
+
/// @return The solved motion. It has the same length as markerData. It repeats the same solved pose
|
|
142
|
+
/// within a frame stride.
|
|
143
|
+
Eigen::MatrixXf trackPosesPerframe(
|
|
144
|
+
std::span<const std::vector<momentum::Marker>> markerData,
|
|
145
|
+
const momentum::Character& character,
|
|
146
|
+
const momentum::ModelParameters& globalParams,
|
|
147
|
+
const TrackingConfig& config,
|
|
148
|
+
size_t frameStride = 1);
|
|
149
|
+
|
|
150
|
+
/// Track poses for given frames.
|
|
151
|
+
///
|
|
152
|
+
/// @param[in] markerData Input marker data.
|
|
153
|
+
/// @param[in] character Character definition.
|
|
154
|
+
/// @param[in] globalParams Calibrated identity info; could be repurposed to pass in an initial pose
|
|
155
|
+
/// too.
|
|
156
|
+
/// @param[in] config Solving options.
|
|
157
|
+
/// @param[in] frameIndices Frame indices of the frames to be solved.
|
|
158
|
+
/// @param[in] isContinuous Whether to use temporal coherence between frames.
|
|
159
|
+
///
|
|
160
|
+
/// @return The solved motion. It has the same length as markerData. It repeats the same solved pose
|
|
161
|
+
/// within a frame stride.
|
|
162
|
+
Eigen::MatrixXf trackPosesForFrames(
|
|
163
|
+
std::span<const std::vector<momentum::Marker>> markerData,
|
|
164
|
+
const momentum::Character& character,
|
|
165
|
+
const Eigen::MatrixXf& initialMotion,
|
|
166
|
+
const TrackingConfig& config,
|
|
167
|
+
const std::vector<size_t>& frameIndices,
|
|
168
|
+
bool isContinuous = false);
|
|
169
|
+
|
|
170
|
+
/// Calibrate body proportions and locator offsets of a character from input marker data.
|
|
171
|
+
///
|
|
172
|
+
/// @param[in] markerData Input marker data.
|
|
173
|
+
/// @param[in] config Solving options.
|
|
174
|
+
/// @param[in,out] character Character definition. It provides input locators offsets which will get
|
|
175
|
+
/// updated in return.
|
|
176
|
+
/// @param[in,out] identity Initial identity parameters that get updated in return. It could also
|
|
177
|
+
/// hold the pose of the first frame for better initialization for tracking later.
|
|
178
|
+
/// @param[in] regularizerWeights Regularizer weights used for global parameters, at each different
|
|
179
|
+
/// stage (3 in total) of the calibration. Ideally these weights would increase over stages: in
|
|
180
|
+
/// stage 0, 0 or low regularization weight to allow a large change; in stage 1, a small
|
|
181
|
+
/// regularization weight to prevent too large of a change; in stage 2, a higher regularization
|
|
182
|
+
/// weight to prevent large changes.
|
|
183
|
+
void calibrateModel(
|
|
184
|
+
std::span<const std::vector<momentum::Marker>> markerData,
|
|
185
|
+
const CalibrationConfig& config,
|
|
186
|
+
momentum::Character& character,
|
|
187
|
+
momentum::ModelParameters& identity,
|
|
188
|
+
const std::array<float, 3>& regularizerWeights = {0.0f, 0.0f, 0.0f});
|
|
189
|
+
|
|
190
|
+
/// Calibrate locator offsets of a character from input identity and marker data.
|
|
191
|
+
///
|
|
192
|
+
/// @param[in] markerData Input marker data.
|
|
193
|
+
/// @param[in] config Solving options.
|
|
194
|
+
/// @param[in] identity Identity parameters of the input character.
|
|
195
|
+
/// @param[in,out] character Character definition. It provides input locators offsets which will get
|
|
196
|
+
/// updated in return. We overwrite the locators in the input character so we don't have to
|
|
197
|
+
/// duplicate the character object inside the function.
|
|
198
|
+
void calibrateLocators(
|
|
199
|
+
std::span<const std::vector<momentum::Marker>> markerData,
|
|
200
|
+
const CalibrationConfig& config,
|
|
201
|
+
const momentum::ModelParameters& identity,
|
|
202
|
+
momentum::Character& character);
|
|
203
|
+
|
|
204
|
+
Eigen::MatrixXf refineMotion(
|
|
205
|
+
std::span<const std::vector<momentum::Marker>> markerData,
|
|
206
|
+
const Eigen::MatrixXf& motion,
|
|
207
|
+
const RefineConfig& config,
|
|
208
|
+
momentum::Character& character);
|
|
209
|
+
|
|
210
|
+
/// Get the error of the locator motion vs the markers
|
|
211
|
+
///
|
|
212
|
+
/// @param[in] markerData Input marker data.
|
|
213
|
+
/// @param[in] motion Motion to compare against.
|
|
214
|
+
/// @param[in] character Character definition
|
|
215
|
+
/// @return average per frame error and max marker error
|
|
216
|
+
std::pair<float, float> getLocatorError(
|
|
217
|
+
std::span<const std::vector<momentum::Marker>> markerData,
|
|
218
|
+
const Eigen::MatrixXf& motion,
|
|
219
|
+
momentum::Character& character);
|
|
220
|
+
|
|
221
|
+
} // namespace momentum
|
|
@@ -0,0 +1,58 @@
|
|
|
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/marker_tracking/app_utils.h>
|
|
12
|
+
#include <momentum/marker_tracking/marker_tracker.h>
|
|
13
|
+
|
|
14
|
+
#include <string>
|
|
15
|
+
|
|
16
|
+
namespace momentum {
|
|
17
|
+
|
|
18
|
+
/// Processes marker data for a character model.
|
|
19
|
+
///
|
|
20
|
+
/// It can calibrate the model and locators based on the calibrationConfig, and track the motion of
|
|
21
|
+
/// the markers.
|
|
22
|
+
///
|
|
23
|
+
/// @param[in,out] character The input character definition with locators. It also holds the output
|
|
24
|
+
/// locators if locators are to be calibrated from the calibrationConfig.
|
|
25
|
+
/// @param[in,out] identity The input identity used for tracking. It also holds the solved identify
|
|
26
|
+
/// if identity is to be calibrated from the calibrationConfig.
|
|
27
|
+
/// @param[in] markerData The per-frame position targets to be tracked.
|
|
28
|
+
/// @param[in] trackingConfig The config for per-frame tracking after the correct identity and
|
|
29
|
+
/// locators are solved for (or from input).
|
|
30
|
+
/// @param[in] calibrationConfig The config for running calibration if calibrate is set to true.
|
|
31
|
+
/// @param[in] calibrate True to run calibration according to calibrationConfig.
|
|
32
|
+
/// @param[in] firstFrame The first frame to start solving. We pass in the first frame instead of
|
|
33
|
+
/// triming markerData to avoid data copy.
|
|
34
|
+
/// @param[in] maxFrames The maximum number of frames to process starting from firstFrame.
|
|
35
|
+
/// @returns The final motion matrix after tracking.
|
|
36
|
+
Eigen::MatrixXf processMarkers(
|
|
37
|
+
momentum::Character& character,
|
|
38
|
+
momentum::ModelParameters& identity,
|
|
39
|
+
const std::vector<std::vector<momentum::Marker>>& markerData,
|
|
40
|
+
const TrackingConfig& trackingConfig,
|
|
41
|
+
const CalibrationConfig& calibrationConfig,
|
|
42
|
+
bool calibrate = true,
|
|
43
|
+
size_t firstFrame = 0,
|
|
44
|
+
size_t maxFrames = 0);
|
|
45
|
+
|
|
46
|
+
/// Runs marker tracking on an input marker file (e.g. c3d) and writes the output motion (e.g. glb)
|
|
47
|
+
/// to outputFile
|
|
48
|
+
void processMarkerFile(
|
|
49
|
+
const std::string& inputMarkerFile,
|
|
50
|
+
const std::string& outputFile,
|
|
51
|
+
const TrackingConfig& trackingConfig,
|
|
52
|
+
const CalibrationConfig& calibrationConfig,
|
|
53
|
+
const ModelOptions& modelOptions,
|
|
54
|
+
bool calibrate,
|
|
55
|
+
size_t firstFrame = 0,
|
|
56
|
+
size_t maxFrames = 0);
|
|
57
|
+
|
|
58
|
+
} // namespace momentum
|