pymomentum-cpu 0.1.93.post0__cp312-cp312-macosx_14_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- include/axel/BoundingBox.h +59 -0
- include/axel/Bvh.h +708 -0
- include/axel/BvhBase.h +75 -0
- include/axel/BvhCommon.h +43 -0
- include/axel/BvhEmbree.h +87 -0
- include/axel/BvhFactory.h +34 -0
- include/axel/Checks.h +21 -0
- include/axel/DualContouring.h +79 -0
- include/axel/KdTree.h +208 -0
- include/axel/Log.h +22 -0
- include/axel/MeshToSdf.h +123 -0
- include/axel/Profile.h +64 -0
- include/axel/Ray.h +45 -0
- include/axel/SignedDistanceField.h +248 -0
- include/axel/SimdKdTree.h +515 -0
- include/axel/TriBvh.h +157 -0
- include/axel/TriBvhEmbree.h +57 -0
- include/axel/common/Constants.h +27 -0
- include/axel/common/Types.h +21 -0
- include/axel/common/VectorizationTypes.h +58 -0
- include/axel/math/BoundingBoxUtils.h +54 -0
- include/axel/math/ContinuousCollisionDetection.h +48 -0
- include/axel/math/CoplanarityCheck.h +30 -0
- include/axel/math/EdgeEdgeDistance.h +31 -0
- include/axel/math/MeshHoleFilling.h +117 -0
- include/axel/math/PointTriangleProjection.h +34 -0
- include/axel/math/PointTriangleProjectionDefinitions.h +209 -0
- include/axel/math/RayTriangleIntersection.h +36 -0
- include/momentum/character/blend_shape.h +97 -0
- include/momentum/character/blend_shape_base.h +86 -0
- include/momentum/character/blend_shape_skinning.h +96 -0
- include/momentum/character/character.h +272 -0
- include/momentum/character/character_state.h +108 -0
- include/momentum/character/character_utility.h +128 -0
- include/momentum/character/collision_geometry.h +80 -0
- include/momentum/character/collision_geometry_state.h +130 -0
- include/momentum/character/fwd.h +262 -0
- include/momentum/character/inverse_parameter_transform.h +58 -0
- include/momentum/character/joint.h +82 -0
- include/momentum/character/joint_state.h +241 -0
- include/momentum/character/linear_skinning.h +139 -0
- include/momentum/character/locator.h +94 -0
- include/momentum/character/locator_state.h +43 -0
- include/momentum/character/marker.h +48 -0
- include/momentum/character/mesh_state.h +71 -0
- include/momentum/character/parameter_limits.h +144 -0
- include/momentum/character/parameter_transform.h +207 -0
- include/momentum/character/pose_shape.h +65 -0
- include/momentum/character/skeleton.h +85 -0
- include/momentum/character/skeleton_state.h +227 -0
- include/momentum/character/skeleton_utility.h +38 -0
- include/momentum/character/skin_weights.h +67 -0
- include/momentum/character/skinned_locator.h +80 -0
- include/momentum/character/types.h +202 -0
- include/momentum/character_sequence_solver/fwd.h +200 -0
- include/momentum/character_sequence_solver/model_parameters_sequence_error_function.h +65 -0
- include/momentum/character_sequence_solver/multipose_solver.h +65 -0
- include/momentum/character_sequence_solver/multipose_solver_function.h +82 -0
- include/momentum/character_sequence_solver/sequence_error_function.h +104 -0
- include/momentum/character_sequence_solver/sequence_solver.h +155 -0
- include/momentum/character_sequence_solver/sequence_solver_function.h +158 -0
- include/momentum/character_sequence_solver/state_sequence_error_function.h +117 -0
- include/momentum/character_sequence_solver/vertex_sequence_error_function.h +123 -0
- include/momentum/character_solver/aim_error_function.h +112 -0
- include/momentum/character_solver/collision_error_function.h +92 -0
- include/momentum/character_solver/collision_error_function_stateless.h +75 -0
- include/momentum/character_solver/constraint_error_function-inl.h +324 -0
- include/momentum/character_solver/constraint_error_function.h +248 -0
- include/momentum/character_solver/distance_error_function.h +77 -0
- include/momentum/character_solver/error_function_utils.h +60 -0
- include/momentum/character_solver/fixed_axis_error_function.h +139 -0
- include/momentum/character_solver/fwd.h +943 -0
- include/momentum/character_solver/gauss_newton_solver_qr.h +64 -0
- include/momentum/character_solver/height_error_function.h +176 -0
- include/momentum/character_solver/joint_to_joint_distance_error_function.h +111 -0
- include/momentum/character_solver/limit_error_function.h +57 -0
- include/momentum/character_solver/model_parameters_error_function.h +64 -0
- include/momentum/character_solver/normal_error_function.h +73 -0
- include/momentum/character_solver/orientation_error_function.h +74 -0
- include/momentum/character_solver/plane_error_function.h +102 -0
- include/momentum/character_solver/point_triangle_vertex_error_function.h +141 -0
- include/momentum/character_solver/pose_prior_error_function.h +80 -0
- include/momentum/character_solver/position_error_function.h +75 -0
- include/momentum/character_solver/projection_error_function.h +93 -0
- include/momentum/character_solver/simd_collision_error_function.h +99 -0
- include/momentum/character_solver/simd_normal_error_function.h +157 -0
- include/momentum/character_solver/simd_plane_error_function.h +164 -0
- include/momentum/character_solver/simd_position_error_function.h +165 -0
- include/momentum/character_solver/skeleton_error_function.h +151 -0
- include/momentum/character_solver/skeleton_solver_function.h +94 -0
- include/momentum/character_solver/skinned_locator_error_function.h +166 -0
- include/momentum/character_solver/skinned_locator_triangle_error_function.h +146 -0
- include/momentum/character_solver/skinning_weight_iterator.h +80 -0
- include/momentum/character_solver/state_error_function.h +119 -0
- include/momentum/character_solver/transform_pose.h +80 -0
- include/momentum/character_solver/trust_region_qr.h +80 -0
- include/momentum/character_solver/vertex_error_function.h +155 -0
- include/momentum/character_solver/vertex_projection_error_function.h +117 -0
- include/momentum/character_solver/vertex_vertex_distance_error_function.h +147 -0
- include/momentum/common/aligned.h +155 -0
- include/momentum/common/checks.h +27 -0
- include/momentum/common/exception.h +70 -0
- include/momentum/common/filesystem.h +20 -0
- include/momentum/common/fwd.h +27 -0
- include/momentum/common/log.h +173 -0
- include/momentum/common/log_channel.h +17 -0
- include/momentum/common/memory.h +71 -0
- include/momentum/common/profile.h +79 -0
- include/momentum/common/progress_bar.h +37 -0
- include/momentum/common/string.h +52 -0
- include/momentum/diff_ik/ceres_utility.h +73 -0
- include/momentum/diff_ik/fully_differentiable_body_ik.h +58 -0
- include/momentum/diff_ik/fully_differentiable_distance_error_function.h +69 -0
- include/momentum/diff_ik/fully_differentiable_motion_error_function.h +46 -0
- include/momentum/diff_ik/fully_differentiable_orientation_error_function.h +114 -0
- include/momentum/diff_ik/fully_differentiable_pose_prior_error_function.h +76 -0
- include/momentum/diff_ik/fully_differentiable_position_error_function.h +138 -0
- include/momentum/diff_ik/fully_differentiable_projection_error_function.h +65 -0
- include/momentum/diff_ik/fully_differentiable_skeleton_error_function.h +160 -0
- include/momentum/diff_ik/fully_differentiable_state_error_function.h +54 -0
- include/momentum/diff_ik/fwd.h +385 -0
- include/momentum/diff_ik/union_error_function.h +67 -0
- include/momentum/gui/rerun/eigen_adapters.h +70 -0
- include/momentum/gui/rerun/logger.h +102 -0
- include/momentum/gui/rerun/logging_redirect.h +27 -0
- include/momentum/io/character_io.h +98 -0
- include/momentum/io/common/gsl_utils.h +50 -0
- include/momentum/io/common/stream_utils.h +65 -0
- include/momentum/io/fbx/fbx_io.h +135 -0
- include/momentum/io/fbx/fbx_memory_stream.h +70 -0
- include/momentum/io/fbx/openfbx_loader.h +62 -0
- include/momentum/io/fbx/polygon_data.h +60 -0
- include/momentum/io/file_save_options.h +107 -0
- include/momentum/io/gltf/gltf_builder.h +141 -0
- include/momentum/io/gltf/gltf_io.h +149 -0
- include/momentum/io/gltf/utils/accessor_utils.h +299 -0
- include/momentum/io/gltf/utils/coordinate_utils.h +60 -0
- include/momentum/io/gltf/utils/json_utils.h +102 -0
- include/momentum/io/legacy_json/legacy_json_io.h +70 -0
- include/momentum/io/marker/c3d_io.h +30 -0
- include/momentum/io/marker/conversions.h +57 -0
- include/momentum/io/marker/coordinate_system.h +30 -0
- include/momentum/io/marker/marker_io.h +56 -0
- include/momentum/io/marker/trc_io.h +27 -0
- include/momentum/io/motion/mmo_io.h +97 -0
- include/momentum/io/shape/blend_shape_io.h +82 -0
- include/momentum/io/shape/pose_shape_io.h +21 -0
- include/momentum/io/skeleton/locator_io.h +41 -0
- include/momentum/io/skeleton/mppca_io.h +26 -0
- include/momentum/io/skeleton/parameter_limits_io.h +38 -0
- include/momentum/io/skeleton/parameter_transform_io.h +80 -0
- include/momentum/io/skeleton/parameters_io.h +20 -0
- include/momentum/io/skeleton/utility.h +67 -0
- include/momentum/io/urdf/urdf_io.h +26 -0
- include/momentum/io/usd/usd_io.h +36 -0
- include/momentum/marker_tracking/app_utils.h +64 -0
- include/momentum/marker_tracking/marker_tracker.h +221 -0
- include/momentum/marker_tracking/process_markers.h +58 -0
- include/momentum/marker_tracking/tracker_utils.h +99 -0
- include/momentum/math/constants.h +82 -0
- include/momentum/math/covariance_matrix.h +84 -0
- include/momentum/math/fmt_eigen.h +23 -0
- include/momentum/math/fwd.h +132 -0
- include/momentum/math/generalized_loss.h +61 -0
- include/momentum/math/intersection.h +32 -0
- include/momentum/math/mesh.h +84 -0
- include/momentum/math/mppca.h +67 -0
- include/momentum/math/online_householder_qr.h +516 -0
- include/momentum/math/random-inl.h +404 -0
- include/momentum/math/random.h +310 -0
- include/momentum/math/simd_generalized_loss.h +40 -0
- include/momentum/math/transform.h +229 -0
- include/momentum/math/types.h +461 -0
- include/momentum/math/utility.h +324 -0
- include/momentum/rasterizer/camera.h +453 -0
- include/momentum/rasterizer/fwd.h +102 -0
- include/momentum/rasterizer/geometry.h +83 -0
- include/momentum/rasterizer/image.h +18 -0
- include/momentum/rasterizer/rasterizer.h +583 -0
- include/momentum/rasterizer/tensor.h +140 -0
- include/momentum/rasterizer/text_rasterizer.h +89 -0
- include/momentum/rasterizer/utility.h +268 -0
- include/momentum/simd/simd.h +221 -0
- include/momentum/solver/fwd.h +131 -0
- include/momentum/solver/gauss_newton_solver.h +136 -0
- include/momentum/solver/gradient_descent_solver.h +65 -0
- include/momentum/solver/solver.h +155 -0
- include/momentum/solver/solver_function.h +126 -0
- include/momentum/solver/subset_gauss_newton_solver.h +109 -0
- include/rerun/archetypes/annotation_context.hpp +157 -0
- include/rerun/archetypes/arrows2d.hpp +271 -0
- include/rerun/archetypes/arrows3d.hpp +257 -0
- include/rerun/archetypes/asset3d.hpp +262 -0
- include/rerun/archetypes/asset_video.hpp +275 -0
- include/rerun/archetypes/bar_chart.hpp +261 -0
- include/rerun/archetypes/boxes2d.hpp +293 -0
- include/rerun/archetypes/boxes3d.hpp +369 -0
- include/rerun/archetypes/capsules3d.hpp +333 -0
- include/rerun/archetypes/clear.hpp +180 -0
- include/rerun/archetypes/depth_image.hpp +425 -0
- include/rerun/archetypes/ellipsoids3d.hpp +384 -0
- include/rerun/archetypes/encoded_image.hpp +250 -0
- include/rerun/archetypes/geo_line_strings.hpp +166 -0
- include/rerun/archetypes/geo_points.hpp +177 -0
- include/rerun/archetypes/graph_edges.hpp +152 -0
- include/rerun/archetypes/graph_nodes.hpp +206 -0
- include/rerun/archetypes/image.hpp +434 -0
- include/rerun/archetypes/instance_poses3d.hpp +221 -0
- include/rerun/archetypes/line_strips2d.hpp +289 -0
- include/rerun/archetypes/line_strips3d.hpp +270 -0
- include/rerun/archetypes/mesh3d.hpp +387 -0
- include/rerun/archetypes/pinhole.hpp +385 -0
- include/rerun/archetypes/points2d.hpp +333 -0
- include/rerun/archetypes/points3d.hpp +369 -0
- include/rerun/archetypes/recording_properties.hpp +132 -0
- include/rerun/archetypes/scalar.hpp +170 -0
- include/rerun/archetypes/scalars.hpp +153 -0
- include/rerun/archetypes/segmentation_image.hpp +305 -0
- include/rerun/archetypes/series_line.hpp +274 -0
- include/rerun/archetypes/series_lines.hpp +271 -0
- include/rerun/archetypes/series_point.hpp +265 -0
- include/rerun/archetypes/series_points.hpp +251 -0
- include/rerun/archetypes/tensor.hpp +213 -0
- include/rerun/archetypes/text_document.hpp +200 -0
- include/rerun/archetypes/text_log.hpp +211 -0
- include/rerun/archetypes/transform3d.hpp +925 -0
- include/rerun/archetypes/video_frame_reference.hpp +295 -0
- include/rerun/archetypes/view_coordinates.hpp +393 -0
- include/rerun/archetypes.hpp +43 -0
- include/rerun/arrow_utils.hpp +32 -0
- include/rerun/as_components.hpp +90 -0
- include/rerun/blueprint/archetypes/background.hpp +113 -0
- include/rerun/blueprint/archetypes/container_blueprint.hpp +259 -0
- include/rerun/blueprint/archetypes/dataframe_query.hpp +178 -0
- include/rerun/blueprint/archetypes/entity_behavior.hpp +130 -0
- include/rerun/blueprint/archetypes/force_center.hpp +115 -0
- include/rerun/blueprint/archetypes/force_collision_radius.hpp +141 -0
- include/rerun/blueprint/archetypes/force_link.hpp +136 -0
- include/rerun/blueprint/archetypes/force_many_body.hpp +124 -0
- include/rerun/blueprint/archetypes/force_position.hpp +132 -0
- include/rerun/blueprint/archetypes/line_grid3d.hpp +178 -0
- include/rerun/blueprint/archetypes/map_background.hpp +104 -0
- include/rerun/blueprint/archetypes/map_zoom.hpp +103 -0
- include/rerun/blueprint/archetypes/near_clip_plane.hpp +109 -0
- include/rerun/blueprint/archetypes/panel_blueprint.hpp +95 -0
- include/rerun/blueprint/archetypes/plot_legend.hpp +118 -0
- include/rerun/blueprint/archetypes/scalar_axis.hpp +116 -0
- include/rerun/blueprint/archetypes/tensor_scalar_mapping.hpp +146 -0
- include/rerun/blueprint/archetypes/tensor_slice_selection.hpp +167 -0
- include/rerun/blueprint/archetypes/tensor_view_fit.hpp +95 -0
- include/rerun/blueprint/archetypes/view_blueprint.hpp +170 -0
- include/rerun/blueprint/archetypes/view_contents.hpp +142 -0
- include/rerun/blueprint/archetypes/viewport_blueprint.hpp +200 -0
- include/rerun/blueprint/archetypes/visible_time_ranges.hpp +116 -0
- include/rerun/blueprint/archetypes/visual_bounds2d.hpp +109 -0
- include/rerun/blueprint/archetypes/visualizer_overrides.hpp +113 -0
- include/rerun/blueprint/archetypes.hpp +29 -0
- include/rerun/blueprint/components/active_tab.hpp +82 -0
- include/rerun/blueprint/components/apply_latest_at.hpp +79 -0
- include/rerun/blueprint/components/auto_layout.hpp +77 -0
- include/rerun/blueprint/components/auto_views.hpp +77 -0
- include/rerun/blueprint/components/background_kind.hpp +66 -0
- include/rerun/blueprint/components/column_share.hpp +78 -0
- include/rerun/blueprint/components/component_column_selector.hpp +81 -0
- include/rerun/blueprint/components/container_kind.hpp +65 -0
- include/rerun/blueprint/components/corner2d.hpp +64 -0
- include/rerun/blueprint/components/enabled.hpp +77 -0
- include/rerun/blueprint/components/filter_by_range.hpp +74 -0
- include/rerun/blueprint/components/filter_is_not_null.hpp +77 -0
- include/rerun/blueprint/components/force_distance.hpp +82 -0
- include/rerun/blueprint/components/force_iterations.hpp +82 -0
- include/rerun/blueprint/components/force_strength.hpp +82 -0
- include/rerun/blueprint/components/grid_columns.hpp +78 -0
- include/rerun/blueprint/components/grid_spacing.hpp +78 -0
- include/rerun/blueprint/components/included_content.hpp +86 -0
- include/rerun/blueprint/components/lock_range_during_zoom.hpp +82 -0
- include/rerun/blueprint/components/map_provider.hpp +64 -0
- include/rerun/blueprint/components/near_clip_plane.hpp +82 -0
- include/rerun/blueprint/components/panel_state.hpp +61 -0
- include/rerun/blueprint/components/query_expression.hpp +89 -0
- include/rerun/blueprint/components/root_container.hpp +77 -0
- include/rerun/blueprint/components/row_share.hpp +78 -0
- include/rerun/blueprint/components/selected_columns.hpp +76 -0
- include/rerun/blueprint/components/tensor_dimension_index_slider.hpp +90 -0
- include/rerun/blueprint/components/timeline_name.hpp +76 -0
- include/rerun/blueprint/components/view_class.hpp +76 -0
- include/rerun/blueprint/components/view_fit.hpp +61 -0
- include/rerun/blueprint/components/view_maximized.hpp +79 -0
- include/rerun/blueprint/components/view_origin.hpp +81 -0
- include/rerun/blueprint/components/viewer_recommendation_hash.hpp +82 -0
- include/rerun/blueprint/components/visible_time_range.hpp +77 -0
- include/rerun/blueprint/components/visual_bounds2d.hpp +74 -0
- include/rerun/blueprint/components/visualizer_override.hpp +86 -0
- include/rerun/blueprint/components/zoom_level.hpp +78 -0
- include/rerun/blueprint/components.hpp +41 -0
- include/rerun/blueprint/datatypes/component_column_selector.hpp +61 -0
- include/rerun/blueprint/datatypes/filter_by_range.hpp +59 -0
- include/rerun/blueprint/datatypes/filter_is_not_null.hpp +61 -0
- include/rerun/blueprint/datatypes/selected_columns.hpp +62 -0
- include/rerun/blueprint/datatypes/tensor_dimension_index_slider.hpp +63 -0
- include/rerun/blueprint/datatypes.hpp +9 -0
- include/rerun/c/arrow_c_data_interface.h +111 -0
- include/rerun/c/compiler_utils.h +10 -0
- include/rerun/c/rerun.h +627 -0
- include/rerun/c/sdk_info.h +28 -0
- include/rerun/collection.hpp +496 -0
- include/rerun/collection_adapter.hpp +43 -0
- include/rerun/collection_adapter_builtins.hpp +138 -0
- include/rerun/compiler_utils.hpp +61 -0
- include/rerun/component_batch.hpp +163 -0
- include/rerun/component_column.hpp +111 -0
- include/rerun/component_descriptor.hpp +142 -0
- include/rerun/component_type.hpp +35 -0
- include/rerun/components/aggregation_policy.hpp +76 -0
- include/rerun/components/albedo_factor.hpp +74 -0
- include/rerun/components/annotation_context.hpp +102 -0
- include/rerun/components/axis_length.hpp +74 -0
- include/rerun/components/blob.hpp +73 -0
- include/rerun/components/class_id.hpp +71 -0
- include/rerun/components/clear_is_recursive.hpp +75 -0
- include/rerun/components/color.hpp +99 -0
- include/rerun/components/colormap.hpp +99 -0
- include/rerun/components/depth_meter.hpp +84 -0
- include/rerun/components/draw_order.hpp +79 -0
- include/rerun/components/entity_path.hpp +83 -0
- include/rerun/components/fill_mode.hpp +72 -0
- include/rerun/components/fill_ratio.hpp +79 -0
- include/rerun/components/gamma_correction.hpp +80 -0
- include/rerun/components/geo_line_string.hpp +63 -0
- include/rerun/components/graph_edge.hpp +75 -0
- include/rerun/components/graph_node.hpp +79 -0
- include/rerun/components/graph_type.hpp +57 -0
- include/rerun/components/half_size2d.hpp +91 -0
- include/rerun/components/half_size3d.hpp +95 -0
- include/rerun/components/image_buffer.hpp +86 -0
- include/rerun/components/image_format.hpp +84 -0
- include/rerun/components/image_plane_distance.hpp +77 -0
- include/rerun/components/interactive.hpp +76 -0
- include/rerun/components/keypoint_id.hpp +74 -0
- include/rerun/components/lat_lon.hpp +89 -0
- include/rerun/components/length.hpp +77 -0
- include/rerun/components/line_strip2d.hpp +73 -0
- include/rerun/components/line_strip3d.hpp +73 -0
- include/rerun/components/magnification_filter.hpp +63 -0
- include/rerun/components/marker_shape.hpp +82 -0
- include/rerun/components/marker_size.hpp +74 -0
- include/rerun/components/media_type.hpp +157 -0
- include/rerun/components/name.hpp +83 -0
- include/rerun/components/opacity.hpp +77 -0
- include/rerun/components/pinhole_projection.hpp +94 -0
- include/rerun/components/plane3d.hpp +75 -0
- include/rerun/components/pose_rotation_axis_angle.hpp +73 -0
- include/rerun/components/pose_rotation_quat.hpp +71 -0
- include/rerun/components/pose_scale3d.hpp +102 -0
- include/rerun/components/pose_transform_mat3x3.hpp +87 -0
- include/rerun/components/pose_translation3d.hpp +96 -0
- include/rerun/components/position2d.hpp +86 -0
- include/rerun/components/position3d.hpp +90 -0
- include/rerun/components/radius.hpp +98 -0
- include/rerun/components/range1d.hpp +75 -0
- include/rerun/components/resolution.hpp +88 -0
- include/rerun/components/rotation_axis_angle.hpp +72 -0
- include/rerun/components/rotation_quat.hpp +71 -0
- include/rerun/components/scalar.hpp +76 -0
- include/rerun/components/scale3d.hpp +102 -0
- include/rerun/components/series_visible.hpp +76 -0
- include/rerun/components/show_labels.hpp +79 -0
- include/rerun/components/stroke_width.hpp +74 -0
- include/rerun/components/tensor_data.hpp +94 -0
- include/rerun/components/tensor_dimension_index_selection.hpp +77 -0
- include/rerun/components/tensor_height_dimension.hpp +71 -0
- include/rerun/components/tensor_width_dimension.hpp +71 -0
- include/rerun/components/texcoord2d.hpp +101 -0
- include/rerun/components/text.hpp +83 -0
- include/rerun/components/text_log_level.hpp +110 -0
- include/rerun/components/timestamp.hpp +76 -0
- include/rerun/components/transform_mat3x3.hpp +92 -0
- include/rerun/components/transform_relation.hpp +66 -0
- include/rerun/components/translation3d.hpp +96 -0
- include/rerun/components/triangle_indices.hpp +85 -0
- include/rerun/components/value_range.hpp +78 -0
- include/rerun/components/vector2d.hpp +92 -0
- include/rerun/components/vector3d.hpp +96 -0
- include/rerun/components/video_timestamp.hpp +120 -0
- include/rerun/components/view_coordinates.hpp +346 -0
- include/rerun/components/visible.hpp +74 -0
- include/rerun/components.hpp +77 -0
- include/rerun/config.hpp +52 -0
- include/rerun/datatypes/angle.hpp +76 -0
- include/rerun/datatypes/annotation_info.hpp +76 -0
- include/rerun/datatypes/blob.hpp +67 -0
- include/rerun/datatypes/bool.hpp +57 -0
- include/rerun/datatypes/channel_datatype.hpp +87 -0
- include/rerun/datatypes/class_description.hpp +92 -0
- include/rerun/datatypes/class_description_map_elem.hpp +69 -0
- include/rerun/datatypes/class_id.hpp +62 -0
- include/rerun/datatypes/color_model.hpp +68 -0
- include/rerun/datatypes/dvec2d.hpp +76 -0
- include/rerun/datatypes/entity_path.hpp +60 -0
- include/rerun/datatypes/float32.hpp +62 -0
- include/rerun/datatypes/float64.hpp +62 -0
- include/rerun/datatypes/image_format.hpp +107 -0
- include/rerun/datatypes/keypoint_id.hpp +63 -0
- include/rerun/datatypes/keypoint_pair.hpp +65 -0
- include/rerun/datatypes/mat3x3.hpp +105 -0
- include/rerun/datatypes/mat4x4.hpp +119 -0
- include/rerun/datatypes/pixel_format.hpp +142 -0
- include/rerun/datatypes/plane3d.hpp +60 -0
- include/rerun/datatypes/quaternion.hpp +110 -0
- include/rerun/datatypes/range1d.hpp +59 -0
- include/rerun/datatypes/range2d.hpp +55 -0
- include/rerun/datatypes/rgba32.hpp +94 -0
- include/rerun/datatypes/rotation_axis_angle.hpp +67 -0
- include/rerun/datatypes/tensor_buffer.hpp +529 -0
- include/rerun/datatypes/tensor_data.hpp +100 -0
- include/rerun/datatypes/tensor_dimension_index_selection.hpp +58 -0
- include/rerun/datatypes/tensor_dimension_selection.hpp +56 -0
- include/rerun/datatypes/time_int.hpp +62 -0
- include/rerun/datatypes/time_range.hpp +55 -0
- include/rerun/datatypes/time_range_boundary.hpp +175 -0
- include/rerun/datatypes/uint16.hpp +62 -0
- include/rerun/datatypes/uint32.hpp +62 -0
- include/rerun/datatypes/uint64.hpp +62 -0
- include/rerun/datatypes/utf8.hpp +76 -0
- include/rerun/datatypes/utf8pair.hpp +62 -0
- include/rerun/datatypes/uuid.hpp +60 -0
- include/rerun/datatypes/uvec2d.hpp +76 -0
- include/rerun/datatypes/uvec3d.hpp +80 -0
- include/rerun/datatypes/uvec4d.hpp +59 -0
- include/rerun/datatypes/vec2d.hpp +76 -0
- include/rerun/datatypes/vec3d.hpp +80 -0
- include/rerun/datatypes/vec4d.hpp +84 -0
- include/rerun/datatypes/video_timestamp.hpp +67 -0
- include/rerun/datatypes/view_coordinates.hpp +87 -0
- include/rerun/datatypes/visible_time_range.hpp +57 -0
- include/rerun/datatypes.hpp +51 -0
- include/rerun/demo_utils.hpp +75 -0
- include/rerun/entity_path.hpp +20 -0
- include/rerun/error.hpp +180 -0
- include/rerun/half.hpp +10 -0
- include/rerun/image_utils.hpp +187 -0
- include/rerun/indicator_component.hpp +59 -0
- include/rerun/loggable.hpp +54 -0
- include/rerun/recording_stream.hpp +960 -0
- include/rerun/rerun_sdk_export.hpp +25 -0
- include/rerun/result.hpp +86 -0
- include/rerun/rotation3d.hpp +33 -0
- include/rerun/sdk_info.hpp +20 -0
- include/rerun/spawn.hpp +21 -0
- include/rerun/spawn_options.hpp +57 -0
- include/rerun/string_utils.hpp +16 -0
- include/rerun/third_party/cxxopts.hpp +2198 -0
- include/rerun/time_column.hpp +288 -0
- include/rerun/timeline.hpp +38 -0
- include/rerun/type_traits.hpp +40 -0
- include/rerun.hpp +86 -0
- lib/cmake/axel/axel-config.cmake +45 -0
- lib/cmake/axel/axelTargets-release.cmake +19 -0
- lib/cmake/axel/axelTargets.cmake +108 -0
- lib/cmake/momentum/FindFbxSdk.cmake +115 -0
- lib/cmake/momentum/Findre2.cmake +52 -0
- lib/cmake/momentum/momentum-config.cmake +67 -0
- lib/cmake/momentum/momentumTargets-release.cmake +259 -0
- lib/cmake/momentum/momentumTargets.cmake +385 -0
- lib/cmake/rerun_sdk/rerun_sdkConfig.cmake +70 -0
- lib/cmake/rerun_sdk/rerun_sdkConfigVersion.cmake +83 -0
- lib/cmake/rerun_sdk/rerun_sdkTargets-release.cmake +19 -0
- lib/cmake/rerun_sdk/rerun_sdkTargets.cmake +108 -0
- lib/libarrow.a +0 -0
- lib/libarrow_bundled_dependencies.a +0 -0
- lib/libaxel.a +0 -0
- lib/libmomentum_app_utils.a +0 -0
- lib/libmomentum_character.a +0 -0
- lib/libmomentum_character_sequence_solver.a +0 -0
- lib/libmomentum_character_solver.a +0 -0
- lib/libmomentum_common.a +0 -0
- lib/libmomentum_diff_ik.a +0 -0
- lib/libmomentum_io.a +0 -0
- lib/libmomentum_io_common.a +0 -0
- lib/libmomentum_io_fbx.a +0 -0
- lib/libmomentum_io_gltf.a +0 -0
- lib/libmomentum_io_legacy_json.a +0 -0
- lib/libmomentum_io_marker.a +0 -0
- lib/libmomentum_io_motion.a +0 -0
- lib/libmomentum_io_shape.a +0 -0
- lib/libmomentum_io_skeleton.a +0 -0
- lib/libmomentum_io_urdf.a +0 -0
- lib/libmomentum_marker_tracker.a +0 -0
- lib/libmomentum_math.a +0 -0
- lib/libmomentum_online_qr.a +0 -0
- lib/libmomentum_process_markers.a +0 -0
- lib/libmomentum_rerun.a +0 -0
- lib/libmomentum_simd_constraints.a +0 -0
- lib/libmomentum_simd_generalized_loss.a +0 -0
- lib/libmomentum_skeleton.a +0 -0
- lib/libmomentum_solver.a +0 -0
- lib/librerun_c__macos_arm64.a +0 -0
- lib/librerun_sdk.a +0 -0
- pymomentum/axel.cpython-312-darwin.so +0 -0
- pymomentum/backend/__init__.py +16 -0
- pymomentum/backend/skel_state_backend.py +631 -0
- pymomentum/backend/trs_backend.py +889 -0
- pymomentum/backend/utils.py +224 -0
- pymomentum/geometry.cpython-312-darwin.so +0 -0
- pymomentum/marker_tracking.cpython-312-darwin.so +0 -0
- pymomentum/quaternion.py +740 -0
- pymomentum/skel_state.py +514 -0
- pymomentum/solver.cpython-312-darwin.so +0 -0
- pymomentum/solver2.cpython-312-darwin.so +0 -0
- pymomentum/torch/character.py +868 -0
- pymomentum/torch/parameter_limits.py +494 -0
- pymomentum/torch/utility.py +20 -0
- pymomentum/trs.py +535 -0
- pymomentum_cpu-0.1.93.post0.dist-info/METADATA +126 -0
- pymomentum_cpu-0.1.93.post0.dist-info/RECORD +517 -0
- pymomentum_cpu-0.1.93.post0.dist-info/WHEEL +5 -0
- pymomentum_cpu-0.1.93.post0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,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
|
+
#include <rerun.hpp>
|
|
11
|
+
|
|
12
|
+
#include <string>
|
|
13
|
+
|
|
14
|
+
namespace momentum {
|
|
15
|
+
|
|
16
|
+
/// Redirects logs from the XR_LOG framework to the Rerun logger.
|
|
17
|
+
///
|
|
18
|
+
/// This function registers a custom log sink for the XR_LOG framework, redirecting its log messages
|
|
19
|
+
/// to the Rerun logger. The redirection is only performed once, and subsequent calls to this
|
|
20
|
+
/// function have no effect.
|
|
21
|
+
///
|
|
22
|
+
/// @param[in] rec The recording stream to which to write the logs. You should make sure the
|
|
23
|
+
/// lifetime of this is longer than the loggings from momentum libraries.
|
|
24
|
+
/// @return Returns true if the redirection is successful or has already been done.
|
|
25
|
+
bool redirectLogsToRerun(const rerun::RecordingStream& rec);
|
|
26
|
+
|
|
27
|
+
} // namespace momentum
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/character/fwd.h>
|
|
11
|
+
#include <momentum/character/marker.h>
|
|
12
|
+
#include <momentum/common/filesystem.h>
|
|
13
|
+
#include <momentum/io/file_save_options.h>
|
|
14
|
+
#include <momentum/math/fwd.h>
|
|
15
|
+
#include <momentum/math/types.h>
|
|
16
|
+
|
|
17
|
+
#include <string>
|
|
18
|
+
#include <vector>
|
|
19
|
+
|
|
20
|
+
namespace momentum {
|
|
21
|
+
|
|
22
|
+
/// Represents the supported character formats.
|
|
23
|
+
enum class CharacterFormat : uint8_t {
|
|
24
|
+
Fbx, ///< FBX file format.
|
|
25
|
+
Gltf, ///< glTF file format.
|
|
26
|
+
Usd, ///< USD file format.
|
|
27
|
+
Unknown ///< Unknown or unsupported file format.
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/// High level function to load a character of any type, with a local path.
|
|
31
|
+
///
|
|
32
|
+
/// @param[in] characterPath The path to the character file.
|
|
33
|
+
/// @param[in] parametersPath The optional path to the file containing additional parameters for the
|
|
34
|
+
/// character.
|
|
35
|
+
/// @param[in] locatorsPath The optional path to the file containing additional locators for the
|
|
36
|
+
/// character.
|
|
37
|
+
/// @return The loaded Character object.
|
|
38
|
+
///
|
|
39
|
+
/// Currently, only supports .glb and .fbx. If you want to parse from a non-local path, you may need
|
|
40
|
+
/// to parse it using your favorite resource retriever into a buffer and use the buffer version of
|
|
41
|
+
/// this function.
|
|
42
|
+
[[nodiscard]] Character loadFullCharacter(
|
|
43
|
+
const std::string& characterPath,
|
|
44
|
+
const std::string& parametersPath = std::string(),
|
|
45
|
+
const std::string& locatorsPath = std::string());
|
|
46
|
+
|
|
47
|
+
/// Buffer version of loadFullCharacter function, supports .glb and .fbx file formats.
|
|
48
|
+
///
|
|
49
|
+
/// @param[in] format The character file format.
|
|
50
|
+
/// @param[in] characterBuffer The buffer containing the character data.
|
|
51
|
+
/// @param[in] paramBuffer The optional buffer containing additional parameters for the character.
|
|
52
|
+
/// @param[in] locBuffer The optional buffer containing additional locators for the character.
|
|
53
|
+
/// @return The loaded Character object.
|
|
54
|
+
[[nodiscard]] Character loadFullCharacterFromBuffer(
|
|
55
|
+
CharacterFormat format,
|
|
56
|
+
std::span<const std::byte> characterBuffer,
|
|
57
|
+
std::span<const std::byte> paramBuffer = std::span<const std::byte>(),
|
|
58
|
+
std::span<const std::byte> locBuffer = std::span<const std::byte>());
|
|
59
|
+
|
|
60
|
+
/// High level function to save a character with motion and markers to any supported format.
|
|
61
|
+
///
|
|
62
|
+
/// The format is determined by the file extension (.fbx, .glb, .gltf).
|
|
63
|
+
/// This is a unified interface that automatically selects between FBX and GLTF based on extension.
|
|
64
|
+
/// @param[in] filename The path where the character file will be saved.
|
|
65
|
+
/// @param[in] character The Character object to save.
|
|
66
|
+
/// @param[in] fps Frame rate for the animation (default: 120.0f).
|
|
67
|
+
/// @param[in] motion The motion represented in model parameters (numModelParams, numFrames).
|
|
68
|
+
/// @param[in] markerSequence Optional marker sequence data to save with the character.
|
|
69
|
+
/// @param[in] options Optional file save options for controlling output (default:
|
|
70
|
+
/// FileSaveOptions{}).
|
|
71
|
+
void saveCharacter(
|
|
72
|
+
const filesystem::path& filename,
|
|
73
|
+
const Character& character,
|
|
74
|
+
float fps = 120.f,
|
|
75
|
+
const MatrixXf& motion = MatrixXf(),
|
|
76
|
+
std::span<const std::vector<Marker>> markerSequence = {},
|
|
77
|
+
const FileSaveOptions& options = FileSaveOptions());
|
|
78
|
+
|
|
79
|
+
/// High level function to save a character with motion in skeleton states and markers to any
|
|
80
|
+
/// supported format.
|
|
81
|
+
///
|
|
82
|
+
/// The format is determined by the file extension (.fbx, .glb, .gltf).
|
|
83
|
+
/// This is a unified interface that automatically selects between FBX and GLTF based on extension.
|
|
84
|
+
/// @param[in] filename The path where the character file will be saved.
|
|
85
|
+
/// @param[in] character The Character object to save.
|
|
86
|
+
/// @param[in] fps Frame rate for the animation.
|
|
87
|
+
/// @param[in] skeletonStates The motion represented in skeleton states (ie. JointStates).
|
|
88
|
+
/// @param[in] markerSequence Optional marker sequence data to save with the character.
|
|
89
|
+
/// @param[in] options Optional file save options for controlling output (default:
|
|
90
|
+
/// FileSaveOptions{}).
|
|
91
|
+
void saveCharacter(
|
|
92
|
+
const filesystem::path& filename,
|
|
93
|
+
const Character& character,
|
|
94
|
+
float fps,
|
|
95
|
+
std::span<const SkeletonState> skeletonStates,
|
|
96
|
+
std::span<const std::vector<Marker>> markerSequence = {},
|
|
97
|
+
const FileSaveOptions& options = FileSaveOptions());
|
|
98
|
+
} // namespace momentum
|
|
@@ -0,0 +1,50 @@
|
|
|
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 <gsl/gsl>
|
|
11
|
+
|
|
12
|
+
namespace momentum {
|
|
13
|
+
|
|
14
|
+
/// Casts a span of bytes to a span of a different type
|
|
15
|
+
///
|
|
16
|
+
/// This function takes a span of bytes and returns a span of a different type, by reinterpreting
|
|
17
|
+
/// the bytes as the new type. This function is useful when working with serialized data or when
|
|
18
|
+
/// dealing with raw memory. The function assumes that the size of the new type is an exact multiple
|
|
19
|
+
/// of the size of the original span.
|
|
20
|
+
///
|
|
21
|
+
/// @tparam T The type to cast the span to
|
|
22
|
+
/// @param bs The original span of bytes to cast
|
|
23
|
+
///
|
|
24
|
+
/// @return A span of the new type, with the same number of elements as the original span
|
|
25
|
+
template <typename T>
|
|
26
|
+
[[nodiscard]] std::span<T> cast_span(std::span<std::byte> bs) {
|
|
27
|
+
auto ptr = reinterpret_cast<T*>(bs.data());
|
|
28
|
+
auto tsize = gsl::narrow<decltype(bs)::size_type>(sizeof(T));
|
|
29
|
+
return {ptr, bs.size_bytes() / tsize};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/// Casts a span of const bytes to a span of a different type
|
|
33
|
+
///
|
|
34
|
+
/// This function takes a span of const bytes and returns a span of a different type, by
|
|
35
|
+
/// reinterpreting the bytes as the new type. This function is useful when working with serialized
|
|
36
|
+
/// data or when dealing with raw memory. The function assumes that the size of the new type is an
|
|
37
|
+
/// exact multiple of the size of the original span.
|
|
38
|
+
///
|
|
39
|
+
/// @tparam T The type to cast the span to
|
|
40
|
+
/// @param bs The original span of const bytes to cast
|
|
41
|
+
///
|
|
42
|
+
/// @return A span of the new type, with the same number of elements as the original span
|
|
43
|
+
template <typename T>
|
|
44
|
+
[[nodiscard]] std::span<const T> cast_span(std::span<const std::byte> bs) {
|
|
45
|
+
auto ptr = reinterpret_cast<const T*>(bs.data());
|
|
46
|
+
auto tsize = gsl::narrow<decltype(bs)::size_type>(sizeof(T));
|
|
47
|
+
return {ptr, bs.size_bytes() / tsize};
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
} // namespace momentum
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <gsl/gsl>
|
|
11
|
+
|
|
12
|
+
#include <istream>
|
|
13
|
+
#include <streambuf>
|
|
14
|
+
#include <string>
|
|
15
|
+
|
|
16
|
+
namespace momentum {
|
|
17
|
+
|
|
18
|
+
/// Stream buffer based on a span.
|
|
19
|
+
/// Used to avoid copying the span when creating a std::istream:
|
|
20
|
+
/// spanstreambuf sbuf(str);
|
|
21
|
+
/// std::istream inputStream(&sbuf);
|
|
22
|
+
struct spanstreambuf : std::streambuf {
|
|
23
|
+
/// Construct a spanstreambuf with an optional buffer.
|
|
24
|
+
///
|
|
25
|
+
/// @param buffer A std::span of const std::byte (default: empty span).
|
|
26
|
+
spanstreambuf(std::span<const std::byte> buffer = {});
|
|
27
|
+
|
|
28
|
+
/// Destructor.
|
|
29
|
+
virtual ~spanstreambuf() override;
|
|
30
|
+
|
|
31
|
+
protected:
|
|
32
|
+
/// Write a sequence of characters to the output buffer.
|
|
33
|
+
///
|
|
34
|
+
/// @param s A pointer to the character sequence to be written.
|
|
35
|
+
/// @param n The number of characters to write.
|
|
36
|
+
/// @return The number of characters successfully written.
|
|
37
|
+
std::streamsize xsputn(const char_type* s, std::streamsize n) override;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/// istream that takes a span of const bytes as input.
|
|
41
|
+
struct ispanstream : std::istream {
|
|
42
|
+
/// Construct an ispanstream with a buffer.
|
|
43
|
+
///
|
|
44
|
+
/// @param buffer A std::span of const std::byte.
|
|
45
|
+
explicit ispanstream(std::span<const std::byte> buffer);
|
|
46
|
+
|
|
47
|
+
/// Destructor.
|
|
48
|
+
virtual ~ispanstream();
|
|
49
|
+
|
|
50
|
+
private:
|
|
51
|
+
/// Internal spanstreambuf instance.
|
|
52
|
+
spanstreambuf sbuf_;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
/// Reads a line from the input stream, handling line endings for different platforms.
|
|
56
|
+
///
|
|
57
|
+
/// This function reads a line from the given input stream and stores it in the 'line' parameter.
|
|
58
|
+
/// It properly handles line endings for different platforms (e.g., LF for Unix, CRLF for Windows).
|
|
59
|
+
///
|
|
60
|
+
/// @param[in,out] is Reference to the input stream from which the line should be read.
|
|
61
|
+
/// @param[in,out] line Reference to the string variable where the line will be stored.
|
|
62
|
+
/// @return Reference to the input stream after reading the line.
|
|
63
|
+
std::istream& GetLineCrossPlatform(std::istream& is, std::string& line);
|
|
64
|
+
|
|
65
|
+
} // namespace momentum
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/character/fwd.h>
|
|
11
|
+
#include <momentum/character/marker.h>
|
|
12
|
+
#include <momentum/common/filesystem.h>
|
|
13
|
+
#include <momentum/io/file_save_options.h>
|
|
14
|
+
#include <momentum/math/types.h>
|
|
15
|
+
|
|
16
|
+
#include <span>
|
|
17
|
+
|
|
18
|
+
#include <string_view>
|
|
19
|
+
|
|
20
|
+
namespace momentum {
|
|
21
|
+
|
|
22
|
+
// KeepLocators Specifies whether Nulls in the transform hierarchy should be turned into Locators.
|
|
23
|
+
enum class KeepLocators { No, Yes };
|
|
24
|
+
|
|
25
|
+
// LoadBlendShapes Specifies whether blendshapes should be loaded or not
|
|
26
|
+
enum class LoadBlendShapes { No, Yes };
|
|
27
|
+
|
|
28
|
+
// Using keepLocators means the Nulls in the transform hierarchy will be turned into Locators.
|
|
29
|
+
// This is different from historical momentum behavior so it's off by default.
|
|
30
|
+
// Permissive mode allows loading mesh-only characters (without skin weights).
|
|
31
|
+
Character loadFbxCharacter(
|
|
32
|
+
const filesystem::path& inputPath,
|
|
33
|
+
KeepLocators keepLocators = KeepLocators::No,
|
|
34
|
+
Permissive permissive = Permissive::No,
|
|
35
|
+
LoadBlendShapes loadBlendShapes = LoadBlendShapes::No,
|
|
36
|
+
bool stripNamespaces = true);
|
|
37
|
+
|
|
38
|
+
// Using keepLocators means the Nulls in the transform hierarchy will be turned into Locators.
|
|
39
|
+
// This is different from historical momentum behavior so it's off by default.
|
|
40
|
+
// Permissive mode allows loading mesh-only characters (without skin weights).
|
|
41
|
+
Character loadFbxCharacter(
|
|
42
|
+
std::span<const std::byte> inputSpan,
|
|
43
|
+
KeepLocators keepLocators = KeepLocators::No,
|
|
44
|
+
Permissive permissive = Permissive::No,
|
|
45
|
+
LoadBlendShapes loadBlendShapes = LoadBlendShapes::No,
|
|
46
|
+
bool stripNamespaces = true);
|
|
47
|
+
|
|
48
|
+
// Permissive mode allows loading mesh-only characters (without skin weights).
|
|
49
|
+
std::tuple<Character, std::vector<MatrixXf>, float> loadFbxCharacterWithMotion(
|
|
50
|
+
const filesystem::path& inputPath,
|
|
51
|
+
KeepLocators keepLocators = KeepLocators::No,
|
|
52
|
+
Permissive permissive = Permissive::No,
|
|
53
|
+
LoadBlendShapes loadBlendShapes = LoadBlendShapes::No,
|
|
54
|
+
bool stripNamespaces = true);
|
|
55
|
+
|
|
56
|
+
// Permissive mode allows loading mesh-only characters (without skin weights).
|
|
57
|
+
std::tuple<Character, std::vector<MatrixXf>, float> loadFbxCharacterWithMotion(
|
|
58
|
+
std::span<const std::byte> inputSpan,
|
|
59
|
+
KeepLocators keepLocatorss = KeepLocators::No,
|
|
60
|
+
Permissive permissive = Permissive::No,
|
|
61
|
+
LoadBlendShapes loadBlendShape = LoadBlendShapes::No,
|
|
62
|
+
bool stripNamespaces = true);
|
|
63
|
+
|
|
64
|
+
/// Save a character with animation to an FBX file.
|
|
65
|
+
/// @param filename Path to the output FBX file
|
|
66
|
+
/// @param character The character to save
|
|
67
|
+
/// @param poses Model parameters for each frame (empty for bind pose only)
|
|
68
|
+
/// @param identity Identity pose parameters (empty to use bind pose)
|
|
69
|
+
/// @param framerate Animation framerate in frames per second
|
|
70
|
+
/// @param markerSequence Optional marker sequence data to save with the character
|
|
71
|
+
/// @param options Optional file save options for controlling output (default: FileSaveOptions{})
|
|
72
|
+
void saveFbx(
|
|
73
|
+
const filesystem::path& filename,
|
|
74
|
+
const Character& character,
|
|
75
|
+
const MatrixXf& poses = MatrixXf(),
|
|
76
|
+
const VectorXf& identity = VectorXf(),
|
|
77
|
+
double framerate = 120.0,
|
|
78
|
+
std::span<const std::vector<Marker>> markerSequence = {},
|
|
79
|
+
const FileSaveOptions& options = FileSaveOptions());
|
|
80
|
+
|
|
81
|
+
/// Save a character with animation using joint parameters directly.
|
|
82
|
+
/// @param filename Path to the output FBX file
|
|
83
|
+
/// @param character The character to save
|
|
84
|
+
/// @param jointParams Joint parameters for each frame (empty for bind pose only)
|
|
85
|
+
/// @param framerate Animation framerate in frames per second
|
|
86
|
+
/// @param markerSequence Optional marker sequence data to save with the character
|
|
87
|
+
/// @param options Optional file save options for controlling output (default: FileSaveOptions{})
|
|
88
|
+
void saveFbxWithJointParams(
|
|
89
|
+
const filesystem::path& filename,
|
|
90
|
+
const Character& character,
|
|
91
|
+
const MatrixXf& jointParams = MatrixXf(),
|
|
92
|
+
double framerate = 120.0,
|
|
93
|
+
std::span<const std::vector<Marker>> markerSequence = {},
|
|
94
|
+
const FileSaveOptions& options = FileSaveOptions());
|
|
95
|
+
|
|
96
|
+
/// Save a character with animation using skeleton states directly.
|
|
97
|
+
/// @param filename Path to the output FBX file
|
|
98
|
+
/// @param character The character to save
|
|
99
|
+
/// @param skeletonStates SkeletonState for each frame (empty for bind pose only)
|
|
100
|
+
/// @param framerate Animation framerate in frames per second
|
|
101
|
+
/// @param markerSequence Optional marker sequence data to save with the character
|
|
102
|
+
/// @param options Optional file save options for controlling output (default: FileSaveOptions{})
|
|
103
|
+
void saveFbxWithSkeletonStates(
|
|
104
|
+
const filesystem::path& filename,
|
|
105
|
+
const Character& character,
|
|
106
|
+
std::span<const SkeletonState> skeletonStates,
|
|
107
|
+
double framerate = 120.0,
|
|
108
|
+
std::span<const std::vector<Marker>> markerSequence = {},
|
|
109
|
+
const FileSaveOptions& options = FileSaveOptions());
|
|
110
|
+
|
|
111
|
+
/// Save a character model (skeleton and mesh) without animation.
|
|
112
|
+
/// @param filename Path to the output FBX file
|
|
113
|
+
/// @param character The character to save
|
|
114
|
+
/// @param options Optional file save options for controlling output (default: FileSaveOptions{})
|
|
115
|
+
void saveFbxModel(
|
|
116
|
+
const filesystem::path& filename,
|
|
117
|
+
const Character& character,
|
|
118
|
+
const FileSaveOptions& options = FileSaveOptions());
|
|
119
|
+
|
|
120
|
+
/// Loads a MarkerSequence from an FBX file.
|
|
121
|
+
///
|
|
122
|
+
/// This function reads motion capture marker data from an FBX file and returns
|
|
123
|
+
/// it as a MarkerSequence. The markers must be stored in the FBX scene hierarchy
|
|
124
|
+
/// under a "Markers" root node, and each marker node must have the custom property
|
|
125
|
+
/// "Momentum_Marker" to be recognized. The Markers root node must have the custom
|
|
126
|
+
/// property "Momentum_Markers_Root" to be identified.
|
|
127
|
+
///
|
|
128
|
+
/// @param[in] filename Path to the FBX file containing marker data.
|
|
129
|
+
/// @param stripNamespaces Removes namespace from joints when true. True by default
|
|
130
|
+
/// @return A MarkerSequence object containing the marker animation data, including
|
|
131
|
+
/// marker positions per frame and fps. Returns an empty sequence if no
|
|
132
|
+
/// markers or animations are found.
|
|
133
|
+
MarkerSequence loadFbxMarkerSequence(const filesystem::path& filename, bool stripNamespaces = true);
|
|
134
|
+
|
|
135
|
+
} // namespace momentum
|
|
@@ -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
|
+
#ifdef MOMENTUM_WITH_FBX_SDK
|
|
11
|
+
|
|
12
|
+
#include <fbxsdk.h>
|
|
13
|
+
#include <fbxsdk/core/fbxstream.h>
|
|
14
|
+
#include <span>
|
|
15
|
+
|
|
16
|
+
#include <string_view>
|
|
17
|
+
|
|
18
|
+
#define FBX_VERSION_GE(major, minor, patch) \
|
|
19
|
+
((FBXSDK_VERSION_MAJOR > (major)) || \
|
|
20
|
+
(FBXSDK_VERSION_MAJOR == (major) && FBXSDK_VERSION_MINOR > (minor)) || \
|
|
21
|
+
(FBXSDK_VERSION_MAJOR == (major) && FBXSDK_VERSION_MINOR == (minor) && \
|
|
22
|
+
FBXSDK_VERSION_POINT >= (patch)))
|
|
23
|
+
|
|
24
|
+
namespace momentum {
|
|
25
|
+
|
|
26
|
+
// Simplest FbxStream to read file from a string_view memory buffer
|
|
27
|
+
class FbxMemoryStream : public FbxStream {
|
|
28
|
+
public:
|
|
29
|
+
FbxMemoryStream(std::span<const std::byte> buffer, int pReaderId);
|
|
30
|
+
~FbxMemoryStream() override;
|
|
31
|
+
EState GetState() override;
|
|
32
|
+
bool Open(void* pStreamData) override;
|
|
33
|
+
bool Close() override;
|
|
34
|
+
bool Flush() override;
|
|
35
|
+
#if FBX_VERSION_GE(2020, 3, 2)
|
|
36
|
+
size_t Write(const void* buffer, FbxUInt64 count) override;
|
|
37
|
+
size_t Read(void* buffer, FbxUInt64 count) const override;
|
|
38
|
+
#else
|
|
39
|
+
int Write(const void* buffer, int count) override;
|
|
40
|
+
int Read(void* buffer, int count) const override;
|
|
41
|
+
#endif
|
|
42
|
+
int GetReaderID() const override;
|
|
43
|
+
int GetWriterID() const override;
|
|
44
|
+
void Seek(const FbxInt64& pOffset, const FbxFile::ESeekPos& pSeekPos) override;
|
|
45
|
+
#if FBX_VERSION_GE(2020, 3, 2)
|
|
46
|
+
FbxInt64 GetPosition() const override;
|
|
47
|
+
void SetPosition(FbxInt64 pPosition) override;
|
|
48
|
+
#else
|
|
49
|
+
long GetPosition() const override;
|
|
50
|
+
void SetPosition(long pPosition) override;
|
|
51
|
+
#endif
|
|
52
|
+
int GetError() const override;
|
|
53
|
+
void ClearError() override;
|
|
54
|
+
|
|
55
|
+
private:
|
|
56
|
+
std::span<const std::byte> buffer_;
|
|
57
|
+
long length_;
|
|
58
|
+
#if FBX_VERSION_GE(2020, 3, 2)
|
|
59
|
+
mutable FbxInt64 position_{0};
|
|
60
|
+
#else
|
|
61
|
+
mutable long position_;
|
|
62
|
+
#endif
|
|
63
|
+
EState state_;
|
|
64
|
+
int readerId_;
|
|
65
|
+
mutable int errorCode_;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
} // namespace momentum
|
|
69
|
+
|
|
70
|
+
#endif // MOMENTUM_WITH_FBX_SDK
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/character/fwd.h>
|
|
11
|
+
#include <momentum/character/marker.h>
|
|
12
|
+
#include <momentum/common/filesystem.h>
|
|
13
|
+
#include <momentum/io/fbx/fbx_io.h>
|
|
14
|
+
#include <momentum/math/types.h>
|
|
15
|
+
|
|
16
|
+
#include <span>
|
|
17
|
+
|
|
18
|
+
namespace momentum {
|
|
19
|
+
|
|
20
|
+
// Custom property names for identifying Momentum-specific FBX nodes
|
|
21
|
+
constexpr const char* kMomentumMarkersRootProperty = "Momentum_Markers_Root";
|
|
22
|
+
constexpr const char* kMomentumMarkerProperty = "Momentum_Marker";
|
|
23
|
+
|
|
24
|
+
// Using keepLocators means the Nulls in the transform hierarchy will be turned into Locators.
|
|
25
|
+
// This is different from historical momentum behavior so it's off by default.
|
|
26
|
+
// Permissive mode allows loading mesh-only characters (without skin weights).
|
|
27
|
+
Character loadOpenFbxCharacter(
|
|
28
|
+
const filesystem::path& inputPath,
|
|
29
|
+
KeepLocators keepLocators = KeepLocators::No,
|
|
30
|
+
Permissive permissive = Permissive::No,
|
|
31
|
+
LoadBlendShapes loadBlendShapes = LoadBlendShapes::No,
|
|
32
|
+
bool stripNamespaces = true);
|
|
33
|
+
|
|
34
|
+
// Permissive mode allows loading mesh-only characters (without skin weights).
|
|
35
|
+
Character loadOpenFbxCharacter(
|
|
36
|
+
std::span<const std::byte> inputData,
|
|
37
|
+
KeepLocators keepLocators = KeepLocators::No,
|
|
38
|
+
Permissive permissive = Permissive::No,
|
|
39
|
+
LoadBlendShapes loadBlendShapes = LoadBlendShapes::No,
|
|
40
|
+
bool stripNamespaces = true);
|
|
41
|
+
|
|
42
|
+
// Permissive mode allows loading mesh-only characters (without skin weights).
|
|
43
|
+
std::tuple<Character, std::vector<MatrixXf>, float> loadOpenFbxCharacterWithMotion(
|
|
44
|
+
const filesystem::path& inputPath,
|
|
45
|
+
KeepLocators keepLocators = KeepLocators::No,
|
|
46
|
+
Permissive permissive = Permissive::No,
|
|
47
|
+
LoadBlendShapes loadBlendShapes = LoadBlendShapes::No,
|
|
48
|
+
bool stripNamespaces = true);
|
|
49
|
+
|
|
50
|
+
// Permissive mode allows loading mesh-only characters (without skin weights).
|
|
51
|
+
std::tuple<Character, std::vector<MatrixXf>, float> loadOpenFbxCharacterWithMotion(
|
|
52
|
+
std::span<const std::byte> inputData,
|
|
53
|
+
KeepLocators keepLocators = KeepLocators::No,
|
|
54
|
+
Permissive permissive = Permissive::No,
|
|
55
|
+
LoadBlendShapes loadBlendShapes = LoadBlendShapes::No,
|
|
56
|
+
bool stripNamespaces = true);
|
|
57
|
+
|
|
58
|
+
MarkerSequence loadOpenFbxMarkerSequence(
|
|
59
|
+
const filesystem::path& filename,
|
|
60
|
+
bool stripNamespaces = true);
|
|
61
|
+
|
|
62
|
+
} // namespace momentum
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/math/types.h>
|
|
11
|
+
|
|
12
|
+
#include <span>
|
|
13
|
+
|
|
14
|
+
#include <string>
|
|
15
|
+
#include <vector>
|
|
16
|
+
|
|
17
|
+
namespace momentum {
|
|
18
|
+
|
|
19
|
+
// Structure for holding arbitrary polygon data. We will read the data as-is from the
|
|
20
|
+
// FBX file and then triangulate at the end for momentum. Doing it this way allows us
|
|
21
|
+
// to split up the functionality (triangulating while you read complicates handling
|
|
22
|
+
// texture coordinates for example).
|
|
23
|
+
struct PolygonData {
|
|
24
|
+
// We will pack polygons in an array like this:
|
|
25
|
+
// The indices array will contain all the polygons indices packed back-to-back.
|
|
26
|
+
// 1 2 3 4 2 3 4 6 ...
|
|
27
|
+
// The offsets array will include an offset for the start and end of each polygon.
|
|
28
|
+
// 0 4 8 ...
|
|
29
|
+
// The advantage of doing it this way is that we have random access into the
|
|
30
|
+
// polygons. The disadvantage (compared to just providing an array of vertex counts)
|
|
31
|
+
// is that the offset array should always have one more than the number of polygons,
|
|
32
|
+
// which is a little confusing.
|
|
33
|
+
std::vector<uint32_t> indices;
|
|
34
|
+
std::vector<uint32_t> offsets;
|
|
35
|
+
|
|
36
|
+
// The texture coordinate indices for each face.
|
|
37
|
+
// Uses the same offsets array as the indices array.
|
|
38
|
+
// Note that this is allowed to be empty, but if not empty it
|
|
39
|
+
// must be the same size as the indices array.
|
|
40
|
+
std::vector<uint32_t> textureIndices;
|
|
41
|
+
|
|
42
|
+
PolygonData() : offsets{0} {}
|
|
43
|
+
|
|
44
|
+
// If there's a problem with the mesh, returns an error message.
|
|
45
|
+
// If everything is kosher, returns an empty string.
|
|
46
|
+
// This function is used in a few places when reading the mesh from
|
|
47
|
+
// disk to make sure it's valid.
|
|
48
|
+
[[nodiscard]] std::string errorMessage(size_t numVertices) const;
|
|
49
|
+
|
|
50
|
+
// Similar to errorMessage, but the issue is not severe enough to terminate.
|
|
51
|
+
[[nodiscard]] std::string warnMessage(size_t numTexVertices) const;
|
|
52
|
+
|
|
53
|
+
[[nodiscard]] size_t numPolygons() const;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
std::vector<Eigen::Vector3i> triangulate(
|
|
57
|
+
std::span<const uint32_t> indices,
|
|
58
|
+
std::span<const uint32_t> offsets);
|
|
59
|
+
|
|
60
|
+
} // namespace momentum
|
|
@@ -0,0 +1,107 @@
|
|
|
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 <string_view>
|
|
11
|
+
|
|
12
|
+
namespace momentum {
|
|
13
|
+
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Permissive Mode
|
|
16
|
+
// ============================================================================
|
|
17
|
+
|
|
18
|
+
// Permissive specifies whether we want to be able to load mesh-only characters (without skin
|
|
19
|
+
// weights), and whether we want to bake the unhandled pose information into base skeleton.
|
|
20
|
+
enum class Permissive { No, Yes };
|
|
21
|
+
|
|
22
|
+
// ============================================================================
|
|
23
|
+
// GLTF File Format
|
|
24
|
+
// ============================================================================
|
|
25
|
+
|
|
26
|
+
/// File format in which the character is saved
|
|
27
|
+
enum class GltfFileFormat {
|
|
28
|
+
Auto = 0, // The file extension is used for deduction (e.g. ".gltf" --> ASCII)
|
|
29
|
+
Binary = 1, // Binary format (generally .glb)
|
|
30
|
+
Ascii = 2, // ASCII format (generally .gltf)
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
// ============================================================================
|
|
34
|
+
// FBX Coordinate System Options
|
|
35
|
+
// ============================================================================
|
|
36
|
+
|
|
37
|
+
/// Specifies which canonical axis represents up in the system (typically Y or Z).
|
|
38
|
+
/// Maps to fbxsdk::FbxAxisSystem::EUpVector
|
|
39
|
+
enum class FbxUpVector { XAxis = 1, YAxis = 2, ZAxis = 3 };
|
|
40
|
+
|
|
41
|
+
/// Vector with origin at the screen pointing toward the camera.
|
|
42
|
+
/// This is a subset of enum EUpVector because axis cannot be repeated.
|
|
43
|
+
/// We use the system of "parity" to define this vector because its value (X,Y or
|
|
44
|
+
/// Z axis) really depends on the up-vector.
|
|
45
|
+
/// Maps to fbxsdk::FbxAxisSystem::EFrontVector
|
|
46
|
+
enum class FbxFrontVector { ParityEven = 1, ParityOdd = 2 };
|
|
47
|
+
|
|
48
|
+
/// Specifies the third vector of the system.
|
|
49
|
+
/// Maps to fbxsdk::FbxAxisSystem::ECoordSystem
|
|
50
|
+
enum class FbxCoordSystem { RightHanded, LeftHanded };
|
|
51
|
+
|
|
52
|
+
/// A struct containing the up, front vectors and coordinate system for FBX export.
|
|
53
|
+
struct FbxCoordSystemInfo {
|
|
54
|
+
/// Default to the same orientations as FbxAxisSystem::eMayaYUp
|
|
55
|
+
FbxUpVector upVector = FbxUpVector::YAxis;
|
|
56
|
+
FbxFrontVector frontVector = FbxFrontVector::ParityOdd;
|
|
57
|
+
FbxCoordSystem coordSystem = FbxCoordSystem::RightHanded;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
// ============================================================================
|
|
61
|
+
// Unified File Save Options
|
|
62
|
+
// ============================================================================
|
|
63
|
+
|
|
64
|
+
/// Unified options for saving files in both FBX and GLTF formats.
|
|
65
|
+
///
|
|
66
|
+
/// This struct consolidates save options that were previously scattered across
|
|
67
|
+
/// multiple function parameters. Format-specific options (e.g., FBX coordinate
|
|
68
|
+
/// system, GLTF extensions) are included but only used by their respective formats.
|
|
69
|
+
struct FileSaveOptions {
|
|
70
|
+
// ---- Common Options (used by both FBX and GLTF) ----
|
|
71
|
+
|
|
72
|
+
/// Include mesh geometry in the output (default: true)
|
|
73
|
+
bool mesh = true;
|
|
74
|
+
|
|
75
|
+
/// Include locators in the output (default: true)
|
|
76
|
+
bool locators = true;
|
|
77
|
+
|
|
78
|
+
/// Include collision geometry in the output (default: true)
|
|
79
|
+
bool collisions = true;
|
|
80
|
+
|
|
81
|
+
/// Include blend shapes in the output (default: true)
|
|
82
|
+
bool blendShapes = true;
|
|
83
|
+
|
|
84
|
+
/// Permissive mode: allow saving mesh-only characters without skin weights (default: false)
|
|
85
|
+
Permissive permissive = Permissive::No;
|
|
86
|
+
|
|
87
|
+
// ---- FBX-Specific Options ----
|
|
88
|
+
|
|
89
|
+
/// FBX coordinate system configuration (default: Maya Y-up)
|
|
90
|
+
FbxCoordSystemInfo coordSystemInfo = {};
|
|
91
|
+
|
|
92
|
+
/// Optional namespace prefix for FBX node names (e.g., "ns" becomes "ns:")
|
|
93
|
+
/// Only used for FBX output (default: empty = no namespace)
|
|
94
|
+
std::string_view fbxNamespace = "";
|
|
95
|
+
|
|
96
|
+
// ---- GLTF-Specific Options ----
|
|
97
|
+
|
|
98
|
+
/// Enable GLTF extensions (default: true)
|
|
99
|
+
/// Only used for GLTF output
|
|
100
|
+
bool extensions = true;
|
|
101
|
+
|
|
102
|
+
/// GLTF file format selection (default: Auto)
|
|
103
|
+
/// Only used for GLTF output
|
|
104
|
+
GltfFileFormat gltfFileFormat = GltfFileFormat::Auto;
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
} // namespace momentum
|