pymomentum-cpu 0.0.0__cp312-cp312-manylinux_2_39_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pymomentum-cpu might be problematic. Click here for more details.
- include/axel/BoundingBox.h +58 -0
- include/axel/Bvh.h +708 -0
- include/axel/BvhBase.h +75 -0
- include/axel/BvhCommon.h +43 -0
- include/axel/BvhEmbree.h +86 -0
- include/axel/BvhFactory.h +34 -0
- include/axel/Checks.h +21 -0
- include/axel/KdTree.h +199 -0
- include/axel/Log.h +22 -0
- include/axel/MeshToSdf.h +123 -0
- include/axel/Profile.h +64 -0
- include/axel/Ray.h +45 -0
- include/axel/SignedDistanceField.h +237 -0
- include/axel/SimdKdTree.h +515 -0
- include/axel/TriBvh.h +157 -0
- include/axel/TriBvhEmbree.h +57 -0
- include/axel/common/Constants.h +27 -0
- include/axel/common/Types.h +21 -0
- include/axel/common/VectorizationTypes.h +58 -0
- include/axel/math/BoundingBoxUtils.h +54 -0
- include/axel/math/ContinuousCollisionDetection.h +48 -0
- include/axel/math/CoplanarityCheck.h +30 -0
- include/axel/math/EdgeEdgeDistance.h +31 -0
- include/axel/math/MeshHoleFilling.h +98 -0
- include/axel/math/PointTriangleProjection.h +34 -0
- include/axel/math/PointTriangleProjectionDefinitions.h +209 -0
- include/axel/math/RayTriangleIntersection.h +36 -0
- include/momentum/character/blend_shape.h +91 -0
- include/momentum/character/blend_shape_base.h +70 -0
- include/momentum/character/blend_shape_skinning.h +96 -0
- include/momentum/character/character.h +272 -0
- include/momentum/character/character_state.h +108 -0
- include/momentum/character/character_utility.h +128 -0
- include/momentum/character/collision_geometry.h +80 -0
- include/momentum/character/collision_geometry_state.h +130 -0
- include/momentum/character/fwd.h +243 -0
- include/momentum/character/inverse_parameter_transform.h +58 -0
- include/momentum/character/joint.h +82 -0
- include/momentum/character/joint_state.h +241 -0
- include/momentum/character/linear_skinning.h +139 -0
- include/momentum/character/locator.h +82 -0
- include/momentum/character/locator_state.h +43 -0
- include/momentum/character/marker.h +48 -0
- include/momentum/character/parameter_limits.h +144 -0
- include/momentum/character/parameter_transform.h +250 -0
- include/momentum/character/pose_shape.h +65 -0
- include/momentum/character/skeleton.h +85 -0
- include/momentum/character/skeleton_state.h +181 -0
- include/momentum/character/skeleton_utility.h +38 -0
- include/momentum/character/skin_weights.h +67 -0
- include/momentum/character/skinned_locator.h +80 -0
- include/momentum/character/types.h +202 -0
- include/momentum/character_sequence_solver/fwd.h +200 -0
- include/momentum/character_sequence_solver/model_parameters_sequence_error_function.h +62 -0
- include/momentum/character_sequence_solver/multipose_solver.h +63 -0
- include/momentum/character_sequence_solver/multipose_solver_function.h +80 -0
- include/momentum/character_sequence_solver/sequence_error_function.h +95 -0
- include/momentum/character_sequence_solver/sequence_solver.h +144 -0
- include/momentum/character_sequence_solver/sequence_solver_function.h +126 -0
- include/momentum/character_sequence_solver/state_sequence_error_function.h +106 -0
- include/momentum/character_sequence_solver/vertex_sequence_error_function.h +125 -0
- include/momentum/character_solver/aim_error_function.h +112 -0
- include/momentum/character_solver/collision_error_function.h +88 -0
- include/momentum/character_solver/collision_error_function_stateless.h +71 -0
- include/momentum/character_solver/constraint_error_function-inl.h +321 -0
- include/momentum/character_solver/constraint_error_function.h +241 -0
- include/momentum/character_solver/distance_error_function.h +74 -0
- include/momentum/character_solver/error_function_utils.h +60 -0
- include/momentum/character_solver/fixed_axis_error_function.h +139 -0
- include/momentum/character_solver/fwd.h +924 -0
- include/momentum/character_solver/gauss_newton_solver_qr.h +62 -0
- include/momentum/character_solver/limit_error_function.h +53 -0
- include/momentum/character_solver/model_parameters_error_function.h +61 -0
- include/momentum/character_solver/normal_error_function.h +73 -0
- include/momentum/character_solver/orientation_error_function.h +74 -0
- include/momentum/character_solver/plane_error_function.h +102 -0
- include/momentum/character_solver/point_triangle_vertex_error_function.h +140 -0
- include/momentum/character_solver/pose_prior_error_function.h +76 -0
- include/momentum/character_solver/position_error_function.h +75 -0
- include/momentum/character_solver/projection_error_function.h +90 -0
- include/momentum/character_solver/simd_collision_error_function.h +95 -0
- include/momentum/character_solver/simd_normal_error_function.h +151 -0
- include/momentum/character_solver/simd_plane_error_function.h +154 -0
- include/momentum/character_solver/simd_position_error_function.h +155 -0
- include/momentum/character_solver/skeleton_error_function.h +136 -0
- include/momentum/character_solver/skeleton_solver_function.h +72 -0
- include/momentum/character_solver/skinned_locator_error_function.h +163 -0
- include/momentum/character_solver/skinned_locator_triangle_error_function.h +138 -0
- include/momentum/character_solver/skinning_weight_iterator.h +80 -0
- include/momentum/character_solver/state_error_function.h +90 -0
- include/momentum/character_solver/transform_pose.h +80 -0
- include/momentum/character_solver/trust_region_qr.h +78 -0
- include/momentum/character_solver/vertex_error_function.h +154 -0
- include/momentum/character_solver/vertex_projection_error_function.h +118 -0
- include/momentum/character_solver/vertex_vertex_distance_error_function.h +143 -0
- include/momentum/common/aligned.h +155 -0
- include/momentum/common/checks.h +27 -0
- include/momentum/common/exception.h +70 -0
- include/momentum/common/filesystem.h +20 -0
- include/momentum/common/fwd.h +27 -0
- include/momentum/common/log.h +173 -0
- include/momentum/common/log_channel.h +17 -0
- include/momentum/common/memory.h +71 -0
- include/momentum/common/profile.h +79 -0
- include/momentum/common/progress_bar.h +37 -0
- include/momentum/common/string.h +52 -0
- include/momentum/diff_ik/ceres_utility.h +73 -0
- include/momentum/diff_ik/fully_differentiable_body_ik.h +58 -0
- include/momentum/diff_ik/fully_differentiable_distance_error_function.h +69 -0
- include/momentum/diff_ik/fully_differentiable_motion_error_function.h +46 -0
- include/momentum/diff_ik/fully_differentiable_orientation_error_function.h +109 -0
- include/momentum/diff_ik/fully_differentiable_pose_prior_error_function.h +76 -0
- include/momentum/diff_ik/fully_differentiable_position_error_function.h +133 -0
- include/momentum/diff_ik/fully_differentiable_projection_error_function.h +65 -0
- include/momentum/diff_ik/fully_differentiable_skeleton_error_function.h +160 -0
- include/momentum/diff_ik/fully_differentiable_state_error_function.h +54 -0
- include/momentum/diff_ik/fwd.h +385 -0
- include/momentum/diff_ik/union_error_function.h +63 -0
- include/momentum/gui/rerun/eigen_adapters.h +70 -0
- include/momentum/gui/rerun/logger.h +102 -0
- include/momentum/gui/rerun/logging_redirect.h +27 -0
- include/momentum/io/character_io.h +56 -0
- include/momentum/io/common/gsl_utils.h +50 -0
- include/momentum/io/common/stream_utils.h +65 -0
- include/momentum/io/fbx/fbx_io.h +109 -0
- include/momentum/io/fbx/fbx_memory_stream.h +66 -0
- include/momentum/io/fbx/openfbx_loader.h +49 -0
- include/momentum/io/fbx/polygon_data.h +60 -0
- include/momentum/io/gltf/gltf_builder.h +135 -0
- include/momentum/io/gltf/gltf_file_format.h +19 -0
- include/momentum/io/gltf/gltf_io.h +136 -0
- include/momentum/io/gltf/utils/accessor_utils.h +299 -0
- include/momentum/io/gltf/utils/coordinate_utils.h +60 -0
- include/momentum/io/gltf/utils/json_utils.h +102 -0
- include/momentum/io/legacy_json/legacy_json_io.h +70 -0
- include/momentum/io/marker/c3d_io.h +29 -0
- include/momentum/io/marker/conversions.h +57 -0
- include/momentum/io/marker/coordinate_system.h +30 -0
- include/momentum/io/marker/marker_io.h +54 -0
- include/momentum/io/marker/trc_io.h +27 -0
- include/momentum/io/motion/mmo_io.h +97 -0
- include/momentum/io/shape/blend_shape_io.h +70 -0
- include/momentum/io/shape/pose_shape_io.h +21 -0
- include/momentum/io/skeleton/locator_io.h +41 -0
- include/momentum/io/skeleton/mppca_io.h +26 -0
- include/momentum/io/skeleton/parameter_limits_io.h +25 -0
- include/momentum/io/skeleton/parameter_transform_io.h +41 -0
- include/momentum/io/skeleton/parameters_io.h +20 -0
- include/momentum/io/urdf/urdf_io.h +26 -0
- include/momentum/io/usd/usd_io.h +36 -0
- include/momentum/marker_tracking/app_utils.h +62 -0
- include/momentum/marker_tracking/marker_tracker.h +213 -0
- include/momentum/marker_tracking/process_markers.h +58 -0
- include/momentum/marker_tracking/tracker_utils.h +90 -0
- include/momentum/math/constants.h +82 -0
- include/momentum/math/covariance_matrix.h +84 -0
- include/momentum/math/fmt_eigen.h +23 -0
- include/momentum/math/fwd.h +132 -0
- include/momentum/math/generalized_loss.h +61 -0
- include/momentum/math/intersection.h +32 -0
- include/momentum/math/mesh.h +84 -0
- include/momentum/math/mppca.h +67 -0
- include/momentum/math/online_householder_qr.h +516 -0
- include/momentum/math/random-inl.h +404 -0
- include/momentum/math/random.h +310 -0
- include/momentum/math/simd_generalized_loss.h +40 -0
- include/momentum/math/transform.h +229 -0
- include/momentum/math/types.h +461 -0
- include/momentum/math/utility.h +251 -0
- include/momentum/rasterizer/camera.h +453 -0
- include/momentum/rasterizer/fwd.h +102 -0
- include/momentum/rasterizer/geometry.h +83 -0
- include/momentum/rasterizer/image.h +18 -0
- include/momentum/rasterizer/rasterizer.h +583 -0
- include/momentum/rasterizer/tensor.h +140 -0
- include/momentum/rasterizer/utility.h +268 -0
- include/momentum/simd/simd.h +221 -0
- include/momentum/solver/fwd.h +131 -0
- include/momentum/solver/gauss_newton_solver.h +136 -0
- include/momentum/solver/gradient_descent_solver.h +65 -0
- include/momentum/solver/solver.h +155 -0
- include/momentum/solver/solver_function.h +126 -0
- include/momentum/solver/subset_gauss_newton_solver.h +109 -0
- include/rerun/archetypes/annotation_context.hpp +157 -0
- include/rerun/archetypes/arrows2d.hpp +271 -0
- include/rerun/archetypes/arrows3d.hpp +257 -0
- include/rerun/archetypes/asset3d.hpp +262 -0
- include/rerun/archetypes/asset_video.hpp +275 -0
- include/rerun/archetypes/bar_chart.hpp +261 -0
- include/rerun/archetypes/boxes2d.hpp +293 -0
- include/rerun/archetypes/boxes3d.hpp +369 -0
- include/rerun/archetypes/capsules3d.hpp +333 -0
- include/rerun/archetypes/clear.hpp +180 -0
- include/rerun/archetypes/depth_image.hpp +425 -0
- include/rerun/archetypes/ellipsoids3d.hpp +384 -0
- include/rerun/archetypes/encoded_image.hpp +250 -0
- include/rerun/archetypes/geo_line_strings.hpp +166 -0
- include/rerun/archetypes/geo_points.hpp +177 -0
- include/rerun/archetypes/graph_edges.hpp +152 -0
- include/rerun/archetypes/graph_nodes.hpp +206 -0
- include/rerun/archetypes/image.hpp +434 -0
- include/rerun/archetypes/instance_poses3d.hpp +221 -0
- include/rerun/archetypes/line_strips2d.hpp +289 -0
- include/rerun/archetypes/line_strips3d.hpp +270 -0
- include/rerun/archetypes/mesh3d.hpp +387 -0
- include/rerun/archetypes/pinhole.hpp +385 -0
- include/rerun/archetypes/points2d.hpp +333 -0
- include/rerun/archetypes/points3d.hpp +369 -0
- include/rerun/archetypes/recording_properties.hpp +132 -0
- include/rerun/archetypes/scalar.hpp +170 -0
- include/rerun/archetypes/scalars.hpp +153 -0
- include/rerun/archetypes/segmentation_image.hpp +305 -0
- include/rerun/archetypes/series_line.hpp +274 -0
- include/rerun/archetypes/series_lines.hpp +271 -0
- include/rerun/archetypes/series_point.hpp +265 -0
- include/rerun/archetypes/series_points.hpp +251 -0
- include/rerun/archetypes/tensor.hpp +213 -0
- include/rerun/archetypes/text_document.hpp +200 -0
- include/rerun/archetypes/text_log.hpp +211 -0
- include/rerun/archetypes/transform3d.hpp +925 -0
- include/rerun/archetypes/video_frame_reference.hpp +295 -0
- include/rerun/archetypes/view_coordinates.hpp +393 -0
- include/rerun/archetypes.hpp +43 -0
- include/rerun/arrow_utils.hpp +32 -0
- include/rerun/as_components.hpp +90 -0
- include/rerun/blueprint/archetypes/background.hpp +113 -0
- include/rerun/blueprint/archetypes/container_blueprint.hpp +259 -0
- include/rerun/blueprint/archetypes/dataframe_query.hpp +178 -0
- include/rerun/blueprint/archetypes/entity_behavior.hpp +130 -0
- include/rerun/blueprint/archetypes/force_center.hpp +115 -0
- include/rerun/blueprint/archetypes/force_collision_radius.hpp +141 -0
- include/rerun/blueprint/archetypes/force_link.hpp +136 -0
- include/rerun/blueprint/archetypes/force_many_body.hpp +124 -0
- include/rerun/blueprint/archetypes/force_position.hpp +132 -0
- include/rerun/blueprint/archetypes/line_grid3d.hpp +178 -0
- include/rerun/blueprint/archetypes/map_background.hpp +104 -0
- include/rerun/blueprint/archetypes/map_zoom.hpp +103 -0
- include/rerun/blueprint/archetypes/near_clip_plane.hpp +109 -0
- include/rerun/blueprint/archetypes/panel_blueprint.hpp +95 -0
- include/rerun/blueprint/archetypes/plot_legend.hpp +118 -0
- include/rerun/blueprint/archetypes/scalar_axis.hpp +116 -0
- include/rerun/blueprint/archetypes/tensor_scalar_mapping.hpp +146 -0
- include/rerun/blueprint/archetypes/tensor_slice_selection.hpp +167 -0
- include/rerun/blueprint/archetypes/tensor_view_fit.hpp +95 -0
- include/rerun/blueprint/archetypes/view_blueprint.hpp +170 -0
- include/rerun/blueprint/archetypes/view_contents.hpp +142 -0
- include/rerun/blueprint/archetypes/viewport_blueprint.hpp +200 -0
- include/rerun/blueprint/archetypes/visible_time_ranges.hpp +116 -0
- include/rerun/blueprint/archetypes/visual_bounds2d.hpp +109 -0
- include/rerun/blueprint/archetypes/visualizer_overrides.hpp +113 -0
- include/rerun/blueprint/archetypes.hpp +29 -0
- include/rerun/blueprint/components/active_tab.hpp +82 -0
- include/rerun/blueprint/components/apply_latest_at.hpp +79 -0
- include/rerun/blueprint/components/auto_layout.hpp +77 -0
- include/rerun/blueprint/components/auto_views.hpp +77 -0
- include/rerun/blueprint/components/background_kind.hpp +66 -0
- include/rerun/blueprint/components/column_share.hpp +78 -0
- include/rerun/blueprint/components/component_column_selector.hpp +81 -0
- include/rerun/blueprint/components/container_kind.hpp +65 -0
- include/rerun/blueprint/components/corner2d.hpp +64 -0
- include/rerun/blueprint/components/enabled.hpp +77 -0
- include/rerun/blueprint/components/filter_by_range.hpp +74 -0
- include/rerun/blueprint/components/filter_is_not_null.hpp +77 -0
- include/rerun/blueprint/components/force_distance.hpp +82 -0
- include/rerun/blueprint/components/force_iterations.hpp +82 -0
- include/rerun/blueprint/components/force_strength.hpp +82 -0
- include/rerun/blueprint/components/grid_columns.hpp +78 -0
- include/rerun/blueprint/components/grid_spacing.hpp +78 -0
- include/rerun/blueprint/components/included_content.hpp +86 -0
- include/rerun/blueprint/components/lock_range_during_zoom.hpp +82 -0
- include/rerun/blueprint/components/map_provider.hpp +64 -0
- include/rerun/blueprint/components/near_clip_plane.hpp +82 -0
- include/rerun/blueprint/components/panel_state.hpp +61 -0
- include/rerun/blueprint/components/query_expression.hpp +89 -0
- include/rerun/blueprint/components/root_container.hpp +77 -0
- include/rerun/blueprint/components/row_share.hpp +78 -0
- include/rerun/blueprint/components/selected_columns.hpp +76 -0
- include/rerun/blueprint/components/tensor_dimension_index_slider.hpp +90 -0
- include/rerun/blueprint/components/timeline_name.hpp +76 -0
- include/rerun/blueprint/components/view_class.hpp +76 -0
- include/rerun/blueprint/components/view_fit.hpp +61 -0
- include/rerun/blueprint/components/view_maximized.hpp +79 -0
- include/rerun/blueprint/components/view_origin.hpp +81 -0
- include/rerun/blueprint/components/viewer_recommendation_hash.hpp +82 -0
- include/rerun/blueprint/components/visible_time_range.hpp +77 -0
- include/rerun/blueprint/components/visual_bounds2d.hpp +74 -0
- include/rerun/blueprint/components/visualizer_override.hpp +86 -0
- include/rerun/blueprint/components/zoom_level.hpp +78 -0
- include/rerun/blueprint/components.hpp +41 -0
- include/rerun/blueprint/datatypes/component_column_selector.hpp +61 -0
- include/rerun/blueprint/datatypes/filter_by_range.hpp +59 -0
- include/rerun/blueprint/datatypes/filter_is_not_null.hpp +61 -0
- include/rerun/blueprint/datatypes/selected_columns.hpp +62 -0
- include/rerun/blueprint/datatypes/tensor_dimension_index_slider.hpp +63 -0
- include/rerun/blueprint/datatypes.hpp +9 -0
- include/rerun/c/arrow_c_data_interface.h +111 -0
- include/rerun/c/compiler_utils.h +10 -0
- include/rerun/c/rerun.h +627 -0
- include/rerun/c/sdk_info.h +28 -0
- include/rerun/collection.hpp +496 -0
- include/rerun/collection_adapter.hpp +43 -0
- include/rerun/collection_adapter_builtins.hpp +138 -0
- include/rerun/compiler_utils.hpp +61 -0
- include/rerun/component_batch.hpp +163 -0
- include/rerun/component_column.hpp +111 -0
- include/rerun/component_descriptor.hpp +142 -0
- include/rerun/component_type.hpp +35 -0
- include/rerun/components/aggregation_policy.hpp +76 -0
- include/rerun/components/albedo_factor.hpp +74 -0
- include/rerun/components/annotation_context.hpp +102 -0
- include/rerun/components/axis_length.hpp +74 -0
- include/rerun/components/blob.hpp +73 -0
- include/rerun/components/class_id.hpp +71 -0
- include/rerun/components/clear_is_recursive.hpp +75 -0
- include/rerun/components/color.hpp +99 -0
- include/rerun/components/colormap.hpp +99 -0
- include/rerun/components/depth_meter.hpp +84 -0
- include/rerun/components/draw_order.hpp +79 -0
- include/rerun/components/entity_path.hpp +83 -0
- include/rerun/components/fill_mode.hpp +72 -0
- include/rerun/components/fill_ratio.hpp +79 -0
- include/rerun/components/gamma_correction.hpp +80 -0
- include/rerun/components/geo_line_string.hpp +63 -0
- include/rerun/components/graph_edge.hpp +75 -0
- include/rerun/components/graph_node.hpp +79 -0
- include/rerun/components/graph_type.hpp +57 -0
- include/rerun/components/half_size2d.hpp +91 -0
- include/rerun/components/half_size3d.hpp +95 -0
- include/rerun/components/image_buffer.hpp +86 -0
- include/rerun/components/image_format.hpp +84 -0
- include/rerun/components/image_plane_distance.hpp +77 -0
- include/rerun/components/interactive.hpp +76 -0
- include/rerun/components/keypoint_id.hpp +74 -0
- include/rerun/components/lat_lon.hpp +89 -0
- include/rerun/components/length.hpp +77 -0
- include/rerun/components/line_strip2d.hpp +73 -0
- include/rerun/components/line_strip3d.hpp +73 -0
- include/rerun/components/magnification_filter.hpp +63 -0
- include/rerun/components/marker_shape.hpp +82 -0
- include/rerun/components/marker_size.hpp +74 -0
- include/rerun/components/media_type.hpp +157 -0
- include/rerun/components/name.hpp +83 -0
- include/rerun/components/opacity.hpp +77 -0
- include/rerun/components/pinhole_projection.hpp +94 -0
- include/rerun/components/plane3d.hpp +75 -0
- include/rerun/components/pose_rotation_axis_angle.hpp +73 -0
- include/rerun/components/pose_rotation_quat.hpp +71 -0
- include/rerun/components/pose_scale3d.hpp +102 -0
- include/rerun/components/pose_transform_mat3x3.hpp +87 -0
- include/rerun/components/pose_translation3d.hpp +96 -0
- include/rerun/components/position2d.hpp +86 -0
- include/rerun/components/position3d.hpp +90 -0
- include/rerun/components/radius.hpp +98 -0
- include/rerun/components/range1d.hpp +75 -0
- include/rerun/components/resolution.hpp +88 -0
- include/rerun/components/rotation_axis_angle.hpp +72 -0
- include/rerun/components/rotation_quat.hpp +71 -0
- include/rerun/components/scalar.hpp +76 -0
- include/rerun/components/scale3d.hpp +102 -0
- include/rerun/components/series_visible.hpp +76 -0
- include/rerun/components/show_labels.hpp +79 -0
- include/rerun/components/stroke_width.hpp +74 -0
- include/rerun/components/tensor_data.hpp +94 -0
- include/rerun/components/tensor_dimension_index_selection.hpp +77 -0
- include/rerun/components/tensor_height_dimension.hpp +71 -0
- include/rerun/components/tensor_width_dimension.hpp +71 -0
- include/rerun/components/texcoord2d.hpp +101 -0
- include/rerun/components/text.hpp +83 -0
- include/rerun/components/text_log_level.hpp +110 -0
- include/rerun/components/timestamp.hpp +76 -0
- include/rerun/components/transform_mat3x3.hpp +92 -0
- include/rerun/components/transform_relation.hpp +66 -0
- include/rerun/components/translation3d.hpp +96 -0
- include/rerun/components/triangle_indices.hpp +85 -0
- include/rerun/components/value_range.hpp +78 -0
- include/rerun/components/vector2d.hpp +92 -0
- include/rerun/components/vector3d.hpp +96 -0
- include/rerun/components/video_timestamp.hpp +120 -0
- include/rerun/components/view_coordinates.hpp +346 -0
- include/rerun/components/visible.hpp +74 -0
- include/rerun/components.hpp +77 -0
- include/rerun/config.hpp +52 -0
- include/rerun/datatypes/angle.hpp +76 -0
- include/rerun/datatypes/annotation_info.hpp +76 -0
- include/rerun/datatypes/blob.hpp +67 -0
- include/rerun/datatypes/bool.hpp +57 -0
- include/rerun/datatypes/channel_datatype.hpp +87 -0
- include/rerun/datatypes/class_description.hpp +92 -0
- include/rerun/datatypes/class_description_map_elem.hpp +69 -0
- include/rerun/datatypes/class_id.hpp +62 -0
- include/rerun/datatypes/color_model.hpp +68 -0
- include/rerun/datatypes/dvec2d.hpp +76 -0
- include/rerun/datatypes/entity_path.hpp +60 -0
- include/rerun/datatypes/float32.hpp +62 -0
- include/rerun/datatypes/float64.hpp +62 -0
- include/rerun/datatypes/image_format.hpp +107 -0
- include/rerun/datatypes/keypoint_id.hpp +63 -0
- include/rerun/datatypes/keypoint_pair.hpp +65 -0
- include/rerun/datatypes/mat3x3.hpp +105 -0
- include/rerun/datatypes/mat4x4.hpp +119 -0
- include/rerun/datatypes/pixel_format.hpp +142 -0
- include/rerun/datatypes/plane3d.hpp +60 -0
- include/rerun/datatypes/quaternion.hpp +110 -0
- include/rerun/datatypes/range1d.hpp +59 -0
- include/rerun/datatypes/range2d.hpp +55 -0
- include/rerun/datatypes/rgba32.hpp +94 -0
- include/rerun/datatypes/rotation_axis_angle.hpp +67 -0
- include/rerun/datatypes/tensor_buffer.hpp +529 -0
- include/rerun/datatypes/tensor_data.hpp +100 -0
- include/rerun/datatypes/tensor_dimension_index_selection.hpp +58 -0
- include/rerun/datatypes/tensor_dimension_selection.hpp +56 -0
- include/rerun/datatypes/time_int.hpp +62 -0
- include/rerun/datatypes/time_range.hpp +55 -0
- include/rerun/datatypes/time_range_boundary.hpp +175 -0
- include/rerun/datatypes/uint16.hpp +62 -0
- include/rerun/datatypes/uint32.hpp +62 -0
- include/rerun/datatypes/uint64.hpp +62 -0
- include/rerun/datatypes/utf8.hpp +76 -0
- include/rerun/datatypes/utf8pair.hpp +62 -0
- include/rerun/datatypes/uuid.hpp +60 -0
- include/rerun/datatypes/uvec2d.hpp +76 -0
- include/rerun/datatypes/uvec3d.hpp +80 -0
- include/rerun/datatypes/uvec4d.hpp +59 -0
- include/rerun/datatypes/vec2d.hpp +76 -0
- include/rerun/datatypes/vec3d.hpp +80 -0
- include/rerun/datatypes/vec4d.hpp +84 -0
- include/rerun/datatypes/video_timestamp.hpp +67 -0
- include/rerun/datatypes/view_coordinates.hpp +87 -0
- include/rerun/datatypes/visible_time_range.hpp +57 -0
- include/rerun/datatypes.hpp +51 -0
- include/rerun/demo_utils.hpp +75 -0
- include/rerun/entity_path.hpp +20 -0
- include/rerun/error.hpp +180 -0
- include/rerun/half.hpp +10 -0
- include/rerun/image_utils.hpp +187 -0
- include/rerun/indicator_component.hpp +59 -0
- include/rerun/loggable.hpp +54 -0
- include/rerun/recording_stream.hpp +960 -0
- include/rerun/rerun_sdk_export.hpp +25 -0
- include/rerun/result.hpp +86 -0
- include/rerun/rotation3d.hpp +33 -0
- include/rerun/sdk_info.hpp +20 -0
- include/rerun/spawn.hpp +21 -0
- include/rerun/spawn_options.hpp +57 -0
- include/rerun/string_utils.hpp +16 -0
- include/rerun/third_party/cxxopts.hpp +2198 -0
- include/rerun/time_column.hpp +288 -0
- include/rerun/timeline.hpp +38 -0
- include/rerun/type_traits.hpp +40 -0
- include/rerun.hpp +86 -0
- lib/cmake/rerun_sdk/rerun_sdkConfig.cmake +70 -0
- lib/cmake/rerun_sdk/rerun_sdkConfigVersion.cmake +83 -0
- lib/cmake/rerun_sdk/rerun_sdkTargets-release.cmake +19 -0
- lib/cmake/rerun_sdk/rerun_sdkTargets.cmake +108 -0
- lib/libarrow.a +0 -0
- lib/libarrow_bundled_dependencies.a +0 -0
- lib/librerun_c__linux_x64.a +0 -0
- lib/librerun_sdk.a +0 -0
- lib64/cmake/axel/axel-config.cmake +45 -0
- lib64/cmake/axel/axelTargets-release.cmake +19 -0
- lib64/cmake/axel/axelTargets.cmake +108 -0
- lib64/cmake/momentum/Findre2.cmake +52 -0
- lib64/cmake/momentum/momentum-config.cmake +67 -0
- lib64/cmake/momentum/momentumTargets-release.cmake +269 -0
- lib64/cmake/momentum/momentumTargets.cmake +445 -0
- lib64/libaxel.a +0 -0
- lib64/libmomentum_app_utils.a +0 -0
- lib64/libmomentum_character.a +0 -0
- lib64/libmomentum_character_sequence_solver.a +0 -0
- lib64/libmomentum_character_solver.a +0 -0
- lib64/libmomentum_common.a +0 -0
- lib64/libmomentum_diff_ik.a +0 -0
- lib64/libmomentum_io.a +0 -0
- lib64/libmomentum_io_common.a +0 -0
- lib64/libmomentum_io_fbx.a +0 -0
- lib64/libmomentum_io_gltf.a +0 -0
- lib64/libmomentum_io_legacy_json.a +0 -0
- lib64/libmomentum_io_marker.a +0 -0
- lib64/libmomentum_io_motion.a +0 -0
- lib64/libmomentum_io_shape.a +0 -0
- lib64/libmomentum_io_skeleton.a +0 -0
- lib64/libmomentum_io_urdf.a +0 -0
- lib64/libmomentum_marker_tracker.a +0 -0
- lib64/libmomentum_math.a +0 -0
- lib64/libmomentum_online_qr.a +0 -0
- lib64/libmomentum_process_markers.a +0 -0
- lib64/libmomentum_rasterizer.a +0 -0
- lib64/libmomentum_rerun.a +0 -0
- lib64/libmomentum_simd_constraints.a +0 -0
- lib64/libmomentum_simd_generalized_loss.a +0 -0
- lib64/libmomentum_skeleton.a +0 -0
- lib64/libmomentum_solver.a +0 -0
- pymomentum/axel.cpython-312-x86_64-linux-gnu.so +0 -0
- pymomentum/backend/__init__.py +16 -0
- pymomentum/backend/skel_state_backend.py +614 -0
- pymomentum/backend/trs_backend.py +871 -0
- pymomentum/backend/utils.py +224 -0
- pymomentum/geometry.cpython-312-x86_64-linux-gnu.so +0 -0
- pymomentum/marker_tracking.cpython-312-x86_64-linux-gnu.so +0 -0
- pymomentum/quaternion.py +740 -0
- pymomentum/renderer.cpython-312-x86_64-linux-gnu.so +0 -0
- pymomentum/skel_state.py +514 -0
- pymomentum/solver.cpython-312-x86_64-linux-gnu.so +0 -0
- pymomentum/solver2.cpython-312-x86_64-linux-gnu.so +0 -0
- pymomentum/torch/character.py +809 -0
- pymomentum/torch/parameter_limits.py +494 -0
- pymomentum/torch/utility.py +20 -0
- pymomentum/trs.py +535 -0
- pymomentum_cpu-0.0.0.dist-info/METADATA +209 -0
- pymomentum_cpu-0.0.0.dist-info/RECORD +555 -0
- pymomentum_cpu-0.0.0.dist-info/WHEEL +5 -0
- pymomentum_cpu-0.0.0.dist-info/licenses/LICENSE +21 -0
- pymomentum_cpu.libs/libabsl_base-86f3b38c.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_city-31b65ca2.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_debugging_internal-38680253.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_decode_rust_punycode-750652c3.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_demangle_internal-9a0351a3.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_demangle_rust-71629506.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_examine_stack-57661ecd.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_hash-8c523b7e.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_hashtablez_sampler-b5c3e343.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_int128-295bfed5.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_kernel_timeout_internal-29296ac1.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_globals-6cfa8af5.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_format-a5c79460.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_globals-481e9a7c.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_log_sink_set-ac08f942.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_message-7dfe150a.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_nullguard-883adc72.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_proto-a5da8c75.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_structured_proto-e601fd9b.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_sink-894261b2.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_low_level_hash-a3284638.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_malloc_internal-814569de.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_raw_hash_set-922d64ad.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_raw_logging_internal-477f78ec.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_spinlock_wait-8b85a473.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_stacktrace-7369e71d.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_str_format_internal-98de729d.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_strerror-39a52998.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_strings-a57d5127.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_strings_internal-ed8c7c0d.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_symbolize-eba17dd1.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_synchronization-2f8cf326.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_time-066c0dde.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_time_zone-72867365.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_tracing_internal-021e37ee.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_utf8_for_code_point-de2a4d4a.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libconsole_bridge-f26e11cc.so.1.0 +0 -0
- pymomentum_cpu.libs/libdeflate-577b71e3.so.0 +0 -0
- pymomentum_cpu.libs/libdispenso-67ac1721.so.1.4.0 +0 -0
- pymomentum_cpu.libs/libezc3d-4a95ab2c.so +0 -0
- pymomentum_cpu.libs/libre2-985fb83c.so.11 +0 -0
- pymomentum_cpu.libs/libtinyxml2-8d10763c.so.11.0.0 +0 -0
- pymomentum_cpu.libs/liburdfdom_model-7b26ae88.so.4.0 +0 -0
|
@@ -0,0 +1,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/fwd.h>
|
|
11
|
+
#include <momentum/character/skin_weights.h>
|
|
12
|
+
#include <momentum/math/fwd.h>
|
|
13
|
+
|
|
14
|
+
namespace momentum {
|
|
15
|
+
|
|
16
|
+
template <typename T>
|
|
17
|
+
struct BoneWeightT {
|
|
18
|
+
size_t parentBone{};
|
|
19
|
+
float weight{};
|
|
20
|
+
Eigen::Vector3<T> weightedWorldSpacePoint;
|
|
21
|
+
|
|
22
|
+
bool operator<(const BoneWeightT<T>& rhs) const {
|
|
23
|
+
return parentBone < rhs.parentBone;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
bool operator>(const BoneWeightT<T>& rhs) const {
|
|
27
|
+
return parentBone > rhs.parentBone;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
BoneWeightT<T>& operator+=(const BoneWeightT<T>& rhs) {
|
|
31
|
+
this->weight += rhs.weight;
|
|
32
|
+
this->weightedWorldSpacePoint += rhs.weightedWorldSpacePoint;
|
|
33
|
+
return *this;
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
// When we compute the derivatives of skinned points, we usually
|
|
38
|
+
// end up with a loop like this:
|
|
39
|
+
// for each skinned point i
|
|
40
|
+
// for each skinning bone and weight B_ij, w_ij
|
|
41
|
+
// for each ancestor k
|
|
42
|
+
// compute the weighted change in the skinned point wrt the ancestor
|
|
43
|
+
// The redundancy here is that most points are skinned to a set of bones in the
|
|
44
|
+
// same hierarchy (for example, two parts of the arm) and so it's redundant to
|
|
45
|
+
// walk up the whole hierarchy from scratch for each skinned bone.
|
|
46
|
+
//
|
|
47
|
+
// This class instead does a single pass up the tree from leaf-most to root-most
|
|
48
|
+
// skinned bones, accumulating skinning weights along the way. By packaging it
|
|
49
|
+
// in this class we hide the complexity and simplify the jacobian/gradient
|
|
50
|
+
// calculation.
|
|
51
|
+
template <typename T>
|
|
52
|
+
class SkinningWeightIteratorT {
|
|
53
|
+
public:
|
|
54
|
+
SkinningWeightIteratorT(
|
|
55
|
+
const Character& character,
|
|
56
|
+
const MeshT<T>& restMesh,
|
|
57
|
+
const SkeletonStateT<T>& skelState,
|
|
58
|
+
int vertexIndex);
|
|
59
|
+
|
|
60
|
+
SkinningWeightIteratorT(
|
|
61
|
+
const Character& character,
|
|
62
|
+
const SkinnedLocator& locator,
|
|
63
|
+
const Eigen::Vector3<T>& locatorPosition,
|
|
64
|
+
const SkeletonStateT<T>& skelState);
|
|
65
|
+
|
|
66
|
+
[[nodiscard]] bool finished() const;
|
|
67
|
+
|
|
68
|
+
// Returns the tuple <parent bone index, bone weight, vertex position in world space wrt the
|
|
69
|
+
// current bone>
|
|
70
|
+
std::tuple<size_t, T, Eigen::Vector3<T>> next();
|
|
71
|
+
|
|
72
|
+
private:
|
|
73
|
+
void checkInvariants();
|
|
74
|
+
|
|
75
|
+
std::array<BoneWeightT<T>, kMaxSkinJoints> boneWeights;
|
|
76
|
+
int nBoneWeights;
|
|
77
|
+
const Character& character;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
} // namespace momentum
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/character/skeleton_state.h>
|
|
11
|
+
#include <momentum/character_solver/fwd.h>
|
|
12
|
+
#include <momentum/character_solver/skeleton_error_function.h>
|
|
13
|
+
|
|
14
|
+
namespace momentum {
|
|
15
|
+
|
|
16
|
+
template <typename T>
|
|
17
|
+
class StateErrorFunctionT : public SkeletonErrorFunctionT<T> {
|
|
18
|
+
public:
|
|
19
|
+
StateErrorFunctionT(const Skeleton& skel, const ParameterTransform& pt);
|
|
20
|
+
explicit StateErrorFunctionT(const Character& character);
|
|
21
|
+
|
|
22
|
+
[[nodiscard]] double getError(const ModelParametersT<T>& params, const SkeletonStateT<T>& state)
|
|
23
|
+
final;
|
|
24
|
+
|
|
25
|
+
double getGradient(
|
|
26
|
+
const ModelParametersT<T>& params,
|
|
27
|
+
const SkeletonStateT<T>& state,
|
|
28
|
+
Eigen::Ref<Eigen::VectorX<T>> gradient) final;
|
|
29
|
+
|
|
30
|
+
double getJacobian(
|
|
31
|
+
const ModelParametersT<T>& params,
|
|
32
|
+
const SkeletonStateT<T>& state,
|
|
33
|
+
Eigen::Ref<Eigen::MatrixX<T>> jacobian,
|
|
34
|
+
Eigen::Ref<Eigen::VectorX<T>> residual,
|
|
35
|
+
int& usedRows) final;
|
|
36
|
+
|
|
37
|
+
[[nodiscard]] size_t getJacobianSize() const final;
|
|
38
|
+
|
|
39
|
+
void reset();
|
|
40
|
+
void setTargetState(const SkeletonStateT<T>* target);
|
|
41
|
+
void setTargetState(const SkeletonStateT<T>& target);
|
|
42
|
+
void setTargetState(TransformListT<T> target);
|
|
43
|
+
void setTargetWeight(const Eigen::VectorX<T>& weights);
|
|
44
|
+
void setTargetWeights(const Eigen::VectorX<T>& posWeight, const Eigen::VectorX<T>& rotWeight);
|
|
45
|
+
|
|
46
|
+
/// Set the target position weights for each joint.
|
|
47
|
+
/// @param posWeight Per-joint position weights.
|
|
48
|
+
void setPositionTargetWeights(const Eigen::VectorX<T>& posWeight);
|
|
49
|
+
|
|
50
|
+
/// Set the target rotation weights for each joint.
|
|
51
|
+
/// @param rotWeight Per-joint rotation weights.
|
|
52
|
+
void setRotationTargetWeights(const Eigen::VectorX<T>& rotWeight);
|
|
53
|
+
|
|
54
|
+
void setWeights(const float posWeight, const float rotationWeight) {
|
|
55
|
+
posWgt_ = posWeight;
|
|
56
|
+
rotWgt_ = rotationWeight;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
[[nodiscard]] const TransformListT<T>& getTargetState() const {
|
|
60
|
+
return this->targetState_;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
[[nodiscard]] const Eigen::VectorX<T>& getPositionWeights() const {
|
|
64
|
+
return targetPositionWeights_;
|
|
65
|
+
}
|
|
66
|
+
[[nodiscard]] const Eigen::VectorX<T>& getRotationWeights() const {
|
|
67
|
+
return targetRotationWeights_;
|
|
68
|
+
}
|
|
69
|
+
[[nodiscard]] const T& getPositionWeight() const {
|
|
70
|
+
return posWgt_;
|
|
71
|
+
}
|
|
72
|
+
[[nodiscard]] const T& getRotationWeight() const {
|
|
73
|
+
return rotWgt_;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
private:
|
|
77
|
+
TransformListT<T> targetState_;
|
|
78
|
+
Eigen::VectorX<T> targetPositionWeights_;
|
|
79
|
+
Eigen::VectorX<T> targetRotationWeights_;
|
|
80
|
+
|
|
81
|
+
T posWgt_;
|
|
82
|
+
T rotWgt_;
|
|
83
|
+
|
|
84
|
+
public:
|
|
85
|
+
// weights for the error functions
|
|
86
|
+
static constexpr T kPositionWeight = 1e-3f;
|
|
87
|
+
static constexpr T kOrientationWeight = 1e+0f;
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
} // 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/character.h>
|
|
11
|
+
#include <momentum/character_solver/fwd.h>
|
|
12
|
+
#include <momentum/math/random.h>
|
|
13
|
+
#include <momentum/math/transform.h>
|
|
14
|
+
#include <momentum/math/types.h>
|
|
15
|
+
#include <momentum/solver/fwd.h>
|
|
16
|
+
|
|
17
|
+
namespace momentum {
|
|
18
|
+
|
|
19
|
+
/// Function which computes a new set of model parameters such that the character pose is a rigidly
|
|
20
|
+
/// transformed version of the original pose. While there is technically a closed form solution
|
|
21
|
+
/// for any given skeleton, this is complicated in momentum because different
|
|
22
|
+
/// characters attach the rigid parameters to different joints, so a fully general solution uses IK.
|
|
23
|
+
/// However, getting it right requires dealing with local minima issues in Euler angles and other
|
|
24
|
+
/// challenges. So centralizing this functionality in a single place is useful.
|
|
25
|
+
///
|
|
26
|
+
/// @param[in] ensureContinuousOutput If true, the output model parameters will be solved
|
|
27
|
+
/// sequentially so that the resulting output is continuous where possible. This helps to avoid
|
|
28
|
+
/// issues with Euler flipping.
|
|
29
|
+
template <typename T>
|
|
30
|
+
std::vector<ModelParametersT<T>> transformPose(
|
|
31
|
+
const Character& character,
|
|
32
|
+
const std::vector<ModelParametersT<T>>& modelParameters,
|
|
33
|
+
const std::vector<TransformT<T>>& transforms,
|
|
34
|
+
bool ensureContinuousOutput = true);
|
|
35
|
+
|
|
36
|
+
template <typename T>
|
|
37
|
+
std::vector<ModelParametersT<T>> transformPose(
|
|
38
|
+
const Character& character,
|
|
39
|
+
const std::vector<ModelParametersT<T>>& modelParameters,
|
|
40
|
+
const TransformT<T>& transforms);
|
|
41
|
+
|
|
42
|
+
/// Solver which can be reused to repeatedly apply the transformPose function listed above.
|
|
43
|
+
template <typename T>
|
|
44
|
+
class PoseTransformSolverT {
|
|
45
|
+
public:
|
|
46
|
+
explicit PoseTransformSolverT(const Character& character);
|
|
47
|
+
~PoseTransformSolverT();
|
|
48
|
+
|
|
49
|
+
/// Applies a rigid transform to the given model parameters.
|
|
50
|
+
/// @param[in,out] modelParameters The model parameters to be transformed.
|
|
51
|
+
/// @param[in] transform The transform to apply.
|
|
52
|
+
/// @param[in] modelParametersPrev The previous pose, which is used to ensure continuity (the
|
|
53
|
+
/// solver will initialize using the previous frame's rigid parameters).
|
|
54
|
+
void transformPose(
|
|
55
|
+
ModelParametersT<T>& modelParameters,
|
|
56
|
+
const TransformT<T>& transform,
|
|
57
|
+
const ModelParametersT<T>& modelParametersPrev = ModelParametersT<T>{});
|
|
58
|
+
|
|
59
|
+
private:
|
|
60
|
+
Eigen::Index numModelParametersFull_;
|
|
61
|
+
|
|
62
|
+
momentum::Character characterSimplified_;
|
|
63
|
+
momentum::ParameterTransformT<T> parameterTransformSimplified_;
|
|
64
|
+
size_t rootJointSimplified_;
|
|
65
|
+
momentum::ParameterSet rigidParametersSimplified_;
|
|
66
|
+
std::vector<size_t> simplifiedParamToFullParamIdx_;
|
|
67
|
+
|
|
68
|
+
momentum::ModelParametersT<T> solvedParametersSimplified_;
|
|
69
|
+
momentum::SkeletonStateT<T> skelStateSimplified_;
|
|
70
|
+
|
|
71
|
+
std::shared_ptr<momentum::PositionErrorFunctionT<T>> positionError_;
|
|
72
|
+
std::shared_ptr<momentum::OrientationErrorFunctionT<T>> orientationError_;
|
|
73
|
+
|
|
74
|
+
std::unique_ptr<momentum::SkeletonSolverFunctionT<T>> solverFunction_;
|
|
75
|
+
std::unique_ptr<momentum::SolverT<T>> solver_;
|
|
76
|
+
|
|
77
|
+
momentum::Random<> rng_;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
} // namespace momentum
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/character/skeleton_state.h>
|
|
11
|
+
#include <momentum/character_solver/fwd.h>
|
|
12
|
+
#include <momentum/character_solver/skeleton_solver_function.h>
|
|
13
|
+
#include <momentum/math/online_householder_qr.h>
|
|
14
|
+
#include <momentum/solver/solver.h>
|
|
15
|
+
|
|
16
|
+
#include <Eigen/Core>
|
|
17
|
+
|
|
18
|
+
namespace momentum {
|
|
19
|
+
|
|
20
|
+
/// Trust Region with QR decomposition specific options
|
|
21
|
+
struct TrustRegionQROptions : SolverOptions {
|
|
22
|
+
/// Trust region radius parameter for the Trust Region solver with QR decomposition.
|
|
23
|
+
float trustRegionRadius_ = 1.0f;
|
|
24
|
+
|
|
25
|
+
TrustRegionQROptions() = default;
|
|
26
|
+
|
|
27
|
+
/* implicit */ TrustRegionQROptions(const SolverOptions& baseOptions)
|
|
28
|
+
: SolverOptions(baseOptions) {
|
|
29
|
+
// Empty
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
template <typename T>
|
|
34
|
+
class TrustRegionQRT : public SolverT<T> {
|
|
35
|
+
public:
|
|
36
|
+
TrustRegionQRT(const SolverOptions& options, SkeletonSolverFunctionT<T>* solverFun);
|
|
37
|
+
|
|
38
|
+
[[nodiscard]] std::string_view getName() const override;
|
|
39
|
+
|
|
40
|
+
void setOptions(const SolverOptions& options) final;
|
|
41
|
+
|
|
42
|
+
void iter() {
|
|
43
|
+
doIteration();
|
|
44
|
+
this->iteration_++;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
void init() {
|
|
48
|
+
this->iteration_ = 0;
|
|
49
|
+
initializeSolver();
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
Eigen::VectorX<T> getP() {
|
|
53
|
+
return this->parameters_;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
protected:
|
|
57
|
+
void doIteration() final;
|
|
58
|
+
void initializeSolver() final;
|
|
59
|
+
|
|
60
|
+
private:
|
|
61
|
+
ResizeableMatrix<T> jacobian_;
|
|
62
|
+
ResizeableMatrix<T> residual_;
|
|
63
|
+
|
|
64
|
+
Eigen::VectorX<T> gradientSub_;
|
|
65
|
+
Eigen::MatrixX<T> lambdaDiag_;
|
|
66
|
+
Eigen::VectorX<T> lambdaZero_;
|
|
67
|
+
|
|
68
|
+
OnlineHouseholderQR<T> qrSolver_;
|
|
69
|
+
|
|
70
|
+
SkeletonStateT<T> skeletonState_;
|
|
71
|
+
|
|
72
|
+
T trustRegionRadius_;
|
|
73
|
+
T maxTrustRegionRadius_ = 10.0;
|
|
74
|
+
T curTrustRegionRadius_ = 1.0;
|
|
75
|
+
Eigen::MatrixX<T> Rmatrix_;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
} // namespace momentum
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/character_solver/fwd.h>
|
|
11
|
+
#include <momentum/character_solver/plane_error_function.h>
|
|
12
|
+
#include <momentum/character_solver/position_error_function.h>
|
|
13
|
+
#include <momentum/character_solver/skeleton_error_function.h>
|
|
14
|
+
#include <momentum/math/fwd.h>
|
|
15
|
+
|
|
16
|
+
namespace momentum {
|
|
17
|
+
|
|
18
|
+
template <typename T>
|
|
19
|
+
struct VertexConstraintT {
|
|
20
|
+
int vertexIndex = -1;
|
|
21
|
+
T weight = 1;
|
|
22
|
+
Eigen::Vector3<T> targetPosition;
|
|
23
|
+
Eigen::Vector3<T> targetNormal;
|
|
24
|
+
|
|
25
|
+
template <typename T2>
|
|
26
|
+
VertexConstraintT<T2> cast() const {
|
|
27
|
+
return {
|
|
28
|
+
this->vertexIndex,
|
|
29
|
+
static_cast<T2>(this->weight),
|
|
30
|
+
this->targetPosition.template cast<T2>(),
|
|
31
|
+
this->targetNormal.template cast<T2>()};
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
enum class VertexConstraintType {
|
|
36
|
+
Position, // Target the vertex position
|
|
37
|
+
Plane, // point-to-plane distance using the target normal
|
|
38
|
+
Normal, // point-to-plane distance using the source (body) normal
|
|
39
|
+
SymmetricNormal, // Point-to-plane using a 50/50 mix of source and target normal
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
[[nodiscard]] std::string_view toString(VertexConstraintType type);
|
|
43
|
+
|
|
44
|
+
template <typename T>
|
|
45
|
+
class VertexErrorFunctionT : public SkeletonErrorFunctionT<T> {
|
|
46
|
+
public:
|
|
47
|
+
explicit VertexErrorFunctionT(
|
|
48
|
+
const Character& character,
|
|
49
|
+
VertexConstraintType type = VertexConstraintType::Position,
|
|
50
|
+
uint32_t maxThreads = 0);
|
|
51
|
+
virtual ~VertexErrorFunctionT() override;
|
|
52
|
+
|
|
53
|
+
[[nodiscard]] double getError(
|
|
54
|
+
const ModelParametersT<T>& modelParameters,
|
|
55
|
+
const SkeletonStateT<T>& state) final;
|
|
56
|
+
|
|
57
|
+
double getGradient(
|
|
58
|
+
const ModelParametersT<T>& modelParameters,
|
|
59
|
+
const SkeletonStateT<T>& state,
|
|
60
|
+
Eigen::Ref<Eigen::VectorX<T>> gradient) final;
|
|
61
|
+
|
|
62
|
+
double getJacobian(
|
|
63
|
+
const ModelParametersT<T>& modelParameters,
|
|
64
|
+
const SkeletonStateT<T>& state,
|
|
65
|
+
Eigen::Ref<Eigen::MatrixX<T>> jacobian,
|
|
66
|
+
Eigen::Ref<Eigen::VectorX<T>> residual,
|
|
67
|
+
int& usedRows) final;
|
|
68
|
+
|
|
69
|
+
[[nodiscard]] size_t getJacobianSize() const final;
|
|
70
|
+
|
|
71
|
+
void addConstraint(
|
|
72
|
+
int vertexIndex,
|
|
73
|
+
T weight,
|
|
74
|
+
const Eigen::Vector3<T>& targetPosition,
|
|
75
|
+
const Eigen::Vector3<T>& targetNormal);
|
|
76
|
+
void clearConstraints();
|
|
77
|
+
|
|
78
|
+
[[nodiscard]] const std::vector<VertexConstraintT<T>>& getConstraints() const {
|
|
79
|
+
return constraints_;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
[[nodiscard]] size_t numConstraints() const {
|
|
83
|
+
return constraints_.size();
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
static constexpr T kPositionWeight = PositionErrorFunctionT<T>::kLegacyWeight;
|
|
87
|
+
static constexpr T kPlaneWeight = PlaneErrorFunctionT<T>::kLegacyWeight;
|
|
88
|
+
|
|
89
|
+
[[nodiscard]] const Character& getCharacter() const {
|
|
90
|
+
return character_;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
private:
|
|
94
|
+
double calculatePositionJacobian(
|
|
95
|
+
const ModelParametersT<T>& modelParameters,
|
|
96
|
+
const SkeletonStateT<T>& state,
|
|
97
|
+
const VertexConstraintT<T>& constr,
|
|
98
|
+
Ref<Eigen::MatrixX<T>> jac,
|
|
99
|
+
Ref<Eigen::VectorX<T>> res) const;
|
|
100
|
+
|
|
101
|
+
double calculateNormalJacobian(
|
|
102
|
+
const ModelParametersT<T>& modelParameters,
|
|
103
|
+
const SkeletonStateT<T>& state,
|
|
104
|
+
const VertexConstraintT<T>& constr,
|
|
105
|
+
T sourceNormalWeight,
|
|
106
|
+
T targetNormalWeight,
|
|
107
|
+
Ref<Eigen::MatrixX<T>> jac,
|
|
108
|
+
T& res) const;
|
|
109
|
+
|
|
110
|
+
double calculatePositionGradient(
|
|
111
|
+
const ModelParametersT<T>& modelParameters,
|
|
112
|
+
const SkeletonStateT<T>& state,
|
|
113
|
+
const VertexConstraintT<T>& constr,
|
|
114
|
+
Eigen::Ref<Eigen::VectorX<T>> gradient) const;
|
|
115
|
+
|
|
116
|
+
double calculateNormalGradient(
|
|
117
|
+
const ModelParametersT<T>& modelParameters,
|
|
118
|
+
const SkeletonStateT<T>& state,
|
|
119
|
+
const VertexConstraintT<T>& constr,
|
|
120
|
+
T sourceNormalWeight,
|
|
121
|
+
T targetNormalWeight,
|
|
122
|
+
Eigen::Ref<Eigen::VectorX<T>> gradient) const;
|
|
123
|
+
|
|
124
|
+
// Utility function used now in calculateNormalJacobian and calculatePositionGradient
|
|
125
|
+
// to calculate derivatives with respect to position in world space (considering skinning)
|
|
126
|
+
void calculateDWorldPos(
|
|
127
|
+
const SkeletonStateT<T>& state,
|
|
128
|
+
const VertexConstraintT<T>& constr,
|
|
129
|
+
const Eigen::Vector3<T>& d_restPos,
|
|
130
|
+
Eigen::Vector3<T>& d_worldPos) const;
|
|
131
|
+
|
|
132
|
+
std::pair<T, T> computeNormalWeights() const;
|
|
133
|
+
|
|
134
|
+
const Character& character_;
|
|
135
|
+
|
|
136
|
+
std::vector<VertexConstraintT<T>> constraints_;
|
|
137
|
+
|
|
138
|
+
std::unique_ptr<MeshT<T>>
|
|
139
|
+
neutralMesh_; // Rest mesh without facial expression basis,
|
|
140
|
+
// used to restore the neutral shape after facial expressions are applied.
|
|
141
|
+
// Not used with there is a shape basis.
|
|
142
|
+
std::unique_ptr<MeshT<T>> restMesh_; // The rest positions of the mesh after shape basis
|
|
143
|
+
// (and potentially facial expression) has been applied
|
|
144
|
+
std::unique_ptr<MeshT<T>>
|
|
145
|
+
posedMesh_; // The posed mesh after the skeleton transforms have been applied.
|
|
146
|
+
|
|
147
|
+
const VertexConstraintType constraintType_;
|
|
148
|
+
|
|
149
|
+
uint32_t maxThreads_;
|
|
150
|
+
|
|
151
|
+
void updateMeshes(const ModelParametersT<T>& modelParameters, const SkeletonStateT<T>& state);
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
} // namespace momentum
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/character_solver/fwd.h>
|
|
11
|
+
#include <momentum/character_solver/skeleton_error_function.h>
|
|
12
|
+
#include <momentum/math/fwd.h>
|
|
13
|
+
|
|
14
|
+
namespace momentum {
|
|
15
|
+
|
|
16
|
+
template <typename T>
|
|
17
|
+
struct VertexProjectionConstraintT {
|
|
18
|
+
int vertexIndex = -1;
|
|
19
|
+
T weight = 1;
|
|
20
|
+
Eigen::Vector2<T> targetPosition;
|
|
21
|
+
Eigen::Matrix<T, 3, 4> projection; // Projection matrix
|
|
22
|
+
|
|
23
|
+
template <typename T2>
|
|
24
|
+
VertexProjectionConstraintT<T2> cast() const {
|
|
25
|
+
return {
|
|
26
|
+
this->vertexIndex,
|
|
27
|
+
(T)this->weight,
|
|
28
|
+
this->targetPosition.template cast<T2>(),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
template <typename T>
|
|
34
|
+
class VertexProjectionErrorFunctionT : public SkeletonErrorFunctionT<T> {
|
|
35
|
+
public:
|
|
36
|
+
explicit VertexProjectionErrorFunctionT(const Character& character, uint32_t maxThreads = 0);
|
|
37
|
+
~VertexProjectionErrorFunctionT() override;
|
|
38
|
+
|
|
39
|
+
[[nodiscard]] double getError(
|
|
40
|
+
const ModelParametersT<T>& modelParameters,
|
|
41
|
+
const SkeletonStateT<T>& state) final;
|
|
42
|
+
|
|
43
|
+
double getGradient(
|
|
44
|
+
const ModelParametersT<T>& modelParameters,
|
|
45
|
+
const SkeletonStateT<T>& state,
|
|
46
|
+
Eigen::Ref<Eigen::VectorX<T>> gradient) final;
|
|
47
|
+
|
|
48
|
+
double getJacobian(
|
|
49
|
+
const ModelParametersT<T>& modelParameters,
|
|
50
|
+
const SkeletonStateT<T>& state,
|
|
51
|
+
Eigen::Ref<Eigen::MatrixX<T>> jacobian,
|
|
52
|
+
Eigen::Ref<Eigen::VectorX<T>> residual,
|
|
53
|
+
int& usedRows) final;
|
|
54
|
+
|
|
55
|
+
[[nodiscard]] size_t getJacobianSize() const final;
|
|
56
|
+
|
|
57
|
+
void addConstraint(
|
|
58
|
+
int vertexIndex,
|
|
59
|
+
T weight,
|
|
60
|
+
const Eigen::Vector2<T>& targetPosition,
|
|
61
|
+
const Eigen::Matrix<T, 3, 4>& projection);
|
|
62
|
+
void clearConstraints();
|
|
63
|
+
|
|
64
|
+
[[nodiscard]] const std::vector<VertexProjectionConstraintT<T>>& getConstraints() const {
|
|
65
|
+
return constraints_;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
[[nodiscard]] const Character& getCharacter() const {
|
|
69
|
+
return character_;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
[[nodiscard]] size_t numConstraints() const {
|
|
73
|
+
return constraints_.size();
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
private:
|
|
77
|
+
double calculateJacobian(
|
|
78
|
+
const ModelParametersT<T>& modelParameters,
|
|
79
|
+
const SkeletonStateT<T>& state,
|
|
80
|
+
const VertexProjectionConstraintT<T>& constr,
|
|
81
|
+
Ref<Eigen::MatrixX<T>> jac,
|
|
82
|
+
Ref<Eigen::VectorX<T>> res) const;
|
|
83
|
+
|
|
84
|
+
double calculateGradient(
|
|
85
|
+
const ModelParametersT<T>& modelParameters,
|
|
86
|
+
const SkeletonStateT<T>& state,
|
|
87
|
+
const VertexProjectionConstraintT<T>& constr,
|
|
88
|
+
Eigen::Ref<Eigen::VectorX<T>> gradient) const;
|
|
89
|
+
|
|
90
|
+
// Utility function used now in calculateJacobian and calculateGradient
|
|
91
|
+
// to calculate derivatives with respect to position in world space (considering skinning)
|
|
92
|
+
void calculateDWorldPos(
|
|
93
|
+
const SkeletonStateT<T>& state,
|
|
94
|
+
const VertexProjectionConstraintT<T>& constr,
|
|
95
|
+
const Eigen::Vector3<T>& d_restPos,
|
|
96
|
+
Eigen::Vector3<T>& d_worldPos) const;
|
|
97
|
+
|
|
98
|
+
void updateMeshes(const ModelParametersT<T>& modelParameters, const SkeletonStateT<T>& state);
|
|
99
|
+
|
|
100
|
+
const Character& character_;
|
|
101
|
+
|
|
102
|
+
std::vector<VertexProjectionConstraintT<T>> constraints_;
|
|
103
|
+
|
|
104
|
+
std::unique_ptr<MeshT<T>>
|
|
105
|
+
neutralMesh_; // Rest mesh without facial expression basis,
|
|
106
|
+
// used to restore the neutral shape after facial expressions are applied.
|
|
107
|
+
// Not used with there is a shape basis.
|
|
108
|
+
std::unique_ptr<MeshT<T>> restMesh_; // The rest positions of the mesh after shape basis
|
|
109
|
+
// (and potentially facial expression) has been applied
|
|
110
|
+
std::unique_ptr<MeshT<T>>
|
|
111
|
+
posedMesh_; // The posed mesh after the skeleton transforms have been applied.
|
|
112
|
+
|
|
113
|
+
uint32_t maxThreads_;
|
|
114
|
+
|
|
115
|
+
T _nearClip = 1.0f;
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
} // namespace momentum
|