pymomentum-cpu 0.1.77.post26__cp313-cp313-macosx_15_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 +128 -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 +126 -0
- include/momentum/character_solver/vertex_vertex_distance_error_function.h +151 -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 +29 -0
- include/momentum/io/marker/conversions.h +57 -0
- include/momentum/io/marker/coordinate_system.h +30 -0
- include/momentum/io/marker/marker_io.h +54 -0
- include/momentum/io/marker/trc_io.h +27 -0
- include/momentum/io/motion/mmo_io.h +97 -0
- include/momentum/io/shape/blend_shape_io.h +70 -0
- include/momentum/io/shape/pose_shape_io.h +21 -0
- include/momentum/io/skeleton/locator_io.h +41 -0
- include/momentum/io/skeleton/mppca_io.h +26 -0
- include/momentum/io/skeleton/parameter_limits_io.h +25 -0
- include/momentum/io/skeleton/parameter_transform_io.h +41 -0
- include/momentum/io/skeleton/parameters_io.h +20 -0
- include/momentum/io/urdf/urdf_io.h +26 -0
- include/momentum/io/usd/usd_io.h +36 -0
- include/momentum/marker_tracking/app_utils.h +62 -0
- include/momentum/marker_tracking/marker_tracker.h +213 -0
- include/momentum/marker_tracking/process_markers.h +58 -0
- include/momentum/marker_tracking/tracker_utils.h +90 -0
- include/momentum/math/constants.h +82 -0
- include/momentum/math/covariance_matrix.h +84 -0
- include/momentum/math/fmt_eigen.h +23 -0
- include/momentum/math/fwd.h +132 -0
- include/momentum/math/generalized_loss.h +61 -0
- include/momentum/math/intersection.h +32 -0
- include/momentum/math/mesh.h +84 -0
- include/momentum/math/mppca.h +67 -0
- include/momentum/math/online_householder_qr.h +516 -0
- include/momentum/math/random-inl.h +404 -0
- include/momentum/math/random.h +310 -0
- include/momentum/math/simd_generalized_loss.h +40 -0
- include/momentum/math/transform.h +229 -0
- include/momentum/math/types.h +461 -0
- include/momentum/math/utility.h +251 -0
- include/momentum/rasterizer/camera.h +453 -0
- include/momentum/rasterizer/fwd.h +102 -0
- include/momentum/rasterizer/geometry.h +83 -0
- include/momentum/rasterizer/image.h +18 -0
- include/momentum/rasterizer/rasterizer.h +583 -0
- include/momentum/rasterizer/tensor.h +140 -0
- include/momentum/rasterizer/utility.h +268 -0
- include/momentum/simd/simd.h +221 -0
- include/momentum/solver/fwd.h +131 -0
- include/momentum/solver/gauss_newton_solver.h +136 -0
- include/momentum/solver/gradient_descent_solver.h +65 -0
- include/momentum/solver/solver.h +155 -0
- include/momentum/solver/solver_function.h +126 -0
- include/momentum/solver/subset_gauss_newton_solver.h +109 -0
- include/rerun/archetypes/annotation_context.hpp +157 -0
- include/rerun/archetypes/arrows2d.hpp +271 -0
- include/rerun/archetypes/arrows3d.hpp +257 -0
- include/rerun/archetypes/asset3d.hpp +262 -0
- include/rerun/archetypes/asset_video.hpp +275 -0
- include/rerun/archetypes/bar_chart.hpp +261 -0
- include/rerun/archetypes/boxes2d.hpp +293 -0
- include/rerun/archetypes/boxes3d.hpp +369 -0
- include/rerun/archetypes/capsules3d.hpp +333 -0
- include/rerun/archetypes/clear.hpp +180 -0
- include/rerun/archetypes/depth_image.hpp +425 -0
- include/rerun/archetypes/ellipsoids3d.hpp +384 -0
- include/rerun/archetypes/encoded_image.hpp +250 -0
- include/rerun/archetypes/geo_line_strings.hpp +166 -0
- include/rerun/archetypes/geo_points.hpp +177 -0
- include/rerun/archetypes/graph_edges.hpp +152 -0
- include/rerun/archetypes/graph_nodes.hpp +206 -0
- include/rerun/archetypes/image.hpp +434 -0
- include/rerun/archetypes/instance_poses3d.hpp +221 -0
- include/rerun/archetypes/line_strips2d.hpp +289 -0
- include/rerun/archetypes/line_strips3d.hpp +270 -0
- include/rerun/archetypes/mesh3d.hpp +387 -0
- include/rerun/archetypes/pinhole.hpp +385 -0
- include/rerun/archetypes/points2d.hpp +333 -0
- include/rerun/archetypes/points3d.hpp +369 -0
- include/rerun/archetypes/recording_properties.hpp +132 -0
- include/rerun/archetypes/scalar.hpp +170 -0
- include/rerun/archetypes/scalars.hpp +153 -0
- include/rerun/archetypes/segmentation_image.hpp +305 -0
- include/rerun/archetypes/series_line.hpp +274 -0
- include/rerun/archetypes/series_lines.hpp +271 -0
- include/rerun/archetypes/series_point.hpp +265 -0
- include/rerun/archetypes/series_points.hpp +251 -0
- include/rerun/archetypes/tensor.hpp +213 -0
- include/rerun/archetypes/text_document.hpp +200 -0
- include/rerun/archetypes/text_log.hpp +211 -0
- include/rerun/archetypes/transform3d.hpp +925 -0
- include/rerun/archetypes/video_frame_reference.hpp +295 -0
- include/rerun/archetypes/view_coordinates.hpp +393 -0
- include/rerun/archetypes.hpp +43 -0
- include/rerun/arrow_utils.hpp +32 -0
- include/rerun/as_components.hpp +90 -0
- include/rerun/blueprint/archetypes/background.hpp +113 -0
- include/rerun/blueprint/archetypes/container_blueprint.hpp +259 -0
- include/rerun/blueprint/archetypes/dataframe_query.hpp +178 -0
- include/rerun/blueprint/archetypes/entity_behavior.hpp +130 -0
- include/rerun/blueprint/archetypes/force_center.hpp +115 -0
- include/rerun/blueprint/archetypes/force_collision_radius.hpp +141 -0
- include/rerun/blueprint/archetypes/force_link.hpp +136 -0
- include/rerun/blueprint/archetypes/force_many_body.hpp +124 -0
- include/rerun/blueprint/archetypes/force_position.hpp +132 -0
- include/rerun/blueprint/archetypes/line_grid3d.hpp +178 -0
- include/rerun/blueprint/archetypes/map_background.hpp +104 -0
- include/rerun/blueprint/archetypes/map_zoom.hpp +103 -0
- include/rerun/blueprint/archetypes/near_clip_plane.hpp +109 -0
- include/rerun/blueprint/archetypes/panel_blueprint.hpp +95 -0
- include/rerun/blueprint/archetypes/plot_legend.hpp +118 -0
- include/rerun/blueprint/archetypes/scalar_axis.hpp +116 -0
- include/rerun/blueprint/archetypes/tensor_scalar_mapping.hpp +146 -0
- include/rerun/blueprint/archetypes/tensor_slice_selection.hpp +167 -0
- include/rerun/blueprint/archetypes/tensor_view_fit.hpp +95 -0
- include/rerun/blueprint/archetypes/view_blueprint.hpp +170 -0
- include/rerun/blueprint/archetypes/view_contents.hpp +142 -0
- include/rerun/blueprint/archetypes/viewport_blueprint.hpp +200 -0
- include/rerun/blueprint/archetypes/visible_time_ranges.hpp +116 -0
- include/rerun/blueprint/archetypes/visual_bounds2d.hpp +109 -0
- include/rerun/blueprint/archetypes/visualizer_overrides.hpp +113 -0
- include/rerun/blueprint/archetypes.hpp +29 -0
- include/rerun/blueprint/components/active_tab.hpp +82 -0
- include/rerun/blueprint/components/apply_latest_at.hpp +79 -0
- include/rerun/blueprint/components/auto_layout.hpp +77 -0
- include/rerun/blueprint/components/auto_views.hpp +77 -0
- include/rerun/blueprint/components/background_kind.hpp +66 -0
- include/rerun/blueprint/components/column_share.hpp +78 -0
- include/rerun/blueprint/components/component_column_selector.hpp +81 -0
- include/rerun/blueprint/components/container_kind.hpp +65 -0
- include/rerun/blueprint/components/corner2d.hpp +64 -0
- include/rerun/blueprint/components/enabled.hpp +77 -0
- include/rerun/blueprint/components/filter_by_range.hpp +74 -0
- include/rerun/blueprint/components/filter_is_not_null.hpp +77 -0
- include/rerun/blueprint/components/force_distance.hpp +82 -0
- include/rerun/blueprint/components/force_iterations.hpp +82 -0
- include/rerun/blueprint/components/force_strength.hpp +82 -0
- include/rerun/blueprint/components/grid_columns.hpp +78 -0
- include/rerun/blueprint/components/grid_spacing.hpp +78 -0
- include/rerun/blueprint/components/included_content.hpp +86 -0
- include/rerun/blueprint/components/lock_range_during_zoom.hpp +82 -0
- include/rerun/blueprint/components/map_provider.hpp +64 -0
- include/rerun/blueprint/components/near_clip_plane.hpp +82 -0
- include/rerun/blueprint/components/panel_state.hpp +61 -0
- include/rerun/blueprint/components/query_expression.hpp +89 -0
- include/rerun/blueprint/components/root_container.hpp +77 -0
- include/rerun/blueprint/components/row_share.hpp +78 -0
- include/rerun/blueprint/components/selected_columns.hpp +76 -0
- include/rerun/blueprint/components/tensor_dimension_index_slider.hpp +90 -0
- include/rerun/blueprint/components/timeline_name.hpp +76 -0
- include/rerun/blueprint/components/view_class.hpp +76 -0
- include/rerun/blueprint/components/view_fit.hpp +61 -0
- include/rerun/blueprint/components/view_maximized.hpp +79 -0
- include/rerun/blueprint/components/view_origin.hpp +81 -0
- include/rerun/blueprint/components/viewer_recommendation_hash.hpp +82 -0
- include/rerun/blueprint/components/visible_time_range.hpp +77 -0
- include/rerun/blueprint/components/visual_bounds2d.hpp +74 -0
- include/rerun/blueprint/components/visualizer_override.hpp +86 -0
- include/rerun/blueprint/components/zoom_level.hpp +78 -0
- include/rerun/blueprint/components.hpp +41 -0
- include/rerun/blueprint/datatypes/component_column_selector.hpp +61 -0
- include/rerun/blueprint/datatypes/filter_by_range.hpp +59 -0
- include/rerun/blueprint/datatypes/filter_is_not_null.hpp +61 -0
- include/rerun/blueprint/datatypes/selected_columns.hpp +62 -0
- include/rerun/blueprint/datatypes/tensor_dimension_index_slider.hpp +63 -0
- include/rerun/blueprint/datatypes.hpp +9 -0
- include/rerun/c/arrow_c_data_interface.h +111 -0
- include/rerun/c/compiler_utils.h +10 -0
- include/rerun/c/rerun.h +627 -0
- include/rerun/c/sdk_info.h +28 -0
- include/rerun/collection.hpp +496 -0
- include/rerun/collection_adapter.hpp +43 -0
- include/rerun/collection_adapter_builtins.hpp +138 -0
- include/rerun/compiler_utils.hpp +61 -0
- include/rerun/component_batch.hpp +163 -0
- include/rerun/component_column.hpp +111 -0
- include/rerun/component_descriptor.hpp +142 -0
- include/rerun/component_type.hpp +35 -0
- include/rerun/components/aggregation_policy.hpp +76 -0
- include/rerun/components/albedo_factor.hpp +74 -0
- include/rerun/components/annotation_context.hpp +102 -0
- include/rerun/components/axis_length.hpp +74 -0
- include/rerun/components/blob.hpp +73 -0
- include/rerun/components/class_id.hpp +71 -0
- include/rerun/components/clear_is_recursive.hpp +75 -0
- include/rerun/components/color.hpp +99 -0
- include/rerun/components/colormap.hpp +99 -0
- include/rerun/components/depth_meter.hpp +84 -0
- include/rerun/components/draw_order.hpp +79 -0
- include/rerun/components/entity_path.hpp +83 -0
- include/rerun/components/fill_mode.hpp +72 -0
- include/rerun/components/fill_ratio.hpp +79 -0
- include/rerun/components/gamma_correction.hpp +80 -0
- include/rerun/components/geo_line_string.hpp +63 -0
- include/rerun/components/graph_edge.hpp +75 -0
- include/rerun/components/graph_node.hpp +79 -0
- include/rerun/components/graph_type.hpp +57 -0
- include/rerun/components/half_size2d.hpp +91 -0
- include/rerun/components/half_size3d.hpp +95 -0
- include/rerun/components/image_buffer.hpp +86 -0
- include/rerun/components/image_format.hpp +84 -0
- include/rerun/components/image_plane_distance.hpp +77 -0
- include/rerun/components/interactive.hpp +76 -0
- include/rerun/components/keypoint_id.hpp +74 -0
- include/rerun/components/lat_lon.hpp +89 -0
- include/rerun/components/length.hpp +77 -0
- include/rerun/components/line_strip2d.hpp +73 -0
- include/rerun/components/line_strip3d.hpp +73 -0
- include/rerun/components/magnification_filter.hpp +63 -0
- include/rerun/components/marker_shape.hpp +82 -0
- include/rerun/components/marker_size.hpp +74 -0
- include/rerun/components/media_type.hpp +157 -0
- include/rerun/components/name.hpp +83 -0
- include/rerun/components/opacity.hpp +77 -0
- include/rerun/components/pinhole_projection.hpp +94 -0
- include/rerun/components/plane3d.hpp +75 -0
- include/rerun/components/pose_rotation_axis_angle.hpp +73 -0
- include/rerun/components/pose_rotation_quat.hpp +71 -0
- include/rerun/components/pose_scale3d.hpp +102 -0
- include/rerun/components/pose_transform_mat3x3.hpp +87 -0
- include/rerun/components/pose_translation3d.hpp +96 -0
- include/rerun/components/position2d.hpp +86 -0
- include/rerun/components/position3d.hpp +90 -0
- include/rerun/components/radius.hpp +98 -0
- include/rerun/components/range1d.hpp +75 -0
- include/rerun/components/resolution.hpp +88 -0
- include/rerun/components/rotation_axis_angle.hpp +72 -0
- include/rerun/components/rotation_quat.hpp +71 -0
- include/rerun/components/scalar.hpp +76 -0
- include/rerun/components/scale3d.hpp +102 -0
- include/rerun/components/series_visible.hpp +76 -0
- include/rerun/components/show_labels.hpp +79 -0
- include/rerun/components/stroke_width.hpp +74 -0
- include/rerun/components/tensor_data.hpp +94 -0
- include/rerun/components/tensor_dimension_index_selection.hpp +77 -0
- include/rerun/components/tensor_height_dimension.hpp +71 -0
- include/rerun/components/tensor_width_dimension.hpp +71 -0
- include/rerun/components/texcoord2d.hpp +101 -0
- include/rerun/components/text.hpp +83 -0
- include/rerun/components/text_log_level.hpp +110 -0
- include/rerun/components/timestamp.hpp +76 -0
- include/rerun/components/transform_mat3x3.hpp +92 -0
- include/rerun/components/transform_relation.hpp +66 -0
- include/rerun/components/translation3d.hpp +96 -0
- include/rerun/components/triangle_indices.hpp +85 -0
- include/rerun/components/value_range.hpp +78 -0
- include/rerun/components/vector2d.hpp +92 -0
- include/rerun/components/vector3d.hpp +96 -0
- include/rerun/components/video_timestamp.hpp +120 -0
- include/rerun/components/view_coordinates.hpp +346 -0
- include/rerun/components/visible.hpp +74 -0
- include/rerun/components.hpp +77 -0
- include/rerun/config.hpp +52 -0
- include/rerun/datatypes/angle.hpp +76 -0
- include/rerun/datatypes/annotation_info.hpp +76 -0
- include/rerun/datatypes/blob.hpp +67 -0
- include/rerun/datatypes/bool.hpp +57 -0
- include/rerun/datatypes/channel_datatype.hpp +87 -0
- include/rerun/datatypes/class_description.hpp +92 -0
- include/rerun/datatypes/class_description_map_elem.hpp +69 -0
- include/rerun/datatypes/class_id.hpp +62 -0
- include/rerun/datatypes/color_model.hpp +68 -0
- include/rerun/datatypes/dvec2d.hpp +76 -0
- include/rerun/datatypes/entity_path.hpp +60 -0
- include/rerun/datatypes/float32.hpp +62 -0
- include/rerun/datatypes/float64.hpp +62 -0
- include/rerun/datatypes/image_format.hpp +107 -0
- include/rerun/datatypes/keypoint_id.hpp +63 -0
- include/rerun/datatypes/keypoint_pair.hpp +65 -0
- include/rerun/datatypes/mat3x3.hpp +105 -0
- include/rerun/datatypes/mat4x4.hpp +119 -0
- include/rerun/datatypes/pixel_format.hpp +142 -0
- include/rerun/datatypes/plane3d.hpp +60 -0
- include/rerun/datatypes/quaternion.hpp +110 -0
- include/rerun/datatypes/range1d.hpp +59 -0
- include/rerun/datatypes/range2d.hpp +55 -0
- include/rerun/datatypes/rgba32.hpp +94 -0
- include/rerun/datatypes/rotation_axis_angle.hpp +67 -0
- include/rerun/datatypes/tensor_buffer.hpp +529 -0
- include/rerun/datatypes/tensor_data.hpp +100 -0
- include/rerun/datatypes/tensor_dimension_index_selection.hpp +58 -0
- include/rerun/datatypes/tensor_dimension_selection.hpp +56 -0
- include/rerun/datatypes/time_int.hpp +62 -0
- include/rerun/datatypes/time_range.hpp +55 -0
- include/rerun/datatypes/time_range_boundary.hpp +175 -0
- include/rerun/datatypes/uint16.hpp +62 -0
- include/rerun/datatypes/uint32.hpp +62 -0
- include/rerun/datatypes/uint64.hpp +62 -0
- include/rerun/datatypes/utf8.hpp +76 -0
- include/rerun/datatypes/utf8pair.hpp +62 -0
- include/rerun/datatypes/uuid.hpp +60 -0
- include/rerun/datatypes/uvec2d.hpp +76 -0
- include/rerun/datatypes/uvec3d.hpp +80 -0
- include/rerun/datatypes/uvec4d.hpp +59 -0
- include/rerun/datatypes/vec2d.hpp +76 -0
- include/rerun/datatypes/vec3d.hpp +80 -0
- include/rerun/datatypes/vec4d.hpp +84 -0
- include/rerun/datatypes/video_timestamp.hpp +67 -0
- include/rerun/datatypes/view_coordinates.hpp +87 -0
- include/rerun/datatypes/visible_time_range.hpp +57 -0
- include/rerun/datatypes.hpp +51 -0
- include/rerun/demo_utils.hpp +75 -0
- include/rerun/entity_path.hpp +20 -0
- include/rerun/error.hpp +180 -0
- include/rerun/half.hpp +10 -0
- include/rerun/image_utils.hpp +187 -0
- include/rerun/indicator_component.hpp +59 -0
- include/rerun/loggable.hpp +54 -0
- include/rerun/recording_stream.hpp +960 -0
- include/rerun/rerun_sdk_export.hpp +25 -0
- include/rerun/result.hpp +86 -0
- include/rerun/rotation3d.hpp +33 -0
- include/rerun/sdk_info.hpp +20 -0
- include/rerun/spawn.hpp +21 -0
- include/rerun/spawn_options.hpp +57 -0
- include/rerun/string_utils.hpp +16 -0
- include/rerun/third_party/cxxopts.hpp +2198 -0
- include/rerun/time_column.hpp +288 -0
- include/rerun/timeline.hpp +38 -0
- include/rerun/type_traits.hpp +40 -0
- include/rerun.hpp +86 -0
- lib/cmake/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-313-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-313-darwin.so +0 -0
- pymomentum/marker_tracking.cpython-313-darwin.so +0 -0
- pymomentum/quaternion.py +740 -0
- pymomentum/skel_state.py +514 -0
- pymomentum/solver.cpython-313-darwin.so +0 -0
- pymomentum/solver2.cpython-313-darwin.so +0 -0
- pymomentum/torch/character.py +809 -0
- pymomentum/torch/parameter_limits.py +494 -0
- pymomentum/torch/utility.py +20 -0
- pymomentum/trs.py +535 -0
- pymomentum_cpu-0.1.77.post26.dist-info/METADATA +208 -0
- pymomentum_cpu-0.1.77.post26.dist-info/RECORD +512 -0
- pymomentum_cpu-0.1.77.post26.dist-info/WHEEL +5 -0
- pymomentum_cpu-0.1.77.post26.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/character/fwd.h>
|
|
11
|
+
#include <momentum/character/parameter_transform.h>
|
|
12
|
+
#include <momentum/character/types.h>
|
|
13
|
+
#include <momentum/character_sequence_solver/fwd.h>
|
|
14
|
+
#include <momentum/character_solver/fwd.h>
|
|
15
|
+
#include <momentum/solver/solver_function.h>
|
|
16
|
+
|
|
17
|
+
#include <atomic>
|
|
18
|
+
|
|
19
|
+
namespace momentum {
|
|
20
|
+
|
|
21
|
+
inline constexpr size_t kAllFrames = SIZE_MAX;
|
|
22
|
+
|
|
23
|
+
template <typename T>
|
|
24
|
+
class SequenceSolverFunctionT : public SolverFunctionT<T> {
|
|
25
|
+
public:
|
|
26
|
+
SequenceSolverFunctionT(
|
|
27
|
+
const Character& character,
|
|
28
|
+
const ParameterTransformT<T>& parameterTransform,
|
|
29
|
+
const ParameterSet& universal,
|
|
30
|
+
size_t nFrames);
|
|
31
|
+
~SequenceSolverFunctionT() override;
|
|
32
|
+
|
|
33
|
+
double getError(const Eigen::VectorX<T>& parameters) final;
|
|
34
|
+
|
|
35
|
+
double getGradient(const Eigen::VectorX<T>& parameters, Eigen::VectorX<T>& gradient) final;
|
|
36
|
+
|
|
37
|
+
double getJacobian(
|
|
38
|
+
const Eigen::VectorX<T>& parameters,
|
|
39
|
+
Eigen::MatrixX<T>& jacobian,
|
|
40
|
+
Eigen::VectorX<T>& residual,
|
|
41
|
+
size_t& actualRows) final;
|
|
42
|
+
|
|
43
|
+
void updateParameters(Eigen::VectorX<T>& parameters, const Eigen::VectorX<T>& gradient) final;
|
|
44
|
+
void setEnabledParameters(const ParameterSet& parameterSet) final;
|
|
45
|
+
|
|
46
|
+
[[nodiscard]] const ParameterSet& getUniversalParameterSet() const {
|
|
47
|
+
return universalParameters_;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
[[nodiscard]] bool needsMesh() const {
|
|
51
|
+
return needsMesh_;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Passing in the special frame index kAllFrames will add the error function to every frame; this
|
|
55
|
+
// is convenient for e.g. limit errors but requires that the error function be stateless. Note:
|
|
56
|
+
// you are allowed to call this in a multithreaded context but you must ensure the frame indices
|
|
57
|
+
// are different between the different threads.
|
|
58
|
+
void addErrorFunction(size_t frame, std::shared_ptr<SkeletonErrorFunctionT<T>> errorFunction);
|
|
59
|
+
void addSequenceErrorFunction(
|
|
60
|
+
size_t startFrame,
|
|
61
|
+
std::shared_ptr<SequenceErrorFunctionT<T>> errorFunction);
|
|
62
|
+
|
|
63
|
+
[[nodiscard]] size_t getNumFrames() const {
|
|
64
|
+
return states_.size();
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
[[nodiscard]] const ModelParametersT<T>& getFrameParameters(size_t frame) const {
|
|
68
|
+
return frameParameters_[frame];
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
void setFrameParameters(size_t frame, const ModelParametersT<T>& parameters);
|
|
72
|
+
[[nodiscard]] ModelParametersT<T> getUniversalParameters() const;
|
|
73
|
+
[[nodiscard]] Eigen::VectorX<T> getJoinedParameterVector() const;
|
|
74
|
+
|
|
75
|
+
/// Returns a joined parameter vector from a span of frame parameters.
|
|
76
|
+
///
|
|
77
|
+
/// @param frameParameters A span of frame parameters, where each element is a ModelParametersT<T>
|
|
78
|
+
/// object representing the parameters for a single frame.
|
|
79
|
+
///
|
|
80
|
+
/// @return An Eigen::VectorX<T> object containing the joined parameter vector of all frames.
|
|
81
|
+
[[nodiscard]] Eigen::VectorX<T> getJoinedParameterVectorFromFrameParameters(
|
|
82
|
+
gsl::span<const ModelParametersT<T>> frameParameters) const;
|
|
83
|
+
|
|
84
|
+
void setJoinedParameterVector(const Eigen::VectorX<T>& joinedParameters);
|
|
85
|
+
|
|
86
|
+
[[nodiscard]] const Skeleton* getSkeleton() const;
|
|
87
|
+
[[nodiscard]] const Character& getCharacter() const;
|
|
88
|
+
|
|
89
|
+
[[nodiscard]] const ParameterTransformT<T>* getParameterTransform() const {
|
|
90
|
+
return ¶meterTransform_;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
[[nodiscard]] const auto& getErrorFunctions(size_t iFrame) const {
|
|
94
|
+
return perFrameErrorFunctions_.at(iFrame);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
[[nodiscard]] const auto& getSequenceErrorFunctions(size_t iFrame) const {
|
|
98
|
+
return sequenceErrorFunctions_.at(iFrame);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
private:
|
|
102
|
+
void setFrameParametersFromJoinedParameterVector(const Eigen::VectorX<T>& parameters);
|
|
103
|
+
|
|
104
|
+
private:
|
|
105
|
+
const Character& character_;
|
|
106
|
+
const ParameterTransformT<T>& parameterTransform_;
|
|
107
|
+
std::vector<SkeletonStateT<T>> states_;
|
|
108
|
+
std::vector<MeshStateT<T>> meshStates_;
|
|
109
|
+
VectorX<bool> activeJointParams_;
|
|
110
|
+
|
|
111
|
+
std::vector<ModelParametersT<T>> frameParameters_;
|
|
112
|
+
|
|
113
|
+
void updateParameterSets(const ParameterSet& activeParams);
|
|
114
|
+
|
|
115
|
+
// Indices of parameters that are active and solved per-frame:
|
|
116
|
+
std::vector<Eigen::Index> perFrameParameterIndices_;
|
|
117
|
+
|
|
118
|
+
// Indices of parameters that are active and solved universally:
|
|
119
|
+
std::vector<Eigen::Index> universalParameterIndices_;
|
|
120
|
+
|
|
121
|
+
const ParameterSet universalParameters_;
|
|
122
|
+
|
|
123
|
+
std::vector<std::vector<std::shared_ptr<SkeletonErrorFunctionT<T>>>> perFrameErrorFunctions_;
|
|
124
|
+
std::vector<std::vector<std::shared_ptr<SequenceErrorFunctionT<T>>>> sequenceErrorFunctions_;
|
|
125
|
+
|
|
126
|
+
std::atomic<size_t> numTotalPerFrameErrorFunctions_ = 0;
|
|
127
|
+
std::atomic<size_t> numTotalSequenceErrorFunctions_ = 0;
|
|
128
|
+
|
|
129
|
+
bool needsMesh_ = false;
|
|
130
|
+
|
|
131
|
+
friend class SequenceSolverT<T>;
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
} // namespace momentum
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/character/skeleton_state.h>
|
|
11
|
+
#include <momentum/character_sequence_solver/fwd.h>
|
|
12
|
+
#include <momentum/character_sequence_solver/sequence_error_function.h>
|
|
13
|
+
|
|
14
|
+
namespace momentum {
|
|
15
|
+
|
|
16
|
+
/// Error function that penalizes the difference between the current skeleton state and the next
|
|
17
|
+
/// skeleton state. Note that by default this penalizes any difference between adjacent skeleton
|
|
18
|
+
/// states. If we specify a target state, this will be applied as an offset to the current state,
|
|
19
|
+
/// that is, the error will penalize the difference between offset * currentState and nextState.
|
|
20
|
+
template <typename T>
|
|
21
|
+
class StateSequenceErrorFunctionT : public SequenceErrorFunctionT<T> {
|
|
22
|
+
public:
|
|
23
|
+
StateSequenceErrorFunctionT(const Skeleton& skel, const ParameterTransform& pt);
|
|
24
|
+
explicit StateSequenceErrorFunctionT(const Character& character);
|
|
25
|
+
|
|
26
|
+
[[nodiscard]] size_t numFrames() const final {
|
|
27
|
+
return 2;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
double getError(
|
|
31
|
+
gsl::span<const ModelParametersT<T>> modelParameters,
|
|
32
|
+
gsl::span<const SkeletonStateT<T>> skelStates,
|
|
33
|
+
gsl::span<const MeshStateT<T>> /* meshStates */) const final;
|
|
34
|
+
double getGradient(
|
|
35
|
+
gsl::span<const ModelParametersT<T>> modelParameters,
|
|
36
|
+
gsl::span<const SkeletonStateT<T>> skelStates,
|
|
37
|
+
gsl::span<const MeshStateT<T>> /* meshStates */,
|
|
38
|
+
Eigen::Ref<Eigen::VectorX<T>> gradient) const final;
|
|
39
|
+
|
|
40
|
+
// modelParameters: [numFrames() * parameterTransform] parameter vector
|
|
41
|
+
// skelStates: [numFrames()] array of skeleton states
|
|
42
|
+
// jacobian: [getJacobianSize()] x [numFrames() * parameterTransform] Jacobian matrix
|
|
43
|
+
// residual: [getJacobianSize()] residual vector.
|
|
44
|
+
double getJacobian(
|
|
45
|
+
gsl::span<const ModelParametersT<T>> modelParameters,
|
|
46
|
+
gsl::span<const SkeletonStateT<T>> skelStates,
|
|
47
|
+
gsl::span<const MeshStateT<T>> /* meshStates */,
|
|
48
|
+
Eigen::Ref<Eigen::MatrixX<T>> jacobian,
|
|
49
|
+
Eigen::Ref<Eigen::VectorX<T>> residual,
|
|
50
|
+
int& usedRows) const final;
|
|
51
|
+
|
|
52
|
+
[[nodiscard]] size_t getJacobianSize() const final;
|
|
53
|
+
|
|
54
|
+
/// Set the target weights for each joint's position and rotation.
|
|
55
|
+
/// @param posWeight Per-joint position weights.
|
|
56
|
+
/// @param rotWeight Per-joint rotation weights.
|
|
57
|
+
void setTargetWeights(const Eigen::VectorX<T>& posWeight, const Eigen::VectorX<T>& rotWeight);
|
|
58
|
+
|
|
59
|
+
/// Set the target position weights for each joint.
|
|
60
|
+
/// @param posWeight Per-joint position weights.
|
|
61
|
+
void setPositionTargetWeights(const Eigen::VectorX<T>& posWeight);
|
|
62
|
+
|
|
63
|
+
/// Set the target rotation weights for each joint.
|
|
64
|
+
/// @param rotWeight Per-joint rotation weights.
|
|
65
|
+
void setRotationTargetWeights(const Eigen::VectorX<T>& rotWeight);
|
|
66
|
+
void setWeights(const float posWeight, const float rotationWeight) {
|
|
67
|
+
posWgt_ = posWeight;
|
|
68
|
+
rotWgt_ = rotationWeight;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
void reset();
|
|
72
|
+
|
|
73
|
+
[[nodiscard]] const Eigen::VectorX<T>& getPositionWeights() const {
|
|
74
|
+
return targetPositionWeights_;
|
|
75
|
+
}
|
|
76
|
+
[[nodiscard]] const Eigen::VectorX<T>& getRotationWeights() const {
|
|
77
|
+
return targetRotationWeights_;
|
|
78
|
+
}
|
|
79
|
+
[[nodiscard]] const T& getPositionWeight() const {
|
|
80
|
+
return posWgt_;
|
|
81
|
+
}
|
|
82
|
+
[[nodiscard]] const T& getRotationWeight() const {
|
|
83
|
+
return rotWgt_;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/// Set the target state for the skeleton.
|
|
87
|
+
///
|
|
88
|
+
/// This function allows specifying a target state that the skeleton should aim to achieve.
|
|
89
|
+
/// The target state is represented as a list of transforms, one for each joint.
|
|
90
|
+
/// The error will penalize the difference between offset * currentState and nextState.
|
|
91
|
+
/// @param target A list of transforms representing the target state for each joint.
|
|
92
|
+
void setTargetState(TransformListT<T> target);
|
|
93
|
+
|
|
94
|
+
private:
|
|
95
|
+
Eigen::VectorX<T> targetPositionWeights_;
|
|
96
|
+
Eigen::VectorX<T> targetRotationWeights_;
|
|
97
|
+
|
|
98
|
+
TransformListT<T> targetState_;
|
|
99
|
+
|
|
100
|
+
T posWgt_;
|
|
101
|
+
T rotWgt_;
|
|
102
|
+
|
|
103
|
+
public:
|
|
104
|
+
// weights for the error functions
|
|
105
|
+
static constexpr T kPositionWeight = 1e-3f;
|
|
106
|
+
static constexpr T kOrientationWeight = 1e+0f;
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
} // namespace momentum
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/character/character.h>
|
|
11
|
+
#include <momentum/character/skeleton_state.h>
|
|
12
|
+
#include <momentum/character_sequence_solver/fwd.h>
|
|
13
|
+
#include <momentum/character_sequence_solver/sequence_error_function.h>
|
|
14
|
+
#include <momentum/character_solver/vertex_error_function.h>
|
|
15
|
+
#include <momentum/math/mesh.h>
|
|
16
|
+
|
|
17
|
+
#include <gsl/span>
|
|
18
|
+
|
|
19
|
+
namespace momentum {
|
|
20
|
+
|
|
21
|
+
/// Constraint structure for vertex velocity.
|
|
22
|
+
template <typename T>
|
|
23
|
+
struct VertexVelocityConstraintT {
|
|
24
|
+
int vertexIndex = -1;
|
|
25
|
+
T weight = 1;
|
|
26
|
+
Eigen::Vector3<T> targetVelocity;
|
|
27
|
+
|
|
28
|
+
template <typename T2>
|
|
29
|
+
VertexVelocityConstraintT<T2> cast() const {
|
|
30
|
+
return {
|
|
31
|
+
this->vertexIndex, static_cast<T2>(this->weight), this->targetVelocity.template cast<T2>()};
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
/// Error function that penalizes differences in vertex velocity between source and target motion.
|
|
36
|
+
/// This function computes vertex velocities by taking the difference between consecutive frames
|
|
37
|
+
/// and penalizes deviations from target vertex velocities. It combines the sequence aspect of
|
|
38
|
+
/// StateSequenceErrorFunction with vertex constraints from VertexErrorFunction.
|
|
39
|
+
template <typename T>
|
|
40
|
+
class VertexSequenceErrorFunctionT : public SequenceErrorFunctionT<T> {
|
|
41
|
+
public:
|
|
42
|
+
explicit VertexSequenceErrorFunctionT(const Character& character);
|
|
43
|
+
|
|
44
|
+
[[nodiscard]] size_t numFrames() const final {
|
|
45
|
+
return 2;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
double getError(
|
|
49
|
+
gsl::span<const ModelParametersT<T>> modelParameters,
|
|
50
|
+
gsl::span<const SkeletonStateT<T>> skelStates,
|
|
51
|
+
gsl::span<const MeshStateT<T>> meshStates) const final;
|
|
52
|
+
double getGradient(
|
|
53
|
+
gsl::span<const ModelParametersT<T>> modelParameters,
|
|
54
|
+
gsl::span<const SkeletonStateT<T>> skelStates,
|
|
55
|
+
gsl::span<const MeshStateT<T>> meshStates,
|
|
56
|
+
Eigen::Ref<Eigen::VectorX<T>> gradient) const final;
|
|
57
|
+
|
|
58
|
+
// modelParameters: [numFrames() * parameterTransform] parameter vector
|
|
59
|
+
// skelStates: [numFrames()] array of skeleton states
|
|
60
|
+
// jacobian: [getJacobianSize()] x [numFrames() * parameterTransform] Jacobian matrix
|
|
61
|
+
// residual: [getJacobianSize()] residual vector.
|
|
62
|
+
double getJacobian(
|
|
63
|
+
gsl::span<const ModelParametersT<T>> modelParameters,
|
|
64
|
+
gsl::span<const SkeletonStateT<T>> skelStates,
|
|
65
|
+
gsl::span<const MeshStateT<T>> meshStates,
|
|
66
|
+
Eigen::Ref<Eigen::MatrixX<T>> jacobian,
|
|
67
|
+
Eigen::Ref<Eigen::VectorX<T>> residual,
|
|
68
|
+
int& usedRows) const final;
|
|
69
|
+
|
|
70
|
+
[[nodiscard]] size_t getJacobianSize() const final;
|
|
71
|
+
|
|
72
|
+
/// Add a vertex velocity constraint.
|
|
73
|
+
/// @param vertexIndex Index of the vertex to constrain.
|
|
74
|
+
/// @param weight Weight for this constraint.
|
|
75
|
+
/// @param targetVelocity Target velocity for the vertex.
|
|
76
|
+
void addConstraint(int vertexIndex, T weight, const Eigen::Vector3<T>& targetVelocity);
|
|
77
|
+
|
|
78
|
+
/// Clear all vertex velocity constraints.
|
|
79
|
+
void clearConstraints();
|
|
80
|
+
|
|
81
|
+
/// Get all vertex velocity constraints.
|
|
82
|
+
[[nodiscard]] const std::vector<VertexVelocityConstraintT<T>>& getConstraints() const {
|
|
83
|
+
return constraints_;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/// Get the number of constraints.
|
|
87
|
+
[[nodiscard]] size_t numConstraints() const {
|
|
88
|
+
return constraints_.size();
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/// Get the character reference.
|
|
92
|
+
[[nodiscard]] const Character& getCharacter() const {
|
|
93
|
+
return character_;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
static constexpr T kVelocityWeight = 1e-3f;
|
|
97
|
+
|
|
98
|
+
private:
|
|
99
|
+
/// Calculate gradient for a single vertex velocity constraint.
|
|
100
|
+
double calculateVelocityGradient(
|
|
101
|
+
gsl::span<const SkeletonStateT<T>> skelStates,
|
|
102
|
+
const VertexVelocityConstraintT<T>& constraint,
|
|
103
|
+
Eigen::Ref<Eigen::VectorX<T>> gradient) const;
|
|
104
|
+
|
|
105
|
+
/// Calculate Jacobian for a single vertex velocity constraint.
|
|
106
|
+
double calculateVelocityJacobian(
|
|
107
|
+
gsl::span<const SkeletonStateT<T>> skelStates,
|
|
108
|
+
const VertexVelocityConstraintT<T>& constraint,
|
|
109
|
+
Eigen::Ref<Eigen::MatrixX<T>> jacobian,
|
|
110
|
+
Eigen::Ref<Eigen::VectorX<T>> residual,
|
|
111
|
+
Eigen::Index startRow) const;
|
|
112
|
+
|
|
113
|
+
/// Update meshes for both frames.
|
|
114
|
+
void updateMeshes(
|
|
115
|
+
gsl::span<const ModelParametersT<T>> modelParameters,
|
|
116
|
+
gsl::span<const SkeletonStateT<T>> skelStates) const;
|
|
117
|
+
|
|
118
|
+
const Character& character_;
|
|
119
|
+
std::vector<VertexVelocityConstraintT<T>> constraints_;
|
|
120
|
+
|
|
121
|
+
// Meshes for the two frames
|
|
122
|
+
mutable std::unique_ptr<MeshT<T>> neutralMesh_;
|
|
123
|
+
mutable std::unique_ptr<MeshT<T>> restMesh_; // Single rest mesh used for both frames
|
|
124
|
+
mutable std::unique_ptr<MeshT<T>> posedMesh0_;
|
|
125
|
+
mutable std::unique_ptr<MeshT<T>> posedMesh1_;
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
} // namespace momentum
|
|
@@ -0,0 +1,112 @@
|
|
|
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
|
+
/// Aim constraint data: a local ray (point, dir) passes a global point target
|
|
15
|
+
template <typename T>
|
|
16
|
+
struct AimDataT : ConstraintData {
|
|
17
|
+
/// The origin of the local ray
|
|
18
|
+
Vector3<T> localPoint;
|
|
19
|
+
/// The direction of the local ray
|
|
20
|
+
Vector3<T> localDir;
|
|
21
|
+
/// The global aim target
|
|
22
|
+
Vector3<T> globalTarget;
|
|
23
|
+
|
|
24
|
+
explicit AimDataT(
|
|
25
|
+
const Vector3<T>& inLocalPt,
|
|
26
|
+
const Vector3<T>& inLocalDir,
|
|
27
|
+
const Vector3<T>& inTarget,
|
|
28
|
+
size_t pIndex,
|
|
29
|
+
float w,
|
|
30
|
+
const std::string& n = {})
|
|
31
|
+
: ConstraintData(pIndex, w, n),
|
|
32
|
+
localPoint(inLocalPt),
|
|
33
|
+
localDir(inLocalDir.normalized()),
|
|
34
|
+
globalTarget(inTarget) {}
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/// The AimDistErrorFunction computes the distance from the aim target point to an aim ray (an
|
|
38
|
+
/// original and a positive direction). The distance is minimized if the target lies on the ray (ie.
|
|
39
|
+
/// on the positive direction), or when the target point is close to the ray origin. Another way to
|
|
40
|
+
/// look at this loss is to minimize the element-wise differences between the aim vector's
|
|
41
|
+
/// projection to the ray direction and the aim vector itself (therefore a shorter aim vector also
|
|
42
|
+
/// has a smaller norm).
|
|
43
|
+
template <typename T>
|
|
44
|
+
class AimDistErrorFunctionT : public ConstraintErrorFunctionT<T, AimDataT<T>, 3, 2, 1> {
|
|
45
|
+
public:
|
|
46
|
+
explicit AimDistErrorFunctionT(
|
|
47
|
+
const Skeleton& skel,
|
|
48
|
+
const ParameterTransform& pt,
|
|
49
|
+
const T& lossAlpha = GeneralizedLossT<T>::kL2,
|
|
50
|
+
const T& lossC = T(1))
|
|
51
|
+
: ConstraintErrorFunctionT<T, AimDataT<T>, 3, 2, 1>(skel, pt, lossAlpha, lossC) {}
|
|
52
|
+
|
|
53
|
+
explicit AimDistErrorFunctionT(
|
|
54
|
+
const Character& character,
|
|
55
|
+
const T& lossAlpha = GeneralizedLossT<T>::kL2,
|
|
56
|
+
const T& lossC = T(1))
|
|
57
|
+
: AimDistErrorFunctionT<T>(
|
|
58
|
+
character.skeleton,
|
|
59
|
+
character.parameterTransform,
|
|
60
|
+
lossAlpha,
|
|
61
|
+
lossC) {}
|
|
62
|
+
|
|
63
|
+
/// Default constant weight in MarkerErrorFunction (same as fixed axis). This can be used for
|
|
64
|
+
/// backwards compatibility in setWeight().
|
|
65
|
+
static constexpr T kLegacyWeight = 1e-1f;
|
|
66
|
+
|
|
67
|
+
protected:
|
|
68
|
+
void evalFunction(
|
|
69
|
+
size_t constrIndex,
|
|
70
|
+
const JointStateT<T>& state,
|
|
71
|
+
Vector3<T>& f,
|
|
72
|
+
optional_ref<std::array<Vector3<T>, 2>> v = {},
|
|
73
|
+
optional_ref<std::array<Eigen::Matrix3<T>, 2>> dfdv = {}) const final;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
/// The AimDirErrorFunction computes the element-wise differences between the normalized aim vector
|
|
77
|
+
/// and the ray direction. Because the aim vector is normalized, the distance to the ray origin
|
|
78
|
+
/// doesn't affect the loss as in AimDistErrorFunction. When the aim vector is close to zero length,
|
|
79
|
+
/// we will clamp it to zero.
|
|
80
|
+
template <typename T>
|
|
81
|
+
class AimDirErrorFunctionT : public ConstraintErrorFunctionT<T, AimDataT<T>, 3, 2, 1> {
|
|
82
|
+
public:
|
|
83
|
+
explicit AimDirErrorFunctionT(
|
|
84
|
+
const Skeleton& skel,
|
|
85
|
+
const ParameterTransform& pt,
|
|
86
|
+
const T& lossAlpha = GeneralizedLossT<T>::kL2,
|
|
87
|
+
const T& lossC = T(1))
|
|
88
|
+
: ConstraintErrorFunctionT<T, AimDataT<T>, 3, 2, 1>(skel, pt, lossAlpha, lossC) {}
|
|
89
|
+
|
|
90
|
+
explicit AimDirErrorFunctionT(
|
|
91
|
+
const Character& character,
|
|
92
|
+
const T& lossAlpha = GeneralizedLossT<T>::kL2,
|
|
93
|
+
const T& lossC = T(1))
|
|
94
|
+
: AimDirErrorFunctionT<T>(
|
|
95
|
+
character.skeleton,
|
|
96
|
+
character.parameterTransform,
|
|
97
|
+
lossAlpha,
|
|
98
|
+
lossC) {}
|
|
99
|
+
|
|
100
|
+
/// Default constant weight in MarkerErrorFunction (same as fixed axis). This can be used for
|
|
101
|
+
/// backwards compatibility in setWeight().
|
|
102
|
+
static constexpr T kLegacyWeight = 1e-1f;
|
|
103
|
+
|
|
104
|
+
protected:
|
|
105
|
+
void evalFunction(
|
|
106
|
+
size_t constrIndex,
|
|
107
|
+
const JointStateT<T>& state,
|
|
108
|
+
Vector3<T>& f,
|
|
109
|
+
optional_ref<std::array<Vector3<T>, 2>> v = {},
|
|
110
|
+
optional_ref<std::array<Eigen::Matrix3<T>, 2>> dfdv = {}) const final;
|
|
111
|
+
};
|
|
112
|
+
} // namespace momentum
|
|
@@ -0,0 +1,92 @@
|
|
|
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/collision_geometry.h>
|
|
11
|
+
#include <momentum/character/collision_geometry_state.h>
|
|
12
|
+
#include <momentum/character_solver/fwd.h>
|
|
13
|
+
#include <momentum/character_solver/skeleton_error_function.h>
|
|
14
|
+
|
|
15
|
+
#include <axel/Bvh.h>
|
|
16
|
+
|
|
17
|
+
#include <unordered_set>
|
|
18
|
+
#include <vector>
|
|
19
|
+
|
|
20
|
+
namespace momentum {
|
|
21
|
+
|
|
22
|
+
template <typename T>
|
|
23
|
+
class CollisionErrorFunctionT : public SkeletonErrorFunctionT<T> {
|
|
24
|
+
public:
|
|
25
|
+
explicit CollisionErrorFunctionT(
|
|
26
|
+
const Skeleton& skel,
|
|
27
|
+
const ParameterTransform& pt,
|
|
28
|
+
const CollisionGeometry& cg);
|
|
29
|
+
|
|
30
|
+
explicit CollisionErrorFunctionT(const Character& character);
|
|
31
|
+
|
|
32
|
+
[[nodiscard]] double getError(
|
|
33
|
+
const ModelParametersT<T>& params,
|
|
34
|
+
const SkeletonStateT<T>& state,
|
|
35
|
+
const MeshStateT<T>& meshState) final;
|
|
36
|
+
|
|
37
|
+
double getGradient(
|
|
38
|
+
const ModelParametersT<T>& params,
|
|
39
|
+
const SkeletonStateT<T>& state,
|
|
40
|
+
const MeshStateT<T>& meshState,
|
|
41
|
+
Ref<VectorX<T>> gradient) override;
|
|
42
|
+
|
|
43
|
+
double getJacobian(
|
|
44
|
+
const ModelParametersT<T>& /*unused*/,
|
|
45
|
+
const SkeletonStateT<T>& state,
|
|
46
|
+
const MeshStateT<T>& meshState,
|
|
47
|
+
Ref<MatrixX<T>> jacobian,
|
|
48
|
+
Ref<VectorX<T>> residual,
|
|
49
|
+
int& usedRows) override;
|
|
50
|
+
|
|
51
|
+
[[nodiscard]] size_t getJacobianSize() const final;
|
|
52
|
+
|
|
53
|
+
[[nodiscard]] std::vector<Vector2i> getCollisionPairs() const;
|
|
54
|
+
|
|
55
|
+
protected:
|
|
56
|
+
void updateCollisionPairs();
|
|
57
|
+
|
|
58
|
+
// Update collisionState_ and bvh_ given the new skeleton state.
|
|
59
|
+
void computeBroadPhase(const SkeletonStateT<T>& state);
|
|
60
|
+
|
|
61
|
+
using PairId = std::pair<size_t, size_t>;
|
|
62
|
+
|
|
63
|
+
struct PairHash {
|
|
64
|
+
std::size_t operator()(const std::pair<size_t, size_t>& p) const {
|
|
65
|
+
// Use the smaller value as the high-order bits and the larger value as the low-order bits
|
|
66
|
+
return (static_cast<uint64_t>(std::min(p.first, p.second)) << (sizeof(size_t) * 8 / 2)) |
|
|
67
|
+
std::max(p.first, p.second);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
struct PairEqual {
|
|
72
|
+
bool operator()(const PairId& a, const PairId& b) const {
|
|
73
|
+
return (a.first == b.first && a.second == b.second) ||
|
|
74
|
+
(a.first == b.second && a.second == b.first);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
const CollisionGeometry collisionGeometry_;
|
|
79
|
+
|
|
80
|
+
std::unordered_set<PairId, PairHash, PairEqual> excludingPairIds_;
|
|
81
|
+
|
|
82
|
+
size_t jacobianSize_ = 0;
|
|
83
|
+
|
|
84
|
+
CollisionGeometryStateT<T> collisionState_;
|
|
85
|
+
|
|
86
|
+
// weights for the error functions
|
|
87
|
+
static constexpr T kCollisionWeight = 5e-3f;
|
|
88
|
+
|
|
89
|
+
axel::Bvh<T> bvh_;
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
} // namespace momentum
|
|
@@ -0,0 +1,75 @@
|
|
|
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/collision_geometry.h>
|
|
11
|
+
#include <momentum/character/collision_geometry_state.h>
|
|
12
|
+
#include <momentum/character_solver/fwd.h>
|
|
13
|
+
#include <momentum/character_solver/skeleton_error_function.h>
|
|
14
|
+
|
|
15
|
+
namespace momentum {
|
|
16
|
+
|
|
17
|
+
/// NOTE: This is a resurrected version of the `CollisionErrorFunction` (previously updated by
|
|
18
|
+
/// D50818775). Its stateless nature makes it ideal for testing in multi-threaded settings.
|
|
19
|
+
///
|
|
20
|
+
/// Represents an error function that penalizes self-intersections between collision geometries of
|
|
21
|
+
/// the character.
|
|
22
|
+
///
|
|
23
|
+
/// The function pre-filters collision geometries to ignore those attached to the same joint, those
|
|
24
|
+
/// intersecting in the rest pose, or those very close in the rest pose.
|
|
25
|
+
template <typename T>
|
|
26
|
+
class CollisionErrorFunctionStatelessT : public SkeletonErrorFunctionT<T> {
|
|
27
|
+
public:
|
|
28
|
+
explicit CollisionErrorFunctionStatelessT(
|
|
29
|
+
const Skeleton& skel,
|
|
30
|
+
const ParameterTransform& pt,
|
|
31
|
+
const CollisionGeometry& cg);
|
|
32
|
+
|
|
33
|
+
explicit CollisionErrorFunctionStatelessT(const Character& character);
|
|
34
|
+
|
|
35
|
+
[[nodiscard]] double getError(
|
|
36
|
+
const ModelParametersT<T>& params,
|
|
37
|
+
const SkeletonStateT<T>& state,
|
|
38
|
+
const MeshStateT<T>& meshState) final;
|
|
39
|
+
|
|
40
|
+
double getGradient(
|
|
41
|
+
const ModelParametersT<T>& params,
|
|
42
|
+
const SkeletonStateT<T>& state,
|
|
43
|
+
const MeshStateT<T>& meshState,
|
|
44
|
+
Ref<VectorX<T>> gradient) override;
|
|
45
|
+
|
|
46
|
+
double getJacobian(
|
|
47
|
+
const ModelParametersT<T>& /*unused*/,
|
|
48
|
+
const SkeletonStateT<T>& state,
|
|
49
|
+
const MeshStateT<T>& meshState,
|
|
50
|
+
Ref<MatrixX<T>> jacobian,
|
|
51
|
+
Ref<VectorX<T>> residual,
|
|
52
|
+
int& usedRows) override;
|
|
53
|
+
|
|
54
|
+
[[nodiscard]] size_t getJacobianSize() const final;
|
|
55
|
+
|
|
56
|
+
[[nodiscard]] std::vector<Vector2i> getCollisionPairs() const;
|
|
57
|
+
|
|
58
|
+
protected:
|
|
59
|
+
void updateCollisionPairs();
|
|
60
|
+
|
|
61
|
+
const CollisionGeometry collisionGeometry;
|
|
62
|
+
|
|
63
|
+
// [0] and [1] index the collision geometry, [2] indexes the joint after
|
|
64
|
+
// which we can stop comparing as it's parent to both
|
|
65
|
+
std::vector<Vector3i> collisionPairs;
|
|
66
|
+
|
|
67
|
+
VectorX<bool> collisionActive;
|
|
68
|
+
|
|
69
|
+
CollisionGeometryStateT<T> collisionState;
|
|
70
|
+
|
|
71
|
+
// weights for the error functions
|
|
72
|
+
static constexpr T kCollisionWeight = 5e-3f;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
} // namespace momentum
|