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,67 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/character/types.h>
|
|
11
|
+
#include <momentum/math/types.h>
|
|
12
|
+
|
|
13
|
+
#include <cstdint>
|
|
14
|
+
#include <vector>
|
|
15
|
+
|
|
16
|
+
namespace momentum {
|
|
17
|
+
|
|
18
|
+
/// Maximum number of joints that can influence a single vertex
|
|
19
|
+
inline static constexpr uint32_t kMaxSkinJoints = 8;
|
|
20
|
+
|
|
21
|
+
/// Matrix type for storing joint indices that influence each vertex
|
|
22
|
+
///
|
|
23
|
+
/// Each row represents a vertex, and each column represents a joint influence.
|
|
24
|
+
/// The matrix has a fixed number of columns (kMaxSkinJoints) and a dynamic number of rows.
|
|
25
|
+
using IndexMatrix =
|
|
26
|
+
Eigen::Matrix<uint32_t, Eigen::Dynamic, kMaxSkinJoints, Eigen::AutoAlign | Eigen::RowMajor>;
|
|
27
|
+
|
|
28
|
+
/// Matrix type for storing weights of joint influences on each vertex
|
|
29
|
+
///
|
|
30
|
+
/// Each row represents a vertex, and each column represents the weight of a joint influence.
|
|
31
|
+
/// The matrix has a fixed number of columns (kMaxSkinJoints) and a dynamic number of rows.
|
|
32
|
+
using WeightMatrix =
|
|
33
|
+
Eigen::Matrix<float, Eigen::Dynamic, kMaxSkinJoints, Eigen::AutoAlign | Eigen::RowMajor>;
|
|
34
|
+
|
|
35
|
+
/// Stores skinning weights and joint indices for character mesh deformation
|
|
36
|
+
struct SkinWeights {
|
|
37
|
+
/// Joint indices that influence each vertex
|
|
38
|
+
///
|
|
39
|
+
/// Each row corresponds to a vertex, and each column contains the index of a joint
|
|
40
|
+
/// that influences that vertex. Unused influences are set to 0.
|
|
41
|
+
IndexMatrix index;
|
|
42
|
+
|
|
43
|
+
/// Weight of each joint's influence on each vertex
|
|
44
|
+
///
|
|
45
|
+
/// Each row corresponds to a vertex, and each column contains the weight of a joint's
|
|
46
|
+
/// influence on that vertex. Weights for a vertex typically sum to 1.0. Unused influences
|
|
47
|
+
/// are set to 0.0.
|
|
48
|
+
WeightMatrix weight;
|
|
49
|
+
|
|
50
|
+
/// Sets the skin weights from vectors of joint indices and weights
|
|
51
|
+
///
|
|
52
|
+
/// @param ind Vector of vectors containing joint indices for each vertex
|
|
53
|
+
/// @param wgt Vector of vectors containing weights for each vertex
|
|
54
|
+
/// @throws If ind.size() != wgt.size() (via MT_CHECK)
|
|
55
|
+
void set(const std::vector<std::vector<size_t>>& ind, const std::vector<std::vector<float>>& wgt);
|
|
56
|
+
|
|
57
|
+
/// Compares two SkinWeights objects for equality
|
|
58
|
+
///
|
|
59
|
+
/// Two SkinWeights objects are considered equal if their index and weight matrices
|
|
60
|
+
/// are approximately equal (using Eigen's isApprox method).
|
|
61
|
+
///
|
|
62
|
+
/// @param skinWeights The SkinWeights object to compare with
|
|
63
|
+
/// @return True if the objects are equal, false otherwise
|
|
64
|
+
bool operator==(const SkinWeights& skinWeights) const;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
} // namespace momentum
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/character/skin_weights.h>
|
|
11
|
+
#include <momentum/character/types.h>
|
|
12
|
+
#include <momentum/math/utility.h>
|
|
13
|
+
|
|
14
|
+
namespace momentum {
|
|
15
|
+
|
|
16
|
+
/// A skinned locator is a locator which can be attached to multiple bones.
|
|
17
|
+
/// The locator's position is defined relative to the rest pose of the character (and not
|
|
18
|
+
/// local to a single parent bone as with a regular Locator) and its position at runtime is
|
|
19
|
+
/// determined by blending the skinning transforms (using LBS).
|
|
20
|
+
///
|
|
21
|
+
/// The purpose of the SkinnedLocator is to model mocap markers attached to the actor's skin:
|
|
22
|
+
/// the location of points on e.g. the shoulder is more accurately modeled by blending
|
|
23
|
+
/// multiple transforms. In addition, the locator can be constrained to slide along the
|
|
24
|
+
/// surface of the mesh using e.g. the SkinnedLocatorTriangleErrorFunction.
|
|
25
|
+
///
|
|
26
|
+
/// Locators can be used for various purposes such as tracking specific points
|
|
27
|
+
/// on a character, defining constraints, or serving as targets for inverse kinematics.
|
|
28
|
+
struct SkinnedLocator {
|
|
29
|
+
/// Name identifier for the locator
|
|
30
|
+
std::string name;
|
|
31
|
+
|
|
32
|
+
/// Index of the parent joints in the skeleton. The final position of the locator
|
|
33
|
+
/// is determined by blending the transforms from each (valid) parent.
|
|
34
|
+
Eigen::Matrix<uint32_t, kMaxSkinJoints, 1> parents;
|
|
35
|
+
|
|
36
|
+
/// Skinning weight for each parent joint.
|
|
37
|
+
Eigen::Matrix<float, kMaxSkinJoints, 1> skinWeights;
|
|
38
|
+
|
|
39
|
+
/// Position relative to rest pose of the character
|
|
40
|
+
Vector3f position;
|
|
41
|
+
|
|
42
|
+
/// Influence weight of this locator when used in constraints
|
|
43
|
+
float weight;
|
|
44
|
+
|
|
45
|
+
/// Creates a locator with the specified properties
|
|
46
|
+
///
|
|
47
|
+
/// @param name Identifier for the locator
|
|
48
|
+
/// @param parents Indices of the parent joints
|
|
49
|
+
/// @param weights Skinning weights for the parent joints
|
|
50
|
+
/// @param weight Influence weight in constraints
|
|
51
|
+
SkinnedLocator(
|
|
52
|
+
const std::string& name = "uninitialized",
|
|
53
|
+
const Eigen::Matrix<uint32_t, kMaxSkinJoints, 1>& parents =
|
|
54
|
+
Eigen::Matrix<uint32_t, kMaxSkinJoints, 1>::Zero(),
|
|
55
|
+
const Eigen::Matrix<float, kMaxSkinJoints, 1>& skinWeights =
|
|
56
|
+
Eigen::Matrix<float, kMaxSkinJoints, 1>::Zero(),
|
|
57
|
+
const Vector3f& position = Vector3f::Zero(),
|
|
58
|
+
const float weight = 1.0f)
|
|
59
|
+
: name(name),
|
|
60
|
+
parents(parents),
|
|
61
|
+
skinWeights(skinWeights),
|
|
62
|
+
position(position),
|
|
63
|
+
weight(weight) {}
|
|
64
|
+
|
|
65
|
+
/// Compares two locators for equality, using approximate comparison for floating-point values
|
|
66
|
+
///
|
|
67
|
+
/// @param locator The locator to compare with
|
|
68
|
+
/// @return True if all properties are equal (or approximately equal for floating-point values)
|
|
69
|
+
inline bool operator==(const SkinnedLocator& locator) const {
|
|
70
|
+
return (
|
|
71
|
+
(name == locator.name) && (parents == locator.parents) &&
|
|
72
|
+
skinWeights.isApprox(locator.skinWeights) && position.isApprox(locator.position) &&
|
|
73
|
+
isApprox(weight, locator.weight));
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
/// A collection of locators attached to a skeleton
|
|
78
|
+
using SkinnedLocatorList = std::vector<SkinnedLocator>;
|
|
79
|
+
|
|
80
|
+
} // namespace momentum
|
|
@@ -0,0 +1,202 @@
|
|
|
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
|
+
//------------------------------------------------------------------------------
|
|
11
|
+
// Momentum specific Eigen defines
|
|
12
|
+
//------------------------------------------------------------------------------
|
|
13
|
+
|
|
14
|
+
#include <momentum/character/fwd.h>
|
|
15
|
+
|
|
16
|
+
#include <Eigen/Dense>
|
|
17
|
+
|
|
18
|
+
#include <array>
|
|
19
|
+
#include <string>
|
|
20
|
+
#include <tuple>
|
|
21
|
+
#include <vector>
|
|
22
|
+
|
|
23
|
+
namespace momentum {
|
|
24
|
+
|
|
25
|
+
inline constexpr size_t kParametersPerJoint = 7;
|
|
26
|
+
enum JointParameterNames { TX = 0, TY, TZ, RX, RY, RZ, SC };
|
|
27
|
+
inline constexpr std::array<const char*, kParametersPerJoint>
|
|
28
|
+
kJointParameterNames{"tx", "ty", "tz", "rx", "ry", "rz", "sc"};
|
|
29
|
+
|
|
30
|
+
template <typename T>
|
|
31
|
+
using JointVectorT = Eigen::Matrix<T, kParametersPerJoint, 1>;
|
|
32
|
+
using JointVector = JointVectorT<float>;
|
|
33
|
+
|
|
34
|
+
template <template <typename> typename Derived, typename EigenType>
|
|
35
|
+
struct EigenStrongType {
|
|
36
|
+
using Scalar = typename EigenType::Scalar;
|
|
37
|
+
|
|
38
|
+
EigenType v;
|
|
39
|
+
|
|
40
|
+
EigenStrongType() : v() {}
|
|
41
|
+
|
|
42
|
+
explicit EigenStrongType(::Eigen::Index size) : v(size) {}
|
|
43
|
+
|
|
44
|
+
template <typename Other>
|
|
45
|
+
/* implicit */ EigenStrongType(const ::Eigen::EigenBase<Other>& o) : v(o) {}
|
|
46
|
+
|
|
47
|
+
template <typename Other>
|
|
48
|
+
/* implicit */ EigenStrongType(::Eigen::EigenBase<Other>&& o) : v(std::move(o)) {}
|
|
49
|
+
|
|
50
|
+
template <typename Other>
|
|
51
|
+
EigenStrongType& operator=(const ::Eigen::EigenBase<Other>& o) {
|
|
52
|
+
v = o;
|
|
53
|
+
return *this;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
template <typename Other>
|
|
57
|
+
EigenStrongType& operator=(::Eigen::EigenBase<Other>&& o) {
|
|
58
|
+
v = std::move(o);
|
|
59
|
+
return *this;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
EIGEN_DEVICE_FUNC
|
|
63
|
+
EIGEN_STRONG_INLINE
|
|
64
|
+
auto&& operator()(::Eigen::Index i) {
|
|
65
|
+
return v(i);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
EIGEN_DEVICE_FUNC
|
|
69
|
+
EIGEN_STRONG_INLINE
|
|
70
|
+
auto&& operator()(::Eigen::Index i) const {
|
|
71
|
+
return v(i);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
EIGEN_DEVICE_FUNC
|
|
75
|
+
EIGEN_STRONG_INLINE
|
|
76
|
+
auto&& operator[](::Eigen::Index i) {
|
|
77
|
+
return v[i];
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
EIGEN_DEVICE_FUNC
|
|
81
|
+
EIGEN_STRONG_INLINE
|
|
82
|
+
auto&& operator[](::Eigen::Index i) const {
|
|
83
|
+
return v[i];
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
template <typename NewScalar>
|
|
87
|
+
[[nodiscard]] EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived<NewScalar> cast() const {
|
|
88
|
+
return v.template cast<NewScalar>();
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
[[nodiscard]] EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE auto size() const {
|
|
92
|
+
return v.size();
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
EIGEN_DEVICE_FUNC
|
|
96
|
+
static Derived<Scalar> Zero(::Eigen::Index size) {
|
|
97
|
+
return Derived<Scalar>(EigenType::Zero(size));
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
// a vector describing model parameters
|
|
102
|
+
template <typename T>
|
|
103
|
+
struct ModelParametersT : public EigenStrongType<ModelParametersT, ::Eigen::VectorX<T>> {
|
|
104
|
+
using t = ::Eigen::VectorX<T>;
|
|
105
|
+
using EigenStrongType<ModelParametersT, t>::EigenStrongType;
|
|
106
|
+
using EigenStrongType<ModelParametersT, t>::operator=;
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
using ModelParameters = ModelParametersT<float>;
|
|
110
|
+
using ModelParametersd = ModelParametersT<double>;
|
|
111
|
+
|
|
112
|
+
template <typename T>
|
|
113
|
+
struct BlendWeightsT : public EigenStrongType<BlendWeightsT, ::Eigen::VectorX<T>> {
|
|
114
|
+
using t = ::Eigen::VectorX<T>;
|
|
115
|
+
using EigenStrongType<BlendWeightsT, t>::EigenStrongType;
|
|
116
|
+
using EigenStrongType<BlendWeightsT, t>::operator=;
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
using BlendWeights = BlendWeightsT<float>;
|
|
120
|
+
using BlendWeightsd = BlendWeightsT<double>;
|
|
121
|
+
|
|
122
|
+
static_assert(
|
|
123
|
+
sizeof(BlendWeights) == sizeof(Eigen::VectorXf),
|
|
124
|
+
"Missing Empty Base Class Optimization");
|
|
125
|
+
static_assert(
|
|
126
|
+
sizeof(BlendWeightsd) == sizeof(Eigen::VectorXd),
|
|
127
|
+
"Missing Empty Base Class Optimization");
|
|
128
|
+
|
|
129
|
+
// A vector describing joint parameters, the vector has size numSkeletonJoints * kParametersPerJoint
|
|
130
|
+
// e.g. in case of a character body model with 159 joints, the joint parameters vector will have the
|
|
131
|
+
// size 159 * 7 = 1113
|
|
132
|
+
template <typename T>
|
|
133
|
+
struct JointParametersT : public EigenStrongType<JointParametersT, ::Eigen::VectorX<T>> {
|
|
134
|
+
using t = ::Eigen::VectorX<T>;
|
|
135
|
+
using EigenStrongType<JointParametersT, t>::EigenStrongType;
|
|
136
|
+
using EigenStrongType<JointParametersT, t>::operator=;
|
|
137
|
+
|
|
138
|
+
[[nodiscard]] static ::Eigen::Vector3<T> fromRotationMatrix(const ::Eigen::Matrix3<T>& m) {
|
|
139
|
+
// From JointState::set(), we can see that localRotation = rz * ry * rx, but the order in
|
|
140
|
+
// JointParameters is [rx, ry, rz]. Therefore, the conversion should be
|
|
141
|
+
// rotationMatrixToEulerZYX.reverse.
|
|
142
|
+
return rotationMatrixToEulerZYX(m).reverse();
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
[[nodiscard]] static ::Eigen::Vector3<T> fromQuaternion(const ::Eigen::Quaternion<T>& q) {
|
|
146
|
+
return fromRotationMatrix(q.toRotationMatrix());
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
using JointParameters = JointParametersT<float>;
|
|
151
|
+
using JointParametersd = JointParametersT<double>;
|
|
152
|
+
|
|
153
|
+
static_assert(
|
|
154
|
+
sizeof(JointParameters) == sizeof(Eigen::VectorXf),
|
|
155
|
+
"Missing Empty Base Class Optimization");
|
|
156
|
+
static_assert(
|
|
157
|
+
sizeof(JointParametersd) == sizeof(Eigen::VectorXd),
|
|
158
|
+
"Missing Empty Base Class Optimization");
|
|
159
|
+
|
|
160
|
+
template <typename T>
|
|
161
|
+
using JointStateListT = std::vector<JointStateT<T>>;
|
|
162
|
+
|
|
163
|
+
using JointStateList = JointStateListT<float>;
|
|
164
|
+
using JointStateListd = JointStateListT<double>;
|
|
165
|
+
|
|
166
|
+
/// A struct that encapsulates both pose and identity parameters for a character.
|
|
167
|
+
///
|
|
168
|
+
/// @note This structure implies, but does not enforce, that the pose vector should contain only
|
|
169
|
+
/// pose information with identity-related elements set to zero. Similarly, the identity vector
|
|
170
|
+
/// should exclusively contain bone length information, excluding any pose data.
|
|
171
|
+
template <typename T>
|
|
172
|
+
struct CharacterParametersT {
|
|
173
|
+
/// The model parameter vector representing the pose of the character. This vector should have a
|
|
174
|
+
/// size of numModelParams.
|
|
175
|
+
|
|
176
|
+
ModelParametersT<T> pose;
|
|
177
|
+
/// The joint parameter vector representing the unique bone lengths of the character, defining
|
|
178
|
+
/// the character's identity. This vector should have a size of numSkeletonJoints *
|
|
179
|
+
/// kParametersPerJoint.
|
|
180
|
+
JointParametersT<T> offsets;
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
using CharacterParameters = CharacterParametersT<float>;
|
|
184
|
+
using CharacterParametersd = CharacterParametersT<double>;
|
|
185
|
+
|
|
186
|
+
// The tuple of model parameter names and corresponding matrix representing the pose in a sequence
|
|
187
|
+
// of frames The poses are ordered in columns and the expected shape of motion matrix is
|
|
188
|
+
// (numModelParams, numFrames)
|
|
189
|
+
|
|
190
|
+
using MotionParameters = std::tuple<std::vector<std::string>, Eigen::MatrixXf>;
|
|
191
|
+
|
|
192
|
+
// The tuple containing the skeleton joint names and identity parameters. The identity parameters
|
|
193
|
+
// represent bone offsets and bone scales that are added to the joint states (local transform for
|
|
194
|
+
// each joint wrt parent joint) during FK step The identity parameters are expressed as a vector of
|
|
195
|
+
// size (numSkeletonJoints * momentum::kParametersPerJoint)
|
|
196
|
+
|
|
197
|
+
using IdentityParameters = std::tuple<std::vector<std::string>, Eigen::VectorXf>;
|
|
198
|
+
|
|
199
|
+
// define static kInvalidIndex for size_t
|
|
200
|
+
inline constexpr size_t kInvalidIndex = std::numeric_limits<size_t>::max();
|
|
201
|
+
|
|
202
|
+
} // namespace momentum
|
|
@@ -0,0 +1,200 @@
|
|
|
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
|
+
// This file is @generated by gen_fwd.py
|
|
9
|
+
// Do not edit this file directly, instead update gen_fwd_input.toml and run:
|
|
10
|
+
// buck run @arvr/mode/platform010/opt //arvr/libraries/momentum:gen_fwd
|
|
11
|
+
|
|
12
|
+
#pragma once
|
|
13
|
+
|
|
14
|
+
#include <memory>
|
|
15
|
+
|
|
16
|
+
namespace momentum {
|
|
17
|
+
|
|
18
|
+
struct MultiposeSolverOptions;
|
|
19
|
+
|
|
20
|
+
using MultiposeSolverOptions_p = ::std::shared_ptr<MultiposeSolverOptions>;
|
|
21
|
+
using MultiposeSolverOptions_u = ::std::unique_ptr<MultiposeSolverOptions>;
|
|
22
|
+
using MultiposeSolverOptions_w = ::std::weak_ptr<MultiposeSolverOptions>;
|
|
23
|
+
using MultiposeSolverOptions_const_p = ::std::shared_ptr<const MultiposeSolverOptions>;
|
|
24
|
+
using MultiposeSolverOptions_const_u = ::std::unique_ptr<const MultiposeSolverOptions>;
|
|
25
|
+
using MultiposeSolverOptions_const_w = ::std::weak_ptr<const MultiposeSolverOptions>;
|
|
26
|
+
|
|
27
|
+
struct SequenceSolverOptions;
|
|
28
|
+
|
|
29
|
+
using SequenceSolverOptions_p = ::std::shared_ptr<SequenceSolverOptions>;
|
|
30
|
+
using SequenceSolverOptions_u = ::std::unique_ptr<SequenceSolverOptions>;
|
|
31
|
+
using SequenceSolverOptions_w = ::std::weak_ptr<SequenceSolverOptions>;
|
|
32
|
+
using SequenceSolverOptions_const_p = ::std::shared_ptr<const SequenceSolverOptions>;
|
|
33
|
+
using SequenceSolverOptions_const_u = ::std::unique_ptr<const SequenceSolverOptions>;
|
|
34
|
+
using SequenceSolverOptions_const_w = ::std::weak_ptr<const SequenceSolverOptions>;
|
|
35
|
+
|
|
36
|
+
template <typename T>
|
|
37
|
+
class SequenceErrorFunctionT;
|
|
38
|
+
using SequenceErrorFunction = SequenceErrorFunctionT<float>;
|
|
39
|
+
using SequenceErrorFunctiond = SequenceErrorFunctionT<double>;
|
|
40
|
+
|
|
41
|
+
using SequenceErrorFunction_p = ::std::shared_ptr<SequenceErrorFunction>;
|
|
42
|
+
using SequenceErrorFunction_u = ::std::unique_ptr<SequenceErrorFunction>;
|
|
43
|
+
using SequenceErrorFunction_w = ::std::weak_ptr<SequenceErrorFunction>;
|
|
44
|
+
using SequenceErrorFunction_const_p = ::std::shared_ptr<const SequenceErrorFunction>;
|
|
45
|
+
using SequenceErrorFunction_const_u = ::std::unique_ptr<const SequenceErrorFunction>;
|
|
46
|
+
using SequenceErrorFunction_const_w = ::std::weak_ptr<const SequenceErrorFunction>;
|
|
47
|
+
|
|
48
|
+
using SequenceErrorFunctiond_p = ::std::shared_ptr<SequenceErrorFunctiond>;
|
|
49
|
+
using SequenceErrorFunctiond_u = ::std::unique_ptr<SequenceErrorFunctiond>;
|
|
50
|
+
using SequenceErrorFunctiond_w = ::std::weak_ptr<SequenceErrorFunctiond>;
|
|
51
|
+
using SequenceErrorFunctiond_const_p = ::std::shared_ptr<const SequenceErrorFunctiond>;
|
|
52
|
+
using SequenceErrorFunctiond_const_u = ::std::unique_ptr<const SequenceErrorFunctiond>;
|
|
53
|
+
using SequenceErrorFunctiond_const_w = ::std::weak_ptr<const SequenceErrorFunctiond>;
|
|
54
|
+
|
|
55
|
+
template <typename T>
|
|
56
|
+
class ModelParametersSequenceErrorFunctionT;
|
|
57
|
+
using ModelParametersSequenceErrorFunction = ModelParametersSequenceErrorFunctionT<float>;
|
|
58
|
+
using ModelParametersSequenceErrorFunctiond = ModelParametersSequenceErrorFunctionT<double>;
|
|
59
|
+
|
|
60
|
+
using ModelParametersSequenceErrorFunction_p =
|
|
61
|
+
::std::shared_ptr<ModelParametersSequenceErrorFunction>;
|
|
62
|
+
using ModelParametersSequenceErrorFunction_u =
|
|
63
|
+
::std::unique_ptr<ModelParametersSequenceErrorFunction>;
|
|
64
|
+
using ModelParametersSequenceErrorFunction_w =
|
|
65
|
+
::std::weak_ptr<ModelParametersSequenceErrorFunction>;
|
|
66
|
+
using ModelParametersSequenceErrorFunction_const_p =
|
|
67
|
+
::std::shared_ptr<const ModelParametersSequenceErrorFunction>;
|
|
68
|
+
using ModelParametersSequenceErrorFunction_const_u =
|
|
69
|
+
::std::unique_ptr<const ModelParametersSequenceErrorFunction>;
|
|
70
|
+
using ModelParametersSequenceErrorFunction_const_w =
|
|
71
|
+
::std::weak_ptr<const ModelParametersSequenceErrorFunction>;
|
|
72
|
+
|
|
73
|
+
using ModelParametersSequenceErrorFunctiond_p =
|
|
74
|
+
::std::shared_ptr<ModelParametersSequenceErrorFunctiond>;
|
|
75
|
+
using ModelParametersSequenceErrorFunctiond_u =
|
|
76
|
+
::std::unique_ptr<ModelParametersSequenceErrorFunctiond>;
|
|
77
|
+
using ModelParametersSequenceErrorFunctiond_w =
|
|
78
|
+
::std::weak_ptr<ModelParametersSequenceErrorFunctiond>;
|
|
79
|
+
using ModelParametersSequenceErrorFunctiond_const_p =
|
|
80
|
+
::std::shared_ptr<const ModelParametersSequenceErrorFunctiond>;
|
|
81
|
+
using ModelParametersSequenceErrorFunctiond_const_u =
|
|
82
|
+
::std::unique_ptr<const ModelParametersSequenceErrorFunctiond>;
|
|
83
|
+
using ModelParametersSequenceErrorFunctiond_const_w =
|
|
84
|
+
::std::weak_ptr<const ModelParametersSequenceErrorFunctiond>;
|
|
85
|
+
|
|
86
|
+
template <typename T>
|
|
87
|
+
class MultiposeSolverT;
|
|
88
|
+
using MultiposeSolver = MultiposeSolverT<float>;
|
|
89
|
+
using MultiposeSolverd = MultiposeSolverT<double>;
|
|
90
|
+
|
|
91
|
+
using MultiposeSolver_p = ::std::shared_ptr<MultiposeSolver>;
|
|
92
|
+
using MultiposeSolver_u = ::std::unique_ptr<MultiposeSolver>;
|
|
93
|
+
using MultiposeSolver_w = ::std::weak_ptr<MultiposeSolver>;
|
|
94
|
+
using MultiposeSolver_const_p = ::std::shared_ptr<const MultiposeSolver>;
|
|
95
|
+
using MultiposeSolver_const_u = ::std::unique_ptr<const MultiposeSolver>;
|
|
96
|
+
using MultiposeSolver_const_w = ::std::weak_ptr<const MultiposeSolver>;
|
|
97
|
+
|
|
98
|
+
using MultiposeSolverd_p = ::std::shared_ptr<MultiposeSolverd>;
|
|
99
|
+
using MultiposeSolverd_u = ::std::unique_ptr<MultiposeSolverd>;
|
|
100
|
+
using MultiposeSolverd_w = ::std::weak_ptr<MultiposeSolverd>;
|
|
101
|
+
using MultiposeSolverd_const_p = ::std::shared_ptr<const MultiposeSolverd>;
|
|
102
|
+
using MultiposeSolverd_const_u = ::std::unique_ptr<const MultiposeSolverd>;
|
|
103
|
+
using MultiposeSolverd_const_w = ::std::weak_ptr<const MultiposeSolverd>;
|
|
104
|
+
|
|
105
|
+
template <typename T>
|
|
106
|
+
class MultiposeSolverFunctionT;
|
|
107
|
+
using MultiposeSolverFunction = MultiposeSolverFunctionT<float>;
|
|
108
|
+
using MultiposeSolverFunctiond = MultiposeSolverFunctionT<double>;
|
|
109
|
+
|
|
110
|
+
using MultiposeSolverFunction_p = ::std::shared_ptr<MultiposeSolverFunction>;
|
|
111
|
+
using MultiposeSolverFunction_u = ::std::unique_ptr<MultiposeSolverFunction>;
|
|
112
|
+
using MultiposeSolverFunction_w = ::std::weak_ptr<MultiposeSolverFunction>;
|
|
113
|
+
using MultiposeSolverFunction_const_p = ::std::shared_ptr<const MultiposeSolverFunction>;
|
|
114
|
+
using MultiposeSolverFunction_const_u = ::std::unique_ptr<const MultiposeSolverFunction>;
|
|
115
|
+
using MultiposeSolverFunction_const_w = ::std::weak_ptr<const MultiposeSolverFunction>;
|
|
116
|
+
|
|
117
|
+
using MultiposeSolverFunctiond_p = ::std::shared_ptr<MultiposeSolverFunctiond>;
|
|
118
|
+
using MultiposeSolverFunctiond_u = ::std::unique_ptr<MultiposeSolverFunctiond>;
|
|
119
|
+
using MultiposeSolverFunctiond_w = ::std::weak_ptr<MultiposeSolverFunctiond>;
|
|
120
|
+
using MultiposeSolverFunctiond_const_p = ::std::shared_ptr<const MultiposeSolverFunctiond>;
|
|
121
|
+
using MultiposeSolverFunctiond_const_u = ::std::unique_ptr<const MultiposeSolverFunctiond>;
|
|
122
|
+
using MultiposeSolverFunctiond_const_w = ::std::weak_ptr<const MultiposeSolverFunctiond>;
|
|
123
|
+
|
|
124
|
+
template <typename T>
|
|
125
|
+
class SequenceSolverT;
|
|
126
|
+
using SequenceSolver = SequenceSolverT<float>;
|
|
127
|
+
using SequenceSolverd = SequenceSolverT<double>;
|
|
128
|
+
|
|
129
|
+
using SequenceSolver_p = ::std::shared_ptr<SequenceSolver>;
|
|
130
|
+
using SequenceSolver_u = ::std::unique_ptr<SequenceSolver>;
|
|
131
|
+
using SequenceSolver_w = ::std::weak_ptr<SequenceSolver>;
|
|
132
|
+
using SequenceSolver_const_p = ::std::shared_ptr<const SequenceSolver>;
|
|
133
|
+
using SequenceSolver_const_u = ::std::unique_ptr<const SequenceSolver>;
|
|
134
|
+
using SequenceSolver_const_w = ::std::weak_ptr<const SequenceSolver>;
|
|
135
|
+
|
|
136
|
+
using SequenceSolverd_p = ::std::shared_ptr<SequenceSolverd>;
|
|
137
|
+
using SequenceSolverd_u = ::std::unique_ptr<SequenceSolverd>;
|
|
138
|
+
using SequenceSolverd_w = ::std::weak_ptr<SequenceSolverd>;
|
|
139
|
+
using SequenceSolverd_const_p = ::std::shared_ptr<const SequenceSolverd>;
|
|
140
|
+
using SequenceSolverd_const_u = ::std::unique_ptr<const SequenceSolverd>;
|
|
141
|
+
using SequenceSolverd_const_w = ::std::weak_ptr<const SequenceSolverd>;
|
|
142
|
+
|
|
143
|
+
template <typename T>
|
|
144
|
+
class SequenceSolverFunctionT;
|
|
145
|
+
using SequenceSolverFunction = SequenceSolverFunctionT<float>;
|
|
146
|
+
using SequenceSolverFunctiond = SequenceSolverFunctionT<double>;
|
|
147
|
+
|
|
148
|
+
using SequenceSolverFunction_p = ::std::shared_ptr<SequenceSolverFunction>;
|
|
149
|
+
using SequenceSolverFunction_u = ::std::unique_ptr<SequenceSolverFunction>;
|
|
150
|
+
using SequenceSolverFunction_w = ::std::weak_ptr<SequenceSolverFunction>;
|
|
151
|
+
using SequenceSolverFunction_const_p = ::std::shared_ptr<const SequenceSolverFunction>;
|
|
152
|
+
using SequenceSolverFunction_const_u = ::std::unique_ptr<const SequenceSolverFunction>;
|
|
153
|
+
using SequenceSolverFunction_const_w = ::std::weak_ptr<const SequenceSolverFunction>;
|
|
154
|
+
|
|
155
|
+
using SequenceSolverFunctiond_p = ::std::shared_ptr<SequenceSolverFunctiond>;
|
|
156
|
+
using SequenceSolverFunctiond_u = ::std::unique_ptr<SequenceSolverFunctiond>;
|
|
157
|
+
using SequenceSolverFunctiond_w = ::std::weak_ptr<SequenceSolverFunctiond>;
|
|
158
|
+
using SequenceSolverFunctiond_const_p = ::std::shared_ptr<const SequenceSolverFunctiond>;
|
|
159
|
+
using SequenceSolverFunctiond_const_u = ::std::unique_ptr<const SequenceSolverFunctiond>;
|
|
160
|
+
using SequenceSolverFunctiond_const_w = ::std::weak_ptr<const SequenceSolverFunctiond>;
|
|
161
|
+
|
|
162
|
+
template <typename T>
|
|
163
|
+
class StateSequenceErrorFunctionT;
|
|
164
|
+
using StateSequenceErrorFunction = StateSequenceErrorFunctionT<float>;
|
|
165
|
+
using StateSequenceErrorFunctiond = StateSequenceErrorFunctionT<double>;
|
|
166
|
+
|
|
167
|
+
using StateSequenceErrorFunction_p = ::std::shared_ptr<StateSequenceErrorFunction>;
|
|
168
|
+
using StateSequenceErrorFunction_u = ::std::unique_ptr<StateSequenceErrorFunction>;
|
|
169
|
+
using StateSequenceErrorFunction_w = ::std::weak_ptr<StateSequenceErrorFunction>;
|
|
170
|
+
using StateSequenceErrorFunction_const_p = ::std::shared_ptr<const StateSequenceErrorFunction>;
|
|
171
|
+
using StateSequenceErrorFunction_const_u = ::std::unique_ptr<const StateSequenceErrorFunction>;
|
|
172
|
+
using StateSequenceErrorFunction_const_w = ::std::weak_ptr<const StateSequenceErrorFunction>;
|
|
173
|
+
|
|
174
|
+
using StateSequenceErrorFunctiond_p = ::std::shared_ptr<StateSequenceErrorFunctiond>;
|
|
175
|
+
using StateSequenceErrorFunctiond_u = ::std::unique_ptr<StateSequenceErrorFunctiond>;
|
|
176
|
+
using StateSequenceErrorFunctiond_w = ::std::weak_ptr<StateSequenceErrorFunctiond>;
|
|
177
|
+
using StateSequenceErrorFunctiond_const_p = ::std::shared_ptr<const StateSequenceErrorFunctiond>;
|
|
178
|
+
using StateSequenceErrorFunctiond_const_u = ::std::unique_ptr<const StateSequenceErrorFunctiond>;
|
|
179
|
+
using StateSequenceErrorFunctiond_const_w = ::std::weak_ptr<const StateSequenceErrorFunctiond>;
|
|
180
|
+
|
|
181
|
+
template <typename T>
|
|
182
|
+
class VertexSequenceErrorFunctionT;
|
|
183
|
+
using VertexSequenceErrorFunction = VertexSequenceErrorFunctionT<float>;
|
|
184
|
+
using VertexSequenceErrorFunctiond = VertexSequenceErrorFunctionT<double>;
|
|
185
|
+
|
|
186
|
+
using VertexSequenceErrorFunction_p = ::std::shared_ptr<VertexSequenceErrorFunction>;
|
|
187
|
+
using VertexSequenceErrorFunction_u = ::std::unique_ptr<VertexSequenceErrorFunction>;
|
|
188
|
+
using VertexSequenceErrorFunction_w = ::std::weak_ptr<VertexSequenceErrorFunction>;
|
|
189
|
+
using VertexSequenceErrorFunction_const_p = ::std::shared_ptr<const VertexSequenceErrorFunction>;
|
|
190
|
+
using VertexSequenceErrorFunction_const_u = ::std::unique_ptr<const VertexSequenceErrorFunction>;
|
|
191
|
+
using VertexSequenceErrorFunction_const_w = ::std::weak_ptr<const VertexSequenceErrorFunction>;
|
|
192
|
+
|
|
193
|
+
using VertexSequenceErrorFunctiond_p = ::std::shared_ptr<VertexSequenceErrorFunctiond>;
|
|
194
|
+
using VertexSequenceErrorFunctiond_u = ::std::unique_ptr<VertexSequenceErrorFunctiond>;
|
|
195
|
+
using VertexSequenceErrorFunctiond_w = ::std::weak_ptr<VertexSequenceErrorFunctiond>;
|
|
196
|
+
using VertexSequenceErrorFunctiond_const_p = ::std::shared_ptr<const VertexSequenceErrorFunctiond>;
|
|
197
|
+
using VertexSequenceErrorFunctiond_const_u = ::std::unique_ptr<const VertexSequenceErrorFunctiond>;
|
|
198
|
+
using VertexSequenceErrorFunctiond_const_w = ::std::weak_ptr<const VertexSequenceErrorFunctiond>;
|
|
199
|
+
|
|
200
|
+
} // namespace momentum
|
|
@@ -0,0 +1,65 @@
|
|
|
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
|
+
template <typename T>
|
|
17
|
+
class ModelParametersSequenceErrorFunctionT : public SequenceErrorFunctionT<T> {
|
|
18
|
+
public:
|
|
19
|
+
ModelParametersSequenceErrorFunctionT(const Skeleton& skel, const ParameterTransform& pt);
|
|
20
|
+
explicit ModelParametersSequenceErrorFunctionT(const Character& character);
|
|
21
|
+
|
|
22
|
+
[[nodiscard]] size_t numFrames() const final {
|
|
23
|
+
return 2;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
double getError(
|
|
27
|
+
std::span<const ModelParametersT<T>> modelParameters,
|
|
28
|
+
std::span<const SkeletonStateT<T>> skelStates,
|
|
29
|
+
std::span<const MeshStateT<T>> meshStates) const final;
|
|
30
|
+
double getGradient(
|
|
31
|
+
std::span<const ModelParametersT<T>> modelParameters,
|
|
32
|
+
std::span<const SkeletonStateT<T>> skelStates,
|
|
33
|
+
std::span<const MeshStateT<T>> meshStates,
|
|
34
|
+
Eigen::Ref<Eigen::VectorX<T>> gradient) const final;
|
|
35
|
+
|
|
36
|
+
// modelParameters: [numFrames() * parameterTransform] parameter vector
|
|
37
|
+
// skelStates: [numFrames()] array of skeleton states
|
|
38
|
+
// jacobian: [getJacobianSize()] x [numFrames() * parameterTransform] Jacobian matrix
|
|
39
|
+
// residual: [getJacobianSize()] residual vector.
|
|
40
|
+
double getJacobian(
|
|
41
|
+
std::span<const ModelParametersT<T>> modelParameters,
|
|
42
|
+
std::span<const SkeletonStateT<T>> skelStates,
|
|
43
|
+
std::span<const MeshStateT<T>> meshStates,
|
|
44
|
+
Eigen::Ref<Eigen::MatrixX<T>> jacobian,
|
|
45
|
+
Eigen::Ref<Eigen::VectorX<T>> residual,
|
|
46
|
+
int& usedRows) const final;
|
|
47
|
+
|
|
48
|
+
[[nodiscard]] size_t getJacobianSize() const final;
|
|
49
|
+
|
|
50
|
+
void setTargetWeights(const Eigen::VectorX<T>& weights) {
|
|
51
|
+
this->targetWeights_ = weights;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
[[nodiscard]] const Eigen::VectorX<T>& getTargetWeights() const {
|
|
55
|
+
return this->targetWeights_;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
private:
|
|
59
|
+
Eigen::VectorX<T> targetWeights_;
|
|
60
|
+
|
|
61
|
+
public:
|
|
62
|
+
static constexpr T kMotionWeight = 1e-1;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
} // namespace momentum
|
|
@@ -0,0 +1,65 @@
|
|
|
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_sequence_solver/fwd.h>
|
|
11
|
+
#include <momentum/character_sequence_solver/multipose_solver_function.h>
|
|
12
|
+
#include <momentum/solver/solver.h>
|
|
13
|
+
|
|
14
|
+
namespace momentum {
|
|
15
|
+
|
|
16
|
+
/// Multipose solver specific options.
|
|
17
|
+
struct MultiposeSolverOptions : SolverOptions {
|
|
18
|
+
/// Regularization parameter for QR decomposition.
|
|
19
|
+
float regularization = 0.05f;
|
|
20
|
+
|
|
21
|
+
MultiposeSolverOptions() = default;
|
|
22
|
+
|
|
23
|
+
/* implicit */ MultiposeSolverOptions(const SolverOptions& baseOptions)
|
|
24
|
+
: SolverOptions(baseOptions) {
|
|
25
|
+
// Empty
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
template <typename T>
|
|
30
|
+
class MultiposeSolverT : public SolverT<T> {
|
|
31
|
+
public:
|
|
32
|
+
MultiposeSolverT(const SolverOptions& options, MultiposeSolverFunctionT<T>* function);
|
|
33
|
+
~MultiposeSolverT() override;
|
|
34
|
+
|
|
35
|
+
[[nodiscard]] std::string_view getName() const override;
|
|
36
|
+
|
|
37
|
+
void setOptions(const SolverOptions& options) final;
|
|
38
|
+
|
|
39
|
+
void iter() {
|
|
40
|
+
doIteration();
|
|
41
|
+
this->iteration_++;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
void init() {
|
|
45
|
+
this->iteration_ = 0;
|
|
46
|
+
initializeSolver();
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
Eigen::VectorX<T> getP() {
|
|
50
|
+
return this->parameters_;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
protected:
|
|
54
|
+
void doIteration() final;
|
|
55
|
+
void initializeSolver() final;
|
|
56
|
+
|
|
57
|
+
private:
|
|
58
|
+
Eigen::MatrixX<T> jacobianBlock_;
|
|
59
|
+
Eigen::VectorX<T> residualBlock_;
|
|
60
|
+
std::unique_ptr<MeshStateT<T>> meshState_;
|
|
61
|
+
|
|
62
|
+
float regularization_;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
} // namespace momentum
|