pymomentum-cpu 0.1.82.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.
Potentially problematic release.
This version of pymomentum-cpu might be problematic. Click here for more details.
- include/axel/BoundingBox.h +58 -0
- include/axel/Bvh.h +708 -0
- include/axel/BvhBase.h +75 -0
- include/axel/BvhCommon.h +43 -0
- include/axel/BvhEmbree.h +86 -0
- include/axel/BvhFactory.h +34 -0
- include/axel/Checks.h +21 -0
- include/axel/DualContouring.h +79 -0
- include/axel/KdTree.h +199 -0
- include/axel/Log.h +22 -0
- include/axel/MeshToSdf.h +123 -0
- include/axel/Profile.h +64 -0
- include/axel/Ray.h +45 -0
- include/axel/SignedDistanceField.h +248 -0
- include/axel/SimdKdTree.h +515 -0
- include/axel/TriBvh.h +157 -0
- include/axel/TriBvhEmbree.h +57 -0
- include/axel/common/Constants.h +27 -0
- include/axel/common/Types.h +21 -0
- include/axel/common/VectorizationTypes.h +58 -0
- include/axel/math/BoundingBoxUtils.h +54 -0
- include/axel/math/ContinuousCollisionDetection.h +48 -0
- include/axel/math/CoplanarityCheck.h +30 -0
- include/axel/math/EdgeEdgeDistance.h +31 -0
- include/axel/math/MeshHoleFilling.h +117 -0
- include/axel/math/PointTriangleProjection.h +34 -0
- include/axel/math/PointTriangleProjectionDefinitions.h +209 -0
- include/axel/math/RayTriangleIntersection.h +36 -0
- include/momentum/character/blend_shape.h +91 -0
- include/momentum/character/blend_shape_base.h +70 -0
- include/momentum/character/blend_shape_skinning.h +96 -0
- include/momentum/character/character.h +272 -0
- include/momentum/character/character_state.h +108 -0
- include/momentum/character/character_utility.h +128 -0
- include/momentum/character/collision_geometry.h +80 -0
- include/momentum/character/collision_geometry_state.h +130 -0
- include/momentum/character/fwd.h +262 -0
- include/momentum/character/inverse_parameter_transform.h +58 -0
- include/momentum/character/joint.h +82 -0
- include/momentum/character/joint_state.h +241 -0
- include/momentum/character/linear_skinning.h +139 -0
- include/momentum/character/locator.h +82 -0
- include/momentum/character/locator_state.h +43 -0
- include/momentum/character/marker.h +48 -0
- include/momentum/character/mesh_state.h +71 -0
- include/momentum/character/parameter_limits.h +144 -0
- include/momentum/character/parameter_transform.h +250 -0
- include/momentum/character/pose_shape.h +65 -0
- include/momentum/character/skeleton.h +85 -0
- include/momentum/character/skeleton_state.h +181 -0
- include/momentum/character/skeleton_utility.h +38 -0
- include/momentum/character/skin_weights.h +67 -0
- include/momentum/character/skinned_locator.h +80 -0
- include/momentum/character/types.h +202 -0
- include/momentum/character_sequence_solver/fwd.h +200 -0
- include/momentum/character_sequence_solver/model_parameters_sequence_error_function.h +65 -0
- include/momentum/character_sequence_solver/multipose_solver.h +65 -0
- include/momentum/character_sequence_solver/multipose_solver_function.h +82 -0
- include/momentum/character_sequence_solver/sequence_error_function.h +104 -0
- include/momentum/character_sequence_solver/sequence_solver.h +144 -0
- include/momentum/character_sequence_solver/sequence_solver_function.h +134 -0
- include/momentum/character_sequence_solver/state_sequence_error_function.h +109 -0
- include/momentum/character_sequence_solver/vertex_sequence_error_function.h +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 +924 -0
- include/momentum/character_solver/gauss_newton_solver_qr.h +64 -0
- include/momentum/character_solver/limit_error_function.h +57 -0
- include/momentum/character_solver/model_parameters_error_function.h +64 -0
- include/momentum/character_solver/normal_error_function.h +73 -0
- include/momentum/character_solver/orientation_error_function.h +74 -0
- include/momentum/character_solver/plane_error_function.h +102 -0
- include/momentum/character_solver/point_triangle_vertex_error_function.h +141 -0
- include/momentum/character_solver/pose_prior_error_function.h +80 -0
- include/momentum/character_solver/position_error_function.h +75 -0
- include/momentum/character_solver/projection_error_function.h +93 -0
- include/momentum/character_solver/simd_collision_error_function.h +99 -0
- include/momentum/character_solver/simd_normal_error_function.h +157 -0
- include/momentum/character_solver/simd_plane_error_function.h +164 -0
- include/momentum/character_solver/simd_position_error_function.h +165 -0
- include/momentum/character_solver/skeleton_error_function.h +151 -0
- include/momentum/character_solver/skeleton_solver_function.h +94 -0
- include/momentum/character_solver/skinned_locator_error_function.h +166 -0
- include/momentum/character_solver/skinned_locator_triangle_error_function.h +146 -0
- include/momentum/character_solver/skinning_weight_iterator.h +80 -0
- include/momentum/character_solver/state_error_function.h +94 -0
- include/momentum/character_solver/transform_pose.h +80 -0
- include/momentum/character_solver/trust_region_qr.h +80 -0
- include/momentum/character_solver/vertex_error_function.h +155 -0
- include/momentum/character_solver/vertex_projection_error_function.h +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 +56 -0
- include/momentum/io/common/gsl_utils.h +50 -0
- include/momentum/io/common/stream_utils.h +65 -0
- include/momentum/io/fbx/fbx_io.h +109 -0
- include/momentum/io/fbx/fbx_memory_stream.h +66 -0
- include/momentum/io/fbx/openfbx_loader.h +49 -0
- include/momentum/io/fbx/polygon_data.h +60 -0
- include/momentum/io/gltf/gltf_builder.h +132 -0
- include/momentum/io/gltf/gltf_file_format.h +19 -0
- include/momentum/io/gltf/gltf_io.h +148 -0
- include/momentum/io/gltf/utils/accessor_utils.h +299 -0
- include/momentum/io/gltf/utils/coordinate_utils.h +60 -0
- include/momentum/io/gltf/utils/json_utils.h +102 -0
- include/momentum/io/legacy_json/legacy_json_io.h +70 -0
- include/momentum/io/marker/c3d_io.h +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 +70 -0
- include/momentum/io/shape/pose_shape_io.h +21 -0
- include/momentum/io/skeleton/locator_io.h +41 -0
- include/momentum/io/skeleton/mppca_io.h +26 -0
- include/momentum/io/skeleton/parameter_limits_io.h +25 -0
- include/momentum/io/skeleton/parameter_transform_io.h +41 -0
- include/momentum/io/skeleton/parameters_io.h +20 -0
- include/momentum/io/urdf/urdf_io.h +26 -0
- include/momentum/io/usd/usd_io.h +36 -0
- include/momentum/marker_tracking/app_utils.h +62 -0
- include/momentum/marker_tracking/marker_tracker.h +213 -0
- include/momentum/marker_tracking/process_markers.h +58 -0
- include/momentum/marker_tracking/tracker_utils.h +90 -0
- include/momentum/math/constants.h +82 -0
- include/momentum/math/covariance_matrix.h +84 -0
- include/momentum/math/fmt_eigen.h +23 -0
- include/momentum/math/fwd.h +132 -0
- include/momentum/math/generalized_loss.h +61 -0
- include/momentum/math/intersection.h +32 -0
- include/momentum/math/mesh.h +84 -0
- include/momentum/math/mppca.h +67 -0
- include/momentum/math/online_householder_qr.h +516 -0
- include/momentum/math/random-inl.h +404 -0
- include/momentum/math/random.h +310 -0
- include/momentum/math/simd_generalized_loss.h +40 -0
- include/momentum/math/transform.h +229 -0
- include/momentum/math/types.h +461 -0
- include/momentum/math/utility.h +251 -0
- include/momentum/rasterizer/camera.h +453 -0
- include/momentum/rasterizer/fwd.h +102 -0
- include/momentum/rasterizer/geometry.h +83 -0
- include/momentum/rasterizer/image.h +18 -0
- include/momentum/rasterizer/rasterizer.h +583 -0
- include/momentum/rasterizer/tensor.h +140 -0
- include/momentum/rasterizer/utility.h +268 -0
- include/momentum/simd/simd.h +221 -0
- include/momentum/solver/fwd.h +131 -0
- include/momentum/solver/gauss_newton_solver.h +136 -0
- include/momentum/solver/gradient_descent_solver.h +65 -0
- include/momentum/solver/solver.h +155 -0
- include/momentum/solver/solver_function.h +126 -0
- include/momentum/solver/subset_gauss_newton_solver.h +109 -0
- include/rerun/archetypes/annotation_context.hpp +157 -0
- include/rerun/archetypes/arrows2d.hpp +271 -0
- include/rerun/archetypes/arrows3d.hpp +257 -0
- include/rerun/archetypes/asset3d.hpp +262 -0
- include/rerun/archetypes/asset_video.hpp +275 -0
- include/rerun/archetypes/bar_chart.hpp +261 -0
- include/rerun/archetypes/boxes2d.hpp +293 -0
- include/rerun/archetypes/boxes3d.hpp +369 -0
- include/rerun/archetypes/capsules3d.hpp +333 -0
- include/rerun/archetypes/clear.hpp +180 -0
- include/rerun/archetypes/depth_image.hpp +425 -0
- include/rerun/archetypes/ellipsoids3d.hpp +384 -0
- include/rerun/archetypes/encoded_image.hpp +250 -0
- include/rerun/archetypes/geo_line_strings.hpp +166 -0
- include/rerun/archetypes/geo_points.hpp +177 -0
- include/rerun/archetypes/graph_edges.hpp +152 -0
- include/rerun/archetypes/graph_nodes.hpp +206 -0
- include/rerun/archetypes/image.hpp +434 -0
- include/rerun/archetypes/instance_poses3d.hpp +221 -0
- include/rerun/archetypes/line_strips2d.hpp +289 -0
- include/rerun/archetypes/line_strips3d.hpp +270 -0
- include/rerun/archetypes/mesh3d.hpp +387 -0
- include/rerun/archetypes/pinhole.hpp +385 -0
- include/rerun/archetypes/points2d.hpp +333 -0
- include/rerun/archetypes/points3d.hpp +369 -0
- include/rerun/archetypes/recording_properties.hpp +132 -0
- include/rerun/archetypes/scalar.hpp +170 -0
- include/rerun/archetypes/scalars.hpp +153 -0
- include/rerun/archetypes/segmentation_image.hpp +305 -0
- include/rerun/archetypes/series_line.hpp +274 -0
- include/rerun/archetypes/series_lines.hpp +271 -0
- include/rerun/archetypes/series_point.hpp +265 -0
- include/rerun/archetypes/series_points.hpp +251 -0
- include/rerun/archetypes/tensor.hpp +213 -0
- include/rerun/archetypes/text_document.hpp +200 -0
- include/rerun/archetypes/text_log.hpp +211 -0
- include/rerun/archetypes/transform3d.hpp +925 -0
- include/rerun/archetypes/video_frame_reference.hpp +295 -0
- include/rerun/archetypes/view_coordinates.hpp +393 -0
- include/rerun/archetypes.hpp +43 -0
- include/rerun/arrow_utils.hpp +32 -0
- include/rerun/as_components.hpp +90 -0
- include/rerun/blueprint/archetypes/background.hpp +113 -0
- include/rerun/blueprint/archetypes/container_blueprint.hpp +259 -0
- include/rerun/blueprint/archetypes/dataframe_query.hpp +178 -0
- include/rerun/blueprint/archetypes/entity_behavior.hpp +130 -0
- include/rerun/blueprint/archetypes/force_center.hpp +115 -0
- include/rerun/blueprint/archetypes/force_collision_radius.hpp +141 -0
- include/rerun/blueprint/archetypes/force_link.hpp +136 -0
- include/rerun/blueprint/archetypes/force_many_body.hpp +124 -0
- include/rerun/blueprint/archetypes/force_position.hpp +132 -0
- include/rerun/blueprint/archetypes/line_grid3d.hpp +178 -0
- include/rerun/blueprint/archetypes/map_background.hpp +104 -0
- include/rerun/blueprint/archetypes/map_zoom.hpp +103 -0
- include/rerun/blueprint/archetypes/near_clip_plane.hpp +109 -0
- include/rerun/blueprint/archetypes/panel_blueprint.hpp +95 -0
- include/rerun/blueprint/archetypes/plot_legend.hpp +118 -0
- include/rerun/blueprint/archetypes/scalar_axis.hpp +116 -0
- include/rerun/blueprint/archetypes/tensor_scalar_mapping.hpp +146 -0
- include/rerun/blueprint/archetypes/tensor_slice_selection.hpp +167 -0
- include/rerun/blueprint/archetypes/tensor_view_fit.hpp +95 -0
- include/rerun/blueprint/archetypes/view_blueprint.hpp +170 -0
- include/rerun/blueprint/archetypes/view_contents.hpp +142 -0
- include/rerun/blueprint/archetypes/viewport_blueprint.hpp +200 -0
- include/rerun/blueprint/archetypes/visible_time_ranges.hpp +116 -0
- include/rerun/blueprint/archetypes/visual_bounds2d.hpp +109 -0
- include/rerun/blueprint/archetypes/visualizer_overrides.hpp +113 -0
- include/rerun/blueprint/archetypes.hpp +29 -0
- include/rerun/blueprint/components/active_tab.hpp +82 -0
- include/rerun/blueprint/components/apply_latest_at.hpp +79 -0
- include/rerun/blueprint/components/auto_layout.hpp +77 -0
- include/rerun/blueprint/components/auto_views.hpp +77 -0
- include/rerun/blueprint/components/background_kind.hpp +66 -0
- include/rerun/blueprint/components/column_share.hpp +78 -0
- include/rerun/blueprint/components/component_column_selector.hpp +81 -0
- include/rerun/blueprint/components/container_kind.hpp +65 -0
- include/rerun/blueprint/components/corner2d.hpp +64 -0
- include/rerun/blueprint/components/enabled.hpp +77 -0
- include/rerun/blueprint/components/filter_by_range.hpp +74 -0
- include/rerun/blueprint/components/filter_is_not_null.hpp +77 -0
- include/rerun/blueprint/components/force_distance.hpp +82 -0
- include/rerun/blueprint/components/force_iterations.hpp +82 -0
- include/rerun/blueprint/components/force_strength.hpp +82 -0
- include/rerun/blueprint/components/grid_columns.hpp +78 -0
- include/rerun/blueprint/components/grid_spacing.hpp +78 -0
- include/rerun/blueprint/components/included_content.hpp +86 -0
- include/rerun/blueprint/components/lock_range_during_zoom.hpp +82 -0
- include/rerun/blueprint/components/map_provider.hpp +64 -0
- include/rerun/blueprint/components/near_clip_plane.hpp +82 -0
- include/rerun/blueprint/components/panel_state.hpp +61 -0
- include/rerun/blueprint/components/query_expression.hpp +89 -0
- include/rerun/blueprint/components/root_container.hpp +77 -0
- include/rerun/blueprint/components/row_share.hpp +78 -0
- include/rerun/blueprint/components/selected_columns.hpp +76 -0
- include/rerun/blueprint/components/tensor_dimension_index_slider.hpp +90 -0
- include/rerun/blueprint/components/timeline_name.hpp +76 -0
- include/rerun/blueprint/components/view_class.hpp +76 -0
- include/rerun/blueprint/components/view_fit.hpp +61 -0
- include/rerun/blueprint/components/view_maximized.hpp +79 -0
- include/rerun/blueprint/components/view_origin.hpp +81 -0
- include/rerun/blueprint/components/viewer_recommendation_hash.hpp +82 -0
- include/rerun/blueprint/components/visible_time_range.hpp +77 -0
- include/rerun/blueprint/components/visual_bounds2d.hpp +74 -0
- include/rerun/blueprint/components/visualizer_override.hpp +86 -0
- include/rerun/blueprint/components/zoom_level.hpp +78 -0
- include/rerun/blueprint/components.hpp +41 -0
- include/rerun/blueprint/datatypes/component_column_selector.hpp +61 -0
- include/rerun/blueprint/datatypes/filter_by_range.hpp +59 -0
- include/rerun/blueprint/datatypes/filter_is_not_null.hpp +61 -0
- include/rerun/blueprint/datatypes/selected_columns.hpp +62 -0
- include/rerun/blueprint/datatypes/tensor_dimension_index_slider.hpp +63 -0
- include/rerun/blueprint/datatypes.hpp +9 -0
- include/rerun/c/arrow_c_data_interface.h +111 -0
- include/rerun/c/compiler_utils.h +10 -0
- include/rerun/c/rerun.h +627 -0
- include/rerun/c/sdk_info.h +28 -0
- include/rerun/collection.hpp +496 -0
- include/rerun/collection_adapter.hpp +43 -0
- include/rerun/collection_adapter_builtins.hpp +138 -0
- include/rerun/compiler_utils.hpp +61 -0
- include/rerun/component_batch.hpp +163 -0
- include/rerun/component_column.hpp +111 -0
- include/rerun/component_descriptor.hpp +142 -0
- include/rerun/component_type.hpp +35 -0
- include/rerun/components/aggregation_policy.hpp +76 -0
- include/rerun/components/albedo_factor.hpp +74 -0
- include/rerun/components/annotation_context.hpp +102 -0
- include/rerun/components/axis_length.hpp +74 -0
- include/rerun/components/blob.hpp +73 -0
- include/rerun/components/class_id.hpp +71 -0
- include/rerun/components/clear_is_recursive.hpp +75 -0
- include/rerun/components/color.hpp +99 -0
- include/rerun/components/colormap.hpp +99 -0
- include/rerun/components/depth_meter.hpp +84 -0
- include/rerun/components/draw_order.hpp +79 -0
- include/rerun/components/entity_path.hpp +83 -0
- include/rerun/components/fill_mode.hpp +72 -0
- include/rerun/components/fill_ratio.hpp +79 -0
- include/rerun/components/gamma_correction.hpp +80 -0
- include/rerun/components/geo_line_string.hpp +63 -0
- include/rerun/components/graph_edge.hpp +75 -0
- include/rerun/components/graph_node.hpp +79 -0
- include/rerun/components/graph_type.hpp +57 -0
- include/rerun/components/half_size2d.hpp +91 -0
- include/rerun/components/half_size3d.hpp +95 -0
- include/rerun/components/image_buffer.hpp +86 -0
- include/rerun/components/image_format.hpp +84 -0
- include/rerun/components/image_plane_distance.hpp +77 -0
- include/rerun/components/interactive.hpp +76 -0
- include/rerun/components/keypoint_id.hpp +74 -0
- include/rerun/components/lat_lon.hpp +89 -0
- include/rerun/components/length.hpp +77 -0
- include/rerun/components/line_strip2d.hpp +73 -0
- include/rerun/components/line_strip3d.hpp +73 -0
- include/rerun/components/magnification_filter.hpp +63 -0
- include/rerun/components/marker_shape.hpp +82 -0
- include/rerun/components/marker_size.hpp +74 -0
- include/rerun/components/media_type.hpp +157 -0
- include/rerun/components/name.hpp +83 -0
- include/rerun/components/opacity.hpp +77 -0
- include/rerun/components/pinhole_projection.hpp +94 -0
- include/rerun/components/plane3d.hpp +75 -0
- include/rerun/components/pose_rotation_axis_angle.hpp +73 -0
- include/rerun/components/pose_rotation_quat.hpp +71 -0
- include/rerun/components/pose_scale3d.hpp +102 -0
- include/rerun/components/pose_transform_mat3x3.hpp +87 -0
- include/rerun/components/pose_translation3d.hpp +96 -0
- include/rerun/components/position2d.hpp +86 -0
- include/rerun/components/position3d.hpp +90 -0
- include/rerun/components/radius.hpp +98 -0
- include/rerun/components/range1d.hpp +75 -0
- include/rerun/components/resolution.hpp +88 -0
- include/rerun/components/rotation_axis_angle.hpp +72 -0
- include/rerun/components/rotation_quat.hpp +71 -0
- include/rerun/components/scalar.hpp +76 -0
- include/rerun/components/scale3d.hpp +102 -0
- include/rerun/components/series_visible.hpp +76 -0
- include/rerun/components/show_labels.hpp +79 -0
- include/rerun/components/stroke_width.hpp +74 -0
- include/rerun/components/tensor_data.hpp +94 -0
- include/rerun/components/tensor_dimension_index_selection.hpp +77 -0
- include/rerun/components/tensor_height_dimension.hpp +71 -0
- include/rerun/components/tensor_width_dimension.hpp +71 -0
- include/rerun/components/texcoord2d.hpp +101 -0
- include/rerun/components/text.hpp +83 -0
- include/rerun/components/text_log_level.hpp +110 -0
- include/rerun/components/timestamp.hpp +76 -0
- include/rerun/components/transform_mat3x3.hpp +92 -0
- include/rerun/components/transform_relation.hpp +66 -0
- include/rerun/components/translation3d.hpp +96 -0
- include/rerun/components/triangle_indices.hpp +85 -0
- include/rerun/components/value_range.hpp +78 -0
- include/rerun/components/vector2d.hpp +92 -0
- include/rerun/components/vector3d.hpp +96 -0
- include/rerun/components/video_timestamp.hpp +120 -0
- include/rerun/components/view_coordinates.hpp +346 -0
- include/rerun/components/visible.hpp +74 -0
- include/rerun/components.hpp +77 -0
- include/rerun/config.hpp +52 -0
- include/rerun/datatypes/angle.hpp +76 -0
- include/rerun/datatypes/annotation_info.hpp +76 -0
- include/rerun/datatypes/blob.hpp +67 -0
- include/rerun/datatypes/bool.hpp +57 -0
- include/rerun/datatypes/channel_datatype.hpp +87 -0
- include/rerun/datatypes/class_description.hpp +92 -0
- include/rerun/datatypes/class_description_map_elem.hpp +69 -0
- include/rerun/datatypes/class_id.hpp +62 -0
- include/rerun/datatypes/color_model.hpp +68 -0
- include/rerun/datatypes/dvec2d.hpp +76 -0
- include/rerun/datatypes/entity_path.hpp +60 -0
- include/rerun/datatypes/float32.hpp +62 -0
- include/rerun/datatypes/float64.hpp +62 -0
- include/rerun/datatypes/image_format.hpp +107 -0
- include/rerun/datatypes/keypoint_id.hpp +63 -0
- include/rerun/datatypes/keypoint_pair.hpp +65 -0
- include/rerun/datatypes/mat3x3.hpp +105 -0
- include/rerun/datatypes/mat4x4.hpp +119 -0
- include/rerun/datatypes/pixel_format.hpp +142 -0
- include/rerun/datatypes/plane3d.hpp +60 -0
- include/rerun/datatypes/quaternion.hpp +110 -0
- include/rerun/datatypes/range1d.hpp +59 -0
- include/rerun/datatypes/range2d.hpp +55 -0
- include/rerun/datatypes/rgba32.hpp +94 -0
- include/rerun/datatypes/rotation_axis_angle.hpp +67 -0
- include/rerun/datatypes/tensor_buffer.hpp +529 -0
- include/rerun/datatypes/tensor_data.hpp +100 -0
- include/rerun/datatypes/tensor_dimension_index_selection.hpp +58 -0
- include/rerun/datatypes/tensor_dimension_selection.hpp +56 -0
- include/rerun/datatypes/time_int.hpp +62 -0
- include/rerun/datatypes/time_range.hpp +55 -0
- include/rerun/datatypes/time_range_boundary.hpp +175 -0
- include/rerun/datatypes/uint16.hpp +62 -0
- include/rerun/datatypes/uint32.hpp +62 -0
- include/rerun/datatypes/uint64.hpp +62 -0
- include/rerun/datatypes/utf8.hpp +76 -0
- include/rerun/datatypes/utf8pair.hpp +62 -0
- include/rerun/datatypes/uuid.hpp +60 -0
- include/rerun/datatypes/uvec2d.hpp +76 -0
- include/rerun/datatypes/uvec3d.hpp +80 -0
- include/rerun/datatypes/uvec4d.hpp +59 -0
- include/rerun/datatypes/vec2d.hpp +76 -0
- include/rerun/datatypes/vec3d.hpp +80 -0
- include/rerun/datatypes/vec4d.hpp +84 -0
- include/rerun/datatypes/video_timestamp.hpp +67 -0
- include/rerun/datatypes/view_coordinates.hpp +87 -0
- include/rerun/datatypes/visible_time_range.hpp +57 -0
- include/rerun/datatypes.hpp +51 -0
- include/rerun/demo_utils.hpp +75 -0
- include/rerun/entity_path.hpp +20 -0
- include/rerun/error.hpp +180 -0
- include/rerun/half.hpp +10 -0
- include/rerun/image_utils.hpp +187 -0
- include/rerun/indicator_component.hpp +59 -0
- include/rerun/loggable.hpp +54 -0
- include/rerun/recording_stream.hpp +960 -0
- include/rerun/rerun_sdk_export.hpp +25 -0
- include/rerun/result.hpp +86 -0
- include/rerun/rotation3d.hpp +33 -0
- include/rerun/sdk_info.hpp +20 -0
- include/rerun/spawn.hpp +21 -0
- include/rerun/spawn_options.hpp +57 -0
- include/rerun/string_utils.hpp +16 -0
- include/rerun/third_party/cxxopts.hpp +2198 -0
- include/rerun/time_column.hpp +288 -0
- include/rerun/timeline.hpp +38 -0
- include/rerun/type_traits.hpp +40 -0
- include/rerun.hpp +86 -0
- lib/cmake/axel/axel-config.cmake +45 -0
- lib/cmake/axel/axelTargets-release.cmake +19 -0
- lib/cmake/axel/axelTargets.cmake +108 -0
- lib/cmake/momentum/Findre2.cmake +52 -0
- lib/cmake/momentum/momentum-config.cmake +67 -0
- lib/cmake/momentum/momentumTargets-release.cmake +259 -0
- lib/cmake/momentum/momentumTargets.cmake +377 -0
- lib/cmake/rerun_sdk/rerun_sdkConfig.cmake +70 -0
- lib/cmake/rerun_sdk/rerun_sdkConfigVersion.cmake +83 -0
- lib/cmake/rerun_sdk/rerun_sdkTargets-release.cmake +19 -0
- lib/cmake/rerun_sdk/rerun_sdkTargets.cmake +108 -0
- lib/libarrow.a +0 -0
- lib/libarrow_bundled_dependencies.a +0 -0
- lib/libaxel.a +0 -0
- lib/libmomentum_app_utils.a +0 -0
- lib/libmomentum_character.a +0 -0
- lib/libmomentum_character_sequence_solver.a +0 -0
- lib/libmomentum_character_solver.a +0 -0
- lib/libmomentum_common.a +0 -0
- lib/libmomentum_diff_ik.a +0 -0
- lib/libmomentum_io.a +0 -0
- lib/libmomentum_io_common.a +0 -0
- lib/libmomentum_io_fbx.a +0 -0
- lib/libmomentum_io_gltf.a +0 -0
- lib/libmomentum_io_legacy_json.a +0 -0
- lib/libmomentum_io_marker.a +0 -0
- lib/libmomentum_io_motion.a +0 -0
- lib/libmomentum_io_shape.a +0 -0
- lib/libmomentum_io_skeleton.a +0 -0
- lib/libmomentum_io_urdf.a +0 -0
- lib/libmomentum_marker_tracker.a +0 -0
- lib/libmomentum_math.a +0 -0
- lib/libmomentum_online_qr.a +0 -0
- lib/libmomentum_process_markers.a +0 -0
- lib/libmomentum_rerun.a +0 -0
- lib/libmomentum_simd_constraints.a +0 -0
- lib/libmomentum_simd_generalized_loss.a +0 -0
- lib/libmomentum_skeleton.a +0 -0
- lib/libmomentum_solver.a +0 -0
- lib/librerun_c__macos_arm64.a +0 -0
- lib/librerun_sdk.a +0 -0
- pymomentum/axel.cpython-312-darwin.so +0 -0
- pymomentum/backend/__init__.py +16 -0
- pymomentum/backend/skel_state_backend.py +614 -0
- pymomentum/backend/trs_backend.py +871 -0
- pymomentum/backend/utils.py +224 -0
- pymomentum/geometry.cpython-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 +856 -0
- pymomentum/torch/parameter_limits.py +494 -0
- pymomentum/torch/utility.py +20 -0
- pymomentum/trs.py +535 -0
- pymomentum_cpu-0.1.82.post0.dist-info/METADATA +121 -0
- pymomentum_cpu-0.1.82.post0.dist-info/RECORD +512 -0
- pymomentum_cpu-0.1.82.post0.dist-info/WHEEL +5 -0
- pymomentum_cpu-0.1.82.post0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,117 @@
|
|
|
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,
|
|
42
|
+
const MeshStateT<T>& meshState) final;
|
|
43
|
+
|
|
44
|
+
double getGradient(
|
|
45
|
+
const ModelParametersT<T>& modelParameters,
|
|
46
|
+
const SkeletonStateT<T>& state,
|
|
47
|
+
const MeshStateT<T>& meshState,
|
|
48
|
+
Eigen::Ref<Eigen::VectorX<T>> gradient) final;
|
|
49
|
+
|
|
50
|
+
double getJacobian(
|
|
51
|
+
const ModelParametersT<T>& modelParameters,
|
|
52
|
+
const SkeletonStateT<T>& state,
|
|
53
|
+
const MeshStateT<T>& meshState,
|
|
54
|
+
Eigen::Ref<Eigen::MatrixX<T>> jacobian,
|
|
55
|
+
Eigen::Ref<Eigen::VectorX<T>> residual,
|
|
56
|
+
int& usedRows) final;
|
|
57
|
+
|
|
58
|
+
[[nodiscard]] size_t getJacobianSize() const final;
|
|
59
|
+
|
|
60
|
+
void addConstraint(
|
|
61
|
+
int vertexIndex,
|
|
62
|
+
T weight,
|
|
63
|
+
const Eigen::Vector2<T>& targetPosition,
|
|
64
|
+
const Eigen::Matrix<T, 3, 4>& projection);
|
|
65
|
+
void clearConstraints();
|
|
66
|
+
|
|
67
|
+
[[nodiscard]] const std::vector<VertexProjectionConstraintT<T>>& getConstraints() const {
|
|
68
|
+
return constraints_;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
[[nodiscard]] const Character* getCharacter() const override {
|
|
72
|
+
return &character_;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
[[nodiscard]] size_t numConstraints() const {
|
|
76
|
+
return constraints_.size();
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/// Override to indicate this function requires mesh state
|
|
80
|
+
[[nodiscard]] bool needsMesh() const override {
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
private:
|
|
85
|
+
double calculateJacobian(
|
|
86
|
+
const ModelParametersT<T>& modelParameters,
|
|
87
|
+
const SkeletonStateT<T>& state,
|
|
88
|
+
const MeshStateT<T>& meshState,
|
|
89
|
+
const VertexProjectionConstraintT<T>& constr,
|
|
90
|
+
Ref<Eigen::MatrixX<T>> jac,
|
|
91
|
+
Ref<Eigen::VectorX<T>> res) const;
|
|
92
|
+
|
|
93
|
+
double calculateGradient(
|
|
94
|
+
const ModelParametersT<T>& modelParameters,
|
|
95
|
+
const SkeletonStateT<T>& state,
|
|
96
|
+
const MeshStateT<T>& meshState,
|
|
97
|
+
const VertexProjectionConstraintT<T>& constr,
|
|
98
|
+
Eigen::Ref<Eigen::VectorX<T>> gradient) const;
|
|
99
|
+
|
|
100
|
+
// Utility function used now in calculateJacobian and calculateGradient
|
|
101
|
+
// to calculate derivatives with respect to position in world space (considering skinning)
|
|
102
|
+
void calculateDWorldPos(
|
|
103
|
+
const SkeletonStateT<T>& state,
|
|
104
|
+
const VertexProjectionConstraintT<T>& constr,
|
|
105
|
+
const Eigen::Vector3<T>& d_restPos,
|
|
106
|
+
Eigen::Vector3<T>& d_worldPos) const;
|
|
107
|
+
|
|
108
|
+
const Character& character_;
|
|
109
|
+
|
|
110
|
+
std::vector<VertexProjectionConstraintT<T>> constraints_;
|
|
111
|
+
|
|
112
|
+
uint32_t maxThreads_;
|
|
113
|
+
|
|
114
|
+
T _nearClip = 1.0f;
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
} // namespace momentum
|
|
@@ -0,0 +1,147 @@
|
|
|
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
|
+
#include <Eigen/Dense>
|
|
15
|
+
#include <memory>
|
|
16
|
+
#include <vector>
|
|
17
|
+
|
|
18
|
+
namespace momentum {
|
|
19
|
+
|
|
20
|
+
/// Constraint for vertex-to-vertex distance errors
|
|
21
|
+
template <typename T>
|
|
22
|
+
struct VertexVertexDistanceConstraintT {
|
|
23
|
+
int vertexIndex1 = -1; ///< First vertex index
|
|
24
|
+
int vertexIndex2 = -1; ///< Second vertex index
|
|
25
|
+
T weight = 1; ///< Constraint weight
|
|
26
|
+
T targetDistance = 0; ///< Desired distance between the two vertices
|
|
27
|
+
|
|
28
|
+
template <typename T2>
|
|
29
|
+
VertexVertexDistanceConstraintT<T2> cast() const {
|
|
30
|
+
return {
|
|
31
|
+
this->vertexIndex1,
|
|
32
|
+
this->vertexIndex2,
|
|
33
|
+
static_cast<T2>(this->weight),
|
|
34
|
+
static_cast<T2>(this->targetDistance)};
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/// Error function for vertex-to-vertex distance constraints
|
|
39
|
+
template <typename T>
|
|
40
|
+
class VertexVertexDistanceErrorFunctionT : public SkeletonErrorFunctionT<T> {
|
|
41
|
+
public:
|
|
42
|
+
explicit VertexVertexDistanceErrorFunctionT(const Character& character);
|
|
43
|
+
~VertexVertexDistanceErrorFunctionT() override;
|
|
44
|
+
|
|
45
|
+
VertexVertexDistanceErrorFunctionT(const VertexVertexDistanceErrorFunctionT& other) = delete;
|
|
46
|
+
VertexVertexDistanceErrorFunctionT(VertexVertexDistanceErrorFunctionT&& other) noexcept = delete;
|
|
47
|
+
VertexVertexDistanceErrorFunctionT& operator=(const VertexVertexDistanceErrorFunctionT& other) =
|
|
48
|
+
delete;
|
|
49
|
+
VertexVertexDistanceErrorFunctionT& operator=(VertexVertexDistanceErrorFunctionT&& other) =
|
|
50
|
+
delete;
|
|
51
|
+
|
|
52
|
+
[[nodiscard]] double getError(
|
|
53
|
+
const ModelParametersT<T>& modelParameters,
|
|
54
|
+
const SkeletonStateT<T>& state,
|
|
55
|
+
const MeshStateT<T>& meshState) final;
|
|
56
|
+
|
|
57
|
+
double getGradient(
|
|
58
|
+
const ModelParametersT<T>& modelParameters,
|
|
59
|
+
const SkeletonStateT<T>& state,
|
|
60
|
+
const MeshStateT<T>& meshState,
|
|
61
|
+
Eigen::Ref<Eigen::VectorX<T>> gradient) final;
|
|
62
|
+
|
|
63
|
+
double getJacobian(
|
|
64
|
+
const ModelParametersT<T>& modelParameters,
|
|
65
|
+
const SkeletonStateT<T>& state,
|
|
66
|
+
const MeshStateT<T>& meshState,
|
|
67
|
+
Eigen::Ref<Eigen::MatrixX<T>> jacobian,
|
|
68
|
+
Eigen::Ref<Eigen::VectorX<T>> residual,
|
|
69
|
+
int& usedRows) final;
|
|
70
|
+
|
|
71
|
+
[[nodiscard]] size_t getJacobianSize() const final;
|
|
72
|
+
|
|
73
|
+
/// Add a vertex-to-vertex distance constraint
|
|
74
|
+
void addConstraint(int vertexIndex1, int vertexIndex2, T weight, T targetDistance);
|
|
75
|
+
|
|
76
|
+
/// Clear all constraints
|
|
77
|
+
void clearConstraints();
|
|
78
|
+
|
|
79
|
+
/// Get all constraints
|
|
80
|
+
[[nodiscard]] const std::vector<VertexVertexDistanceConstraintT<T>>& getConstraints() const {
|
|
81
|
+
return constraints_;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/// Get the number of constraints
|
|
85
|
+
[[nodiscard]] size_t numConstraints() const {
|
|
86
|
+
return constraints_.size();
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/// Get the character
|
|
90
|
+
[[nodiscard]] const Character* getCharacter() const override {
|
|
91
|
+
return &character_;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/// Override to indicate this function requires mesh state
|
|
95
|
+
[[nodiscard]] bool needsMesh() const override {
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
private:
|
|
100
|
+
/// Calculate jacobian for a distance constraint
|
|
101
|
+
double calculateJacobian(
|
|
102
|
+
const ModelParametersT<T>& modelParameters,
|
|
103
|
+
const SkeletonStateT<T>& state,
|
|
104
|
+
const MeshStateT<T>& meshState,
|
|
105
|
+
const VertexVertexDistanceConstraintT<T>& constraint,
|
|
106
|
+
Eigen::Ref<Eigen::MatrixX<T>> jacobian,
|
|
107
|
+
T& residual) const;
|
|
108
|
+
|
|
109
|
+
/// Calculate gradient for a distance constraint
|
|
110
|
+
double calculateGradient(
|
|
111
|
+
const ModelParametersT<T>& modelParameters,
|
|
112
|
+
const SkeletonStateT<T>& state,
|
|
113
|
+
const MeshStateT<T>& meshState,
|
|
114
|
+
const VertexVertexDistanceConstraintT<T>& constraint,
|
|
115
|
+
Eigen::Ref<Eigen::VectorX<T>> gradient) const;
|
|
116
|
+
|
|
117
|
+
/// Calculate gradient contribution from a single vertex
|
|
118
|
+
void calculateVertexGradient(
|
|
119
|
+
const ModelParametersT<T>& modelParameters,
|
|
120
|
+
const SkeletonStateT<T>& state,
|
|
121
|
+
const MeshStateT<T>& meshState,
|
|
122
|
+
int vertexIndex,
|
|
123
|
+
const Eigen::Vector3<T>& gradientDirection,
|
|
124
|
+
Eigen::Ref<Eigen::VectorX<T>> gradient) const;
|
|
125
|
+
|
|
126
|
+
/// Calculate jacobian contribution from a single vertex
|
|
127
|
+
void calculateVertexJacobian(
|
|
128
|
+
const ModelParametersT<T>& modelParameters,
|
|
129
|
+
const SkeletonStateT<T>& state,
|
|
130
|
+
const MeshStateT<T>& meshState,
|
|
131
|
+
int vertexIndex,
|
|
132
|
+
const Eigen::Vector3<T>& jacobianDirection,
|
|
133
|
+
Eigen::Ref<Eigen::MatrixX<T>> jacobian) const;
|
|
134
|
+
|
|
135
|
+
/// Calculate world space position derivative for blend shape parameters
|
|
136
|
+
void calculateDWorldPos(
|
|
137
|
+
const SkeletonStateT<T>& state,
|
|
138
|
+
int vertexIndex,
|
|
139
|
+
const Eigen::Vector3<T>& d_restPos,
|
|
140
|
+
Eigen::Vector3<T>& d_worldPos) const;
|
|
141
|
+
|
|
142
|
+
const Character& character_;
|
|
143
|
+
|
|
144
|
+
std::vector<VertexVertexDistanceConstraintT<T>> constraints_;
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
} // namespace momentum
|
|
@@ -0,0 +1,155 @@
|
|
|
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/common/exception.h>
|
|
11
|
+
|
|
12
|
+
#include <limits>
|
|
13
|
+
#include <memory>
|
|
14
|
+
|
|
15
|
+
namespace momentum {
|
|
16
|
+
|
|
17
|
+
#if defined(_WIN32)
|
|
18
|
+
|
|
19
|
+
[[nodiscard]] inline void* aligned_malloc(size_t size, size_t align) {
|
|
20
|
+
return _aligned_malloc(size, align);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
inline void aligned_free(void* ptr) {
|
|
24
|
+
return _aligned_free(ptr);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
#elif (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 130000) || \
|
|
28
|
+
(defined(__ANDROID_API__) && __ANDROID_API__ < 28)
|
|
29
|
+
|
|
30
|
+
[[nodiscard]] inline void* aligned_malloc(size_t size, size_t align) {
|
|
31
|
+
void* result = nullptr;
|
|
32
|
+
posix_memalign(&result, align, size);
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
inline void aligned_free(void* ptr) {
|
|
37
|
+
return std::free(ptr);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
#else
|
|
41
|
+
|
|
42
|
+
[[nodiscard]] inline void* aligned_malloc(size_t size, size_t align) {
|
|
43
|
+
return std::aligned_alloc(align, size);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
inline void aligned_free(void* ptr) {
|
|
47
|
+
return std::free(ptr);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
#endif
|
|
51
|
+
|
|
52
|
+
inline constexpr std::size_t roundUpToAlignment(std::size_t value, std::size_t alignment) {
|
|
53
|
+
MT_THROW_IF_T(alignment == 0, std::invalid_argument, "Alignment must be non-zero");
|
|
54
|
+
return ((value + alignment - 1) / alignment) * alignment;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/// Allocates a block of memory that can hold `n` elements of type `T` with the specified alignment.
|
|
58
|
+
///
|
|
59
|
+
/// This function is intended to be used in the `AlignedAllocator::allocate()` method and throws
|
|
60
|
+
/// exceptions as `std::allocator<T>::allocate` does.
|
|
61
|
+
template <typename T, std::size_t Alignment = alignof(T)>
|
|
62
|
+
[[nodiscard]] T* alignedAlloc(std::size_t n) {
|
|
63
|
+
MT_THROW_IF_T(std::numeric_limits<std::size_t>::max() / sizeof(T) < n, std::bad_array_new_length);
|
|
64
|
+
|
|
65
|
+
const std::size_t size = roundUpToAlignment(n * sizeof(T), Alignment);
|
|
66
|
+
void* ptr = aligned_malloc(size, Alignment);
|
|
67
|
+
|
|
68
|
+
MT_THROW_IF_T(ptr == nullptr, std::bad_alloc);
|
|
69
|
+
|
|
70
|
+
return static_cast<T*>(ptr);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/// Custom deleter for aligned memory
|
|
74
|
+
struct AlignedDeleter {
|
|
75
|
+
void operator()(void* ptr) const {
|
|
76
|
+
aligned_free(ptr);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
/// Creates a std::unique_ptr for aligned memory.
|
|
81
|
+
template <typename T, std::size_t Alignment = alignof(T), class Deleter = AlignedDeleter>
|
|
82
|
+
[[nodiscard]] std::unique_ptr<T, Deleter> makeAlignedUnique(
|
|
83
|
+
std::size_t n,
|
|
84
|
+
Deleter deleter = Deleter()) {
|
|
85
|
+
return std::unique_ptr<T, Deleter>(alignedAlloc<T, Alignment>(n), std::move(deleter));
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/// Creates a std::shared_ptr for aligned memory.
|
|
89
|
+
template <typename T, std::size_t Alignment = alignof(T), class Deleter = AlignedDeleter>
|
|
90
|
+
[[nodiscard]] std::shared_ptr<T> makeAlignedShared(std::size_t n, Deleter deleter = Deleter()) {
|
|
91
|
+
return std::shared_ptr<T>(alignedAlloc<T, Alignment>(n), std::move(deleter));
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/// An allocator that aligns memory blocks according to a specified alignment.
|
|
95
|
+
/// The allocator is compatible with `std::allocator` and can be used in
|
|
96
|
+
/// place of `std::allocator` in STL containers.
|
|
97
|
+
///
|
|
98
|
+
/// @tparam T The type of elements that the allocator will allocate.
|
|
99
|
+
/// @tparam Alignment The alignment for the allocated memory blocks.
|
|
100
|
+
template <class T, std::size_t Alignment>
|
|
101
|
+
class AlignedAllocator {
|
|
102
|
+
public:
|
|
103
|
+
using value_type = T;
|
|
104
|
+
|
|
105
|
+
AlignedAllocator() noexcept = default;
|
|
106
|
+
|
|
107
|
+
template <class U>
|
|
108
|
+
explicit AlignedAllocator(const AlignedAllocator<U, Alignment>& /*other*/) noexcept {
|
|
109
|
+
// Empty
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/// Allocates a block of memory that can hold `n` elements of type `T`.
|
|
113
|
+
///
|
|
114
|
+
/// @param[in] n The number of elements to allocate space for.
|
|
115
|
+
/// @return A pointer to the first byte of the allocated memory block.
|
|
116
|
+
[[nodiscard]] T* allocate(std::size_t n) {
|
|
117
|
+
return alignedAlloc<T, Alignment>(n);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/// Deallocates a block of memory that was previously allocated by `allocate`.
|
|
121
|
+
///
|
|
122
|
+
/// @param[in] ptr A pointer to the first byte of the memory block to deallocate.
|
|
123
|
+
/// @param size The size of the memory block to deallocate. This parameter is not used, but it is
|
|
124
|
+
/// included to maintain compatibility with `std::allocator`.
|
|
125
|
+
void deallocate(T* ptr, std::size_t /*n*/) noexcept {
|
|
126
|
+
aligned_free(ptr);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
template <class U>
|
|
130
|
+
struct rebind {
|
|
131
|
+
using other = AlignedAllocator<U, Alignment>;
|
|
132
|
+
};
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
/// Checks if storage allocated from `lhs` can be deallocated from `rhs`, and vice versa.
|
|
136
|
+
///
|
|
137
|
+
/// This always returns true for stateless allocators.
|
|
138
|
+
template <class T, class U, std::size_t Alignment>
|
|
139
|
+
[[nodiscard]] bool operator==(
|
|
140
|
+
const AlignedAllocator<T, Alignment>& /*lhs*/,
|
|
141
|
+
const AlignedAllocator<U, Alignment>& /*rhs*/) {
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/// Checks if storage allocated from `lhs` cannot be deallocated from `rhs`, and vice versa.
|
|
146
|
+
///
|
|
147
|
+
/// This always returns false for stateless allocators.
|
|
148
|
+
template <class T, class U, std::size_t Alignment>
|
|
149
|
+
[[nodiscard]] bool operator!=(
|
|
150
|
+
const AlignedAllocator<T, Alignment>& /*lhs*/,
|
|
151
|
+
const AlignedAllocator<U, Alignment>& /*rhs*/) {
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
} // namespace momentum
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
+
#if defined(MOMENTUM_WITH_XR_LOGGER)
|
|
11
|
+
|
|
12
|
+
#include <logging/Checks.h>
|
|
13
|
+
|
|
14
|
+
#define MT_CHECK(condition, ...) XR_CHECK(condition, __VA_ARGS__)
|
|
15
|
+
#define MT_CHECK_LT(val1, val2, ...) XR_CHECK_DETAIL_OP1(val1, val2, <, ##__VA_ARGS__)
|
|
16
|
+
#define MT_CHECK_NOTNULL(ptr, ...) XR_CHECK(ptr != nullptr, ##__VA_ARGS__)
|
|
17
|
+
|
|
18
|
+
#else
|
|
19
|
+
|
|
20
|
+
#include <cassert>
|
|
21
|
+
|
|
22
|
+
// TODO: Support asserts with messages as XR_CHECK does
|
|
23
|
+
#define MT_CHECK(condition, ...) assert(condition)
|
|
24
|
+
#define MT_CHECK_LT(val1, val2, ...) assert(val1 < val2)
|
|
25
|
+
#define MT_CHECK_NOTNULL(ptr, ...) assert(ptr != nullptr)
|
|
26
|
+
|
|
27
|
+
#endif
|
|
@@ -0,0 +1,70 @@
|
|
|
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/format.h>
|
|
11
|
+
|
|
12
|
+
#include <stdexcept>
|
|
13
|
+
|
|
14
|
+
/// Throws an exception of a specified type with a formatted message.
|
|
15
|
+
/// @param Exception The type of exception to throw.
|
|
16
|
+
/// @param ... The message and format specifiers.
|
|
17
|
+
/// @code
|
|
18
|
+
/// MT_THROW_T(std::invalid_argument, "Invalid argument: {}", arg);
|
|
19
|
+
/// MT_THROW_T(std::bad_array_new_length); // No message
|
|
20
|
+
/// @endcode
|
|
21
|
+
#define MT_THROW_T(Exception, ...) ::momentum::detail::throwImpl<Exception>(__VA_ARGS__)
|
|
22
|
+
|
|
23
|
+
/// Throws a std::runtime_error with a formatted message.
|
|
24
|
+
/// @param ... The message and format specifiers.
|
|
25
|
+
/// @code
|
|
26
|
+
/// MT_THROW("Error occurred: {}", errorDetail);
|
|
27
|
+
/// @endcode
|
|
28
|
+
#define MT_THROW(...) MT_THROW_T(::momentum::detail::DefaultException, ##__VA_ARGS__)
|
|
29
|
+
|
|
30
|
+
/// Conditionally throws an exception of a specified type with a formatted message if the condition
|
|
31
|
+
/// is true.
|
|
32
|
+
/// @param Condition The condition to evaluate.
|
|
33
|
+
/// @param Exception The type of exception to throw.
|
|
34
|
+
/// @param ... The message and format specifiers.
|
|
35
|
+
/// @code
|
|
36
|
+
/// MT_THROW_IF_T(x > y, std::out_of_range, "x ({}) is greater than y ({})", x, y);
|
|
37
|
+
/// MT_THROW_IF_T(x > y, std::bad_array_new_length); // No message
|
|
38
|
+
/// @endcode
|
|
39
|
+
#define MT_THROW_IF_T(Condition, Exception, ...) \
|
|
40
|
+
if (Condition) { \
|
|
41
|
+
MT_THROW_T(Exception, ##__VA_ARGS__); \
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/// Conditionally throws a std::runtime_error with a formatted message if the condition is true.
|
|
45
|
+
/// @param Condition The condition to evaluate.
|
|
46
|
+
/// @param ... The message and format specifiers.
|
|
47
|
+
/// @code
|
|
48
|
+
/// MT_THROW_IF(x == nullptr, "x cannot be nullptr");
|
|
49
|
+
/// @endcode
|
|
50
|
+
#define MT_THROW_IF(Condition, ...) \
|
|
51
|
+
MT_THROW_IF_T(Condition, ::momentum::detail::DefaultException, ##__VA_ARGS__)
|
|
52
|
+
|
|
53
|
+
namespace momentum::detail {
|
|
54
|
+
|
|
55
|
+
using DefaultException = std::runtime_error;
|
|
56
|
+
|
|
57
|
+
// Helper function template to throw with formatted message
|
|
58
|
+
template <typename Exception = DefaultException, typename... Args>
|
|
59
|
+
[[noreturn]] void throwImpl(fmt::format_string<Args...> format, Args&&... args) {
|
|
60
|
+
throw Exception{fmt::format(format, std::forward<Args>(args)...)};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Overload for throwing exceptions that do not require any message or whose constructors do not
|
|
64
|
+
// take any arguments.
|
|
65
|
+
template <typename Exception>
|
|
66
|
+
[[noreturn]] void throwImpl() {
|
|
67
|
+
throw Exception{};
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
} // namespace momentum::detail
|
|
@@ -0,0 +1,20 @@
|
|
|
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
|
+
#if defined(MOMENTUM_WITH_PORTABILITY)
|
|
11
|
+
|
|
12
|
+
#include <portability/Filesystem.h>
|
|
13
|
+
|
|
14
|
+
#else
|
|
15
|
+
|
|
16
|
+
#include <filesystem>
|
|
17
|
+
|
|
18
|
+
namespace filesystem = std::filesystem;
|
|
19
|
+
|
|
20
|
+
#endif
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
+
class ProgressBar;
|
|
19
|
+
|
|
20
|
+
using ProgressBar_p = ::std::shared_ptr<ProgressBar>;
|
|
21
|
+
using ProgressBar_u = ::std::unique_ptr<ProgressBar>;
|
|
22
|
+
using ProgressBar_w = ::std::weak_ptr<ProgressBar>;
|
|
23
|
+
using ProgressBar_const_p = ::std::shared_ptr<const ProgressBar>;
|
|
24
|
+
using ProgressBar_const_u = ::std::unique_ptr<const ProgressBar>;
|
|
25
|
+
using ProgressBar_const_w = ::std::weak_ptr<const ProgressBar>;
|
|
26
|
+
|
|
27
|
+
} // namespace momentum
|