pymomentum-cpu 0.0.0__cp312-cp312-manylinux_2_39_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pymomentum-cpu might be problematic. Click here for more details.
- include/axel/BoundingBox.h +58 -0
- include/axel/Bvh.h +708 -0
- include/axel/BvhBase.h +75 -0
- include/axel/BvhCommon.h +43 -0
- include/axel/BvhEmbree.h +86 -0
- include/axel/BvhFactory.h +34 -0
- include/axel/Checks.h +21 -0
- include/axel/KdTree.h +199 -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 +237 -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 +98 -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 +91 -0
- include/momentum/character/blend_shape_base.h +70 -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 +243 -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 +82 -0
- include/momentum/character/locator_state.h +43 -0
- include/momentum/character/marker.h +48 -0
- include/momentum/character/parameter_limits.h +144 -0
- include/momentum/character/parameter_transform.h +250 -0
- include/momentum/character/pose_shape.h +65 -0
- include/momentum/character/skeleton.h +85 -0
- include/momentum/character/skeleton_state.h +181 -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 +62 -0
- include/momentum/character_sequence_solver/multipose_solver.h +63 -0
- include/momentum/character_sequence_solver/multipose_solver_function.h +80 -0
- include/momentum/character_sequence_solver/sequence_error_function.h +95 -0
- include/momentum/character_sequence_solver/sequence_solver.h +144 -0
- include/momentum/character_sequence_solver/sequence_solver_function.h +126 -0
- include/momentum/character_sequence_solver/state_sequence_error_function.h +106 -0
- include/momentum/character_sequence_solver/vertex_sequence_error_function.h +125 -0
- include/momentum/character_solver/aim_error_function.h +112 -0
- include/momentum/character_solver/collision_error_function.h +88 -0
- include/momentum/character_solver/collision_error_function_stateless.h +71 -0
- include/momentum/character_solver/constraint_error_function-inl.h +321 -0
- include/momentum/character_solver/constraint_error_function.h +241 -0
- include/momentum/character_solver/distance_error_function.h +74 -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 +924 -0
- include/momentum/character_solver/gauss_newton_solver_qr.h +62 -0
- include/momentum/character_solver/limit_error_function.h +53 -0
- include/momentum/character_solver/model_parameters_error_function.h +61 -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 +140 -0
- include/momentum/character_solver/pose_prior_error_function.h +76 -0
- include/momentum/character_solver/position_error_function.h +75 -0
- include/momentum/character_solver/projection_error_function.h +90 -0
- include/momentum/character_solver/simd_collision_error_function.h +95 -0
- include/momentum/character_solver/simd_normal_error_function.h +151 -0
- include/momentum/character_solver/simd_plane_error_function.h +154 -0
- include/momentum/character_solver/simd_position_error_function.h +155 -0
- include/momentum/character_solver/skeleton_error_function.h +136 -0
- include/momentum/character_solver/skeleton_solver_function.h +72 -0
- include/momentum/character_solver/skinned_locator_error_function.h +163 -0
- include/momentum/character_solver/skinned_locator_triangle_error_function.h +138 -0
- include/momentum/character_solver/skinning_weight_iterator.h +80 -0
- include/momentum/character_solver/state_error_function.h +90 -0
- include/momentum/character_solver/transform_pose.h +80 -0
- include/momentum/character_solver/trust_region_qr.h +78 -0
- include/momentum/character_solver/vertex_error_function.h +154 -0
- include/momentum/character_solver/vertex_projection_error_function.h +118 -0
- include/momentum/character_solver/vertex_vertex_distance_error_function.h +143 -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 +109 -0
- include/momentum/diff_ik/fully_differentiable_pose_prior_error_function.h +76 -0
- include/momentum/diff_ik/fully_differentiable_position_error_function.h +133 -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 +63 -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 +56 -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 +109 -0
- include/momentum/io/fbx/fbx_memory_stream.h +66 -0
- include/momentum/io/fbx/openfbx_loader.h +49 -0
- include/momentum/io/fbx/polygon_data.h +60 -0
- include/momentum/io/gltf/gltf_builder.h +135 -0
- include/momentum/io/gltf/gltf_file_format.h +19 -0
- include/momentum/io/gltf/gltf_io.h +136 -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 +29 -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 +54 -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 +70 -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 +25 -0
- include/momentum/io/skeleton/parameter_transform_io.h +41 -0
- include/momentum/io/skeleton/parameters_io.h +20 -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 +62 -0
- include/momentum/marker_tracking/marker_tracker.h +213 -0
- include/momentum/marker_tracking/process_markers.h +58 -0
- include/momentum/marker_tracking/tracker_utils.h +90 -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 +251 -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/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/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/librerun_c__linux_x64.a +0 -0
- lib/librerun_sdk.a +0 -0
- lib64/cmake/axel/axel-config.cmake +45 -0
- lib64/cmake/axel/axelTargets-release.cmake +19 -0
- lib64/cmake/axel/axelTargets.cmake +108 -0
- lib64/cmake/momentum/Findre2.cmake +52 -0
- lib64/cmake/momentum/momentum-config.cmake +67 -0
- lib64/cmake/momentum/momentumTargets-release.cmake +269 -0
- lib64/cmake/momentum/momentumTargets.cmake +445 -0
- lib64/libaxel.a +0 -0
- lib64/libmomentum_app_utils.a +0 -0
- lib64/libmomentum_character.a +0 -0
- lib64/libmomentum_character_sequence_solver.a +0 -0
- lib64/libmomentum_character_solver.a +0 -0
- lib64/libmomentum_common.a +0 -0
- lib64/libmomentum_diff_ik.a +0 -0
- lib64/libmomentum_io.a +0 -0
- lib64/libmomentum_io_common.a +0 -0
- lib64/libmomentum_io_fbx.a +0 -0
- lib64/libmomentum_io_gltf.a +0 -0
- lib64/libmomentum_io_legacy_json.a +0 -0
- lib64/libmomentum_io_marker.a +0 -0
- lib64/libmomentum_io_motion.a +0 -0
- lib64/libmomentum_io_shape.a +0 -0
- lib64/libmomentum_io_skeleton.a +0 -0
- lib64/libmomentum_io_urdf.a +0 -0
- lib64/libmomentum_marker_tracker.a +0 -0
- lib64/libmomentum_math.a +0 -0
- lib64/libmomentum_online_qr.a +0 -0
- lib64/libmomentum_process_markers.a +0 -0
- lib64/libmomentum_rasterizer.a +0 -0
- lib64/libmomentum_rerun.a +0 -0
- lib64/libmomentum_simd_constraints.a +0 -0
- lib64/libmomentum_simd_generalized_loss.a +0 -0
- lib64/libmomentum_skeleton.a +0 -0
- lib64/libmomentum_solver.a +0 -0
- pymomentum/axel.cpython-312-x86_64-linux-gnu.so +0 -0
- pymomentum/backend/__init__.py +16 -0
- pymomentum/backend/skel_state_backend.py +614 -0
- pymomentum/backend/trs_backend.py +871 -0
- pymomentum/backend/utils.py +224 -0
- pymomentum/geometry.cpython-312-x86_64-linux-gnu.so +0 -0
- pymomentum/marker_tracking.cpython-312-x86_64-linux-gnu.so +0 -0
- pymomentum/quaternion.py +740 -0
- pymomentum/renderer.cpython-312-x86_64-linux-gnu.so +0 -0
- pymomentum/skel_state.py +514 -0
- pymomentum/solver.cpython-312-x86_64-linux-gnu.so +0 -0
- pymomentum/solver2.cpython-312-x86_64-linux-gnu.so +0 -0
- pymomentum/torch/character.py +809 -0
- pymomentum/torch/parameter_limits.py +494 -0
- pymomentum/torch/utility.py +20 -0
- pymomentum/trs.py +535 -0
- pymomentum_cpu-0.0.0.dist-info/METADATA +209 -0
- pymomentum_cpu-0.0.0.dist-info/RECORD +555 -0
- pymomentum_cpu-0.0.0.dist-info/WHEEL +5 -0
- pymomentum_cpu-0.0.0.dist-info/licenses/LICENSE +21 -0
- pymomentum_cpu.libs/libabsl_base-86f3b38c.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_city-31b65ca2.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_debugging_internal-38680253.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_decode_rust_punycode-750652c3.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_demangle_internal-9a0351a3.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_demangle_rust-71629506.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_examine_stack-57661ecd.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_hash-8c523b7e.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_hashtablez_sampler-b5c3e343.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_int128-295bfed5.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_kernel_timeout_internal-29296ac1.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_globals-6cfa8af5.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_format-a5c79460.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_globals-481e9a7c.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_log_sink_set-ac08f942.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_message-7dfe150a.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_nullguard-883adc72.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_proto-a5da8c75.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_structured_proto-e601fd9b.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_sink-894261b2.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_low_level_hash-a3284638.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_malloc_internal-814569de.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_raw_hash_set-922d64ad.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_raw_logging_internal-477f78ec.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_spinlock_wait-8b85a473.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_stacktrace-7369e71d.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_str_format_internal-98de729d.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_strerror-39a52998.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_strings-a57d5127.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_strings_internal-ed8c7c0d.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_symbolize-eba17dd1.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_synchronization-2f8cf326.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_time-066c0dde.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_time_zone-72867365.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_tracing_internal-021e37ee.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_utf8_for_code_point-de2a4d4a.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libconsole_bridge-f26e11cc.so.1.0 +0 -0
- pymomentum_cpu.libs/libdeflate-577b71e3.so.0 +0 -0
- pymomentum_cpu.libs/libdispenso-67ac1721.so.1.4.0 +0 -0
- pymomentum_cpu.libs/libezc3d-4a95ab2c.so +0 -0
- pymomentum_cpu.libs/libre2-985fb83c.so.11 +0 -0
- pymomentum_cpu.libs/libtinyxml2-8d10763c.so.11.0.0 +0 -0
- pymomentum_cpu.libs/liburdfdom_model-7b26ae88.so.4.0 +0 -0
|
@@ -0,0 +1,71 @@
|
|
|
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 <memory>
|
|
11
|
+
|
|
12
|
+
// Define smart pointers for a type
|
|
13
|
+
#ifndef MOMENTUM_DEFINE_POINTERS
|
|
14
|
+
#define MOMENTUM_DEFINE_POINTERS(x) \
|
|
15
|
+
using x##_p = ::std::shared_ptr<x>; \
|
|
16
|
+
using x##_u = ::std::unique_ptr<x>; \
|
|
17
|
+
using x##_w = ::std::weak_ptr<x>; \
|
|
18
|
+
using x##_const_p = ::std::shared_ptr<const x>; \
|
|
19
|
+
using x##_const_u = ::std::unique_ptr<const x>; \
|
|
20
|
+
using x##_const_w = ::std::weak_ptr<const x>;
|
|
21
|
+
#endif // MOMENTUM_DEFINE_POINTERS
|
|
22
|
+
|
|
23
|
+
// Forward-declare a struct, define smart pointers
|
|
24
|
+
#ifndef MOMENTUM_FWD_DECLARE_STRUCT
|
|
25
|
+
#define MOMENTUM_FWD_DECLARE_STRUCT(x) \
|
|
26
|
+
struct x; \
|
|
27
|
+
MOMENTUM_DEFINE_POINTERS(x);
|
|
28
|
+
#endif // MOMENTUM_FWD_DECLARE_STRUCT
|
|
29
|
+
|
|
30
|
+
// Forward-declare a class, define smart pointers
|
|
31
|
+
#ifndef MOMENTUM_FWD_DECLARE_CLASS
|
|
32
|
+
// NOLINTBEGIN(bugprone-macro-parentheses)
|
|
33
|
+
#define MOMENTUM_FWD_DECLARE_CLASS(x) \
|
|
34
|
+
class x; \
|
|
35
|
+
MOMENTUM_DEFINE_POINTERS(x)
|
|
36
|
+
// NOLINTEND(bugprone-macro-parentheses)
|
|
37
|
+
#endif // MOMENTUM_FWD_DECLARE_CLASS
|
|
38
|
+
|
|
39
|
+
// Forward-declare a templated class, define smart pointers for the class and its variants
|
|
40
|
+
// Use the standard backward-compatible naming scheme:
|
|
41
|
+
// template <typename T> class BarT;
|
|
42
|
+
// using Bar = BarT<float>;
|
|
43
|
+
// using Bard = BarT<double>;
|
|
44
|
+
#ifndef MOMENTUM_FWD_DECLARE_TEMPLATE_CLASS
|
|
45
|
+
// NOLINTBEGIN(bugprone-macro-parentheses)
|
|
46
|
+
#define MOMENTUM_FWD_DECLARE_TEMPLATE_CLASS(x) \
|
|
47
|
+
template <typename T> \
|
|
48
|
+
class x##T; \
|
|
49
|
+
using x = x##T<float>; \
|
|
50
|
+
using x##d = x##T<double>; \
|
|
51
|
+
MOMENTUM_DEFINE_POINTERS(x) \
|
|
52
|
+
MOMENTUM_DEFINE_POINTERS(x##d)
|
|
53
|
+
// NOLINTEND(bugprone-macro-parentheses)
|
|
54
|
+
#endif // MOMENTUM_FWD_DECLARE_TEMPLATE_CLASS
|
|
55
|
+
|
|
56
|
+
// Forward-declare a templated struct, define smart pointers for the struct and its variants
|
|
57
|
+
// Use the standard backward-compatible naming scheme:
|
|
58
|
+
// template <typename T> struct BarT;
|
|
59
|
+
// using Bar = BarT<float>;
|
|
60
|
+
// using Bard = BarT<double>;
|
|
61
|
+
#ifndef MOMENTUM_FWD_DECLARE_TEMPLATE_STRUCT
|
|
62
|
+
// NOLINTBEGIN(bugprone-macro-parentheses)
|
|
63
|
+
#define MOMENTUM_FWD_DECLARE_TEMPLATE_STRUCT(x) \
|
|
64
|
+
template <typename T> \
|
|
65
|
+
struct x##T; \
|
|
66
|
+
using x = x##T<float>; \
|
|
67
|
+
using x##d = x##T<double>; \
|
|
68
|
+
MOMENTUM_DEFINE_POINTERS(x) \
|
|
69
|
+
MOMENTUM_DEFINE_POINTERS(x##d)
|
|
70
|
+
// NOLINTEND(bugprone-macro-parentheses)
|
|
71
|
+
#endif // MOMENTUM_FWD_DECLARE_TEMPLATE_STRUCT
|
|
@@ -0,0 +1,79 @@
|
|
|
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
|
+
#if defined(MOMENTUM_WITH_XR_PROFILER)
|
|
11
|
+
|
|
12
|
+
#include <arvr/libraries/profile_redirect/annotate.hpp>
|
|
13
|
+
|
|
14
|
+
#define MT_PROFILE_FUNCTION() XR_PROFILE_FUNCTION()
|
|
15
|
+
#define MT_PROFILE_FUNCTION_CATEGORY(CATEGORY) XR_PROFILE_FUNCTION_CATEGORY(CATEGORY)
|
|
16
|
+
#define MT_PROFILE_EVENT(NAME) XR_PROFILE_EVENT(NAME)
|
|
17
|
+
#define MT_PROFILE_EVENT_DYNAMIC(NAME) XR_PROFILE_EVENT_DYNAMIC(NAME)
|
|
18
|
+
#define MT_PROFILE_CATEGORY(NAME, CATEGORY) XR_PROFILE_CATEGORY(NAME, CATEGORY)
|
|
19
|
+
#define MT_PROFILE_PREPARE_PUSH_POP() XR_PROFILE_PREPARE_PUSH_POP()
|
|
20
|
+
#define MT_PROFILE_PUSH(NAME) XR_PROFILE_PUSH(NAME)
|
|
21
|
+
#define MT_PROFILE_POP() XR_PROFILE_POP()
|
|
22
|
+
#define MT_PROFILE_THREAD(THREAD_NAME) XR_PROFILE_THREAD(THREAD_NAME)
|
|
23
|
+
#define MT_PROFILE_UPDATE() XR_PROFILE_UPDATE()
|
|
24
|
+
#define MT_PROFILE_BEGIN_FRAME() XR_PROFILE_BEGIN_FRAME()
|
|
25
|
+
#define MT_PROFILE_END_FRAME() XR_PROFILE_END_FRAME()
|
|
26
|
+
#define MT_PROFILE_METADATA(NAME, DATA) XR_PROFILE_METADATA(NAME, DATA)
|
|
27
|
+
|
|
28
|
+
#elif defined(MOMENTUM_WITH_TRACY_PROFILER)
|
|
29
|
+
|
|
30
|
+
#include <tracy/Tracy.hpp>
|
|
31
|
+
#include <tracy/TracyC.h>
|
|
32
|
+
#include <stack>
|
|
33
|
+
|
|
34
|
+
#define _MT_PROFILE_CONCATENATE_DETAIL(x, y) x##y
|
|
35
|
+
#define _MT_PROFILE_CONCATENATE(x, y) _MT_PROFILE_CONCATENATE_DETAIL(x, y)
|
|
36
|
+
#define _MT_PROFILE_MAKE_UNIQUE(x) _MT_PROFILE_CONCATENATE(x, __LINE__)
|
|
37
|
+
|
|
38
|
+
#define MT_PROFILE_FUNCTION() ZoneScoped
|
|
39
|
+
#define MT_PROFILE_FUNCTION_CATEGORY(CATEGORY)
|
|
40
|
+
#define MT_PROFILE_EVENT(NAME) ZoneNamedN(_MT_PROFILE_MAKE_UNIQUE(__tracy), NAME, true)
|
|
41
|
+
#define MT_PROFILE_EVENT_DYNAMIC(NAME) ZoneTransientN(_MT_PROFILE_MAKE_UNIQUE(__tracy), NAME, true)
|
|
42
|
+
#define MT_PROFILE_CATEGORY(NAME, CATEGORY)
|
|
43
|
+
#define MT_PROFILE_PREPARE_PUSH_POP() std::stack<TracyCZoneCtx> ___tracy_xr_stack
|
|
44
|
+
#define MT_PROFILE_PUSH(NAME) \
|
|
45
|
+
static const struct ___tracy_source_location_data TracyConcat( \
|
|
46
|
+
__tracy_source_location, TracyLine) = {NAME, __func__, TracyFile, (uint32_t)TracyLine, 0}; \
|
|
47
|
+
___tracy_xr_stack.push( \
|
|
48
|
+
___tracy_emit_zone_begin(&TracyConcat(__tracy_source_location, TracyLine), true));
|
|
49
|
+
#define MT_PROFILE_POP() \
|
|
50
|
+
TracyCZoneEnd(___tracy_xr_stack.top()); \
|
|
51
|
+
___tracy_xr_stack.pop()
|
|
52
|
+
#define MT_PROFILE_THREAD(THREAD_NAME) \
|
|
53
|
+
{ \
|
|
54
|
+
/* support both std::string and c strings */ \
|
|
55
|
+
std::string threadNameStr(THREAD_NAME); \
|
|
56
|
+
TracyCSetThreadName(threadNameStr.c_str()); \
|
|
57
|
+
}
|
|
58
|
+
#define MT_PROFILE_UPDATE()
|
|
59
|
+
#define MT_PROFILE_BEGIN_FRAME() FrameMark
|
|
60
|
+
#define MT_PROFILE_END_FRAME()
|
|
61
|
+
#define MT_PROFILE_METADATA(NAME, DATA)
|
|
62
|
+
|
|
63
|
+
#else
|
|
64
|
+
|
|
65
|
+
#define MT_PROFILE_FUNCTION()
|
|
66
|
+
#define MT_PROFILE_FUNCTION_CATEGORY(CATEGORY)
|
|
67
|
+
#define MT_PROFILE_EVENT(NAME)
|
|
68
|
+
#define MT_PROFILE_EVENT_DYNAMIC(NAME)
|
|
69
|
+
#define MT_PROFILE_CATEGORY(NAME, CATEGORY)
|
|
70
|
+
#define MT_PROFILE_PREPARE_PUSH_POP()
|
|
71
|
+
#define MT_PROFILE_PUSH(NAME)
|
|
72
|
+
#define MT_PROFILE_POP()
|
|
73
|
+
#define MT_PROFILE_THREAD(THREAD_NAME)
|
|
74
|
+
#define MT_PROFILE_UPDATE()
|
|
75
|
+
#define MT_PROFILE_BEGIN_FRAME()
|
|
76
|
+
#define MT_PROFILE_END_FRAME()
|
|
77
|
+
#define MT_PROFILE_METADATA(NAME, DATA)
|
|
78
|
+
|
|
79
|
+
#endif
|
|
@@ -0,0 +1,37 @@
|
|
|
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 <indicators/progress_bar.hpp>
|
|
11
|
+
|
|
12
|
+
#include <string>
|
|
13
|
+
|
|
14
|
+
namespace momentum {
|
|
15
|
+
|
|
16
|
+
// A simple progress bar that prints hash marks (e.g., "Name [===> ] 60%")
|
|
17
|
+
class ProgressBar {
|
|
18
|
+
public:
|
|
19
|
+
/// @param prefix Displayed prefix
|
|
20
|
+
/// @param numOperations Total operations (determines progress ratio)
|
|
21
|
+
ProgressBar(const std::string& prefix, size_t numOperations);
|
|
22
|
+
|
|
23
|
+
/// Increments the progress by the given count (default 1)
|
|
24
|
+
void increment(size_t count = 1);
|
|
25
|
+
|
|
26
|
+
/// Sets the progress to the given count
|
|
27
|
+
void set(size_t count);
|
|
28
|
+
|
|
29
|
+
/// Returns the current progress in the range [0, 100]
|
|
30
|
+
[[nodiscard]] size_t getCurrentProgress();
|
|
31
|
+
|
|
32
|
+
private:
|
|
33
|
+
static constexpr size_t kMaxWidth = 80;
|
|
34
|
+
indicators::ProgressBar bar_;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
} // namespace momentum
|
|
@@ -0,0 +1,52 @@
|
|
|
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 <string>
|
|
11
|
+
#include <string_view>
|
|
12
|
+
#include <vector>
|
|
13
|
+
|
|
14
|
+
namespace momentum {
|
|
15
|
+
|
|
16
|
+
/// Returns a copy of the string from which all the characters in whiteChars
|
|
17
|
+
/// at the beginning or at the end of the string have been removed.
|
|
18
|
+
/// @tparam StringType: The type of the string to trim (e.g., std::string, std::string_view)
|
|
19
|
+
/// @param text: The string to trim
|
|
20
|
+
/// @param whiteChars: A series of 1-byte characters to remove
|
|
21
|
+
/// @return The trimmed string
|
|
22
|
+
template <typename StringType>
|
|
23
|
+
[[nodiscard]] StringType trim(const StringType& text, const char* whiteChars = " \t");
|
|
24
|
+
|
|
25
|
+
/// Returns a copy of the string from which all the characters in whiteChars
|
|
26
|
+
/// at the beginning or at the end of the string have been removed.
|
|
27
|
+
/// @param text: The string to trim (null-terminated)
|
|
28
|
+
/// @param whiteChars: A series of 1-byte characters to remove
|
|
29
|
+
/// @return The trimmed string
|
|
30
|
+
[[nodiscard]] std::string trim(const char* text, const char* whiteChars = " \t");
|
|
31
|
+
|
|
32
|
+
/// Tokenize a string using the specified delimiters.
|
|
33
|
+
///
|
|
34
|
+
/// @param inputString The string to tokenize.
|
|
35
|
+
/// @param delimiters The string containing delimiter characters.
|
|
36
|
+
/// @param trim Whether to trim spaces around the tokens (default: true).
|
|
37
|
+
/// @return A vector of tokenized strings.
|
|
38
|
+
std::vector<std::string> tokenize(
|
|
39
|
+
const std::string& inputString,
|
|
40
|
+
const std::string& delimiters = " \t\r\n",
|
|
41
|
+
bool trim = true);
|
|
42
|
+
|
|
43
|
+
/// Tokenize a string_view using the specified delimiters.
|
|
44
|
+
///
|
|
45
|
+
/// @param inputString The string_view to tokenize.
|
|
46
|
+
/// @param delimiters The string_view containing delimiter characters.
|
|
47
|
+
/// @param trim Whether to trim spaces around the tokens (default: true).
|
|
48
|
+
/// @return A vector of tokenized string_views.
|
|
49
|
+
std::vector<std::string_view>
|
|
50
|
+
tokenize(std::string_view inputString, std::string_view delimiters = " \t\r\n", bool trim = true);
|
|
51
|
+
|
|
52
|
+
} // namespace momentum
|
|
@@ -0,0 +1,73 @@
|
|
|
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_transform.h>
|
|
11
|
+
#include <momentum/character/skeleton_state.h>
|
|
12
|
+
|
|
13
|
+
#include <ceres/jet.h>
|
|
14
|
+
#include <Eigen/Core>
|
|
15
|
+
|
|
16
|
+
namespace momentum {
|
|
17
|
+
|
|
18
|
+
template <typename T, typename T2>
|
|
19
|
+
Eigen::Vector3<T>
|
|
20
|
+
getRotationDerivative(const JointStateT<T2>& js, const size_t index, const Eigen::Vector3<T>& ref) {
|
|
21
|
+
return js.rotationAxis.col(index).cross(ref);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
template <typename T, typename T2>
|
|
25
|
+
Eigen::Vector3<T> getScaleDerivative(const JointStateT<T2>& js, const Eigen::Vector3<T>& ref) {
|
|
26
|
+
(void)js;
|
|
27
|
+
return ref * ln2<T2>();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
template <typename T, int N>
|
|
31
|
+
Eigen::Matrix<ceres::Jet<T, N>, N, 1> buildJetVec(const Eigen::Matrix<T, N, 1>& v) {
|
|
32
|
+
Eigen::Matrix<ceres::Jet<T, N>, N, 1> result;
|
|
33
|
+
for (int k = 0; k < N; ++k) {
|
|
34
|
+
result(k).a = v(k);
|
|
35
|
+
result(k).v.setZero();
|
|
36
|
+
result(k).v(k) = 1;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
template <typename T, int Rows, int Cols>
|
|
43
|
+
Eigen::Matrix<ceres::Jet<T, Cols * Rows>, Rows, Cols> buildJetMat(
|
|
44
|
+
const Eigen::Matrix<T, Rows, Cols>& m) {
|
|
45
|
+
Eigen::Matrix<ceres::Jet<T, Cols * Rows>, Rows, Cols> result;
|
|
46
|
+
for (int iRow = 0; iRow < Rows; ++iRow) {
|
|
47
|
+
for (int jCol = 0; jCol < Cols; ++jCol) {
|
|
48
|
+
result(iRow, jCol).a = m(iRow, jCol);
|
|
49
|
+
result(iRow, jCol).v.setZero();
|
|
50
|
+
result(iRow, jCol).v(iRow * Cols + jCol) = 1;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return result;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
template <typename T, typename T2>
|
|
57
|
+
T times_parameterTransform_times_v(
|
|
58
|
+
const T& value,
|
|
59
|
+
const size_t jointParamIdx,
|
|
60
|
+
const ParameterTransform& parameterTransform,
|
|
61
|
+
Eigen::Ref<const Eigen::VectorX<T2>> v) {
|
|
62
|
+
T result = T();
|
|
63
|
+
for (auto index = parameterTransform.transform.outerIndexPtr()[jointParamIdx];
|
|
64
|
+
index < parameterTransform.transform.outerIndexPtr()[jointParamIdx + 1];
|
|
65
|
+
++index) {
|
|
66
|
+
result += value * static_cast<T2>(parameterTransform.transform.valuePtr()[index]) *
|
|
67
|
+
v[parameterTransform.transform.innerIndexPtr()[index]];
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
} // 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/character.h>
|
|
11
|
+
#include <momentum/character_solver/skeleton_error_function.h>
|
|
12
|
+
#include <momentum/character_solver/skeleton_solver_function.h>
|
|
13
|
+
#include <momentum/diff_ik/fwd.h>
|
|
14
|
+
|
|
15
|
+
#include <unordered_map>
|
|
16
|
+
#include <vector>
|
|
17
|
+
|
|
18
|
+
namespace momentum {
|
|
19
|
+
|
|
20
|
+
// This is going to be used within Pytorch's automatic differentiation package,
|
|
21
|
+
// so we will assume the existence of a scalar "loss" function that is the thing
|
|
22
|
+
// we are minimizing in Pytorch. To clarify:
|
|
23
|
+
// "Error"/Error function: the thing that momentum's IK solver is minimizing
|
|
24
|
+
// to compute the body pose.
|
|
25
|
+
// "Loss"/Loss function: the thing that Pytorch is minimizing.
|
|
26
|
+
// Here, we will be computing the derivative of the loss function with respect
|
|
27
|
+
// to all the various error function inputs, like "weight" or "target".
|
|
28
|
+
|
|
29
|
+
template <typename T>
|
|
30
|
+
struct ErrorFunctionDerivativesT {
|
|
31
|
+
std::shared_ptr<const SkeletonErrorFunctionT<T>> errorFunction = nullptr;
|
|
32
|
+
|
|
33
|
+
// Gradient of the energy wrt the global weight.
|
|
34
|
+
T gradWeight = 0;
|
|
35
|
+
|
|
36
|
+
// Derivative of the energy wrt the various inputs.
|
|
37
|
+
std::unordered_map<std::string, Eigen::VectorX<T>> gradInputs;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// Takes in the derivative of the loss wrt the model parameters and
|
|
41
|
+
// computes the derivative of the loss wrt the error function inputs,
|
|
42
|
+
// assuming the model parameters are always the ones that (locally)
|
|
43
|
+
// minimize the momentum IK error.
|
|
44
|
+
//
|
|
45
|
+
// The gradient_norm here can be used to determine if the derivatives
|
|
46
|
+
// are valid; the computation only really works when the gradient
|
|
47
|
+
// (wrt the subset of parameters that are allowed to vary) is close to 0.
|
|
48
|
+
template <typename T>
|
|
49
|
+
std::vector<ErrorFunctionDerivativesT<T>> d_modelParams_d_inputs(
|
|
50
|
+
const Skeleton& skeleton,
|
|
51
|
+
const ParameterTransformT<T>& parameterTransform,
|
|
52
|
+
const ParameterSet& activeParams,
|
|
53
|
+
const ModelParametersT<T>& parameters,
|
|
54
|
+
SkeletonSolverFunctionT<T>& solverFunction,
|
|
55
|
+
Eigen::Ref<const Eigen::VectorX<T>> dLoss_dModelParams,
|
|
56
|
+
T* gradientRmse = nullptr);
|
|
57
|
+
|
|
58
|
+
} // namespace momentum
|
|
@@ -0,0 +1,69 @@
|
|
|
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
|
+
#include <momentum/character/locator.h>
|
|
10
|
+
#include <momentum/character_solver/distance_error_function.h>
|
|
11
|
+
#include <momentum/character_solver/skeleton_error_function.h>
|
|
12
|
+
#include <momentum/diff_ik/fully_differentiable_skeleton_error_function.h>
|
|
13
|
+
#include <momentum/diff_ik/fwd.h>
|
|
14
|
+
|
|
15
|
+
namespace momentum {
|
|
16
|
+
|
|
17
|
+
MOMENTUM_FWD_DECLARE_TEMPLATE_CLASS(DistanceErrorFunction);
|
|
18
|
+
MOMENTUM_FWD_DECLARE_TEMPLATE_STRUCT(DistanceConstraintData);
|
|
19
|
+
|
|
20
|
+
template <typename T>
|
|
21
|
+
class FullyDifferentiableDistanceErrorFunctionT
|
|
22
|
+
: public DistanceErrorFunctionT<T>,
|
|
23
|
+
public virtual momentum::FullyDifferentiableSkeletonErrorFunctionT<T> {
|
|
24
|
+
public:
|
|
25
|
+
static constexpr const char* kOrigins = "origins";
|
|
26
|
+
static constexpr const char* kParents = "parents";
|
|
27
|
+
static constexpr const char* kOffsets = "offsets";
|
|
28
|
+
static constexpr const char* kWeights = "weights";
|
|
29
|
+
static constexpr const char* kTargets = "targets";
|
|
30
|
+
|
|
31
|
+
FullyDifferentiableDistanceErrorFunctionT(
|
|
32
|
+
const momentum::Skeleton& skel,
|
|
33
|
+
const momentum::ParameterTransform& pt);
|
|
34
|
+
|
|
35
|
+
[[nodiscard]] std::vector<std::string> inputs() const override;
|
|
36
|
+
[[nodiscard]] Eigen::Index getInputSize(const std::string& name) const override;
|
|
37
|
+
void getInputImp(const std::string& name, Eigen::Ref<Eigen::VectorX<T>> result) const override;
|
|
38
|
+
void setInputImp(const std::string& name, Eigen::Ref<const Eigen::VectorX<T>> value) override;
|
|
39
|
+
[[nodiscard]] const char* name() const override {
|
|
40
|
+
return "DistanceErrorFunction";
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
Eigen::VectorX<T> d_gradient_d_input_dot(
|
|
44
|
+
const std::string& inputName,
|
|
45
|
+
const momentum::ModelParametersT<T>& modelParams,
|
|
46
|
+
const momentum::SkeletonStateT<T>& state,
|
|
47
|
+
Eigen::Ref<const Eigen::VectorX<T>> inputVec) override;
|
|
48
|
+
|
|
49
|
+
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
|
50
|
+
|
|
51
|
+
private:
|
|
52
|
+
// Compute dError/dModelParams^T * v for some v.
|
|
53
|
+
template <typename JetType>
|
|
54
|
+
JetType constraintGradient_dot(
|
|
55
|
+
const momentum::ModelParametersT<T>& modelParams,
|
|
56
|
+
const momentum::SkeletonStateT<T>& skelState,
|
|
57
|
+
const Eigen::Vector3<JetType>& origin_cons,
|
|
58
|
+
int parentJointIndex,
|
|
59
|
+
const Eigen::Vector3<JetType>& offset,
|
|
60
|
+
const JetType& weight_cons,
|
|
61
|
+
const JetType& target_cons,
|
|
62
|
+
Eigen::Ref<const Eigen::VectorX<T>> vec);
|
|
63
|
+
|
|
64
|
+
// weights for the error functions
|
|
65
|
+
using DistanceErrorFunctionT<T>::kDistanceWeight;
|
|
66
|
+
using DistanceErrorFunctionT<T>::constraints_;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
} // namespace momentum
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/character_solver/model_parameters_error_function.h>
|
|
11
|
+
#include <momentum/character_solver/skeleton_error_function.h>
|
|
12
|
+
#include <momentum/diff_ik/fully_differentiable_skeleton_error_function.h>
|
|
13
|
+
#include <momentum/diff_ik/fwd.h>
|
|
14
|
+
|
|
15
|
+
#include <Eigen/Core>
|
|
16
|
+
|
|
17
|
+
namespace momentum {
|
|
18
|
+
|
|
19
|
+
template <typename T>
|
|
20
|
+
class FullyDifferentiableMotionErrorFunctionT : public FullyDifferentiableSkeletonErrorFunctionT<T>,
|
|
21
|
+
public ModelParametersErrorFunctionT<T> {
|
|
22
|
+
public:
|
|
23
|
+
FullyDifferentiableMotionErrorFunctionT(const Skeleton& skel, const ParameterTransform& pt);
|
|
24
|
+
~FullyDifferentiableMotionErrorFunctionT() override;
|
|
25
|
+
|
|
26
|
+
[[nodiscard]] std::vector<std::string> inputs() const final;
|
|
27
|
+
[[nodiscard]] Eigen::Index getInputSize(const std::string& name) const final;
|
|
28
|
+
[[nodiscard]] const char* name() const final {
|
|
29
|
+
return "ModelParametersErrorFunction";
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
static constexpr const char* kTargetParameters = "target_parameters";
|
|
33
|
+
static constexpr const char* kTargetWeights = "target_weights";
|
|
34
|
+
|
|
35
|
+
Eigen::VectorX<T> d_gradient_d_input_dot(
|
|
36
|
+
const std::string& inputName,
|
|
37
|
+
const ModelParametersT<T>& params,
|
|
38
|
+
const SkeletonStateT<T>& state,
|
|
39
|
+
Eigen::Ref<const Eigen::VectorX<T>> inputVec) final;
|
|
40
|
+
|
|
41
|
+
protected:
|
|
42
|
+
void getInputImp(const std::string& name, Eigen::Ref<Eigen::VectorX<T>> value) const final;
|
|
43
|
+
void setInputImp(const std::string& name, Eigen::Ref<const Eigen::VectorX<T>> value) final;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
} // 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_solver/skeleton_error_function.h>
|
|
11
|
+
#include <momentum/diff_ik/fully_differentiable_skeleton_error_function.h>
|
|
12
|
+
#include <momentum/diff_ik/fwd.h>
|
|
13
|
+
|
|
14
|
+
#include <vector>
|
|
15
|
+
|
|
16
|
+
namespace momentum {
|
|
17
|
+
|
|
18
|
+
template <typename T>
|
|
19
|
+
struct OrientationConstraintT {
|
|
20
|
+
Quaternion<T> offset; ///< Constraint rotation offset in local joint space
|
|
21
|
+
Quaternion<T> target; ///< Target orientation in global space
|
|
22
|
+
size_t parent; ///< Parent joint index this constraint is under
|
|
23
|
+
float weight; ///< Weight of the constraint
|
|
24
|
+
std::string name; ///< Name of the constraint
|
|
25
|
+
|
|
26
|
+
explicit OrientationConstraintT(
|
|
27
|
+
const Quaternion<T>& offset,
|
|
28
|
+
const Quaternion<T>& target,
|
|
29
|
+
size_t parent,
|
|
30
|
+
float w,
|
|
31
|
+
const std::string& n = "")
|
|
32
|
+
: offset(offset), target(target), parent(parent), weight(w), name(n) {
|
|
33
|
+
// Empty
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
template <typename T>
|
|
38
|
+
class FullyDifferentiableOrientationErrorFunctionT
|
|
39
|
+
: public FullyDifferentiableSkeletonErrorFunctionT<T>,
|
|
40
|
+
public SkeletonErrorFunctionT<T> {
|
|
41
|
+
public:
|
|
42
|
+
static constexpr T kOrientationWeight = 1e-1f;
|
|
43
|
+
static constexpr const char* kParents = "parents";
|
|
44
|
+
static constexpr const char* kOffsets = "offsets";
|
|
45
|
+
static constexpr const char* kWeights = "weights";
|
|
46
|
+
static constexpr const char* kTargets = "targets";
|
|
47
|
+
|
|
48
|
+
FullyDifferentiableOrientationErrorFunctionT(const Skeleton& skel, const ParameterTransform& pt);
|
|
49
|
+
~FullyDifferentiableOrientationErrorFunctionT() override = default;
|
|
50
|
+
|
|
51
|
+
[[nodiscard]] std::vector<std::string> inputs() const final;
|
|
52
|
+
[[nodiscard]] Eigen::Index getInputSize(const std::string& name) const final;
|
|
53
|
+
[[nodiscard]] const char* name() const final {
|
|
54
|
+
return "OrientationErrorFunction";
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
Eigen::VectorX<T> d_gradient_d_input_dot(
|
|
58
|
+
const std::string& inputName,
|
|
59
|
+
const ModelParametersT<T>& params,
|
|
60
|
+
const SkeletonStateT<T>& state,
|
|
61
|
+
Eigen::Ref<const Eigen::VectorX<T>> inputVec) final;
|
|
62
|
+
|
|
63
|
+
double getError(const ModelParametersT<T>& params, const SkeletonStateT<T>& state) final;
|
|
64
|
+
|
|
65
|
+
double getGradient(
|
|
66
|
+
const ModelParametersT<T>& params,
|
|
67
|
+
const SkeletonStateT<T>& state,
|
|
68
|
+
Ref<Eigen::VectorX<T>> gradient) final;
|
|
69
|
+
|
|
70
|
+
double getJacobian(
|
|
71
|
+
const ModelParametersT<T>& params,
|
|
72
|
+
const SkeletonStateT<T>& state,
|
|
73
|
+
Ref<Eigen::MatrixX<T>> jacobian,
|
|
74
|
+
Ref<Eigen::VectorX<T>> residual,
|
|
75
|
+
int& usedRows) final;
|
|
76
|
+
|
|
77
|
+
[[nodiscard]] size_t getJacobianSize() const final;
|
|
78
|
+
|
|
79
|
+
void addConstraint(const OrientationConstraintT<T>& constr);
|
|
80
|
+
|
|
81
|
+
private:
|
|
82
|
+
void getInputImp(const std::string& name, Eigen::Ref<Eigen::VectorX<T>> value) const final;
|
|
83
|
+
void setInputImp(const std::string& name, Eigen::Ref<const Eigen::VectorX<T>> value) final;
|
|
84
|
+
|
|
85
|
+
T calculateOrientationGradient(
|
|
86
|
+
const SkeletonStateT<T>& state,
|
|
87
|
+
const OrientationConstraintT<T>& constr,
|
|
88
|
+
Eigen::VectorX<T>& jGrad) const;
|
|
89
|
+
|
|
90
|
+
template <typename JetType>
|
|
91
|
+
JetType calculateOrientationGradient_dot(
|
|
92
|
+
const SkeletonStateT<T>& state,
|
|
93
|
+
size_t constrParent,
|
|
94
|
+
const JetType& constrWeight,
|
|
95
|
+
const Eigen::Quaternion<JetType>& constrOrientationOffset,
|
|
96
|
+
const Eigen::Quaternion<JetType>& constrOrientationTarget,
|
|
97
|
+
Eigen::Ref<const Eigen::VectorX<T>> vec) const;
|
|
98
|
+
|
|
99
|
+
[[nodiscard]] T calculateOrientationJacobian(
|
|
100
|
+
const SkeletonStateT<T>& state,
|
|
101
|
+
const OrientationConstraintT<T>& constr,
|
|
102
|
+
Ref<Eigen::MatrixX<T>> jac,
|
|
103
|
+
Ref<Eigen::VectorX<T>> res) const;
|
|
104
|
+
|
|
105
|
+
std::vector<OrientationConstraintT<T>> constraints_;
|
|
106
|
+
Eigen::VectorX<T> jointGrad_;
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
} // namespace momentum
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/character_solver/pose_prior_error_function.h>
|
|
11
|
+
#include <momentum/character_solver/skeleton_error_function.h>
|
|
12
|
+
#include <momentum/diff_ik/fully_differentiable_skeleton_error_function.h>
|
|
13
|
+
#include <momentum/diff_ik/fwd.h>
|
|
14
|
+
|
|
15
|
+
#include <Eigen/Core>
|
|
16
|
+
|
|
17
|
+
namespace momentum {
|
|
18
|
+
|
|
19
|
+
template <typename T>
|
|
20
|
+
class FullyDifferentiablePosePriorErrorFunctionT
|
|
21
|
+
: public FullyDifferentiableSkeletonErrorFunctionT<T>,
|
|
22
|
+
public PosePriorErrorFunctionT<T> {
|
|
23
|
+
public:
|
|
24
|
+
FullyDifferentiablePosePriorErrorFunctionT(
|
|
25
|
+
const Skeleton& skel,
|
|
26
|
+
const ParameterTransform& pt,
|
|
27
|
+
std::vector<std::string> names);
|
|
28
|
+
~FullyDifferentiablePosePriorErrorFunctionT() override;
|
|
29
|
+
|
|
30
|
+
void setPosePrior(
|
|
31
|
+
const VectorX<T>& pi,
|
|
32
|
+
const MatrixX<T>& mmu,
|
|
33
|
+
const std::vector<MatrixX<T>>& W,
|
|
34
|
+
const VectorX<T>& sigma);
|
|
35
|
+
|
|
36
|
+
static constexpr const char* kPi = "pi";
|
|
37
|
+
static constexpr const char* kMu = "mu";
|
|
38
|
+
static constexpr const char* kW = "W";
|
|
39
|
+
static constexpr const char* kSigma = "sigma";
|
|
40
|
+
static constexpr const char* kParameterIndices = "parameter_indices";
|
|
41
|
+
|
|
42
|
+
[[nodiscard]] std::vector<std::string> inputs() const final;
|
|
43
|
+
[[nodiscard]] Eigen::Index getInputSize(const std::string& name) const final;
|
|
44
|
+
[[nodiscard]] const char* name() const final {
|
|
45
|
+
return "MarkerErrorFunction";
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
Eigen::VectorX<T> d_gradient_d_input_dot(
|
|
49
|
+
const std::string& inputName,
|
|
50
|
+
const ModelParametersT<T>& params,
|
|
51
|
+
const SkeletonStateT<T>& state,
|
|
52
|
+
Eigen::Ref<const Eigen::VectorX<T>> inputVec) final;
|
|
53
|
+
|
|
54
|
+
protected:
|
|
55
|
+
void getInputImp(const std::string& name, Eigen::Ref<Eigen::VectorX<T>> value) const final;
|
|
56
|
+
void setInputImp(const std::string& name, Eigen::Ref<const Eigen::VectorX<T>> value) final;
|
|
57
|
+
|
|
58
|
+
// pi_ are the mixture weights
|
|
59
|
+
Eigen::VectorX<T> pi_;
|
|
60
|
+
|
|
61
|
+
// The columns of mu are the means for the different mixtures
|
|
62
|
+
Eigen::MatrixX<T> mmu_;
|
|
63
|
+
|
|
64
|
+
// Each matrix W is the basis for a mixture:
|
|
65
|
+
std::vector<Eigen::MatrixX<T>> W_;
|
|
66
|
+
|
|
67
|
+
// The covariance matrix is (sigma^2 * I + W^T * W)^{-1}
|
|
68
|
+
// Note that this is sigma, not sigma squared, because the scaling should
|
|
69
|
+
// be more reasonable (sigma is the same order of magnitude as the mu and
|
|
70
|
+
// W arrays).
|
|
71
|
+
Eigen::VectorX<T> sigma_;
|
|
72
|
+
|
|
73
|
+
const std::vector<std::string> names_;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
} // namespace momentum
|