pymomentum-cpu 0.1.82.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.
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/DualContouring.h +79 -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 +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 +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 +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 +82 -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 +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 +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 +144 -0
- include/momentum/character_sequence_solver/sequence_solver_function.h +134 -0
- include/momentum/character_sequence_solver/state_sequence_error_function.h +109 -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 +924 -0
- include/momentum/character_solver/gauss_newton_solver_qr.h +64 -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 +94 -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 +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 +132 -0
- include/momentum/io/gltf/gltf_file_format.h +19 -0
- include/momentum/io/gltf/gltf_io.h +148 -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 +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/axel/axel-config.cmake +45 -0
- lib/cmake/axel/axelTargets-release.cmake +19 -0
- lib/cmake/axel/axelTargets.cmake +108 -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 +377 -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 +614 -0
- pymomentum/backend/trs_backend.py +871 -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 +856 -0
- pymomentum/torch/parameter_limits.py +494 -0
- pymomentum/torch/utility.py +20 -0
- pymomentum/trs.py +535 -0
- pymomentum_cpu-0.1.82.post0.dist-info/METADATA +121 -0
- pymomentum_cpu-0.1.82.post0.dist-info/RECORD +512 -0
- pymomentum_cpu-0.1.82.post0.dist-info/WHEEL +5 -0
- pymomentum_cpu-0.1.82.post0.dist-info/licenses/LICENSE +21 -0
|
@@ -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/skeleton_state.h>
|
|
11
|
+
#include <momentum/character_solver/fwd.h>
|
|
12
|
+
#include <momentum/character_solver/skeleton_solver_function.h>
|
|
13
|
+
#include <momentum/math/online_householder_qr.h>
|
|
14
|
+
#include <momentum/solver/solver.h>
|
|
15
|
+
|
|
16
|
+
#include <Eigen/Core>
|
|
17
|
+
|
|
18
|
+
namespace momentum {
|
|
19
|
+
|
|
20
|
+
/// Gauss-Newton solver with QR decomposition specific options
|
|
21
|
+
struct GaussNewtonSolverQROptions : SolverOptions {
|
|
22
|
+
/// Damping parameter added to Hessian diagonal for numerical stability; see
|
|
23
|
+
/// https://en.wikipedia.org/wiki/Levenberg%E2%80%93Marquardt_algorithm
|
|
24
|
+
float regularization = 0.05f;
|
|
25
|
+
|
|
26
|
+
/// Flag to enable line search during optimization.
|
|
27
|
+
bool doLineSearch = false;
|
|
28
|
+
|
|
29
|
+
GaussNewtonSolverQROptions() = default;
|
|
30
|
+
|
|
31
|
+
/* implicit */ GaussNewtonSolverQROptions(const SolverOptions& baseOptions)
|
|
32
|
+
: SolverOptions(baseOptions) {
|
|
33
|
+
// Empty
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
template <typename T>
|
|
38
|
+
class GaussNewtonSolverQRT : public SolverT<T> {
|
|
39
|
+
public:
|
|
40
|
+
GaussNewtonSolverQRT(const SolverOptions& options, SkeletonSolverFunctionT<T>* solver);
|
|
41
|
+
~GaussNewtonSolverQRT() override;
|
|
42
|
+
|
|
43
|
+
[[nodiscard]] std::string_view getName() const override;
|
|
44
|
+
|
|
45
|
+
void setOptions(const SolverOptions& options) final;
|
|
46
|
+
|
|
47
|
+
protected:
|
|
48
|
+
void doIteration() final;
|
|
49
|
+
void initializeSolver() final;
|
|
50
|
+
|
|
51
|
+
private:
|
|
52
|
+
std::unique_ptr<SkeletonStateT<T>> skeletonState_;
|
|
53
|
+
std::unique_ptr<MeshStateT<T>> meshState_;
|
|
54
|
+
|
|
55
|
+
ResizeableMatrix<T> jacobian_;
|
|
56
|
+
ResizeableMatrix<T> residual_;
|
|
57
|
+
|
|
58
|
+
OnlineHouseholderQR<T> qrSolver_;
|
|
59
|
+
|
|
60
|
+
float regularization_;
|
|
61
|
+
bool doLineSearch_;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
} // namespace momentum
|
|
@@ -0,0 +1,57 @@
|
|
|
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_solver/fwd.h>
|
|
12
|
+
#include <momentum/character_solver/limit_error_function.h>
|
|
13
|
+
#include <momentum/character_solver/skeleton_error_function.h>
|
|
14
|
+
|
|
15
|
+
namespace momentum {
|
|
16
|
+
|
|
17
|
+
template <typename T>
|
|
18
|
+
class LimitErrorFunctionT : public SkeletonErrorFunctionT<T> {
|
|
19
|
+
public:
|
|
20
|
+
LimitErrorFunctionT(
|
|
21
|
+
const Skeleton& skel,
|
|
22
|
+
const ParameterTransform& pt,
|
|
23
|
+
const ParameterLimits& pl = ParameterLimits());
|
|
24
|
+
explicit LimitErrorFunctionT(const Character& character);
|
|
25
|
+
LimitErrorFunctionT(const Character& character, const ParameterLimits& pl);
|
|
26
|
+
|
|
27
|
+
[[nodiscard]] double getError(
|
|
28
|
+
const ModelParametersT<T>& params,
|
|
29
|
+
const SkeletonStateT<T>& state,
|
|
30
|
+
const MeshStateT<T>& meshState) final;
|
|
31
|
+
|
|
32
|
+
double getGradient(
|
|
33
|
+
const ModelParametersT<T>& params,
|
|
34
|
+
const SkeletonStateT<T>& state,
|
|
35
|
+
const MeshStateT<T>& meshState,
|
|
36
|
+
Ref<Eigen::VectorX<T>> gradient) final;
|
|
37
|
+
|
|
38
|
+
double getJacobian(
|
|
39
|
+
const ModelParametersT<T>& params,
|
|
40
|
+
const SkeletonStateT<T>& state,
|
|
41
|
+
const MeshStateT<T>& meshState,
|
|
42
|
+
Ref<Eigen::MatrixX<T>> jacobian,
|
|
43
|
+
Ref<Eigen::VectorX<T>> residual,
|
|
44
|
+
int& usedRows) final;
|
|
45
|
+
|
|
46
|
+
[[nodiscard]] size_t getJacobianSize() const final;
|
|
47
|
+
|
|
48
|
+
void setLimits(const ParameterLimits& lm);
|
|
49
|
+
void setLimits(const Character& character);
|
|
50
|
+
|
|
51
|
+
private:
|
|
52
|
+
// weights for the error functions
|
|
53
|
+
static constexpr float kLimitWeight = 1e+1;
|
|
54
|
+
ParameterLimits limits_;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
} // 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/skeleton_state.h>
|
|
11
|
+
#include <momentum/character_solver/fwd.h>
|
|
12
|
+
#include <momentum/character_solver/skeleton_error_function.h>
|
|
13
|
+
|
|
14
|
+
namespace momentum {
|
|
15
|
+
|
|
16
|
+
template <typename T>
|
|
17
|
+
class ModelParametersErrorFunctionT : public SkeletonErrorFunctionT<T> {
|
|
18
|
+
public:
|
|
19
|
+
ModelParametersErrorFunctionT(const Skeleton& skel, const ParameterTransform& pt);
|
|
20
|
+
explicit ModelParametersErrorFunctionT(const Character& character);
|
|
21
|
+
|
|
22
|
+
// Create a ModelParametersError that only targets the specified parameters:
|
|
23
|
+
ModelParametersErrorFunctionT(const Character& character, const ParameterSet& active);
|
|
24
|
+
|
|
25
|
+
[[nodiscard]] double getError(
|
|
26
|
+
const ModelParametersT<T>& parameters,
|
|
27
|
+
const SkeletonStateT<T>& state,
|
|
28
|
+
const MeshStateT<T>& meshState) final;
|
|
29
|
+
double getGradient(
|
|
30
|
+
const ModelParametersT<T>& parameters,
|
|
31
|
+
const SkeletonStateT<T>& state,
|
|
32
|
+
const MeshStateT<T>& meshState,
|
|
33
|
+
Ref<Eigen::VectorX<T>> gradient) final;
|
|
34
|
+
double getJacobian(
|
|
35
|
+
const ModelParametersT<T>& parameters,
|
|
36
|
+
const SkeletonStateT<T>& state,
|
|
37
|
+
const MeshStateT<T>& meshState,
|
|
38
|
+
Ref<Eigen::MatrixX<T>> jacobian,
|
|
39
|
+
Ref<Eigen::VectorX<T>> residual,
|
|
40
|
+
int& usedRows) final;
|
|
41
|
+
[[nodiscard]] size_t getJacobianSize() const final;
|
|
42
|
+
|
|
43
|
+
void setTargetParameters(const ModelParametersT<T>& params, const Eigen::VectorX<T>& weights) {
|
|
44
|
+
this->targetParameters_ = params;
|
|
45
|
+
this->targetWeights_ = weights;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
[[nodiscard]] const ModelParametersT<T>& getTargetParameters() const {
|
|
49
|
+
return this->targetParameters_;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
[[nodiscard]] const Eigen::VectorX<T>& getTargetWeights() const {
|
|
53
|
+
return this->targetWeights_;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
private:
|
|
57
|
+
ModelParametersT<T> targetParameters_;
|
|
58
|
+
Eigen::VectorX<T> targetWeights_;
|
|
59
|
+
|
|
60
|
+
public:
|
|
61
|
+
static constexpr T kMotionWeight = 1e-1;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
} // 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_solver/constraint_error_function.h>
|
|
11
|
+
|
|
12
|
+
namespace momentum {
|
|
13
|
+
|
|
14
|
+
/// Normal constraint data: data needed to compute the point-to-plane distance for
|
|
15
|
+
/// "data-to-template" in ICP.
|
|
16
|
+
template <typename T>
|
|
17
|
+
struct NormalDataT : ConstraintData {
|
|
18
|
+
/// The template point defined in the local space
|
|
19
|
+
Vector3<T> localPoint;
|
|
20
|
+
/// The template normal defined in the local space
|
|
21
|
+
Vector3<T> localNormal;
|
|
22
|
+
/// The data point in world space
|
|
23
|
+
Vector3<T> globalPoint;
|
|
24
|
+
|
|
25
|
+
explicit NormalDataT(
|
|
26
|
+
const Vector3<T>& inLocalPt,
|
|
27
|
+
const Vector3<T>& inLocalNorm,
|
|
28
|
+
const Vector3<T>& inTargetPt,
|
|
29
|
+
size_t pIndex,
|
|
30
|
+
float w,
|
|
31
|
+
const std::string& n = {})
|
|
32
|
+
: ConstraintData(pIndex, w, n),
|
|
33
|
+
localPoint(inLocalPt),
|
|
34
|
+
localNormal(inLocalNorm.normalized()),
|
|
35
|
+
globalPoint(inTargetPt) {}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/// The NormalErrorFunction computes a "point-to-plane" (signed) distance from a target point to the
|
|
39
|
+
/// plane defined by a local point and a local normal vector. The name is not informative but chosen
|
|
40
|
+
/// for backwards compatibility purpose.
|
|
41
|
+
template <typename T>
|
|
42
|
+
class NormalErrorFunctionT : public ConstraintErrorFunctionT<T, NormalDataT<T>, 1, 2, 1> {
|
|
43
|
+
public:
|
|
44
|
+
explicit NormalErrorFunctionT(
|
|
45
|
+
const Skeleton& skel,
|
|
46
|
+
const ParameterTransform& pt,
|
|
47
|
+
const T& lossAlpha = GeneralizedLossT<T>::kL2,
|
|
48
|
+
const T& lossC = T(1))
|
|
49
|
+
: ConstraintErrorFunctionT<T, NormalDataT<T>, 1, 2, 1>(skel, pt, lossAlpha, lossC) {}
|
|
50
|
+
|
|
51
|
+
explicit NormalErrorFunctionT(
|
|
52
|
+
const Character& character,
|
|
53
|
+
const T& lossAlpha = GeneralizedLossT<T>::kL2,
|
|
54
|
+
const T& lossC = T(1))
|
|
55
|
+
: NormalErrorFunctionT<T>(
|
|
56
|
+
character.skeleton,
|
|
57
|
+
character.parameterTransform,
|
|
58
|
+
lossAlpha,
|
|
59
|
+
lossC) {}
|
|
60
|
+
|
|
61
|
+
/// Default constant weight in MarkerErrorFunction. This can be used for backwards compatibility
|
|
62
|
+
/// in setWeight().
|
|
63
|
+
static constexpr T kLegacyWeight = 1e-4f;
|
|
64
|
+
|
|
65
|
+
protected:
|
|
66
|
+
void evalFunction(
|
|
67
|
+
size_t constrIndex,
|
|
68
|
+
const JointStateT<T>& state,
|
|
69
|
+
Vector<T, 1>& f,
|
|
70
|
+
optional_ref<std::array<Vector3<T>, 2>> v = {},
|
|
71
|
+
optional_ref<std::array<Eigen::Matrix<T, 1, 3>, 2>> dfdv = {}) const final;
|
|
72
|
+
};
|
|
73
|
+
} // namespace momentum
|
|
@@ -0,0 +1,74 @@
|
|
|
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/constraint_error_function.h>
|
|
11
|
+
|
|
12
|
+
namespace momentum {
|
|
13
|
+
|
|
14
|
+
/// Constraint data on 3x3 rotation represented in quaternions
|
|
15
|
+
template <typename T>
|
|
16
|
+
struct OrientationDataT : ConstraintData {
|
|
17
|
+
/// Rotation offset in the parent space
|
|
18
|
+
Eigen::Quaternion<T> offset;
|
|
19
|
+
/// Target rotation in global space
|
|
20
|
+
Eigen::Quaternion<T> target;
|
|
21
|
+
|
|
22
|
+
/// param[in] inOffset: input rotation offset in the parent space
|
|
23
|
+
/// param[in] inTarget: input target rotation in global space
|
|
24
|
+
/// param[in] pIndex: joint index of the parent joint
|
|
25
|
+
/// param[in] w: weight
|
|
26
|
+
/// param[in] n: name of this constraint
|
|
27
|
+
explicit OrientationDataT(
|
|
28
|
+
const Eigen::Quaternion<T>& inOffset,
|
|
29
|
+
const Eigen::Quaternion<T>& inTarget,
|
|
30
|
+
size_t pIndex,
|
|
31
|
+
float w,
|
|
32
|
+
const std::string& n = "")
|
|
33
|
+
: ConstraintData(pIndex, w, n),
|
|
34
|
+
offset(inOffset.normalized()),
|
|
35
|
+
target(inTarget.normalized()) {}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/// The OrientationErrorFunction minimizes the F-norm of the element-wise difference of a 3x3
|
|
39
|
+
/// rotation matrix to a target rotation. Therefore, function f has 9 numbers (FuncDim), and
|
|
40
|
+
/// NumVec=3 for the 3 rotation axis.
|
|
41
|
+
template <typename T>
|
|
42
|
+
class OrientationErrorFunctionT : public ConstraintErrorFunctionT<T, OrientationDataT<T>, 9, 3, 0> {
|
|
43
|
+
public:
|
|
44
|
+
explicit OrientationErrorFunctionT(
|
|
45
|
+
const Skeleton& skel,
|
|
46
|
+
const ParameterTransform& pt,
|
|
47
|
+
const T& lossAlpha = GeneralizedLossT<T>::kL2,
|
|
48
|
+
const T& lossC = T(1))
|
|
49
|
+
: ConstraintErrorFunctionT<T, OrientationDataT<T>, 9, 3, 0>(skel, pt, lossAlpha, lossC) {}
|
|
50
|
+
|
|
51
|
+
explicit OrientationErrorFunctionT(
|
|
52
|
+
const Character& character,
|
|
53
|
+
const T& lossAlpha = GeneralizedLossT<T>::kL2,
|
|
54
|
+
const T& lossC = T(1))
|
|
55
|
+
: OrientationErrorFunctionT(
|
|
56
|
+
character.skeleton,
|
|
57
|
+
character.parameterTransform,
|
|
58
|
+
lossAlpha,
|
|
59
|
+
lossC) {}
|
|
60
|
+
|
|
61
|
+
/// Default constant weight in MarkerErrorFunction. This can be used for backwards compatibility
|
|
62
|
+
/// in setWeight().
|
|
63
|
+
static constexpr T kLegacyWeight = 1e-1f;
|
|
64
|
+
|
|
65
|
+
protected:
|
|
66
|
+
void evalFunction(
|
|
67
|
+
size_t constrIndex,
|
|
68
|
+
const JointStateT<T>& state,
|
|
69
|
+
Vector<T, 9>& f,
|
|
70
|
+
optional_ref<std::array<Vector3<T>, 3>> v = {},
|
|
71
|
+
optional_ref<std::array<Eigen::Matrix<T, 9, 3>, 3>> dfdv = {}) const final;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
} // namespace momentum
|
|
@@ -0,0 +1,102 @@
|
|
|
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/constraint_error_function.h>
|
|
11
|
+
|
|
12
|
+
namespace momentum {
|
|
13
|
+
|
|
14
|
+
/// Point-on-plane or Point-in-half-plane constraint data.
|
|
15
|
+
/// The constraint uses the plane equation: x.dot(normal) - d = 0; use -d instead of +d to be
|
|
16
|
+
/// backwards compatible with previous implementation.
|
|
17
|
+
template <typename T>
|
|
18
|
+
struct PlaneDataT : ConstraintData {
|
|
19
|
+
Vector3<T> offset;
|
|
20
|
+
Vector3<T> normal;
|
|
21
|
+
T d;
|
|
22
|
+
|
|
23
|
+
explicit PlaneDataT(
|
|
24
|
+
const Vector3<T>& inOffset,
|
|
25
|
+
const Vector3<T>& inNormal,
|
|
26
|
+
const T inD,
|
|
27
|
+
size_t pIndex,
|
|
28
|
+
float w,
|
|
29
|
+
const std::string& n = "")
|
|
30
|
+
: ConstraintData(pIndex, w, n), offset(inOffset), normal(inNormal.normalized()), d(inD) {}
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/// Create non-penetration half-plane constraints from locators with the input prefix
|
|
34
|
+
template <typename T>
|
|
35
|
+
std::vector<PlaneDataT<T>> createFloorConstraints(
|
|
36
|
+
const std::string& prefix,
|
|
37
|
+
const LocatorList& locators,
|
|
38
|
+
const Vector3<T>& floorNormal,
|
|
39
|
+
const T& floorOffset,
|
|
40
|
+
float weight);
|
|
41
|
+
|
|
42
|
+
/// The PlaneErrorFunction computes the point-on-plane error or point-in-half-plane error.
|
|
43
|
+
/// For point-on-plane error (above = false), it computes the signed distance of a point to a plane
|
|
44
|
+
/// using the plane equation. For half-plane error (above = true), the error is zero when the
|
|
45
|
+
/// distance is greater than zero (ie. the point being above).
|
|
46
|
+
template <typename T>
|
|
47
|
+
class PlaneErrorFunctionT : public ConstraintErrorFunctionT<T, PlaneDataT<T>, 1> {
|
|
48
|
+
public:
|
|
49
|
+
/// Constructor
|
|
50
|
+
///
|
|
51
|
+
/// @param[in] skel: character skeleton
|
|
52
|
+
/// @param[in] pt: character parameter transformation
|
|
53
|
+
/// @param[in] above: true means "above the plane" (half plane inequality), false means "on the
|
|
54
|
+
/// plane" (equality).
|
|
55
|
+
/// @param[in] lossAlpha: alpha parameter for the loss function
|
|
56
|
+
/// @param[in] lossC: c parameter for the loss function
|
|
57
|
+
explicit PlaneErrorFunctionT(
|
|
58
|
+
const Skeleton& skel,
|
|
59
|
+
const ParameterTransform& pt,
|
|
60
|
+
const bool above = false,
|
|
61
|
+
const T& lossAlpha = GeneralizedLossT<T>::kL2,
|
|
62
|
+
const T& lossC = T(1))
|
|
63
|
+
: ConstraintErrorFunctionT<T, PlaneDataT<T>, 1>(skel, pt, lossAlpha, lossC),
|
|
64
|
+
halfPlane_(above) {}
|
|
65
|
+
|
|
66
|
+
/// A convenience api where character contains info of the skeleton and parameter transform.
|
|
67
|
+
///
|
|
68
|
+
/// @param[in] character: character definition
|
|
69
|
+
/// @param[in] above: true means "above the plane" (half plane inequality), false means "on the
|
|
70
|
+
/// plane" (equality).
|
|
71
|
+
/// @param[in] lossAlpha: alpha parameter for the loss function
|
|
72
|
+
/// @param[in] lossC: c parameter for the loss function
|
|
73
|
+
explicit PlaneErrorFunctionT(
|
|
74
|
+
const Character& character,
|
|
75
|
+
const bool above = false,
|
|
76
|
+
const T& lossAlpha = GeneralizedLossT<T>::kL2,
|
|
77
|
+
const T& lossC = T(1))
|
|
78
|
+
: PlaneErrorFunctionT(
|
|
79
|
+
character.skeleton,
|
|
80
|
+
character.parameterTransform,
|
|
81
|
+
above,
|
|
82
|
+
lossAlpha,
|
|
83
|
+
lossC) {}
|
|
84
|
+
|
|
85
|
+
/// Default constant weight in MarkerErrorFunction. This can be used for backwards compatibility
|
|
86
|
+
/// in setWeight().
|
|
87
|
+
static constexpr T kLegacyWeight = 1e-4f;
|
|
88
|
+
|
|
89
|
+
protected:
|
|
90
|
+
void evalFunction(
|
|
91
|
+
size_t constrIndex,
|
|
92
|
+
const JointStateT<T>& state,
|
|
93
|
+
Vector<T, 1>& f,
|
|
94
|
+
optional_ref<std::array<Vector3<T>, 1>> v = {},
|
|
95
|
+
optional_ref<std::array<Eigen::Matrix<T, 1, 3>, 1>> /*dfdv*/ = {}) const final;
|
|
96
|
+
|
|
97
|
+
private:
|
|
98
|
+
/// True for an inequality constraint to be *above* the plane rather than *on* the plane
|
|
99
|
+
bool halfPlane_ = false;
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
} // namespace momentum
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/character_solver/fwd.h>
|
|
11
|
+
#include <momentum/character_solver/plane_error_function.h>
|
|
12
|
+
#include <momentum/character_solver/position_error_function.h>
|
|
13
|
+
#include <momentum/character_solver/skeleton_error_function.h>
|
|
14
|
+
#include <momentum/character_solver/vertex_error_function.h>
|
|
15
|
+
#include <momentum/math/fwd.h>
|
|
16
|
+
|
|
17
|
+
namespace momentum {
|
|
18
|
+
|
|
19
|
+
template <typename T>
|
|
20
|
+
struct PointTriangleVertexConstraintT {
|
|
21
|
+
int srcVertexIndex = -1;
|
|
22
|
+
Eigen::Vector3i tgtTriangleIndices;
|
|
23
|
+
Eigen::Vector3<T> tgtTriangleBaryCoords;
|
|
24
|
+
T depth = 0;
|
|
25
|
+
T weight = 1;
|
|
26
|
+
|
|
27
|
+
template <typename T2>
|
|
28
|
+
PointTriangleVertexConstraintT<T2> cast() const {
|
|
29
|
+
return {
|
|
30
|
+
this->srcVertexIndex,
|
|
31
|
+
this->tgtTriangleIndices,
|
|
32
|
+
this->tgtTriangleBaryCoords.template cast<T2>(),
|
|
33
|
+
static_cast<T2>(this->depth),
|
|
34
|
+
static_cast<T2>(this->weight)};
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/// Support constraining different parts of the mesh together by specifying that a source vertex
|
|
39
|
+
/// should target a location on the mesh defined by a target triangle and its normal. The target
|
|
40
|
+
/// point is specified as sum_i (bary_i * target_triangle_vertex_i) + depth *
|
|
41
|
+
/// target_triangle_normal. Note that this constraint applies "forces" both to the source vertex and
|
|
42
|
+
/// every vertex in the target triangle, so it will actually try to pull both toward each other.
|
|
43
|
+
template <typename T>
|
|
44
|
+
class PointTriangleVertexErrorFunctionT : public SkeletonErrorFunctionT<T> {
|
|
45
|
+
public:
|
|
46
|
+
explicit PointTriangleVertexErrorFunctionT(
|
|
47
|
+
const Character& character,
|
|
48
|
+
VertexConstraintType type = VertexConstraintType::Position);
|
|
49
|
+
virtual ~PointTriangleVertexErrorFunctionT() override;
|
|
50
|
+
|
|
51
|
+
[[nodiscard]] double getError(
|
|
52
|
+
const ModelParametersT<T>& modelParameters,
|
|
53
|
+
const SkeletonStateT<T>& state,
|
|
54
|
+
const MeshStateT<T>& meshState) final;
|
|
55
|
+
|
|
56
|
+
double getGradient(
|
|
57
|
+
const ModelParametersT<T>& modelParameters,
|
|
58
|
+
const SkeletonStateT<T>& state,
|
|
59
|
+
const MeshStateT<T>& meshState,
|
|
60
|
+
Eigen::Ref<Eigen::VectorX<T>> gradient) final;
|
|
61
|
+
|
|
62
|
+
double getJacobian(
|
|
63
|
+
const ModelParametersT<T>& modelParameters,
|
|
64
|
+
const SkeletonStateT<T>& state,
|
|
65
|
+
const MeshStateT<T>& meshState,
|
|
66
|
+
Eigen::Ref<Eigen::MatrixX<T>> jacobian,
|
|
67
|
+
Eigen::Ref<Eigen::VectorX<T>> residual,
|
|
68
|
+
int& usedRows) final;
|
|
69
|
+
|
|
70
|
+
[[nodiscard]] size_t getJacobianSize() const final;
|
|
71
|
+
|
|
72
|
+
void addConstraint(
|
|
73
|
+
int vertexIndex,
|
|
74
|
+
const Eigen::Vector3i& triangleIndices,
|
|
75
|
+
const Eigen::Vector3<T>& triangleBaryCoords,
|
|
76
|
+
float depth = 0,
|
|
77
|
+
T weight = 1);
|
|
78
|
+
void clearConstraints();
|
|
79
|
+
|
|
80
|
+
[[nodiscard]] const std::vector<PointTriangleVertexConstraintT<T>>& getConstraints() const {
|
|
81
|
+
return constraints_;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
static constexpr T kPositionWeight = PositionErrorFunctionT<T>::kLegacyWeight;
|
|
85
|
+
static constexpr T kPlaneWeight = PlaneErrorFunctionT<T>::kLegacyWeight;
|
|
86
|
+
|
|
87
|
+
size_t getNumVertices() const;
|
|
88
|
+
[[nodiscard]] const Character* getCharacter() const override {
|
|
89
|
+
return &character_;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/// Override to indicate this function requires mesh state
|
|
93
|
+
[[nodiscard]] bool needsMesh() const override {
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
private:
|
|
98
|
+
double calculatePositionJacobian(
|
|
99
|
+
const ModelParametersT<T>& modelParameters,
|
|
100
|
+
const SkeletonStateT<T>& state,
|
|
101
|
+
const MeshStateT<T>& meshState,
|
|
102
|
+
const PointTriangleVertexConstraintT<T>& constr,
|
|
103
|
+
Ref<Eigen::MatrixX<T>> jac,
|
|
104
|
+
Ref<Eigen::VectorX<T>> res) const;
|
|
105
|
+
|
|
106
|
+
double calculateNormalJacobian(
|
|
107
|
+
const ModelParametersT<T>& modelParameters,
|
|
108
|
+
const SkeletonStateT<T>& state,
|
|
109
|
+
const MeshStateT<T>& meshState,
|
|
110
|
+
const PointTriangleVertexConstraintT<T>& constr,
|
|
111
|
+
T sourceNormalWeight,
|
|
112
|
+
T targetNormalWeight,
|
|
113
|
+
Ref<Eigen::MatrixX<T>> jac,
|
|
114
|
+
T& res) const;
|
|
115
|
+
|
|
116
|
+
double calculatePositionGradient(
|
|
117
|
+
const ModelParametersT<T>& modelParameters,
|
|
118
|
+
const SkeletonStateT<T>& state,
|
|
119
|
+
const MeshStateT<T>& meshState,
|
|
120
|
+
const PointTriangleVertexConstraintT<T>& constr,
|
|
121
|
+
Eigen::Ref<Eigen::VectorX<T>> gradient) const;
|
|
122
|
+
|
|
123
|
+
double calculateNormalGradient(
|
|
124
|
+
const ModelParametersT<T>& modelParameters,
|
|
125
|
+
const SkeletonStateT<T>& state,
|
|
126
|
+
const MeshStateT<T>& meshState,
|
|
127
|
+
const PointTriangleVertexConstraintT<T>& constr,
|
|
128
|
+
T sourceNormalWeight,
|
|
129
|
+
T targetNormalWeight,
|
|
130
|
+
Eigen::Ref<Eigen::VectorX<T>> gradient) const;
|
|
131
|
+
|
|
132
|
+
std::pair<T, T> computeNormalWeights() const;
|
|
133
|
+
|
|
134
|
+
const Character& character_;
|
|
135
|
+
|
|
136
|
+
std::vector<PointTriangleVertexConstraintT<T>> constraints_;
|
|
137
|
+
|
|
138
|
+
const VertexConstraintType constraintType_;
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
} // 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_solver/fwd.h>
|
|
11
|
+
#include <momentum/character_solver/skeleton_error_function.h>
|
|
12
|
+
#include <momentum/math/mppca.h>
|
|
13
|
+
|
|
14
|
+
#include <gsl/span>
|
|
15
|
+
|
|
16
|
+
namespace momentum {
|
|
17
|
+
|
|
18
|
+
template <typename T>
|
|
19
|
+
class PosePriorErrorFunctionT : public SkeletonErrorFunctionT<T> {
|
|
20
|
+
public:
|
|
21
|
+
PosePriorErrorFunctionT(
|
|
22
|
+
const Skeleton& skel,
|
|
23
|
+
const ParameterTransform& pt,
|
|
24
|
+
std::shared_ptr<const MppcaT<T>> pp);
|
|
25
|
+
PosePriorErrorFunctionT(const Character& character, std::shared_ptr<const MppcaT<T>> pp);
|
|
26
|
+
|
|
27
|
+
void setPosePrior(std::shared_ptr<const MppcaT<T>> pp);
|
|
28
|
+
|
|
29
|
+
[[nodiscard]] double getError(
|
|
30
|
+
const ModelParametersT<T>& params,
|
|
31
|
+
const SkeletonStateT<T>& state,
|
|
32
|
+
const MeshStateT<T>& meshState) final;
|
|
33
|
+
|
|
34
|
+
double getGradient(
|
|
35
|
+
const ModelParametersT<T>& params,
|
|
36
|
+
const SkeletonStateT<T>& state,
|
|
37
|
+
const MeshStateT<T>& meshState,
|
|
38
|
+
Eigen::Ref<Eigen::VectorX<T>> gradient) final;
|
|
39
|
+
|
|
40
|
+
[[nodiscard]] double logProbability(const ModelParametersT<T>& params) const;
|
|
41
|
+
|
|
42
|
+
double getJacobian(
|
|
43
|
+
const ModelParametersT<T>& params,
|
|
44
|
+
const SkeletonStateT<T>& state,
|
|
45
|
+
const MeshStateT<T>& meshState,
|
|
46
|
+
Eigen::Ref<Eigen::MatrixX<T>> jacobian,
|
|
47
|
+
Eigen::Ref<Eigen::VectorX<T>> residual,
|
|
48
|
+
int& usedRows) final;
|
|
49
|
+
|
|
50
|
+
[[nodiscard]] size_t getJacobianSize() const final;
|
|
51
|
+
|
|
52
|
+
[[nodiscard]] Eigen::VectorX<T> getMeanShape(const ModelParametersT<T>& params) const;
|
|
53
|
+
|
|
54
|
+
protected:
|
|
55
|
+
void loadInternal();
|
|
56
|
+
void getBestFitMode(
|
|
57
|
+
const ModelParametersT<T>& params,
|
|
58
|
+
size_t& bestIdx,
|
|
59
|
+
Eigen::VectorX<T>& bestDiff,
|
|
60
|
+
T& bestR,
|
|
61
|
+
T& minDist) const;
|
|
62
|
+
|
|
63
|
+
std::vector<size_t> ppMap_;
|
|
64
|
+
std::vector<size_t> invMap_;
|
|
65
|
+
|
|
66
|
+
// The pose prior: note that once passed in you must not modify it
|
|
67
|
+
// outside this class. The easiest way to guarantee this is to use
|
|
68
|
+
// the standard loadMppca() functions which already returns a const-
|
|
69
|
+
// valued shared_ptr.
|
|
70
|
+
std::shared_ptr<const MppcaT<T>> posePrior_;
|
|
71
|
+
|
|
72
|
+
// weights for the error functions
|
|
73
|
+
static constexpr T kPosePriorWeight = 1e-3;
|
|
74
|
+
|
|
75
|
+
private:
|
|
76
|
+
// Is used for optimization purpose in getJacobian to allocate memory once
|
|
77
|
+
Eigen::MatrixX<T> gradientL_;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
} // namespace momentum
|