pymomentum-cpu 0.1.93.post0__cp312-cp312-macosx_14_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- include/axel/BoundingBox.h +59 -0
- include/axel/Bvh.h +708 -0
- include/axel/BvhBase.h +75 -0
- include/axel/BvhCommon.h +43 -0
- include/axel/BvhEmbree.h +87 -0
- include/axel/BvhFactory.h +34 -0
- include/axel/Checks.h +21 -0
- include/axel/DualContouring.h +79 -0
- include/axel/KdTree.h +208 -0
- include/axel/Log.h +22 -0
- include/axel/MeshToSdf.h +123 -0
- include/axel/Profile.h +64 -0
- include/axel/Ray.h +45 -0
- include/axel/SignedDistanceField.h +248 -0
- include/axel/SimdKdTree.h +515 -0
- include/axel/TriBvh.h +157 -0
- include/axel/TriBvhEmbree.h +57 -0
- include/axel/common/Constants.h +27 -0
- include/axel/common/Types.h +21 -0
- include/axel/common/VectorizationTypes.h +58 -0
- include/axel/math/BoundingBoxUtils.h +54 -0
- include/axel/math/ContinuousCollisionDetection.h +48 -0
- include/axel/math/CoplanarityCheck.h +30 -0
- include/axel/math/EdgeEdgeDistance.h +31 -0
- include/axel/math/MeshHoleFilling.h +117 -0
- include/axel/math/PointTriangleProjection.h +34 -0
- include/axel/math/PointTriangleProjectionDefinitions.h +209 -0
- include/axel/math/RayTriangleIntersection.h +36 -0
- include/momentum/character/blend_shape.h +97 -0
- include/momentum/character/blend_shape_base.h +86 -0
- include/momentum/character/blend_shape_skinning.h +96 -0
- include/momentum/character/character.h +272 -0
- include/momentum/character/character_state.h +108 -0
- include/momentum/character/character_utility.h +128 -0
- include/momentum/character/collision_geometry.h +80 -0
- include/momentum/character/collision_geometry_state.h +130 -0
- include/momentum/character/fwd.h +262 -0
- include/momentum/character/inverse_parameter_transform.h +58 -0
- include/momentum/character/joint.h +82 -0
- include/momentum/character/joint_state.h +241 -0
- include/momentum/character/linear_skinning.h +139 -0
- include/momentum/character/locator.h +94 -0
- include/momentum/character/locator_state.h +43 -0
- include/momentum/character/marker.h +48 -0
- include/momentum/character/mesh_state.h +71 -0
- include/momentum/character/parameter_limits.h +144 -0
- include/momentum/character/parameter_transform.h +207 -0
- include/momentum/character/pose_shape.h +65 -0
- include/momentum/character/skeleton.h +85 -0
- include/momentum/character/skeleton_state.h +227 -0
- include/momentum/character/skeleton_utility.h +38 -0
- include/momentum/character/skin_weights.h +67 -0
- include/momentum/character/skinned_locator.h +80 -0
- include/momentum/character/types.h +202 -0
- include/momentum/character_sequence_solver/fwd.h +200 -0
- include/momentum/character_sequence_solver/model_parameters_sequence_error_function.h +65 -0
- include/momentum/character_sequence_solver/multipose_solver.h +65 -0
- include/momentum/character_sequence_solver/multipose_solver_function.h +82 -0
- include/momentum/character_sequence_solver/sequence_error_function.h +104 -0
- include/momentum/character_sequence_solver/sequence_solver.h +155 -0
- include/momentum/character_sequence_solver/sequence_solver_function.h +158 -0
- include/momentum/character_sequence_solver/state_sequence_error_function.h +117 -0
- include/momentum/character_sequence_solver/vertex_sequence_error_function.h +123 -0
- include/momentum/character_solver/aim_error_function.h +112 -0
- include/momentum/character_solver/collision_error_function.h +92 -0
- include/momentum/character_solver/collision_error_function_stateless.h +75 -0
- include/momentum/character_solver/constraint_error_function-inl.h +324 -0
- include/momentum/character_solver/constraint_error_function.h +248 -0
- include/momentum/character_solver/distance_error_function.h +77 -0
- include/momentum/character_solver/error_function_utils.h +60 -0
- include/momentum/character_solver/fixed_axis_error_function.h +139 -0
- include/momentum/character_solver/fwd.h +943 -0
- include/momentum/character_solver/gauss_newton_solver_qr.h +64 -0
- include/momentum/character_solver/height_error_function.h +176 -0
- include/momentum/character_solver/joint_to_joint_distance_error_function.h +111 -0
- include/momentum/character_solver/limit_error_function.h +57 -0
- include/momentum/character_solver/model_parameters_error_function.h +64 -0
- include/momentum/character_solver/normal_error_function.h +73 -0
- include/momentum/character_solver/orientation_error_function.h +74 -0
- include/momentum/character_solver/plane_error_function.h +102 -0
- include/momentum/character_solver/point_triangle_vertex_error_function.h +141 -0
- include/momentum/character_solver/pose_prior_error_function.h +80 -0
- include/momentum/character_solver/position_error_function.h +75 -0
- include/momentum/character_solver/projection_error_function.h +93 -0
- include/momentum/character_solver/simd_collision_error_function.h +99 -0
- include/momentum/character_solver/simd_normal_error_function.h +157 -0
- include/momentum/character_solver/simd_plane_error_function.h +164 -0
- include/momentum/character_solver/simd_position_error_function.h +165 -0
- include/momentum/character_solver/skeleton_error_function.h +151 -0
- include/momentum/character_solver/skeleton_solver_function.h +94 -0
- include/momentum/character_solver/skinned_locator_error_function.h +166 -0
- include/momentum/character_solver/skinned_locator_triangle_error_function.h +146 -0
- include/momentum/character_solver/skinning_weight_iterator.h +80 -0
- include/momentum/character_solver/state_error_function.h +119 -0
- include/momentum/character_solver/transform_pose.h +80 -0
- include/momentum/character_solver/trust_region_qr.h +80 -0
- include/momentum/character_solver/vertex_error_function.h +155 -0
- include/momentum/character_solver/vertex_projection_error_function.h +117 -0
- include/momentum/character_solver/vertex_vertex_distance_error_function.h +147 -0
- include/momentum/common/aligned.h +155 -0
- include/momentum/common/checks.h +27 -0
- include/momentum/common/exception.h +70 -0
- include/momentum/common/filesystem.h +20 -0
- include/momentum/common/fwd.h +27 -0
- include/momentum/common/log.h +173 -0
- include/momentum/common/log_channel.h +17 -0
- include/momentum/common/memory.h +71 -0
- include/momentum/common/profile.h +79 -0
- include/momentum/common/progress_bar.h +37 -0
- include/momentum/common/string.h +52 -0
- include/momentum/diff_ik/ceres_utility.h +73 -0
- include/momentum/diff_ik/fully_differentiable_body_ik.h +58 -0
- include/momentum/diff_ik/fully_differentiable_distance_error_function.h +69 -0
- include/momentum/diff_ik/fully_differentiable_motion_error_function.h +46 -0
- include/momentum/diff_ik/fully_differentiable_orientation_error_function.h +114 -0
- include/momentum/diff_ik/fully_differentiable_pose_prior_error_function.h +76 -0
- include/momentum/diff_ik/fully_differentiable_position_error_function.h +138 -0
- include/momentum/diff_ik/fully_differentiable_projection_error_function.h +65 -0
- include/momentum/diff_ik/fully_differentiable_skeleton_error_function.h +160 -0
- include/momentum/diff_ik/fully_differentiable_state_error_function.h +54 -0
- include/momentum/diff_ik/fwd.h +385 -0
- include/momentum/diff_ik/union_error_function.h +67 -0
- include/momentum/gui/rerun/eigen_adapters.h +70 -0
- include/momentum/gui/rerun/logger.h +102 -0
- include/momentum/gui/rerun/logging_redirect.h +27 -0
- include/momentum/io/character_io.h +98 -0
- include/momentum/io/common/gsl_utils.h +50 -0
- include/momentum/io/common/stream_utils.h +65 -0
- include/momentum/io/fbx/fbx_io.h +135 -0
- include/momentum/io/fbx/fbx_memory_stream.h +70 -0
- include/momentum/io/fbx/openfbx_loader.h +62 -0
- include/momentum/io/fbx/polygon_data.h +60 -0
- include/momentum/io/file_save_options.h +107 -0
- include/momentum/io/gltf/gltf_builder.h +141 -0
- include/momentum/io/gltf/gltf_io.h +149 -0
- include/momentum/io/gltf/utils/accessor_utils.h +299 -0
- include/momentum/io/gltf/utils/coordinate_utils.h +60 -0
- include/momentum/io/gltf/utils/json_utils.h +102 -0
- include/momentum/io/legacy_json/legacy_json_io.h +70 -0
- include/momentum/io/marker/c3d_io.h +30 -0
- include/momentum/io/marker/conversions.h +57 -0
- include/momentum/io/marker/coordinate_system.h +30 -0
- include/momentum/io/marker/marker_io.h +56 -0
- include/momentum/io/marker/trc_io.h +27 -0
- include/momentum/io/motion/mmo_io.h +97 -0
- include/momentum/io/shape/blend_shape_io.h +82 -0
- include/momentum/io/shape/pose_shape_io.h +21 -0
- include/momentum/io/skeleton/locator_io.h +41 -0
- include/momentum/io/skeleton/mppca_io.h +26 -0
- include/momentum/io/skeleton/parameter_limits_io.h +38 -0
- include/momentum/io/skeleton/parameter_transform_io.h +80 -0
- include/momentum/io/skeleton/parameters_io.h +20 -0
- include/momentum/io/skeleton/utility.h +67 -0
- include/momentum/io/urdf/urdf_io.h +26 -0
- include/momentum/io/usd/usd_io.h +36 -0
- include/momentum/marker_tracking/app_utils.h +64 -0
- include/momentum/marker_tracking/marker_tracker.h +221 -0
- include/momentum/marker_tracking/process_markers.h +58 -0
- include/momentum/marker_tracking/tracker_utils.h +99 -0
- include/momentum/math/constants.h +82 -0
- include/momentum/math/covariance_matrix.h +84 -0
- include/momentum/math/fmt_eigen.h +23 -0
- include/momentum/math/fwd.h +132 -0
- include/momentum/math/generalized_loss.h +61 -0
- include/momentum/math/intersection.h +32 -0
- include/momentum/math/mesh.h +84 -0
- include/momentum/math/mppca.h +67 -0
- include/momentum/math/online_householder_qr.h +516 -0
- include/momentum/math/random-inl.h +404 -0
- include/momentum/math/random.h +310 -0
- include/momentum/math/simd_generalized_loss.h +40 -0
- include/momentum/math/transform.h +229 -0
- include/momentum/math/types.h +461 -0
- include/momentum/math/utility.h +324 -0
- include/momentum/rasterizer/camera.h +453 -0
- include/momentum/rasterizer/fwd.h +102 -0
- include/momentum/rasterizer/geometry.h +83 -0
- include/momentum/rasterizer/image.h +18 -0
- include/momentum/rasterizer/rasterizer.h +583 -0
- include/momentum/rasterizer/tensor.h +140 -0
- include/momentum/rasterizer/text_rasterizer.h +89 -0
- include/momentum/rasterizer/utility.h +268 -0
- include/momentum/simd/simd.h +221 -0
- include/momentum/solver/fwd.h +131 -0
- include/momentum/solver/gauss_newton_solver.h +136 -0
- include/momentum/solver/gradient_descent_solver.h +65 -0
- include/momentum/solver/solver.h +155 -0
- include/momentum/solver/solver_function.h +126 -0
- include/momentum/solver/subset_gauss_newton_solver.h +109 -0
- include/rerun/archetypes/annotation_context.hpp +157 -0
- include/rerun/archetypes/arrows2d.hpp +271 -0
- include/rerun/archetypes/arrows3d.hpp +257 -0
- include/rerun/archetypes/asset3d.hpp +262 -0
- include/rerun/archetypes/asset_video.hpp +275 -0
- include/rerun/archetypes/bar_chart.hpp +261 -0
- include/rerun/archetypes/boxes2d.hpp +293 -0
- include/rerun/archetypes/boxes3d.hpp +369 -0
- include/rerun/archetypes/capsules3d.hpp +333 -0
- include/rerun/archetypes/clear.hpp +180 -0
- include/rerun/archetypes/depth_image.hpp +425 -0
- include/rerun/archetypes/ellipsoids3d.hpp +384 -0
- include/rerun/archetypes/encoded_image.hpp +250 -0
- include/rerun/archetypes/geo_line_strings.hpp +166 -0
- include/rerun/archetypes/geo_points.hpp +177 -0
- include/rerun/archetypes/graph_edges.hpp +152 -0
- include/rerun/archetypes/graph_nodes.hpp +206 -0
- include/rerun/archetypes/image.hpp +434 -0
- include/rerun/archetypes/instance_poses3d.hpp +221 -0
- include/rerun/archetypes/line_strips2d.hpp +289 -0
- include/rerun/archetypes/line_strips3d.hpp +270 -0
- include/rerun/archetypes/mesh3d.hpp +387 -0
- include/rerun/archetypes/pinhole.hpp +385 -0
- include/rerun/archetypes/points2d.hpp +333 -0
- include/rerun/archetypes/points3d.hpp +369 -0
- include/rerun/archetypes/recording_properties.hpp +132 -0
- include/rerun/archetypes/scalar.hpp +170 -0
- include/rerun/archetypes/scalars.hpp +153 -0
- include/rerun/archetypes/segmentation_image.hpp +305 -0
- include/rerun/archetypes/series_line.hpp +274 -0
- include/rerun/archetypes/series_lines.hpp +271 -0
- include/rerun/archetypes/series_point.hpp +265 -0
- include/rerun/archetypes/series_points.hpp +251 -0
- include/rerun/archetypes/tensor.hpp +213 -0
- include/rerun/archetypes/text_document.hpp +200 -0
- include/rerun/archetypes/text_log.hpp +211 -0
- include/rerun/archetypes/transform3d.hpp +925 -0
- include/rerun/archetypes/video_frame_reference.hpp +295 -0
- include/rerun/archetypes/view_coordinates.hpp +393 -0
- include/rerun/archetypes.hpp +43 -0
- include/rerun/arrow_utils.hpp +32 -0
- include/rerun/as_components.hpp +90 -0
- include/rerun/blueprint/archetypes/background.hpp +113 -0
- include/rerun/blueprint/archetypes/container_blueprint.hpp +259 -0
- include/rerun/blueprint/archetypes/dataframe_query.hpp +178 -0
- include/rerun/blueprint/archetypes/entity_behavior.hpp +130 -0
- include/rerun/blueprint/archetypes/force_center.hpp +115 -0
- include/rerun/blueprint/archetypes/force_collision_radius.hpp +141 -0
- include/rerun/blueprint/archetypes/force_link.hpp +136 -0
- include/rerun/blueprint/archetypes/force_many_body.hpp +124 -0
- include/rerun/blueprint/archetypes/force_position.hpp +132 -0
- include/rerun/blueprint/archetypes/line_grid3d.hpp +178 -0
- include/rerun/blueprint/archetypes/map_background.hpp +104 -0
- include/rerun/blueprint/archetypes/map_zoom.hpp +103 -0
- include/rerun/blueprint/archetypes/near_clip_plane.hpp +109 -0
- include/rerun/blueprint/archetypes/panel_blueprint.hpp +95 -0
- include/rerun/blueprint/archetypes/plot_legend.hpp +118 -0
- include/rerun/blueprint/archetypes/scalar_axis.hpp +116 -0
- include/rerun/blueprint/archetypes/tensor_scalar_mapping.hpp +146 -0
- include/rerun/blueprint/archetypes/tensor_slice_selection.hpp +167 -0
- include/rerun/blueprint/archetypes/tensor_view_fit.hpp +95 -0
- include/rerun/blueprint/archetypes/view_blueprint.hpp +170 -0
- include/rerun/blueprint/archetypes/view_contents.hpp +142 -0
- include/rerun/blueprint/archetypes/viewport_blueprint.hpp +200 -0
- include/rerun/blueprint/archetypes/visible_time_ranges.hpp +116 -0
- include/rerun/blueprint/archetypes/visual_bounds2d.hpp +109 -0
- include/rerun/blueprint/archetypes/visualizer_overrides.hpp +113 -0
- include/rerun/blueprint/archetypes.hpp +29 -0
- include/rerun/blueprint/components/active_tab.hpp +82 -0
- include/rerun/blueprint/components/apply_latest_at.hpp +79 -0
- include/rerun/blueprint/components/auto_layout.hpp +77 -0
- include/rerun/blueprint/components/auto_views.hpp +77 -0
- include/rerun/blueprint/components/background_kind.hpp +66 -0
- include/rerun/blueprint/components/column_share.hpp +78 -0
- include/rerun/blueprint/components/component_column_selector.hpp +81 -0
- include/rerun/blueprint/components/container_kind.hpp +65 -0
- include/rerun/blueprint/components/corner2d.hpp +64 -0
- include/rerun/blueprint/components/enabled.hpp +77 -0
- include/rerun/blueprint/components/filter_by_range.hpp +74 -0
- include/rerun/blueprint/components/filter_is_not_null.hpp +77 -0
- include/rerun/blueprint/components/force_distance.hpp +82 -0
- include/rerun/blueprint/components/force_iterations.hpp +82 -0
- include/rerun/blueprint/components/force_strength.hpp +82 -0
- include/rerun/blueprint/components/grid_columns.hpp +78 -0
- include/rerun/blueprint/components/grid_spacing.hpp +78 -0
- include/rerun/blueprint/components/included_content.hpp +86 -0
- include/rerun/blueprint/components/lock_range_during_zoom.hpp +82 -0
- include/rerun/blueprint/components/map_provider.hpp +64 -0
- include/rerun/blueprint/components/near_clip_plane.hpp +82 -0
- include/rerun/blueprint/components/panel_state.hpp +61 -0
- include/rerun/blueprint/components/query_expression.hpp +89 -0
- include/rerun/blueprint/components/root_container.hpp +77 -0
- include/rerun/blueprint/components/row_share.hpp +78 -0
- include/rerun/blueprint/components/selected_columns.hpp +76 -0
- include/rerun/blueprint/components/tensor_dimension_index_slider.hpp +90 -0
- include/rerun/blueprint/components/timeline_name.hpp +76 -0
- include/rerun/blueprint/components/view_class.hpp +76 -0
- include/rerun/blueprint/components/view_fit.hpp +61 -0
- include/rerun/blueprint/components/view_maximized.hpp +79 -0
- include/rerun/blueprint/components/view_origin.hpp +81 -0
- include/rerun/blueprint/components/viewer_recommendation_hash.hpp +82 -0
- include/rerun/blueprint/components/visible_time_range.hpp +77 -0
- include/rerun/blueprint/components/visual_bounds2d.hpp +74 -0
- include/rerun/blueprint/components/visualizer_override.hpp +86 -0
- include/rerun/blueprint/components/zoom_level.hpp +78 -0
- include/rerun/blueprint/components.hpp +41 -0
- include/rerun/blueprint/datatypes/component_column_selector.hpp +61 -0
- include/rerun/blueprint/datatypes/filter_by_range.hpp +59 -0
- include/rerun/blueprint/datatypes/filter_is_not_null.hpp +61 -0
- include/rerun/blueprint/datatypes/selected_columns.hpp +62 -0
- include/rerun/blueprint/datatypes/tensor_dimension_index_slider.hpp +63 -0
- include/rerun/blueprint/datatypes.hpp +9 -0
- include/rerun/c/arrow_c_data_interface.h +111 -0
- include/rerun/c/compiler_utils.h +10 -0
- include/rerun/c/rerun.h +627 -0
- include/rerun/c/sdk_info.h +28 -0
- include/rerun/collection.hpp +496 -0
- include/rerun/collection_adapter.hpp +43 -0
- include/rerun/collection_adapter_builtins.hpp +138 -0
- include/rerun/compiler_utils.hpp +61 -0
- include/rerun/component_batch.hpp +163 -0
- include/rerun/component_column.hpp +111 -0
- include/rerun/component_descriptor.hpp +142 -0
- include/rerun/component_type.hpp +35 -0
- include/rerun/components/aggregation_policy.hpp +76 -0
- include/rerun/components/albedo_factor.hpp +74 -0
- include/rerun/components/annotation_context.hpp +102 -0
- include/rerun/components/axis_length.hpp +74 -0
- include/rerun/components/blob.hpp +73 -0
- include/rerun/components/class_id.hpp +71 -0
- include/rerun/components/clear_is_recursive.hpp +75 -0
- include/rerun/components/color.hpp +99 -0
- include/rerun/components/colormap.hpp +99 -0
- include/rerun/components/depth_meter.hpp +84 -0
- include/rerun/components/draw_order.hpp +79 -0
- include/rerun/components/entity_path.hpp +83 -0
- include/rerun/components/fill_mode.hpp +72 -0
- include/rerun/components/fill_ratio.hpp +79 -0
- include/rerun/components/gamma_correction.hpp +80 -0
- include/rerun/components/geo_line_string.hpp +63 -0
- include/rerun/components/graph_edge.hpp +75 -0
- include/rerun/components/graph_node.hpp +79 -0
- include/rerun/components/graph_type.hpp +57 -0
- include/rerun/components/half_size2d.hpp +91 -0
- include/rerun/components/half_size3d.hpp +95 -0
- include/rerun/components/image_buffer.hpp +86 -0
- include/rerun/components/image_format.hpp +84 -0
- include/rerun/components/image_plane_distance.hpp +77 -0
- include/rerun/components/interactive.hpp +76 -0
- include/rerun/components/keypoint_id.hpp +74 -0
- include/rerun/components/lat_lon.hpp +89 -0
- include/rerun/components/length.hpp +77 -0
- include/rerun/components/line_strip2d.hpp +73 -0
- include/rerun/components/line_strip3d.hpp +73 -0
- include/rerun/components/magnification_filter.hpp +63 -0
- include/rerun/components/marker_shape.hpp +82 -0
- include/rerun/components/marker_size.hpp +74 -0
- include/rerun/components/media_type.hpp +157 -0
- include/rerun/components/name.hpp +83 -0
- include/rerun/components/opacity.hpp +77 -0
- include/rerun/components/pinhole_projection.hpp +94 -0
- include/rerun/components/plane3d.hpp +75 -0
- include/rerun/components/pose_rotation_axis_angle.hpp +73 -0
- include/rerun/components/pose_rotation_quat.hpp +71 -0
- include/rerun/components/pose_scale3d.hpp +102 -0
- include/rerun/components/pose_transform_mat3x3.hpp +87 -0
- include/rerun/components/pose_translation3d.hpp +96 -0
- include/rerun/components/position2d.hpp +86 -0
- include/rerun/components/position3d.hpp +90 -0
- include/rerun/components/radius.hpp +98 -0
- include/rerun/components/range1d.hpp +75 -0
- include/rerun/components/resolution.hpp +88 -0
- include/rerun/components/rotation_axis_angle.hpp +72 -0
- include/rerun/components/rotation_quat.hpp +71 -0
- include/rerun/components/scalar.hpp +76 -0
- include/rerun/components/scale3d.hpp +102 -0
- include/rerun/components/series_visible.hpp +76 -0
- include/rerun/components/show_labels.hpp +79 -0
- include/rerun/components/stroke_width.hpp +74 -0
- include/rerun/components/tensor_data.hpp +94 -0
- include/rerun/components/tensor_dimension_index_selection.hpp +77 -0
- include/rerun/components/tensor_height_dimension.hpp +71 -0
- include/rerun/components/tensor_width_dimension.hpp +71 -0
- include/rerun/components/texcoord2d.hpp +101 -0
- include/rerun/components/text.hpp +83 -0
- include/rerun/components/text_log_level.hpp +110 -0
- include/rerun/components/timestamp.hpp +76 -0
- include/rerun/components/transform_mat3x3.hpp +92 -0
- include/rerun/components/transform_relation.hpp +66 -0
- include/rerun/components/translation3d.hpp +96 -0
- include/rerun/components/triangle_indices.hpp +85 -0
- include/rerun/components/value_range.hpp +78 -0
- include/rerun/components/vector2d.hpp +92 -0
- include/rerun/components/vector3d.hpp +96 -0
- include/rerun/components/video_timestamp.hpp +120 -0
- include/rerun/components/view_coordinates.hpp +346 -0
- include/rerun/components/visible.hpp +74 -0
- include/rerun/components.hpp +77 -0
- include/rerun/config.hpp +52 -0
- include/rerun/datatypes/angle.hpp +76 -0
- include/rerun/datatypes/annotation_info.hpp +76 -0
- include/rerun/datatypes/blob.hpp +67 -0
- include/rerun/datatypes/bool.hpp +57 -0
- include/rerun/datatypes/channel_datatype.hpp +87 -0
- include/rerun/datatypes/class_description.hpp +92 -0
- include/rerun/datatypes/class_description_map_elem.hpp +69 -0
- include/rerun/datatypes/class_id.hpp +62 -0
- include/rerun/datatypes/color_model.hpp +68 -0
- include/rerun/datatypes/dvec2d.hpp +76 -0
- include/rerun/datatypes/entity_path.hpp +60 -0
- include/rerun/datatypes/float32.hpp +62 -0
- include/rerun/datatypes/float64.hpp +62 -0
- include/rerun/datatypes/image_format.hpp +107 -0
- include/rerun/datatypes/keypoint_id.hpp +63 -0
- include/rerun/datatypes/keypoint_pair.hpp +65 -0
- include/rerun/datatypes/mat3x3.hpp +105 -0
- include/rerun/datatypes/mat4x4.hpp +119 -0
- include/rerun/datatypes/pixel_format.hpp +142 -0
- include/rerun/datatypes/plane3d.hpp +60 -0
- include/rerun/datatypes/quaternion.hpp +110 -0
- include/rerun/datatypes/range1d.hpp +59 -0
- include/rerun/datatypes/range2d.hpp +55 -0
- include/rerun/datatypes/rgba32.hpp +94 -0
- include/rerun/datatypes/rotation_axis_angle.hpp +67 -0
- include/rerun/datatypes/tensor_buffer.hpp +529 -0
- include/rerun/datatypes/tensor_data.hpp +100 -0
- include/rerun/datatypes/tensor_dimension_index_selection.hpp +58 -0
- include/rerun/datatypes/tensor_dimension_selection.hpp +56 -0
- include/rerun/datatypes/time_int.hpp +62 -0
- include/rerun/datatypes/time_range.hpp +55 -0
- include/rerun/datatypes/time_range_boundary.hpp +175 -0
- include/rerun/datatypes/uint16.hpp +62 -0
- include/rerun/datatypes/uint32.hpp +62 -0
- include/rerun/datatypes/uint64.hpp +62 -0
- include/rerun/datatypes/utf8.hpp +76 -0
- include/rerun/datatypes/utf8pair.hpp +62 -0
- include/rerun/datatypes/uuid.hpp +60 -0
- include/rerun/datatypes/uvec2d.hpp +76 -0
- include/rerun/datatypes/uvec3d.hpp +80 -0
- include/rerun/datatypes/uvec4d.hpp +59 -0
- include/rerun/datatypes/vec2d.hpp +76 -0
- include/rerun/datatypes/vec3d.hpp +80 -0
- include/rerun/datatypes/vec4d.hpp +84 -0
- include/rerun/datatypes/video_timestamp.hpp +67 -0
- include/rerun/datatypes/view_coordinates.hpp +87 -0
- include/rerun/datatypes/visible_time_range.hpp +57 -0
- include/rerun/datatypes.hpp +51 -0
- include/rerun/demo_utils.hpp +75 -0
- include/rerun/entity_path.hpp +20 -0
- include/rerun/error.hpp +180 -0
- include/rerun/half.hpp +10 -0
- include/rerun/image_utils.hpp +187 -0
- include/rerun/indicator_component.hpp +59 -0
- include/rerun/loggable.hpp +54 -0
- include/rerun/recording_stream.hpp +960 -0
- include/rerun/rerun_sdk_export.hpp +25 -0
- include/rerun/result.hpp +86 -0
- include/rerun/rotation3d.hpp +33 -0
- include/rerun/sdk_info.hpp +20 -0
- include/rerun/spawn.hpp +21 -0
- include/rerun/spawn_options.hpp +57 -0
- include/rerun/string_utils.hpp +16 -0
- include/rerun/third_party/cxxopts.hpp +2198 -0
- include/rerun/time_column.hpp +288 -0
- include/rerun/timeline.hpp +38 -0
- include/rerun/type_traits.hpp +40 -0
- include/rerun.hpp +86 -0
- lib/cmake/axel/axel-config.cmake +45 -0
- lib/cmake/axel/axelTargets-release.cmake +19 -0
- lib/cmake/axel/axelTargets.cmake +108 -0
- lib/cmake/momentum/FindFbxSdk.cmake +115 -0
- lib/cmake/momentum/Findre2.cmake +52 -0
- lib/cmake/momentum/momentum-config.cmake +67 -0
- lib/cmake/momentum/momentumTargets-release.cmake +259 -0
- lib/cmake/momentum/momentumTargets.cmake +385 -0
- lib/cmake/rerun_sdk/rerun_sdkConfig.cmake +70 -0
- lib/cmake/rerun_sdk/rerun_sdkConfigVersion.cmake +83 -0
- lib/cmake/rerun_sdk/rerun_sdkTargets-release.cmake +19 -0
- lib/cmake/rerun_sdk/rerun_sdkTargets.cmake +108 -0
- lib/libarrow.a +0 -0
- lib/libarrow_bundled_dependencies.a +0 -0
- lib/libaxel.a +0 -0
- lib/libmomentum_app_utils.a +0 -0
- lib/libmomentum_character.a +0 -0
- lib/libmomentum_character_sequence_solver.a +0 -0
- lib/libmomentum_character_solver.a +0 -0
- lib/libmomentum_common.a +0 -0
- lib/libmomentum_diff_ik.a +0 -0
- lib/libmomentum_io.a +0 -0
- lib/libmomentum_io_common.a +0 -0
- lib/libmomentum_io_fbx.a +0 -0
- lib/libmomentum_io_gltf.a +0 -0
- lib/libmomentum_io_legacy_json.a +0 -0
- lib/libmomentum_io_marker.a +0 -0
- lib/libmomentum_io_motion.a +0 -0
- lib/libmomentum_io_shape.a +0 -0
- lib/libmomentum_io_skeleton.a +0 -0
- lib/libmomentum_io_urdf.a +0 -0
- lib/libmomentum_marker_tracker.a +0 -0
- lib/libmomentum_math.a +0 -0
- lib/libmomentum_online_qr.a +0 -0
- lib/libmomentum_process_markers.a +0 -0
- lib/libmomentum_rerun.a +0 -0
- lib/libmomentum_simd_constraints.a +0 -0
- lib/libmomentum_simd_generalized_loss.a +0 -0
- lib/libmomentum_skeleton.a +0 -0
- lib/libmomentum_solver.a +0 -0
- lib/librerun_c__macos_arm64.a +0 -0
- lib/librerun_sdk.a +0 -0
- pymomentum/axel.cpython-312-darwin.so +0 -0
- pymomentum/backend/__init__.py +16 -0
- pymomentum/backend/skel_state_backend.py +631 -0
- pymomentum/backend/trs_backend.py +889 -0
- pymomentum/backend/utils.py +224 -0
- pymomentum/geometry.cpython-312-darwin.so +0 -0
- pymomentum/marker_tracking.cpython-312-darwin.so +0 -0
- pymomentum/quaternion.py +740 -0
- pymomentum/skel_state.py +514 -0
- pymomentum/solver.cpython-312-darwin.so +0 -0
- pymomentum/solver2.cpython-312-darwin.so +0 -0
- pymomentum/torch/character.py +868 -0
- pymomentum/torch/parameter_limits.py +494 -0
- pymomentum/torch/utility.py +20 -0
- pymomentum/trs.py +535 -0
- pymomentum_cpu-0.1.93.post0.dist-info/METADATA +126 -0
- pymomentum_cpu-0.1.93.post0.dist-info/RECORD +517 -0
- pymomentum_cpu-0.1.93.post0.dist-info/WHEEL +5 -0
- pymomentum_cpu-0.1.93.post0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,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,176 @@
|
|
|
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/mesh_state.h>
|
|
11
|
+
#include <momentum/character_solver/fwd.h>
|
|
12
|
+
#include <momentum/character_solver/skeleton_error_function.h>
|
|
13
|
+
#include <momentum/math/fwd.h>
|
|
14
|
+
|
|
15
|
+
#include <Eigen/Dense>
|
|
16
|
+
|
|
17
|
+
#include <queue>
|
|
18
|
+
#include <vector>
|
|
19
|
+
|
|
20
|
+
namespace momentum {
|
|
21
|
+
|
|
22
|
+
/// Error function for character height constraints
|
|
23
|
+
///
|
|
24
|
+
/// This error function measures the height of a character mesh by projecting
|
|
25
|
+
/// all vertices onto a specified "up" direction and computing the difference
|
|
26
|
+
/// between the maximum and minimum projections.
|
|
27
|
+
///
|
|
28
|
+
/// IMPORTANT: Unlike most error functions, this one only depends on specific
|
|
29
|
+
/// active parameters that are automatically determined in the constructor.
|
|
30
|
+
/// Specifically, it uses blend shape, face expression, and scale parameters only
|
|
31
|
+
/// (not pose parameters). The error function achieves this by zeroing out all
|
|
32
|
+
/// inactive parameters before computing the skeleton and mesh state. This allows
|
|
33
|
+
/// us to constrain height independent of pose, e.g. the solver doesn't try to fix
|
|
34
|
+
/// height by having the character bend over.
|
|
35
|
+
template <typename T>
|
|
36
|
+
class HeightErrorFunctionT : public SkeletonErrorFunctionT<T> {
|
|
37
|
+
public:
|
|
38
|
+
/// Construct a height error function
|
|
39
|
+
/// @param character The character to measure height for
|
|
40
|
+
/// @param targetHeight The target height for the character (required)
|
|
41
|
+
/// @param upDirection The direction to measure height along (defaults to Y-axis)
|
|
42
|
+
/// @param k Number of vertices to average for min/max height calculation (defaults to 1)
|
|
43
|
+
///
|
|
44
|
+
/// This error function automatically uses blend shape, face expression, and
|
|
45
|
+
/// scale parameters only. All other parameters (pose, etc.) are kept inactive.
|
|
46
|
+
explicit HeightErrorFunctionT(
|
|
47
|
+
const Character& character,
|
|
48
|
+
T targetHeight,
|
|
49
|
+
const Eigen::Vector3<T>& upDirection = Eigen::Vector3<T>::UnitY(),
|
|
50
|
+
size_t k = 1);
|
|
51
|
+
~HeightErrorFunctionT() override;
|
|
52
|
+
|
|
53
|
+
HeightErrorFunctionT(const HeightErrorFunctionT& other) = delete;
|
|
54
|
+
HeightErrorFunctionT(HeightErrorFunctionT&& other) noexcept = delete;
|
|
55
|
+
HeightErrorFunctionT& operator=(const HeightErrorFunctionT& other) = delete;
|
|
56
|
+
HeightErrorFunctionT& operator=(HeightErrorFunctionT&& other) = delete;
|
|
57
|
+
|
|
58
|
+
[[nodiscard]] double getError(
|
|
59
|
+
const ModelParametersT<T>& modelParameters,
|
|
60
|
+
const SkeletonStateT<T>& state,
|
|
61
|
+
const MeshStateT<T>& meshState) final;
|
|
62
|
+
|
|
63
|
+
double getGradient(
|
|
64
|
+
const ModelParametersT<T>& modelParameters,
|
|
65
|
+
const SkeletonStateT<T>& state,
|
|
66
|
+
const MeshStateT<T>& meshState,
|
|
67
|
+
Eigen::Ref<Eigen::VectorX<T>> gradient) final;
|
|
68
|
+
|
|
69
|
+
double getJacobian(
|
|
70
|
+
const ModelParametersT<T>& modelParameters,
|
|
71
|
+
const SkeletonStateT<T>& state,
|
|
72
|
+
const MeshStateT<T>& meshState,
|
|
73
|
+
Eigen::Ref<Eigen::MatrixX<T>> jacobian,
|
|
74
|
+
Eigen::Ref<Eigen::VectorX<T>> residual,
|
|
75
|
+
int& usedRows) final;
|
|
76
|
+
|
|
77
|
+
[[nodiscard]] size_t getJacobianSize() const final;
|
|
78
|
+
|
|
79
|
+
/// Set the target height
|
|
80
|
+
/// @param height The desired height
|
|
81
|
+
void setTargetHeight(T height);
|
|
82
|
+
|
|
83
|
+
/// Get the target height
|
|
84
|
+
[[nodiscard]] T getTargetHeight() const {
|
|
85
|
+
return targetHeight_;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/// Set the up direction for height measurement
|
|
89
|
+
/// @param upDirection The direction to measure height along (will be normalized)
|
|
90
|
+
void setUpDirection(const Eigen::Vector3<T>& upDirection);
|
|
91
|
+
|
|
92
|
+
/// Get the up direction
|
|
93
|
+
[[nodiscard]] const Eigen::Vector3<T>& getUpDirection() const {
|
|
94
|
+
return upDirection_;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/// Get the character
|
|
98
|
+
[[nodiscard]] const Character* getCharacter() const override {
|
|
99
|
+
return &character_;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/// Override to indicate this function does NOT require mesh state
|
|
103
|
+
/// (we maintain our own meshes)
|
|
104
|
+
[[nodiscard]] bool needsMesh() const override {
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
private:
|
|
109
|
+
/// Create a copy of model parameters with inactive parameters zeroed out
|
|
110
|
+
/// @param modelParameters The input parameters
|
|
111
|
+
/// @return Modified parameters with only active parameters
|
|
112
|
+
[[nodiscard]] ModelParametersT<T> applyActiveParameters(
|
|
113
|
+
const ModelParametersT<T>& modelParameters) const;
|
|
114
|
+
|
|
115
|
+
/// Result of height calculation
|
|
116
|
+
struct HeightResult {
|
|
117
|
+
T height{};
|
|
118
|
+
std::vector<size_t> minVertexIndices;
|
|
119
|
+
std::vector<T> minVertexWeights;
|
|
120
|
+
std::vector<size_t> maxVertexIndices;
|
|
121
|
+
std::vector<T> maxVertexWeights;
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
/// Calculate the current height of the mesh
|
|
125
|
+
/// @return Height result containing the height and the min/max vertex indices
|
|
126
|
+
[[nodiscard]] HeightResult calculateHeight() const;
|
|
127
|
+
|
|
128
|
+
/// Calculate jacobian contribution from a vertex
|
|
129
|
+
template <typename Derived>
|
|
130
|
+
void calculateVertexJacobian(
|
|
131
|
+
size_t vertexIndex,
|
|
132
|
+
const Eigen::Vector3<T>& jacobianDirection,
|
|
133
|
+
Eigen::MatrixBase<Derived>& jacobian) const;
|
|
134
|
+
|
|
135
|
+
/// Calculate gradient contribution from a vertex
|
|
136
|
+
void calculateVertexGradient(
|
|
137
|
+
size_t vertexIndex,
|
|
138
|
+
const Eigen::Vector3<T>& gradientDirection,
|
|
139
|
+
Eigen::Ref<Eigen::VectorX<T>> gradient) const;
|
|
140
|
+
|
|
141
|
+
/// Calculate world space position derivative for blend shape parameters
|
|
142
|
+
void calculateDWorldPos(
|
|
143
|
+
size_t vertexIndex,
|
|
144
|
+
const Eigen::Vector3<T>& d_restPos,
|
|
145
|
+
Eigen::Vector3<T>& d_worldPos) const;
|
|
146
|
+
|
|
147
|
+
const Character& character_;
|
|
148
|
+
|
|
149
|
+
T targetHeight_;
|
|
150
|
+
Eigen::Vector3<T> upDirection_;
|
|
151
|
+
size_t k_;
|
|
152
|
+
|
|
153
|
+
/// The set of active model parameters (blend shapes, face expressions, and scale)
|
|
154
|
+
///
|
|
155
|
+
/// This is automatically set up in the constructor and determines which parameters
|
|
156
|
+
/// affect the height measurement. Inactive parameters are zeroed out before
|
|
157
|
+
/// computing the skeleton and mesh state.
|
|
158
|
+
ParameterSet activeModelParams_;
|
|
159
|
+
|
|
160
|
+
/// Internal skeleton state for skinning (computed from active parameters only)
|
|
161
|
+
///
|
|
162
|
+
/// This is updated in getError/getGradient/getJacobian by zeroing out all
|
|
163
|
+
/// inactive parameters from the input model parameters. This ensures derivatives
|
|
164
|
+
/// w.r.t. inactive parameters are automatically zero.
|
|
165
|
+
mutable SkeletonStateT<T> skeletonState_;
|
|
166
|
+
|
|
167
|
+
/// Internal mesh state (updated using skeletonState_ and active parameters only)
|
|
168
|
+
///
|
|
169
|
+
/// We maintain our own mesh state because we use skeletonState_ (computed from
|
|
170
|
+
/// active parameters only) rather than the state parameter passed to
|
|
171
|
+
/// getError/getGradient/getJacobian. This is marked mutable so we can update
|
|
172
|
+
/// it in const methods like getError.
|
|
173
|
+
mutable MeshStateT<T> meshState_;
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
} // namespace momentum
|
|
@@ -0,0 +1,111 @@
|
|
|
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/types.h>
|
|
13
|
+
|
|
14
|
+
namespace momentum {
|
|
15
|
+
|
|
16
|
+
/// Constraint that enforces a distance relationship between two points attached to different
|
|
17
|
+
/// joints.
|
|
18
|
+
///
|
|
19
|
+
/// Each point is specified by a joint index and an offset in the local coordinate system of that
|
|
20
|
+
/// joint.
|
|
21
|
+
template <typename T>
|
|
22
|
+
struct JointToJointDistanceConstraintT {
|
|
23
|
+
/// Index of the first joint.
|
|
24
|
+
size_t joint1 = kInvalidIndex;
|
|
25
|
+
|
|
26
|
+
/// Offset from joint1 in the local coordinate system of joint1.
|
|
27
|
+
Vector3<T> offset1 = Vector3<T>::Zero();
|
|
28
|
+
|
|
29
|
+
/// Index of the second joint.
|
|
30
|
+
size_t joint2 = kInvalidIndex;
|
|
31
|
+
|
|
32
|
+
/// Offset from joint2 in the local coordinate system of joint2.
|
|
33
|
+
Vector3<T> offset2 = Vector3<T>::Zero();
|
|
34
|
+
|
|
35
|
+
/// Target distance between the two points (in world space).
|
|
36
|
+
T targetDistance = T(0);
|
|
37
|
+
|
|
38
|
+
/// Weight for this constraint.
|
|
39
|
+
T weight = T(1);
|
|
40
|
+
|
|
41
|
+
template <typename T2>
|
|
42
|
+
JointToJointDistanceConstraintT<T2> cast() const {
|
|
43
|
+
return {
|
|
44
|
+
this->joint1,
|
|
45
|
+
this->offset1.template cast<T2>(),
|
|
46
|
+
this->joint2,
|
|
47
|
+
this->offset2.template cast<T2>(),
|
|
48
|
+
static_cast<T2>(this->targetDistance),
|
|
49
|
+
static_cast<T2>(this->weight)};
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
/// Error function that penalizes deviation from a target distance between two points attached to
|
|
54
|
+
/// different joints.
|
|
55
|
+
///
|
|
56
|
+
/// This is useful for enforcing distance constraints between different parts of a character, such
|
|
57
|
+
/// as maintaining a fixed distance between hands or ensuring two joints stay a certain distance
|
|
58
|
+
/// apart.
|
|
59
|
+
template <typename T>
|
|
60
|
+
class JointToJointDistanceErrorFunctionT : public SkeletonErrorFunctionT<T> {
|
|
61
|
+
public:
|
|
62
|
+
explicit JointToJointDistanceErrorFunctionT(const Skeleton& skel, const ParameterTransform& pt);
|
|
63
|
+
|
|
64
|
+
explicit JointToJointDistanceErrorFunctionT(const Character& character);
|
|
65
|
+
|
|
66
|
+
[[nodiscard]] double getError(
|
|
67
|
+
const ModelParametersT<T>& params,
|
|
68
|
+
const SkeletonStateT<T>& state,
|
|
69
|
+
const MeshStateT<T>& meshState) final;
|
|
70
|
+
|
|
71
|
+
double getGradient(
|
|
72
|
+
const ModelParametersT<T>& params,
|
|
73
|
+
const SkeletonStateT<T>& state,
|
|
74
|
+
const MeshStateT<T>& meshState,
|
|
75
|
+
Ref<VectorX<T>> gradient) override;
|
|
76
|
+
|
|
77
|
+
double getJacobian(
|
|
78
|
+
const ModelParametersT<T>& params,
|
|
79
|
+
const SkeletonStateT<T>& state,
|
|
80
|
+
const MeshStateT<T>& meshState,
|
|
81
|
+
Ref<MatrixX<T>> jacobian,
|
|
82
|
+
Ref<VectorX<T>> residual,
|
|
83
|
+
int& usedRows) override;
|
|
84
|
+
|
|
85
|
+
[[nodiscard]] size_t getJacobianSize() const final;
|
|
86
|
+
|
|
87
|
+
/// Add a constraint between two joints with local offsets.
|
|
88
|
+
void addConstraint(
|
|
89
|
+
size_t joint1,
|
|
90
|
+
const Vector3<T>& offset1,
|
|
91
|
+
size_t joint2,
|
|
92
|
+
const Vector3<T>& offset2,
|
|
93
|
+
T targetDistance,
|
|
94
|
+
T weight = T(1));
|
|
95
|
+
|
|
96
|
+
/// Clear all constraints.
|
|
97
|
+
void clearConstraints();
|
|
98
|
+
|
|
99
|
+
/// Get all constraints.
|
|
100
|
+
[[nodiscard]] const std::vector<JointToJointDistanceConstraintT<T>>& getConstraints() const {
|
|
101
|
+
return constraints_;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/// Default weight for distance constraints.
|
|
105
|
+
static constexpr T kDistanceWeight = 1e-2f;
|
|
106
|
+
|
|
107
|
+
private:
|
|
108
|
+
std::vector<JointToJointDistanceConstraintT<T>> constraints_;
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
} // 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
|