pymomentum-cpu 0.0.0__cp312-cp312-manylinux_2_39_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pymomentum-cpu might be problematic. Click here for more details.
- include/axel/BoundingBox.h +58 -0
- include/axel/Bvh.h +708 -0
- include/axel/BvhBase.h +75 -0
- include/axel/BvhCommon.h +43 -0
- include/axel/BvhEmbree.h +86 -0
- include/axel/BvhFactory.h +34 -0
- include/axel/Checks.h +21 -0
- include/axel/KdTree.h +199 -0
- include/axel/Log.h +22 -0
- include/axel/MeshToSdf.h +123 -0
- include/axel/Profile.h +64 -0
- include/axel/Ray.h +45 -0
- include/axel/SignedDistanceField.h +237 -0
- include/axel/SimdKdTree.h +515 -0
- include/axel/TriBvh.h +157 -0
- include/axel/TriBvhEmbree.h +57 -0
- include/axel/common/Constants.h +27 -0
- include/axel/common/Types.h +21 -0
- include/axel/common/VectorizationTypes.h +58 -0
- include/axel/math/BoundingBoxUtils.h +54 -0
- include/axel/math/ContinuousCollisionDetection.h +48 -0
- include/axel/math/CoplanarityCheck.h +30 -0
- include/axel/math/EdgeEdgeDistance.h +31 -0
- include/axel/math/MeshHoleFilling.h +98 -0
- include/axel/math/PointTriangleProjection.h +34 -0
- include/axel/math/PointTriangleProjectionDefinitions.h +209 -0
- include/axel/math/RayTriangleIntersection.h +36 -0
- include/momentum/character/blend_shape.h +91 -0
- include/momentum/character/blend_shape_base.h +70 -0
- include/momentum/character/blend_shape_skinning.h +96 -0
- include/momentum/character/character.h +272 -0
- include/momentum/character/character_state.h +108 -0
- include/momentum/character/character_utility.h +128 -0
- include/momentum/character/collision_geometry.h +80 -0
- include/momentum/character/collision_geometry_state.h +130 -0
- include/momentum/character/fwd.h +243 -0
- include/momentum/character/inverse_parameter_transform.h +58 -0
- include/momentum/character/joint.h +82 -0
- include/momentum/character/joint_state.h +241 -0
- include/momentum/character/linear_skinning.h +139 -0
- include/momentum/character/locator.h +82 -0
- include/momentum/character/locator_state.h +43 -0
- include/momentum/character/marker.h +48 -0
- include/momentum/character/parameter_limits.h +144 -0
- include/momentum/character/parameter_transform.h +250 -0
- include/momentum/character/pose_shape.h +65 -0
- include/momentum/character/skeleton.h +85 -0
- include/momentum/character/skeleton_state.h +181 -0
- include/momentum/character/skeleton_utility.h +38 -0
- include/momentum/character/skin_weights.h +67 -0
- include/momentum/character/skinned_locator.h +80 -0
- include/momentum/character/types.h +202 -0
- include/momentum/character_sequence_solver/fwd.h +200 -0
- include/momentum/character_sequence_solver/model_parameters_sequence_error_function.h +62 -0
- include/momentum/character_sequence_solver/multipose_solver.h +63 -0
- include/momentum/character_sequence_solver/multipose_solver_function.h +80 -0
- include/momentum/character_sequence_solver/sequence_error_function.h +95 -0
- include/momentum/character_sequence_solver/sequence_solver.h +144 -0
- include/momentum/character_sequence_solver/sequence_solver_function.h +126 -0
- include/momentum/character_sequence_solver/state_sequence_error_function.h +106 -0
- include/momentum/character_sequence_solver/vertex_sequence_error_function.h +125 -0
- include/momentum/character_solver/aim_error_function.h +112 -0
- include/momentum/character_solver/collision_error_function.h +88 -0
- include/momentum/character_solver/collision_error_function_stateless.h +71 -0
- include/momentum/character_solver/constraint_error_function-inl.h +321 -0
- include/momentum/character_solver/constraint_error_function.h +241 -0
- include/momentum/character_solver/distance_error_function.h +74 -0
- include/momentum/character_solver/error_function_utils.h +60 -0
- include/momentum/character_solver/fixed_axis_error_function.h +139 -0
- include/momentum/character_solver/fwd.h +924 -0
- include/momentum/character_solver/gauss_newton_solver_qr.h +62 -0
- include/momentum/character_solver/limit_error_function.h +53 -0
- include/momentum/character_solver/model_parameters_error_function.h +61 -0
- include/momentum/character_solver/normal_error_function.h +73 -0
- include/momentum/character_solver/orientation_error_function.h +74 -0
- include/momentum/character_solver/plane_error_function.h +102 -0
- include/momentum/character_solver/point_triangle_vertex_error_function.h +140 -0
- include/momentum/character_solver/pose_prior_error_function.h +76 -0
- include/momentum/character_solver/position_error_function.h +75 -0
- include/momentum/character_solver/projection_error_function.h +90 -0
- include/momentum/character_solver/simd_collision_error_function.h +95 -0
- include/momentum/character_solver/simd_normal_error_function.h +151 -0
- include/momentum/character_solver/simd_plane_error_function.h +154 -0
- include/momentum/character_solver/simd_position_error_function.h +155 -0
- include/momentum/character_solver/skeleton_error_function.h +136 -0
- include/momentum/character_solver/skeleton_solver_function.h +72 -0
- include/momentum/character_solver/skinned_locator_error_function.h +163 -0
- include/momentum/character_solver/skinned_locator_triangle_error_function.h +138 -0
- include/momentum/character_solver/skinning_weight_iterator.h +80 -0
- include/momentum/character_solver/state_error_function.h +90 -0
- include/momentum/character_solver/transform_pose.h +80 -0
- include/momentum/character_solver/trust_region_qr.h +78 -0
- include/momentum/character_solver/vertex_error_function.h +154 -0
- include/momentum/character_solver/vertex_projection_error_function.h +118 -0
- include/momentum/character_solver/vertex_vertex_distance_error_function.h +143 -0
- include/momentum/common/aligned.h +155 -0
- include/momentum/common/checks.h +27 -0
- include/momentum/common/exception.h +70 -0
- include/momentum/common/filesystem.h +20 -0
- include/momentum/common/fwd.h +27 -0
- include/momentum/common/log.h +173 -0
- include/momentum/common/log_channel.h +17 -0
- include/momentum/common/memory.h +71 -0
- include/momentum/common/profile.h +79 -0
- include/momentum/common/progress_bar.h +37 -0
- include/momentum/common/string.h +52 -0
- include/momentum/diff_ik/ceres_utility.h +73 -0
- include/momentum/diff_ik/fully_differentiable_body_ik.h +58 -0
- include/momentum/diff_ik/fully_differentiable_distance_error_function.h +69 -0
- include/momentum/diff_ik/fully_differentiable_motion_error_function.h +46 -0
- include/momentum/diff_ik/fully_differentiable_orientation_error_function.h +109 -0
- include/momentum/diff_ik/fully_differentiable_pose_prior_error_function.h +76 -0
- include/momentum/diff_ik/fully_differentiable_position_error_function.h +133 -0
- include/momentum/diff_ik/fully_differentiable_projection_error_function.h +65 -0
- include/momentum/diff_ik/fully_differentiable_skeleton_error_function.h +160 -0
- include/momentum/diff_ik/fully_differentiable_state_error_function.h +54 -0
- include/momentum/diff_ik/fwd.h +385 -0
- include/momentum/diff_ik/union_error_function.h +63 -0
- include/momentum/gui/rerun/eigen_adapters.h +70 -0
- include/momentum/gui/rerun/logger.h +102 -0
- include/momentum/gui/rerun/logging_redirect.h +27 -0
- include/momentum/io/character_io.h +56 -0
- include/momentum/io/common/gsl_utils.h +50 -0
- include/momentum/io/common/stream_utils.h +65 -0
- include/momentum/io/fbx/fbx_io.h +109 -0
- include/momentum/io/fbx/fbx_memory_stream.h +66 -0
- include/momentum/io/fbx/openfbx_loader.h +49 -0
- include/momentum/io/fbx/polygon_data.h +60 -0
- include/momentum/io/gltf/gltf_builder.h +135 -0
- include/momentum/io/gltf/gltf_file_format.h +19 -0
- include/momentum/io/gltf/gltf_io.h +136 -0
- include/momentum/io/gltf/utils/accessor_utils.h +299 -0
- include/momentum/io/gltf/utils/coordinate_utils.h +60 -0
- include/momentum/io/gltf/utils/json_utils.h +102 -0
- include/momentum/io/legacy_json/legacy_json_io.h +70 -0
- include/momentum/io/marker/c3d_io.h +29 -0
- include/momentum/io/marker/conversions.h +57 -0
- include/momentum/io/marker/coordinate_system.h +30 -0
- include/momentum/io/marker/marker_io.h +54 -0
- include/momentum/io/marker/trc_io.h +27 -0
- include/momentum/io/motion/mmo_io.h +97 -0
- include/momentum/io/shape/blend_shape_io.h +70 -0
- include/momentum/io/shape/pose_shape_io.h +21 -0
- include/momentum/io/skeleton/locator_io.h +41 -0
- include/momentum/io/skeleton/mppca_io.h +26 -0
- include/momentum/io/skeleton/parameter_limits_io.h +25 -0
- include/momentum/io/skeleton/parameter_transform_io.h +41 -0
- include/momentum/io/skeleton/parameters_io.h +20 -0
- include/momentum/io/urdf/urdf_io.h +26 -0
- include/momentum/io/usd/usd_io.h +36 -0
- include/momentum/marker_tracking/app_utils.h +62 -0
- include/momentum/marker_tracking/marker_tracker.h +213 -0
- include/momentum/marker_tracking/process_markers.h +58 -0
- include/momentum/marker_tracking/tracker_utils.h +90 -0
- include/momentum/math/constants.h +82 -0
- include/momentum/math/covariance_matrix.h +84 -0
- include/momentum/math/fmt_eigen.h +23 -0
- include/momentum/math/fwd.h +132 -0
- include/momentum/math/generalized_loss.h +61 -0
- include/momentum/math/intersection.h +32 -0
- include/momentum/math/mesh.h +84 -0
- include/momentum/math/mppca.h +67 -0
- include/momentum/math/online_householder_qr.h +516 -0
- include/momentum/math/random-inl.h +404 -0
- include/momentum/math/random.h +310 -0
- include/momentum/math/simd_generalized_loss.h +40 -0
- include/momentum/math/transform.h +229 -0
- include/momentum/math/types.h +461 -0
- include/momentum/math/utility.h +251 -0
- include/momentum/rasterizer/camera.h +453 -0
- include/momentum/rasterizer/fwd.h +102 -0
- include/momentum/rasterizer/geometry.h +83 -0
- include/momentum/rasterizer/image.h +18 -0
- include/momentum/rasterizer/rasterizer.h +583 -0
- include/momentum/rasterizer/tensor.h +140 -0
- include/momentum/rasterizer/utility.h +268 -0
- include/momentum/simd/simd.h +221 -0
- include/momentum/solver/fwd.h +131 -0
- include/momentum/solver/gauss_newton_solver.h +136 -0
- include/momentum/solver/gradient_descent_solver.h +65 -0
- include/momentum/solver/solver.h +155 -0
- include/momentum/solver/solver_function.h +126 -0
- include/momentum/solver/subset_gauss_newton_solver.h +109 -0
- include/rerun/archetypes/annotation_context.hpp +157 -0
- include/rerun/archetypes/arrows2d.hpp +271 -0
- include/rerun/archetypes/arrows3d.hpp +257 -0
- include/rerun/archetypes/asset3d.hpp +262 -0
- include/rerun/archetypes/asset_video.hpp +275 -0
- include/rerun/archetypes/bar_chart.hpp +261 -0
- include/rerun/archetypes/boxes2d.hpp +293 -0
- include/rerun/archetypes/boxes3d.hpp +369 -0
- include/rerun/archetypes/capsules3d.hpp +333 -0
- include/rerun/archetypes/clear.hpp +180 -0
- include/rerun/archetypes/depth_image.hpp +425 -0
- include/rerun/archetypes/ellipsoids3d.hpp +384 -0
- include/rerun/archetypes/encoded_image.hpp +250 -0
- include/rerun/archetypes/geo_line_strings.hpp +166 -0
- include/rerun/archetypes/geo_points.hpp +177 -0
- include/rerun/archetypes/graph_edges.hpp +152 -0
- include/rerun/archetypes/graph_nodes.hpp +206 -0
- include/rerun/archetypes/image.hpp +434 -0
- include/rerun/archetypes/instance_poses3d.hpp +221 -0
- include/rerun/archetypes/line_strips2d.hpp +289 -0
- include/rerun/archetypes/line_strips3d.hpp +270 -0
- include/rerun/archetypes/mesh3d.hpp +387 -0
- include/rerun/archetypes/pinhole.hpp +385 -0
- include/rerun/archetypes/points2d.hpp +333 -0
- include/rerun/archetypes/points3d.hpp +369 -0
- include/rerun/archetypes/recording_properties.hpp +132 -0
- include/rerun/archetypes/scalar.hpp +170 -0
- include/rerun/archetypes/scalars.hpp +153 -0
- include/rerun/archetypes/segmentation_image.hpp +305 -0
- include/rerun/archetypes/series_line.hpp +274 -0
- include/rerun/archetypes/series_lines.hpp +271 -0
- include/rerun/archetypes/series_point.hpp +265 -0
- include/rerun/archetypes/series_points.hpp +251 -0
- include/rerun/archetypes/tensor.hpp +213 -0
- include/rerun/archetypes/text_document.hpp +200 -0
- include/rerun/archetypes/text_log.hpp +211 -0
- include/rerun/archetypes/transform3d.hpp +925 -0
- include/rerun/archetypes/video_frame_reference.hpp +295 -0
- include/rerun/archetypes/view_coordinates.hpp +393 -0
- include/rerun/archetypes.hpp +43 -0
- include/rerun/arrow_utils.hpp +32 -0
- include/rerun/as_components.hpp +90 -0
- include/rerun/blueprint/archetypes/background.hpp +113 -0
- include/rerun/blueprint/archetypes/container_blueprint.hpp +259 -0
- include/rerun/blueprint/archetypes/dataframe_query.hpp +178 -0
- include/rerun/blueprint/archetypes/entity_behavior.hpp +130 -0
- include/rerun/blueprint/archetypes/force_center.hpp +115 -0
- include/rerun/blueprint/archetypes/force_collision_radius.hpp +141 -0
- include/rerun/blueprint/archetypes/force_link.hpp +136 -0
- include/rerun/blueprint/archetypes/force_many_body.hpp +124 -0
- include/rerun/blueprint/archetypes/force_position.hpp +132 -0
- include/rerun/blueprint/archetypes/line_grid3d.hpp +178 -0
- include/rerun/blueprint/archetypes/map_background.hpp +104 -0
- include/rerun/blueprint/archetypes/map_zoom.hpp +103 -0
- include/rerun/blueprint/archetypes/near_clip_plane.hpp +109 -0
- include/rerun/blueprint/archetypes/panel_blueprint.hpp +95 -0
- include/rerun/blueprint/archetypes/plot_legend.hpp +118 -0
- include/rerun/blueprint/archetypes/scalar_axis.hpp +116 -0
- include/rerun/blueprint/archetypes/tensor_scalar_mapping.hpp +146 -0
- include/rerun/blueprint/archetypes/tensor_slice_selection.hpp +167 -0
- include/rerun/blueprint/archetypes/tensor_view_fit.hpp +95 -0
- include/rerun/blueprint/archetypes/view_blueprint.hpp +170 -0
- include/rerun/blueprint/archetypes/view_contents.hpp +142 -0
- include/rerun/blueprint/archetypes/viewport_blueprint.hpp +200 -0
- include/rerun/blueprint/archetypes/visible_time_ranges.hpp +116 -0
- include/rerun/blueprint/archetypes/visual_bounds2d.hpp +109 -0
- include/rerun/blueprint/archetypes/visualizer_overrides.hpp +113 -0
- include/rerun/blueprint/archetypes.hpp +29 -0
- include/rerun/blueprint/components/active_tab.hpp +82 -0
- include/rerun/blueprint/components/apply_latest_at.hpp +79 -0
- include/rerun/blueprint/components/auto_layout.hpp +77 -0
- include/rerun/blueprint/components/auto_views.hpp +77 -0
- include/rerun/blueprint/components/background_kind.hpp +66 -0
- include/rerun/blueprint/components/column_share.hpp +78 -0
- include/rerun/blueprint/components/component_column_selector.hpp +81 -0
- include/rerun/blueprint/components/container_kind.hpp +65 -0
- include/rerun/blueprint/components/corner2d.hpp +64 -0
- include/rerun/blueprint/components/enabled.hpp +77 -0
- include/rerun/blueprint/components/filter_by_range.hpp +74 -0
- include/rerun/blueprint/components/filter_is_not_null.hpp +77 -0
- include/rerun/blueprint/components/force_distance.hpp +82 -0
- include/rerun/blueprint/components/force_iterations.hpp +82 -0
- include/rerun/blueprint/components/force_strength.hpp +82 -0
- include/rerun/blueprint/components/grid_columns.hpp +78 -0
- include/rerun/blueprint/components/grid_spacing.hpp +78 -0
- include/rerun/blueprint/components/included_content.hpp +86 -0
- include/rerun/blueprint/components/lock_range_during_zoom.hpp +82 -0
- include/rerun/blueprint/components/map_provider.hpp +64 -0
- include/rerun/blueprint/components/near_clip_plane.hpp +82 -0
- include/rerun/blueprint/components/panel_state.hpp +61 -0
- include/rerun/blueprint/components/query_expression.hpp +89 -0
- include/rerun/blueprint/components/root_container.hpp +77 -0
- include/rerun/blueprint/components/row_share.hpp +78 -0
- include/rerun/blueprint/components/selected_columns.hpp +76 -0
- include/rerun/blueprint/components/tensor_dimension_index_slider.hpp +90 -0
- include/rerun/blueprint/components/timeline_name.hpp +76 -0
- include/rerun/blueprint/components/view_class.hpp +76 -0
- include/rerun/blueprint/components/view_fit.hpp +61 -0
- include/rerun/blueprint/components/view_maximized.hpp +79 -0
- include/rerun/blueprint/components/view_origin.hpp +81 -0
- include/rerun/blueprint/components/viewer_recommendation_hash.hpp +82 -0
- include/rerun/blueprint/components/visible_time_range.hpp +77 -0
- include/rerun/blueprint/components/visual_bounds2d.hpp +74 -0
- include/rerun/blueprint/components/visualizer_override.hpp +86 -0
- include/rerun/blueprint/components/zoom_level.hpp +78 -0
- include/rerun/blueprint/components.hpp +41 -0
- include/rerun/blueprint/datatypes/component_column_selector.hpp +61 -0
- include/rerun/blueprint/datatypes/filter_by_range.hpp +59 -0
- include/rerun/blueprint/datatypes/filter_is_not_null.hpp +61 -0
- include/rerun/blueprint/datatypes/selected_columns.hpp +62 -0
- include/rerun/blueprint/datatypes/tensor_dimension_index_slider.hpp +63 -0
- include/rerun/blueprint/datatypes.hpp +9 -0
- include/rerun/c/arrow_c_data_interface.h +111 -0
- include/rerun/c/compiler_utils.h +10 -0
- include/rerun/c/rerun.h +627 -0
- include/rerun/c/sdk_info.h +28 -0
- include/rerun/collection.hpp +496 -0
- include/rerun/collection_adapter.hpp +43 -0
- include/rerun/collection_adapter_builtins.hpp +138 -0
- include/rerun/compiler_utils.hpp +61 -0
- include/rerun/component_batch.hpp +163 -0
- include/rerun/component_column.hpp +111 -0
- include/rerun/component_descriptor.hpp +142 -0
- include/rerun/component_type.hpp +35 -0
- include/rerun/components/aggregation_policy.hpp +76 -0
- include/rerun/components/albedo_factor.hpp +74 -0
- include/rerun/components/annotation_context.hpp +102 -0
- include/rerun/components/axis_length.hpp +74 -0
- include/rerun/components/blob.hpp +73 -0
- include/rerun/components/class_id.hpp +71 -0
- include/rerun/components/clear_is_recursive.hpp +75 -0
- include/rerun/components/color.hpp +99 -0
- include/rerun/components/colormap.hpp +99 -0
- include/rerun/components/depth_meter.hpp +84 -0
- include/rerun/components/draw_order.hpp +79 -0
- include/rerun/components/entity_path.hpp +83 -0
- include/rerun/components/fill_mode.hpp +72 -0
- include/rerun/components/fill_ratio.hpp +79 -0
- include/rerun/components/gamma_correction.hpp +80 -0
- include/rerun/components/geo_line_string.hpp +63 -0
- include/rerun/components/graph_edge.hpp +75 -0
- include/rerun/components/graph_node.hpp +79 -0
- include/rerun/components/graph_type.hpp +57 -0
- include/rerun/components/half_size2d.hpp +91 -0
- include/rerun/components/half_size3d.hpp +95 -0
- include/rerun/components/image_buffer.hpp +86 -0
- include/rerun/components/image_format.hpp +84 -0
- include/rerun/components/image_plane_distance.hpp +77 -0
- include/rerun/components/interactive.hpp +76 -0
- include/rerun/components/keypoint_id.hpp +74 -0
- include/rerun/components/lat_lon.hpp +89 -0
- include/rerun/components/length.hpp +77 -0
- include/rerun/components/line_strip2d.hpp +73 -0
- include/rerun/components/line_strip3d.hpp +73 -0
- include/rerun/components/magnification_filter.hpp +63 -0
- include/rerun/components/marker_shape.hpp +82 -0
- include/rerun/components/marker_size.hpp +74 -0
- include/rerun/components/media_type.hpp +157 -0
- include/rerun/components/name.hpp +83 -0
- include/rerun/components/opacity.hpp +77 -0
- include/rerun/components/pinhole_projection.hpp +94 -0
- include/rerun/components/plane3d.hpp +75 -0
- include/rerun/components/pose_rotation_axis_angle.hpp +73 -0
- include/rerun/components/pose_rotation_quat.hpp +71 -0
- include/rerun/components/pose_scale3d.hpp +102 -0
- include/rerun/components/pose_transform_mat3x3.hpp +87 -0
- include/rerun/components/pose_translation3d.hpp +96 -0
- include/rerun/components/position2d.hpp +86 -0
- include/rerun/components/position3d.hpp +90 -0
- include/rerun/components/radius.hpp +98 -0
- include/rerun/components/range1d.hpp +75 -0
- include/rerun/components/resolution.hpp +88 -0
- include/rerun/components/rotation_axis_angle.hpp +72 -0
- include/rerun/components/rotation_quat.hpp +71 -0
- include/rerun/components/scalar.hpp +76 -0
- include/rerun/components/scale3d.hpp +102 -0
- include/rerun/components/series_visible.hpp +76 -0
- include/rerun/components/show_labels.hpp +79 -0
- include/rerun/components/stroke_width.hpp +74 -0
- include/rerun/components/tensor_data.hpp +94 -0
- include/rerun/components/tensor_dimension_index_selection.hpp +77 -0
- include/rerun/components/tensor_height_dimension.hpp +71 -0
- include/rerun/components/tensor_width_dimension.hpp +71 -0
- include/rerun/components/texcoord2d.hpp +101 -0
- include/rerun/components/text.hpp +83 -0
- include/rerun/components/text_log_level.hpp +110 -0
- include/rerun/components/timestamp.hpp +76 -0
- include/rerun/components/transform_mat3x3.hpp +92 -0
- include/rerun/components/transform_relation.hpp +66 -0
- include/rerun/components/translation3d.hpp +96 -0
- include/rerun/components/triangle_indices.hpp +85 -0
- include/rerun/components/value_range.hpp +78 -0
- include/rerun/components/vector2d.hpp +92 -0
- include/rerun/components/vector3d.hpp +96 -0
- include/rerun/components/video_timestamp.hpp +120 -0
- include/rerun/components/view_coordinates.hpp +346 -0
- include/rerun/components/visible.hpp +74 -0
- include/rerun/components.hpp +77 -0
- include/rerun/config.hpp +52 -0
- include/rerun/datatypes/angle.hpp +76 -0
- include/rerun/datatypes/annotation_info.hpp +76 -0
- include/rerun/datatypes/blob.hpp +67 -0
- include/rerun/datatypes/bool.hpp +57 -0
- include/rerun/datatypes/channel_datatype.hpp +87 -0
- include/rerun/datatypes/class_description.hpp +92 -0
- include/rerun/datatypes/class_description_map_elem.hpp +69 -0
- include/rerun/datatypes/class_id.hpp +62 -0
- include/rerun/datatypes/color_model.hpp +68 -0
- include/rerun/datatypes/dvec2d.hpp +76 -0
- include/rerun/datatypes/entity_path.hpp +60 -0
- include/rerun/datatypes/float32.hpp +62 -0
- include/rerun/datatypes/float64.hpp +62 -0
- include/rerun/datatypes/image_format.hpp +107 -0
- include/rerun/datatypes/keypoint_id.hpp +63 -0
- include/rerun/datatypes/keypoint_pair.hpp +65 -0
- include/rerun/datatypes/mat3x3.hpp +105 -0
- include/rerun/datatypes/mat4x4.hpp +119 -0
- include/rerun/datatypes/pixel_format.hpp +142 -0
- include/rerun/datatypes/plane3d.hpp +60 -0
- include/rerun/datatypes/quaternion.hpp +110 -0
- include/rerun/datatypes/range1d.hpp +59 -0
- include/rerun/datatypes/range2d.hpp +55 -0
- include/rerun/datatypes/rgba32.hpp +94 -0
- include/rerun/datatypes/rotation_axis_angle.hpp +67 -0
- include/rerun/datatypes/tensor_buffer.hpp +529 -0
- include/rerun/datatypes/tensor_data.hpp +100 -0
- include/rerun/datatypes/tensor_dimension_index_selection.hpp +58 -0
- include/rerun/datatypes/tensor_dimension_selection.hpp +56 -0
- include/rerun/datatypes/time_int.hpp +62 -0
- include/rerun/datatypes/time_range.hpp +55 -0
- include/rerun/datatypes/time_range_boundary.hpp +175 -0
- include/rerun/datatypes/uint16.hpp +62 -0
- include/rerun/datatypes/uint32.hpp +62 -0
- include/rerun/datatypes/uint64.hpp +62 -0
- include/rerun/datatypes/utf8.hpp +76 -0
- include/rerun/datatypes/utf8pair.hpp +62 -0
- include/rerun/datatypes/uuid.hpp +60 -0
- include/rerun/datatypes/uvec2d.hpp +76 -0
- include/rerun/datatypes/uvec3d.hpp +80 -0
- include/rerun/datatypes/uvec4d.hpp +59 -0
- include/rerun/datatypes/vec2d.hpp +76 -0
- include/rerun/datatypes/vec3d.hpp +80 -0
- include/rerun/datatypes/vec4d.hpp +84 -0
- include/rerun/datatypes/video_timestamp.hpp +67 -0
- include/rerun/datatypes/view_coordinates.hpp +87 -0
- include/rerun/datatypes/visible_time_range.hpp +57 -0
- include/rerun/datatypes.hpp +51 -0
- include/rerun/demo_utils.hpp +75 -0
- include/rerun/entity_path.hpp +20 -0
- include/rerun/error.hpp +180 -0
- include/rerun/half.hpp +10 -0
- include/rerun/image_utils.hpp +187 -0
- include/rerun/indicator_component.hpp +59 -0
- include/rerun/loggable.hpp +54 -0
- include/rerun/recording_stream.hpp +960 -0
- include/rerun/rerun_sdk_export.hpp +25 -0
- include/rerun/result.hpp +86 -0
- include/rerun/rotation3d.hpp +33 -0
- include/rerun/sdk_info.hpp +20 -0
- include/rerun/spawn.hpp +21 -0
- include/rerun/spawn_options.hpp +57 -0
- include/rerun/string_utils.hpp +16 -0
- include/rerun/third_party/cxxopts.hpp +2198 -0
- include/rerun/time_column.hpp +288 -0
- include/rerun/timeline.hpp +38 -0
- include/rerun/type_traits.hpp +40 -0
- include/rerun.hpp +86 -0
- lib/cmake/rerun_sdk/rerun_sdkConfig.cmake +70 -0
- lib/cmake/rerun_sdk/rerun_sdkConfigVersion.cmake +83 -0
- lib/cmake/rerun_sdk/rerun_sdkTargets-release.cmake +19 -0
- lib/cmake/rerun_sdk/rerun_sdkTargets.cmake +108 -0
- lib/libarrow.a +0 -0
- lib/libarrow_bundled_dependencies.a +0 -0
- lib/librerun_c__linux_x64.a +0 -0
- lib/librerun_sdk.a +0 -0
- lib64/cmake/axel/axel-config.cmake +45 -0
- lib64/cmake/axel/axelTargets-release.cmake +19 -0
- lib64/cmake/axel/axelTargets.cmake +108 -0
- lib64/cmake/momentum/Findre2.cmake +52 -0
- lib64/cmake/momentum/momentum-config.cmake +67 -0
- lib64/cmake/momentum/momentumTargets-release.cmake +269 -0
- lib64/cmake/momentum/momentumTargets.cmake +445 -0
- lib64/libaxel.a +0 -0
- lib64/libmomentum_app_utils.a +0 -0
- lib64/libmomentum_character.a +0 -0
- lib64/libmomentum_character_sequence_solver.a +0 -0
- lib64/libmomentum_character_solver.a +0 -0
- lib64/libmomentum_common.a +0 -0
- lib64/libmomentum_diff_ik.a +0 -0
- lib64/libmomentum_io.a +0 -0
- lib64/libmomentum_io_common.a +0 -0
- lib64/libmomentum_io_fbx.a +0 -0
- lib64/libmomentum_io_gltf.a +0 -0
- lib64/libmomentum_io_legacy_json.a +0 -0
- lib64/libmomentum_io_marker.a +0 -0
- lib64/libmomentum_io_motion.a +0 -0
- lib64/libmomentum_io_shape.a +0 -0
- lib64/libmomentum_io_skeleton.a +0 -0
- lib64/libmomentum_io_urdf.a +0 -0
- lib64/libmomentum_marker_tracker.a +0 -0
- lib64/libmomentum_math.a +0 -0
- lib64/libmomentum_online_qr.a +0 -0
- lib64/libmomentum_process_markers.a +0 -0
- lib64/libmomentum_rasterizer.a +0 -0
- lib64/libmomentum_rerun.a +0 -0
- lib64/libmomentum_simd_constraints.a +0 -0
- lib64/libmomentum_simd_generalized_loss.a +0 -0
- lib64/libmomentum_skeleton.a +0 -0
- lib64/libmomentum_solver.a +0 -0
- pymomentum/axel.cpython-312-x86_64-linux-gnu.so +0 -0
- pymomentum/backend/__init__.py +16 -0
- pymomentum/backend/skel_state_backend.py +614 -0
- pymomentum/backend/trs_backend.py +871 -0
- pymomentum/backend/utils.py +224 -0
- pymomentum/geometry.cpython-312-x86_64-linux-gnu.so +0 -0
- pymomentum/marker_tracking.cpython-312-x86_64-linux-gnu.so +0 -0
- pymomentum/quaternion.py +740 -0
- pymomentum/renderer.cpython-312-x86_64-linux-gnu.so +0 -0
- pymomentum/skel_state.py +514 -0
- pymomentum/solver.cpython-312-x86_64-linux-gnu.so +0 -0
- pymomentum/solver2.cpython-312-x86_64-linux-gnu.so +0 -0
- pymomentum/torch/character.py +809 -0
- pymomentum/torch/parameter_limits.py +494 -0
- pymomentum/torch/utility.py +20 -0
- pymomentum/trs.py +535 -0
- pymomentum_cpu-0.0.0.dist-info/METADATA +209 -0
- pymomentum_cpu-0.0.0.dist-info/RECORD +555 -0
- pymomentum_cpu-0.0.0.dist-info/WHEEL +5 -0
- pymomentum_cpu-0.0.0.dist-info/licenses/LICENSE +21 -0
- pymomentum_cpu.libs/libabsl_base-86f3b38c.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_city-31b65ca2.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_debugging_internal-38680253.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_decode_rust_punycode-750652c3.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_demangle_internal-9a0351a3.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_demangle_rust-71629506.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_examine_stack-57661ecd.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_hash-8c523b7e.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_hashtablez_sampler-b5c3e343.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_int128-295bfed5.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_kernel_timeout_internal-29296ac1.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_globals-6cfa8af5.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_format-a5c79460.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_globals-481e9a7c.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_log_sink_set-ac08f942.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_message-7dfe150a.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_nullguard-883adc72.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_proto-a5da8c75.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_structured_proto-e601fd9b.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_sink-894261b2.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_low_level_hash-a3284638.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_malloc_internal-814569de.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_raw_hash_set-922d64ad.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_raw_logging_internal-477f78ec.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_spinlock_wait-8b85a473.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_stacktrace-7369e71d.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_str_format_internal-98de729d.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_strerror-39a52998.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_strings-a57d5127.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_strings_internal-ed8c7c0d.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_symbolize-eba17dd1.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_synchronization-2f8cf326.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_time-066c0dde.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_time_zone-72867365.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_tracing_internal-021e37ee.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_utf8_for_code_point-de2a4d4a.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libconsole_bridge-f26e11cc.so.1.0 +0 -0
- pymomentum_cpu.libs/libdeflate-577b71e3.so.0 +0 -0
- pymomentum_cpu.libs/libdispenso-67ac1721.so.1.4.0 +0 -0
- pymomentum_cpu.libs/libezc3d-4a95ab2c.so +0 -0
- pymomentum_cpu.libs/libre2-985fb83c.so.11 +0 -0
- pymomentum_cpu.libs/libtinyxml2-8d10763c.so.11.0.0 +0 -0
- pymomentum_cpu.libs/liburdfdom_model-7b26ae88.so.4.0 +0 -0
|
@@ -0,0 +1,143 @@
|
|
|
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) final;
|
|
55
|
+
|
|
56
|
+
double getGradient(
|
|
57
|
+
const ModelParametersT<T>& modelParameters,
|
|
58
|
+
const SkeletonStateT<T>& state,
|
|
59
|
+
Eigen::Ref<Eigen::VectorX<T>> gradient) final;
|
|
60
|
+
|
|
61
|
+
double getJacobian(
|
|
62
|
+
const ModelParametersT<T>& modelParameters,
|
|
63
|
+
const SkeletonStateT<T>& state,
|
|
64
|
+
Eigen::Ref<Eigen::MatrixX<T>> jacobian,
|
|
65
|
+
Eigen::Ref<Eigen::VectorX<T>> residual,
|
|
66
|
+
int& usedRows) final;
|
|
67
|
+
|
|
68
|
+
[[nodiscard]] size_t getJacobianSize() const final;
|
|
69
|
+
|
|
70
|
+
/// Add a vertex-to-vertex distance constraint
|
|
71
|
+
void addConstraint(int vertexIndex1, int vertexIndex2, T weight, T targetDistance);
|
|
72
|
+
|
|
73
|
+
/// Clear all constraints
|
|
74
|
+
void clearConstraints();
|
|
75
|
+
|
|
76
|
+
/// Get all constraints
|
|
77
|
+
[[nodiscard]] const std::vector<VertexVertexDistanceConstraintT<T>>& getConstraints() const {
|
|
78
|
+
return constraints_;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/// Get the number of constraints
|
|
82
|
+
[[nodiscard]] size_t numConstraints() const {
|
|
83
|
+
return constraints_.size();
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/// Get the character
|
|
87
|
+
[[nodiscard]] const Character& getCharacter() const {
|
|
88
|
+
return character_;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
private:
|
|
92
|
+
/// Calculate jacobian for a distance constraint
|
|
93
|
+
double calculateJacobian(
|
|
94
|
+
const ModelParametersT<T>& modelParameters,
|
|
95
|
+
const SkeletonStateT<T>& state,
|
|
96
|
+
const VertexVertexDistanceConstraintT<T>& constraint,
|
|
97
|
+
Eigen::Ref<Eigen::MatrixX<T>> jacobian,
|
|
98
|
+
T& residual) const;
|
|
99
|
+
|
|
100
|
+
/// Calculate gradient for a distance constraint
|
|
101
|
+
double calculateGradient(
|
|
102
|
+
const ModelParametersT<T>& modelParameters,
|
|
103
|
+
const SkeletonStateT<T>& state,
|
|
104
|
+
const VertexVertexDistanceConstraintT<T>& constraint,
|
|
105
|
+
Eigen::Ref<Eigen::VectorX<T>> gradient) const;
|
|
106
|
+
|
|
107
|
+
/// Calculate gradient contribution from a single vertex
|
|
108
|
+
void calculateVertexGradient(
|
|
109
|
+
const ModelParametersT<T>& modelParameters,
|
|
110
|
+
const SkeletonStateT<T>& state,
|
|
111
|
+
int vertexIndex,
|
|
112
|
+
const Eigen::Vector3<T>& gradientDirection,
|
|
113
|
+
Eigen::Ref<Eigen::VectorX<T>> gradient) const;
|
|
114
|
+
|
|
115
|
+
/// Calculate jacobian contribution from a single vertex
|
|
116
|
+
void calculateVertexJacobian(
|
|
117
|
+
const ModelParametersT<T>& modelParameters,
|
|
118
|
+
const SkeletonStateT<T>& state,
|
|
119
|
+
int vertexIndex,
|
|
120
|
+
const Eigen::Vector3<T>& jacobianDirection,
|
|
121
|
+
Eigen::Ref<Eigen::MatrixX<T>> jacobian) const;
|
|
122
|
+
|
|
123
|
+
/// Calculate world space position derivative for blend shape parameters
|
|
124
|
+
void calculateDWorldPos(
|
|
125
|
+
const SkeletonStateT<T>& state,
|
|
126
|
+
int vertexIndex,
|
|
127
|
+
const Eigen::Vector3<T>& d_restPos,
|
|
128
|
+
Eigen::Vector3<T>& d_worldPos) const;
|
|
129
|
+
|
|
130
|
+
/// Update the meshes with current parameters and state
|
|
131
|
+
void updateMeshes(const ModelParametersT<T>& modelParameters, const SkeletonStateT<T>& state);
|
|
132
|
+
|
|
133
|
+
const Character& character_;
|
|
134
|
+
|
|
135
|
+
std::vector<VertexVertexDistanceConstraintT<T>> constraints_;
|
|
136
|
+
|
|
137
|
+
/// Mesh used to store rest positions
|
|
138
|
+
std::unique_ptr<MeshT<T>> restMesh_;
|
|
139
|
+
/// Mesh used to store posed positions
|
|
140
|
+
std::unique_ptr<MeshT<T>> posedMesh_;
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
} // 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
|
|
@@ -0,0 +1,173 @@
|
|
|
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
|
+
// Allow DEFAULT_LOG_CHANNEL to be defined before including this file if you want to override the
|
|
13
|
+
// default channel name. To set your own channel name (the order matters):
|
|
14
|
+
// #define DEFAULT_LOG_CHANNEL "my_custom_channel_name"
|
|
15
|
+
// #include <momentum/common/logging.h>
|
|
16
|
+
#ifndef DEFAULT_LOG_CHANNEL
|
|
17
|
+
#include <momentum/common/log_channel.h>
|
|
18
|
+
#define DEFAULT_LOG_CHANNEL MOMENTUM_LOG_CHANNEL
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#include <logging/Log.h>
|
|
22
|
+
|
|
23
|
+
#define MT_LOGT(...) XR_LOGT(__VA_ARGS__)
|
|
24
|
+
#define MT_LOGD(...) XR_LOGD(__VA_ARGS__)
|
|
25
|
+
#define MT_LOGI(...) XR_LOGI(__VA_ARGS__)
|
|
26
|
+
#define MT_LOGW(...) XR_LOGW(__VA_ARGS__)
|
|
27
|
+
#define MT_LOGE(...) XR_LOGE(__VA_ARGS__)
|
|
28
|
+
|
|
29
|
+
#define MT_LOGT_IF(condition, ...) XR_LOGT_IF(condition, __VA_ARGS__)
|
|
30
|
+
#define MT_LOGD_IF(condition, ...) XR_LOGD_IF(condition, __VA_ARGS__)
|
|
31
|
+
#define MT_LOGI_IF(condition, ...) XR_LOGI_IF(condition, __VA_ARGS__)
|
|
32
|
+
#define MT_LOGW_IF(condition, ...) XR_LOGW_IF(condition, __VA_ARGS__)
|
|
33
|
+
#define MT_LOGE_IF(condition, ...) XR_LOGE_IF(condition, __VA_ARGS__)
|
|
34
|
+
|
|
35
|
+
#define MT_LOGT_ONCE(...) XR_LOGT_ONCE(__VA_ARGS__)
|
|
36
|
+
#define MT_LOGD_ONCE(...) XR_LOGD_ONCE(__VA_ARGS__)
|
|
37
|
+
#define MT_LOGI_ONCE(...) XR_LOGI_ONCE(__VA_ARGS__)
|
|
38
|
+
#define MT_LOGW_ONCE(...) XR_LOGW_ONCE(__VA_ARGS__)
|
|
39
|
+
#define MT_LOGE_ONCE(...) XR_LOGE_ONCE(__VA_ARGS__)
|
|
40
|
+
|
|
41
|
+
#define MT_LOGT_ONCE_IF(condition, ...) XR_LOGT_ONCE_IF(condition, __VA_ARGS__)
|
|
42
|
+
#define MT_LOGD_ONCE_IF(condition, ...) XR_LOGD_ONCE_IF(condition, __VA_ARGS__)
|
|
43
|
+
#define MT_LOGI_ONCE_IF(condition, ...) XR_LOGI_ONCE_IF(condition, __VA_ARGS__)
|
|
44
|
+
#define MT_LOGW_ONCE_IF(condition, ...) XR_LOGW_ONCE_IF(condition, __VA_ARGS__)
|
|
45
|
+
#define MT_LOGE_ONCE_IF(condition, ...) XR_LOGE_ONCE_IF(condition, __VA_ARGS__)
|
|
46
|
+
|
|
47
|
+
#elif defined(MOMENTUM_WITH_SPDLOG)
|
|
48
|
+
|
|
49
|
+
#include <spdlog/spdlog.h>
|
|
50
|
+
|
|
51
|
+
#include <atomic>
|
|
52
|
+
|
|
53
|
+
#define MT_LOGT(...) ::spdlog::trace(__VA_ARGS__)
|
|
54
|
+
#define MT_LOGD(...) ::spdlog::debug(__VA_ARGS__)
|
|
55
|
+
#define MT_LOGI(...) ::spdlog::info(__VA_ARGS__)
|
|
56
|
+
#define MT_LOGW(...) ::spdlog::warn(__VA_ARGS__)
|
|
57
|
+
#define MT_LOGE(...) ::spdlog::error(__VA_ARGS__)
|
|
58
|
+
|
|
59
|
+
#define MT_LOGT_IF(condition, ...) \
|
|
60
|
+
if (condition) { \
|
|
61
|
+
MT_LOGT(__VA_ARGS__); \
|
|
62
|
+
}
|
|
63
|
+
#define MT_LOGD_IF(condition, ...) \
|
|
64
|
+
if (condition) { \
|
|
65
|
+
MT_LOGD(__VA_ARGS__); \
|
|
66
|
+
}
|
|
67
|
+
#define MT_LOGI_IF(condition, ...) \
|
|
68
|
+
if (condition) { \
|
|
69
|
+
MT_LOGI(__VA_ARGS__); \
|
|
70
|
+
}
|
|
71
|
+
#define MT_LOGW_IF(condition, ...) \
|
|
72
|
+
if (condition) { \
|
|
73
|
+
MT_LOGW(__VA_ARGS__); \
|
|
74
|
+
}
|
|
75
|
+
#define MT_LOGE_IF(condition, ...) \
|
|
76
|
+
if (condition) { \
|
|
77
|
+
MT_LOGE(__VA_ARGS__); \
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// This function is designed to limit the number of times an error is logged.
|
|
81
|
+
// Please note that in a multi-threaded context, its behavior may not be guaranteed.
|
|
82
|
+
#define _MT_RUN_ONCE(runcode) \
|
|
83
|
+
{ \
|
|
84
|
+
static std::atomic<bool> codeRan(false); \
|
|
85
|
+
if (!codeRan) { \
|
|
86
|
+
bool expected = false; \
|
|
87
|
+
if (codeRan.compare_exchange_strong(expected, true)) { \
|
|
88
|
+
runcode; \
|
|
89
|
+
} \
|
|
90
|
+
} \
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
#define MT_LOGT_ONCE(...) _MT_RUN_ONCE(MT_LOGT(__VA_ARGS__))
|
|
94
|
+
#define MT_LOGD_ONCE(...) _MT_RUN_ONCE(MT_LOGD(__VA_ARGS__))
|
|
95
|
+
#define MT_LOGI_ONCE(...) _MT_RUN_ONCE(MT_LOGI(__VA_ARGS__))
|
|
96
|
+
#define MT_LOGW_ONCE(...) _MT_RUN_ONCE(MT_LOGW(__VA_ARGS__))
|
|
97
|
+
#define MT_LOGE_ONCE(...) _MT_RUN_ONCE(MT_LOGE(__VA_ARGS__))
|
|
98
|
+
|
|
99
|
+
#define MT_LOGT_ONCE_IF(condition, ...) \
|
|
100
|
+
if (condition) { \
|
|
101
|
+
MT_LOGT_ONCE(__VA_ARGS__); \
|
|
102
|
+
}
|
|
103
|
+
#define MT_LOGD_ONCE_IF(condition, ...) \
|
|
104
|
+
if (condition) { \
|
|
105
|
+
MT_LOGD_ONCE(__VA_ARGS__); \
|
|
106
|
+
}
|
|
107
|
+
#define MT_LOGI_ONCE_IF(condition, ...) \
|
|
108
|
+
if (condition) { \
|
|
109
|
+
MT_LOGI_ONCE(__VA_ARGS__); \
|
|
110
|
+
}
|
|
111
|
+
#define MT_LOGW_ONCE_IF(condition, ...) \
|
|
112
|
+
if (condition) { \
|
|
113
|
+
MT_LOGW_ONCE(__VA_ARGS__); \
|
|
114
|
+
}
|
|
115
|
+
#define MT_LOGE_ONCE_IF(condition, ...) \
|
|
116
|
+
if (condition) { \
|
|
117
|
+
MT_LOGE_ONCE(__VA_ARGS__); \
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
#else
|
|
121
|
+
|
|
122
|
+
#define MT_LOGT(...)
|
|
123
|
+
#define MT_LOGD(...)
|
|
124
|
+
#define MT_LOGI(...)
|
|
125
|
+
#define MT_LOGW(...)
|
|
126
|
+
#define MT_LOGE(...)
|
|
127
|
+
|
|
128
|
+
#define MT_LOGT_IF(condition, ...)
|
|
129
|
+
#define MT_LOGD_IF(condition, ...)
|
|
130
|
+
#define MT_LOGI_IF(condition, ...)
|
|
131
|
+
#define MT_LOGW_IF(condition, ...)
|
|
132
|
+
#define MT_LOGE_IF(condition, ...)
|
|
133
|
+
|
|
134
|
+
#define MT_LOGT_ONCE(...)
|
|
135
|
+
#define MT_LOGD_ONCE(...)
|
|
136
|
+
#define MT_LOGI_ONCE(...)
|
|
137
|
+
#define MT_LOGW_ONCE(...)
|
|
138
|
+
#define MT_LOGE_ONCE(...)
|
|
139
|
+
|
|
140
|
+
#define MT_LOGT_ONCE_IF(condition, ...)
|
|
141
|
+
#define MT_LOGD_ONCE_IF(condition, ...)
|
|
142
|
+
#define MT_LOGI_ONCE_IF(condition, ...)
|
|
143
|
+
#define MT_LOGW_ONCE_IF(condition, ...)
|
|
144
|
+
#define MT_LOGE_ONCE_IF(condition, ...)
|
|
145
|
+
|
|
146
|
+
#endif
|
|
147
|
+
|
|
148
|
+
#include <momentum/common/checks.h>
|
|
149
|
+
|
|
150
|
+
#include <map>
|
|
151
|
+
#include <string>
|
|
152
|
+
|
|
153
|
+
namespace momentum {
|
|
154
|
+
|
|
155
|
+
/// Logging levels in descending order of verbosity
|
|
156
|
+
enum class LogLevel {
|
|
157
|
+
Disabled = 0,
|
|
158
|
+
Error,
|
|
159
|
+
Warning,
|
|
160
|
+
Info,
|
|
161
|
+
Debug,
|
|
162
|
+
Trace,
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
[[nodiscard]] std::map<std::string, LogLevel> logLevelMap();
|
|
166
|
+
|
|
167
|
+
void setLogLevel(LogLevel level);
|
|
168
|
+
|
|
169
|
+
void setLogLevel(const std::string& levelStr);
|
|
170
|
+
|
|
171
|
+
[[nodiscard]] LogLevel getLogLevel();
|
|
172
|
+
|
|
173
|
+
} // namespace momentum
|
|
@@ -0,0 +1,17 @@
|
|
|
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
|
+
// The file to include in header files. Used as XR_LOGCI(MOMENTUM_LOG_CHANNEL, "message");
|
|
13
|
+
|
|
14
|
+
#include <logging/Log.h>
|
|
15
|
+
#define MOMENTUM_LOG_CHANNEL "MOMENTUM"
|
|
16
|
+
|
|
17
|
+
#endif
|