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,99 @@
|
|
|
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/locator.h>
|
|
12
|
+
#include <momentum/character/marker.h>
|
|
13
|
+
#include <momentum/character_solver/fwd.h>
|
|
14
|
+
#include <momentum/character_solver/skinned_locator_triangle_error_function.h>
|
|
15
|
+
|
|
16
|
+
namespace momentum {
|
|
17
|
+
|
|
18
|
+
std::vector<std::vector<momentum::PositionData>> createConstraintData(
|
|
19
|
+
std::span<const std::vector<momentum::Marker>> markerData,
|
|
20
|
+
const momentum::LocatorList& locators);
|
|
21
|
+
|
|
22
|
+
std::vector<std::vector<momentum::SkinnedLocatorConstraint>> createSkinnedConstraintData(
|
|
23
|
+
std::span<const std::vector<momentum::Marker>> markerData,
|
|
24
|
+
const momentum::SkinnedLocatorList& locators);
|
|
25
|
+
|
|
26
|
+
// TODO: remove the one in momentum
|
|
27
|
+
|
|
28
|
+
// Create a LocatorCharacter where each locator is a bone in its skeleton. This character is used
|
|
29
|
+
// for calibrating locator offsets (as bone offset parameters).
|
|
30
|
+
momentum::Character createLocatorCharacter(
|
|
31
|
+
const momentum::Character& sourceCharacter,
|
|
32
|
+
const std::string& prefix);
|
|
33
|
+
|
|
34
|
+
/// Convert locators to skinned locators by finding the closest point on the mesh surface that
|
|
35
|
+
/// matches the correct bone index and using the skinned weights from that point. Does not add
|
|
36
|
+
/// parameters for the skinned locators, however, that should be a separate step if you are planning
|
|
37
|
+
/// to solve for their locations.
|
|
38
|
+
/// @param sourceCharacter Character with locators to convert
|
|
39
|
+
/// @param maxDistance Maximum distance to search for the closest point on the mesh surface. If the
|
|
40
|
+
/// locator is further than this distance, it will not be converted.
|
|
41
|
+
momentum::Character locatorsToSkinnedLocators(
|
|
42
|
+
const momentum::Character& sourceCharacter,
|
|
43
|
+
float maxDistance = 3.0f);
|
|
44
|
+
|
|
45
|
+
/// Convert skinned locators to regular locators by selecting the bone with the highest skin weight.
|
|
46
|
+
/// This is useful when exporting to file formats that don't support skinned locators (e.g., Maya).
|
|
47
|
+
/// Each skinned locator will be converted to a regular locator attached to the bone with the
|
|
48
|
+
/// highest weight. The position will be transformed from the rest pose space to the local space
|
|
49
|
+
/// of the selected bone.
|
|
50
|
+
/// @param sourceCharacter Character with skinned locators to convert
|
|
51
|
+
/// @return Character with skinned locators converted to regular locators
|
|
52
|
+
momentum::Character skinnedLocatorsToLocators(const momentum::Character& sourceCharacter);
|
|
53
|
+
|
|
54
|
+
std::vector<momentum::SkinnedLocatorTriangleConstraintT<float>> createSkinnedLocatorMeshConstraints(
|
|
55
|
+
const momentum::Character& character,
|
|
56
|
+
float targetDepth = 1.0f);
|
|
57
|
+
|
|
58
|
+
// Extract locator offsets from a LocatorCharacter for a normal Character given input calibrated
|
|
59
|
+
// parameters
|
|
60
|
+
momentum::LocatorList extractLocatorsFromCharacter(
|
|
61
|
+
const momentum::Character& locatorCharacter,
|
|
62
|
+
const momentum::CharacterParameters& calibParams);
|
|
63
|
+
|
|
64
|
+
// TODO: move to momentum proper
|
|
65
|
+
momentum::ModelParameters extractParameters(
|
|
66
|
+
const momentum::ModelParameters& params,
|
|
67
|
+
const momentum::ParameterSet& parameterSet);
|
|
68
|
+
|
|
69
|
+
std::tuple<Eigen::VectorXf, momentum::LocatorList, momentum::SkinnedLocatorList>
|
|
70
|
+
extractIdAndLocatorsFromParams(
|
|
71
|
+
const momentum::ModelParameters& param,
|
|
72
|
+
const momentum::Character& sourceCharacter,
|
|
73
|
+
const momentum::Character& targetCharacter);
|
|
74
|
+
|
|
75
|
+
Mesh extractBlendShapeFromParams(
|
|
76
|
+
const momentum::ModelParameters& param,
|
|
77
|
+
const momentum::Character& sourceCharacter);
|
|
78
|
+
|
|
79
|
+
void fillIdentity(
|
|
80
|
+
const momentum::ParameterSet& idSet,
|
|
81
|
+
const momentum::ModelParameters& identity,
|
|
82
|
+
Eigen::MatrixXf& motion);
|
|
83
|
+
|
|
84
|
+
// convert from joint to model parameters using only the parameters active in idSet
|
|
85
|
+
ModelParameters jointIdentityToModelIdentity(
|
|
86
|
+
const Character& c,
|
|
87
|
+
const ParameterSet& idSet,
|
|
88
|
+
const JointParameters& jointIdentity);
|
|
89
|
+
|
|
90
|
+
void removeIdentity(
|
|
91
|
+
const momentum::ParameterSet& idSet,
|
|
92
|
+
const momentum::ModelParameters& identity,
|
|
93
|
+
Eigen::MatrixXf& motion);
|
|
94
|
+
|
|
95
|
+
std::vector<std::vector<momentum::Marker>> extractMarkersFromMotion(
|
|
96
|
+
const momentum::Character& character,
|
|
97
|
+
const Eigen::MatrixXf& motion);
|
|
98
|
+
|
|
99
|
+
} // namespace momentum
|
|
@@ -0,0 +1,82 @@
|
|
|
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 <limits>
|
|
11
|
+
#include <type_traits>
|
|
12
|
+
|
|
13
|
+
namespace momentum {
|
|
14
|
+
|
|
15
|
+
template <typename T = float>
|
|
16
|
+
[[nodiscard]] constexpr T nan() noexcept {
|
|
17
|
+
return std::numeric_limits<T>::quiet_NaN();
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/// Returns the tolerance value based on the provided type T
|
|
21
|
+
template <typename T>
|
|
22
|
+
[[nodiscard]] constexpr T Eps(T FloatEps = T(1e-7), T DoubleEps = T(1e-16)) {
|
|
23
|
+
if constexpr (std::is_same_v<T, float>) {
|
|
24
|
+
return FloatEps;
|
|
25
|
+
} else if constexpr (std::is_same_v<T, double>) {
|
|
26
|
+
return DoubleEps;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
template <typename T = float>
|
|
31
|
+
[[nodiscard]] constexpr T ln2() noexcept {
|
|
32
|
+
return 0.69314718055994530942; ///< log_e 2
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
template <typename T = float>
|
|
36
|
+
[[nodiscard]] constexpr T pi() noexcept {
|
|
37
|
+
return 3.14159265358979323846;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
template <typename T = float>
|
|
41
|
+
[[nodiscard]] constexpr T twopi() noexcept {
|
|
42
|
+
return T(2) * pi<T>();
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/// Converts the given angle x (in degrees) to radians.
|
|
46
|
+
///
|
|
47
|
+
/// If called without an argument, it returns the conversion factor from degrees to radians.
|
|
48
|
+
template <typename T = float>
|
|
49
|
+
[[nodiscard]] constexpr T toRad(T x = T(1)) noexcept {
|
|
50
|
+
static_assert(std::is_floating_point_v<T>, "toRad requires a floating point argument.");
|
|
51
|
+
return x * pi<T>() / T(180);
|
|
52
|
+
}
|
|
53
|
+
// TODO: Support Eigen types to provide consistent conversion function usage with a single argument.
|
|
54
|
+
|
|
55
|
+
/// Converts the given angle x (in radians) to degrees.
|
|
56
|
+
///
|
|
57
|
+
/// If called without an argument, it returns the conversion factor from radians to degrees.
|
|
58
|
+
template <typename T = float>
|
|
59
|
+
[[nodiscard]] constexpr T toDeg(T x = T(1)) noexcept {
|
|
60
|
+
static_assert(std::is_floating_point_v<T>, "toDeg requires a floating point argument.");
|
|
61
|
+
return x * T(180) / pi<T>();
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/// Converts the given length x (in centimeters) to meters.
|
|
65
|
+
///
|
|
66
|
+
/// If called without an argument, it returns the conversion factor from centimeters to meters.
|
|
67
|
+
template <typename T = float>
|
|
68
|
+
[[nodiscard]] constexpr T toM(T x = T(1)) noexcept {
|
|
69
|
+
static_assert(std::is_floating_point_v<T>, "toM requires a floating point argument.");
|
|
70
|
+
return x * T(0.01);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/// Converts the given length x (in meters) to centimeters.
|
|
74
|
+
///
|
|
75
|
+
/// If called without an argument, it returns the conversion factor from meters to centimeters.
|
|
76
|
+
template <typename T = float>
|
|
77
|
+
[[nodiscard]] constexpr T toCm(T x = T(1)) noexcept {
|
|
78
|
+
static_assert(std::is_floating_point_v<T>, "toCm requires a floating point argument.");
|
|
79
|
+
return x * T(100);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
} // namespace momentum
|
|
@@ -0,0 +1,84 @@
|
|
|
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/math/online_householder_qr.h>
|
|
11
|
+
#include <momentum/math/types.h>
|
|
12
|
+
|
|
13
|
+
namespace momentum {
|
|
14
|
+
|
|
15
|
+
//
|
|
16
|
+
// Efficient and numerically stable representation of the generalized
|
|
17
|
+
// Gaussian covariance
|
|
18
|
+
// C = (sigma^2 * I + A^T * A)
|
|
19
|
+
// providing access to the inverse covariance matrix (computed using
|
|
20
|
+
// QR factorization).
|
|
21
|
+
//
|
|
22
|
+
// Note the dimensionality here: C and I are [n x n], A is [m x n]
|
|
23
|
+
// where m can be either larger or smaller than n.
|
|
24
|
+
template <typename T>
|
|
25
|
+
class LowRankCovarianceMatrixT {
|
|
26
|
+
public:
|
|
27
|
+
LowRankCovarianceMatrixT() = default;
|
|
28
|
+
|
|
29
|
+
void reset(T sigma, Eigen::Ref<const Eigen::MatrixX<T>> A);
|
|
30
|
+
|
|
31
|
+
[[nodiscard]] Eigen::Index dimension() const;
|
|
32
|
+
|
|
33
|
+
[[nodiscard]] const Eigen::MatrixX<T>& basis() const;
|
|
34
|
+
|
|
35
|
+
[[nodiscard]] T sigma() const;
|
|
36
|
+
|
|
37
|
+
[[nodiscard]] Eigen::VectorX<T> inverse_times_vec(Eigen::Ref<const Eigen::VectorX<T>> rhs) const;
|
|
38
|
+
[[nodiscard]] Eigen::VectorX<T> times_vec(Eigen::Ref<const Eigen::VectorX<T>> rhs) const;
|
|
39
|
+
|
|
40
|
+
[[nodiscard]] Eigen::MatrixX<T> inverse_times_mat(Eigen::Ref<const Eigen::MatrixX<T>> rhs) const;
|
|
41
|
+
[[nodiscard]] Eigen::MatrixX<T> times_mat(Eigen::Ref<const Eigen::MatrixX<T>> rhs) const;
|
|
42
|
+
|
|
43
|
+
[[nodiscard]] const Eigen::MatrixX<T>& R() const;
|
|
44
|
+
|
|
45
|
+
// The log of the determinant of the covariance matrix
|
|
46
|
+
[[nodiscard]] T logDeterminant() const;
|
|
47
|
+
|
|
48
|
+
// The log of the determinant of the inverse covariance matrix
|
|
49
|
+
[[nodiscard]] T inverse_logDeterminant() const;
|
|
50
|
+
|
|
51
|
+
private:
|
|
52
|
+
// The QR factorization of A is defined by:
|
|
53
|
+
// A = Q*R
|
|
54
|
+
// where Q is orthonormal and R is upper triangular. This online QR solver
|
|
55
|
+
// used here happens to be particularly efficient for the case where the A
|
|
56
|
+
// matrix looks like:
|
|
57
|
+
// A = [ lambda*I ]
|
|
58
|
+
// [ B ]
|
|
59
|
+
// The reason for this is that it allows initialization of the R matrix by
|
|
60
|
+
// a diagonal, and hence only needs to process the rows in W. The
|
|
61
|
+
// resulting factorization is O(m*n^2) to compute, which may (for m << n)
|
|
62
|
+
// be a touch cheaper than the fully general O(n^3) that a "standard" QR
|
|
63
|
+
// factorization or Cholesky would require.
|
|
64
|
+
//
|
|
65
|
+
// Once we have A = Q*R, we can compute (A^T*A)^{-1} by
|
|
66
|
+
// (A^T * A)^{-1} = (R^T * Q^T * Q * R)^{-1}
|
|
67
|
+
// = (R^T * R)^{-1} by orthonormality
|
|
68
|
+
// = (R^{-1}) * R^{-T} distributing the inverse
|
|
69
|
+
//
|
|
70
|
+
// Note that OnlineHouseholderQR does _not_ store the Q matrix (or the
|
|
71
|
+
// information required to reconstruct it, as is more typical) because it
|
|
72
|
+
// assumes that it will be used to solve least squares problems of the form
|
|
73
|
+
// min |Ax - b|_2 and hence can apply Q to b as it is being computed. In
|
|
74
|
+
// our case, however, as noted above we won't be using the Q matrix so this
|
|
75
|
+
// is not a limitation.
|
|
76
|
+
OnlineHouseholderQR<T> qrFactorization_{0};
|
|
77
|
+
|
|
78
|
+
// Low-rank basis:
|
|
79
|
+
Eigen::MatrixX<T> A_;
|
|
80
|
+
|
|
81
|
+
T sigma_ = 0;
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
} // namespace momentum
|
|
@@ -0,0 +1,23 @@
|
|
|
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 <fmt/ostream.h>
|
|
11
|
+
#include <Eigen/Core>
|
|
12
|
+
|
|
13
|
+
#if FMT_VERSION > 100000
|
|
14
|
+
|
|
15
|
+
// https://stackoverflow.com/a/73755864
|
|
16
|
+
#ifndef MOMENTUM_FMT_EIGEN_SHARED_PTR_FORMATTER
|
|
17
|
+
#define MOMENTUM_FMT_EIGEN_SHARED_PTR_FORMATTER
|
|
18
|
+
template <typename T>
|
|
19
|
+
struct fmt::formatter<T, std::enable_if_t<std::is_base_of_v<Eigen::DenseBase<T>, T>, char>>
|
|
20
|
+
: ostream_formatter {};
|
|
21
|
+
#endif
|
|
22
|
+
|
|
23
|
+
#endif
|
|
@@ -0,0 +1,132 @@
|
|
|
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
|
+
template <typename T>
|
|
19
|
+
struct MeshT;
|
|
20
|
+
using Mesh = MeshT<float>;
|
|
21
|
+
using Meshd = MeshT<double>;
|
|
22
|
+
|
|
23
|
+
using Mesh_p = ::std::shared_ptr<Mesh>;
|
|
24
|
+
using Mesh_u = ::std::unique_ptr<Mesh>;
|
|
25
|
+
using Mesh_w = ::std::weak_ptr<Mesh>;
|
|
26
|
+
using Mesh_const_p = ::std::shared_ptr<const Mesh>;
|
|
27
|
+
using Mesh_const_u = ::std::unique_ptr<const Mesh>;
|
|
28
|
+
using Mesh_const_w = ::std::weak_ptr<const Mesh>;
|
|
29
|
+
|
|
30
|
+
using Meshd_p = ::std::shared_ptr<Meshd>;
|
|
31
|
+
using Meshd_u = ::std::unique_ptr<Meshd>;
|
|
32
|
+
using Meshd_w = ::std::weak_ptr<Meshd>;
|
|
33
|
+
using Meshd_const_p = ::std::shared_ptr<const Meshd>;
|
|
34
|
+
using Meshd_const_u = ::std::unique_ptr<const Meshd>;
|
|
35
|
+
using Meshd_const_w = ::std::weak_ptr<const Meshd>;
|
|
36
|
+
|
|
37
|
+
template <typename T>
|
|
38
|
+
struct MppcaT;
|
|
39
|
+
using Mppca = MppcaT<float>;
|
|
40
|
+
using Mppcad = MppcaT<double>;
|
|
41
|
+
|
|
42
|
+
using Mppca_p = ::std::shared_ptr<Mppca>;
|
|
43
|
+
using Mppca_u = ::std::unique_ptr<Mppca>;
|
|
44
|
+
using Mppca_w = ::std::weak_ptr<Mppca>;
|
|
45
|
+
using Mppca_const_p = ::std::shared_ptr<const Mppca>;
|
|
46
|
+
using Mppca_const_u = ::std::unique_ptr<const Mppca>;
|
|
47
|
+
using Mppca_const_w = ::std::weak_ptr<const Mppca>;
|
|
48
|
+
|
|
49
|
+
using Mppcad_p = ::std::shared_ptr<Mppcad>;
|
|
50
|
+
using Mppcad_u = ::std::unique_ptr<Mppcad>;
|
|
51
|
+
using Mppcad_w = ::std::weak_ptr<Mppcad>;
|
|
52
|
+
using Mppcad_const_p = ::std::shared_ptr<const Mppcad>;
|
|
53
|
+
using Mppcad_const_u = ::std::unique_ptr<const Mppcad>;
|
|
54
|
+
using Mppcad_const_w = ::std::weak_ptr<const Mppcad>;
|
|
55
|
+
|
|
56
|
+
template <typename T>
|
|
57
|
+
struct TransformT;
|
|
58
|
+
using Transform = TransformT<float>;
|
|
59
|
+
using Transformd = TransformT<double>;
|
|
60
|
+
|
|
61
|
+
using Transform_p = ::std::shared_ptr<Transform>;
|
|
62
|
+
using Transform_u = ::std::unique_ptr<Transform>;
|
|
63
|
+
using Transform_w = ::std::weak_ptr<Transform>;
|
|
64
|
+
using Transform_const_p = ::std::shared_ptr<const Transform>;
|
|
65
|
+
using Transform_const_u = ::std::unique_ptr<const Transform>;
|
|
66
|
+
using Transform_const_w = ::std::weak_ptr<const Transform>;
|
|
67
|
+
|
|
68
|
+
using Transformd_p = ::std::shared_ptr<Transformd>;
|
|
69
|
+
using Transformd_u = ::std::unique_ptr<Transformd>;
|
|
70
|
+
using Transformd_w = ::std::weak_ptr<Transformd>;
|
|
71
|
+
using Transformd_const_p = ::std::shared_ptr<const Transformd>;
|
|
72
|
+
using Transformd_const_u = ::std::unique_ptr<const Transformd>;
|
|
73
|
+
using Transformd_const_w = ::std::weak_ptr<const Transformd>;
|
|
74
|
+
|
|
75
|
+
template <typename T>
|
|
76
|
+
class LowRankCovarianceMatrixT;
|
|
77
|
+
using LowRankCovarianceMatrix = LowRankCovarianceMatrixT<float>;
|
|
78
|
+
using LowRankCovarianceMatrixd = LowRankCovarianceMatrixT<double>;
|
|
79
|
+
|
|
80
|
+
using LowRankCovarianceMatrix_p = ::std::shared_ptr<LowRankCovarianceMatrix>;
|
|
81
|
+
using LowRankCovarianceMatrix_u = ::std::unique_ptr<LowRankCovarianceMatrix>;
|
|
82
|
+
using LowRankCovarianceMatrix_w = ::std::weak_ptr<LowRankCovarianceMatrix>;
|
|
83
|
+
using LowRankCovarianceMatrix_const_p = ::std::shared_ptr<const LowRankCovarianceMatrix>;
|
|
84
|
+
using LowRankCovarianceMatrix_const_u = ::std::unique_ptr<const LowRankCovarianceMatrix>;
|
|
85
|
+
using LowRankCovarianceMatrix_const_w = ::std::weak_ptr<const LowRankCovarianceMatrix>;
|
|
86
|
+
|
|
87
|
+
using LowRankCovarianceMatrixd_p = ::std::shared_ptr<LowRankCovarianceMatrixd>;
|
|
88
|
+
using LowRankCovarianceMatrixd_u = ::std::unique_ptr<LowRankCovarianceMatrixd>;
|
|
89
|
+
using LowRankCovarianceMatrixd_w = ::std::weak_ptr<LowRankCovarianceMatrixd>;
|
|
90
|
+
using LowRankCovarianceMatrixd_const_p = ::std::shared_ptr<const LowRankCovarianceMatrixd>;
|
|
91
|
+
using LowRankCovarianceMatrixd_const_u = ::std::unique_ptr<const LowRankCovarianceMatrixd>;
|
|
92
|
+
using LowRankCovarianceMatrixd_const_w = ::std::weak_ptr<const LowRankCovarianceMatrixd>;
|
|
93
|
+
|
|
94
|
+
template <typename T>
|
|
95
|
+
class GeneralizedLossT;
|
|
96
|
+
using GeneralizedLoss = GeneralizedLossT<float>;
|
|
97
|
+
using GeneralizedLossd = GeneralizedLossT<double>;
|
|
98
|
+
|
|
99
|
+
using GeneralizedLoss_p = ::std::shared_ptr<GeneralizedLoss>;
|
|
100
|
+
using GeneralizedLoss_u = ::std::unique_ptr<GeneralizedLoss>;
|
|
101
|
+
using GeneralizedLoss_w = ::std::weak_ptr<GeneralizedLoss>;
|
|
102
|
+
using GeneralizedLoss_const_p = ::std::shared_ptr<const GeneralizedLoss>;
|
|
103
|
+
using GeneralizedLoss_const_u = ::std::unique_ptr<const GeneralizedLoss>;
|
|
104
|
+
using GeneralizedLoss_const_w = ::std::weak_ptr<const GeneralizedLoss>;
|
|
105
|
+
|
|
106
|
+
using GeneralizedLossd_p = ::std::shared_ptr<GeneralizedLossd>;
|
|
107
|
+
using GeneralizedLossd_u = ::std::unique_ptr<GeneralizedLossd>;
|
|
108
|
+
using GeneralizedLossd_w = ::std::weak_ptr<GeneralizedLossd>;
|
|
109
|
+
using GeneralizedLossd_const_p = ::std::shared_ptr<const GeneralizedLossd>;
|
|
110
|
+
using GeneralizedLossd_const_u = ::std::unique_ptr<const GeneralizedLossd>;
|
|
111
|
+
using GeneralizedLossd_const_w = ::std::weak_ptr<const GeneralizedLossd>;
|
|
112
|
+
|
|
113
|
+
template <typename T>
|
|
114
|
+
class SimdGeneralizedLossT;
|
|
115
|
+
using SimdGeneralizedLoss = SimdGeneralizedLossT<float>;
|
|
116
|
+
using SimdGeneralizedLossd = SimdGeneralizedLossT<double>;
|
|
117
|
+
|
|
118
|
+
using SimdGeneralizedLoss_p = ::std::shared_ptr<SimdGeneralizedLoss>;
|
|
119
|
+
using SimdGeneralizedLoss_u = ::std::unique_ptr<SimdGeneralizedLoss>;
|
|
120
|
+
using SimdGeneralizedLoss_w = ::std::weak_ptr<SimdGeneralizedLoss>;
|
|
121
|
+
using SimdGeneralizedLoss_const_p = ::std::shared_ptr<const SimdGeneralizedLoss>;
|
|
122
|
+
using SimdGeneralizedLoss_const_u = ::std::unique_ptr<const SimdGeneralizedLoss>;
|
|
123
|
+
using SimdGeneralizedLoss_const_w = ::std::weak_ptr<const SimdGeneralizedLoss>;
|
|
124
|
+
|
|
125
|
+
using SimdGeneralizedLossd_p = ::std::shared_ptr<SimdGeneralizedLossd>;
|
|
126
|
+
using SimdGeneralizedLossd_u = ::std::unique_ptr<SimdGeneralizedLossd>;
|
|
127
|
+
using SimdGeneralizedLossd_w = ::std::weak_ptr<SimdGeneralizedLossd>;
|
|
128
|
+
using SimdGeneralizedLossd_const_p = ::std::shared_ptr<const SimdGeneralizedLossd>;
|
|
129
|
+
using SimdGeneralizedLossd_const_u = ::std::unique_ptr<const SimdGeneralizedLossd>;
|
|
130
|
+
using SimdGeneralizedLossd_const_w = ::std::weak_ptr<const SimdGeneralizedLossd>;
|
|
131
|
+
|
|
132
|
+
} // namespace momentum
|
|
@@ -0,0 +1,61 @@
|
|
|
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
|
+
namespace momentum {
|
|
11
|
+
|
|
12
|
+
/// Implementation of "A General and Adaptive Robust Loss Function"
|
|
13
|
+
/// (https://arxiv.org/abs/1701.03077).
|
|
14
|
+
/// This loss transforms a squared error value with parameters alpha and c.
|
|
15
|
+
/// Alpha can be approximately thought of as the norm: alpha=2 is the squared L2 norm loss; alpha=1
|
|
16
|
+
/// is a soft L1 norm or the L2-L1/pseudo-Huber loss. Alpha controls the effect of "outliers" (ie.
|
|
17
|
+
/// "robust"). Smaller alpha reduces the contribution of large errors so they don't affect the
|
|
18
|
+
/// result as much. c scales the gradient with respect to the squared error term inversely.
|
|
19
|
+
/// This does not implement solving for alpha. It assumes alpha and c are given as input.
|
|
20
|
+
template <typename T>
|
|
21
|
+
class GeneralizedLossT {
|
|
22
|
+
public:
|
|
23
|
+
// Special case alpha values that are either at singularity or would simplify computation
|
|
24
|
+
static constexpr T kL2 = T(2);
|
|
25
|
+
static constexpr T kL1 = T(1);
|
|
26
|
+
static constexpr T kCauchy = T(0);
|
|
27
|
+
static constexpr T kWelsch = -1e-9; // any number smaller is considered -inf
|
|
28
|
+
|
|
29
|
+
// Alpha can be [-inf, inf] in theory, but it will be numerically unstable if
|
|
30
|
+
// alpha is too large, eg. >100 (large alpha not needed in practice).
|
|
31
|
+
// Similarly, c scales the gradient inversely and quadratically. So too small a value for c will
|
|
32
|
+
// lead to instability.
|
|
33
|
+
// Calculations with log and exp usually require double precision.
|
|
34
|
+
GeneralizedLossT(const T& a = kL2, const T& c = T(1));
|
|
35
|
+
|
|
36
|
+
[[nodiscard]] T value(const T& sqrError) const;
|
|
37
|
+
|
|
38
|
+
/// Derivative of the loss with respective to the input squared error.
|
|
39
|
+
/// This effectively scales the gradient of what's being squared.
|
|
40
|
+
[[nodiscard]] T deriv(const T& sqrError) const;
|
|
41
|
+
|
|
42
|
+
protected:
|
|
43
|
+
enum class LossType {
|
|
44
|
+
L1,
|
|
45
|
+
L2,
|
|
46
|
+
Cauchy,
|
|
47
|
+
Welsch,
|
|
48
|
+
General,
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
// A small threshold for special values
|
|
52
|
+
static constexpr T kEps = 1e-9;
|
|
53
|
+
|
|
54
|
+
const T alpha_;
|
|
55
|
+
|
|
56
|
+
// store 1/c^2 instead of c as a small optimization
|
|
57
|
+
const T invC2_;
|
|
58
|
+
|
|
59
|
+
LossType lossType_;
|
|
60
|
+
};
|
|
61
|
+
} // namespace momentum
|
|
@@ -0,0 +1,32 @@
|
|
|
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/math/fwd.h>
|
|
11
|
+
#include <momentum/math/types.h>
|
|
12
|
+
|
|
13
|
+
namespace momentum {
|
|
14
|
+
|
|
15
|
+
/// test whether two given faces of a mesh intersect with each other
|
|
16
|
+
template <typename T>
|
|
17
|
+
bool intersectFace(
|
|
18
|
+
const MeshT<T>& mesh,
|
|
19
|
+
const std::vector<Vector3<T>>& faceNormals,
|
|
20
|
+
int32_t face0,
|
|
21
|
+
int32_t face1);
|
|
22
|
+
|
|
23
|
+
/// test if the mesh self intersects anywhere and return all intersecting face pairs using brute
|
|
24
|
+
/// force
|
|
25
|
+
template <typename T>
|
|
26
|
+
std::vector<std::pair<int32_t, int32_t>> intersectMeshBruteForce(const MeshT<T>& mesh);
|
|
27
|
+
/// test if the mesh self intersects anywhere and return all intersecting face pairs using a bvh
|
|
28
|
+
/// tree
|
|
29
|
+
template <typename T>
|
|
30
|
+
std::vector<std::pair<int32_t, int32_t>> intersectMesh(const MeshT<T>& mesh);
|
|
31
|
+
|
|
32
|
+
} // namespace momentum
|
|
@@ -0,0 +1,84 @@
|
|
|
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/math/fwd.h>
|
|
11
|
+
#include <momentum/math/types.h>
|
|
12
|
+
|
|
13
|
+
namespace momentum {
|
|
14
|
+
|
|
15
|
+
/// A generic mesh representation with support for vertices, faces, lines, and texture coordinates.
|
|
16
|
+
///
|
|
17
|
+
/// @tparam T The scalar type used for vertex coordinates and confidence values (typically float or
|
|
18
|
+
/// double)
|
|
19
|
+
template <typename T>
|
|
20
|
+
struct MeshT {
|
|
21
|
+
/// List of mesh vertices in 3D space
|
|
22
|
+
std::vector<Eigen::Vector3<T>> vertices;
|
|
23
|
+
|
|
24
|
+
/// List of vertex normals (same size as vertices when computed)
|
|
25
|
+
std::vector<Eigen::Vector3<T>> normals;
|
|
26
|
+
|
|
27
|
+
/// List of triangular faces defined by vertex indices
|
|
28
|
+
std::vector<Eigen::Vector3i> faces;
|
|
29
|
+
|
|
30
|
+
/// List of polylines defined by vertex indices
|
|
31
|
+
/// Each inner vector represents a single polyline
|
|
32
|
+
std::vector<std::vector<int32_t>> lines;
|
|
33
|
+
|
|
34
|
+
/// List of per-vertex RGB colors (0-255 for each channel)
|
|
35
|
+
std::vector<Eigen::Vector3b> colors;
|
|
36
|
+
|
|
37
|
+
/// List of per-vertex confidence values
|
|
38
|
+
/// Higher values typically indicate higher confidence in the vertex position
|
|
39
|
+
std::vector<T> confidence;
|
|
40
|
+
|
|
41
|
+
/// List of texture coordinates (UV coordinates).
|
|
42
|
+
///
|
|
43
|
+
/// The texture coordinates are format-agnostic, and it's the user's responsibility to ensure
|
|
44
|
+
/// their consistent use.
|
|
45
|
+
///
|
|
46
|
+
/// For GLTF, Momentum stores and saves the texture coordinates as they are represented by the
|
|
47
|
+
/// underlying GLTF parser. When dealing with FBX, the Y-axis is flipped. This distinction is
|
|
48
|
+
/// crucial to understand when working with different formats.
|
|
49
|
+
std::vector<Eigen::Vector2f> texcoords;
|
|
50
|
+
|
|
51
|
+
/// List of texture coordinate indices per face
|
|
52
|
+
/// Maps each face to its corresponding texture coordinates
|
|
53
|
+
std::vector<Eigen::Vector3i> texcoord_faces;
|
|
54
|
+
|
|
55
|
+
/// List of texture coordinate indices per line
|
|
56
|
+
/// Maps each line to its corresponding texture coordinates
|
|
57
|
+
std::vector<std::vector<int32_t>> texcoord_lines;
|
|
58
|
+
|
|
59
|
+
/// Compute vertex normals by averaging connected face normals.
|
|
60
|
+
///
|
|
61
|
+
/// This method calculates normals for each vertex by averaging the normals of all
|
|
62
|
+
/// connected faces. The resulting normals are normalized to unit length.
|
|
63
|
+
/// If a vertex is part of a degenerate face (e.g., colinear vertices), that face
|
|
64
|
+
/// will not contribute to the vertex normal.
|
|
65
|
+
void updateNormals();
|
|
66
|
+
|
|
67
|
+
/// Cast the mesh to a different scalar type.
|
|
68
|
+
///
|
|
69
|
+
/// This method creates a new mesh with all numeric data converted to the target type.
|
|
70
|
+
/// Vertex positions, normals, and confidence values are cast to the new type.
|
|
71
|
+
/// Non-numeric data like faces and lines remain unchanged.
|
|
72
|
+
///
|
|
73
|
+
/// @tparam T2 The target scalar type
|
|
74
|
+
/// @return A new mesh with the target scalar type
|
|
75
|
+
template <typename T2>
|
|
76
|
+
[[nodiscard]] MeshT<T2> cast() const;
|
|
77
|
+
|
|
78
|
+
/// Reset the mesh by clearing all data.
|
|
79
|
+
///
|
|
80
|
+
/// This method clears all vectors, effectively resetting the mesh to an empty state.
|
|
81
|
+
void reset();
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
} // namespace momentum
|
|
@@ -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/math/utility.h>
|
|
11
|
+
|
|
12
|
+
namespace momentum {
|
|
13
|
+
|
|
14
|
+
/// Mixture of Probabilistic Principal Component Analysis (MPPCA)
|
|
15
|
+
/// Based on: http://www.miketipping.com/papers/met-mppca.pdf
|
|
16
|
+
///
|
|
17
|
+
/// @tparam T Scalar type (float or double)
|
|
18
|
+
template <typename T>
|
|
19
|
+
struct MppcaT {
|
|
20
|
+
/// Dimension of data space
|
|
21
|
+
size_t d = 0;
|
|
22
|
+
|
|
23
|
+
/// Number of mixture components
|
|
24
|
+
size_t p = 0;
|
|
25
|
+
|
|
26
|
+
/// Parameter names (should match dimension d)
|
|
27
|
+
std::vector<std::string> names;
|
|
28
|
+
|
|
29
|
+
/// Mean vectors (p×d matrix)
|
|
30
|
+
Eigen::MatrixX<T> mu;
|
|
31
|
+
|
|
32
|
+
/// Inverse covariance matrices
|
|
33
|
+
std::vector<Eigen::MatrixX<T>> Cinv;
|
|
34
|
+
|
|
35
|
+
/// Matrices for efficient computation
|
|
36
|
+
std::vector<Eigen::MatrixX<T>> L;
|
|
37
|
+
|
|
38
|
+
/// Precomputed responsibility terms
|
|
39
|
+
Eigen::VectorX<T> Rpre;
|
|
40
|
+
|
|
41
|
+
/// Sets model parameters and precomputes matrices
|
|
42
|
+
///
|
|
43
|
+
/// @param[in] pi Mixture weights
|
|
44
|
+
/// @param[in] mmu Mean vectors
|
|
45
|
+
/// @param[in] W Principal axes matrices
|
|
46
|
+
/// @param[in] sigma2 Noise variances
|
|
47
|
+
void set(
|
|
48
|
+
const VectorX<T>& pi,
|
|
49
|
+
const MatrixX<T>& mmu,
|
|
50
|
+
std::span<const MatrixX<T>> W,
|
|
51
|
+
const VectorX<T>& sigma2);
|
|
52
|
+
|
|
53
|
+
/// Converts to a different scalar type
|
|
54
|
+
///
|
|
55
|
+
/// @tparam T2 Target scalar type
|
|
56
|
+
/// @return Converted MPPCA model
|
|
57
|
+
template <typename T2>
|
|
58
|
+
[[nodiscard]] MppcaT<T2> cast() const;
|
|
59
|
+
|
|
60
|
+
/// Checks approximate equality with another model
|
|
61
|
+
///
|
|
62
|
+
/// @param[in] mppcaT Model to compare with
|
|
63
|
+
/// @return true if approximately equal
|
|
64
|
+
[[nodiscard]] bool isApprox(const MppcaT<T>& mppcaT) const;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
} // namespace momentum
|