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,139 @@
|
|
|
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/types.h>
|
|
12
|
+
#include <momentum/math/fwd.h>
|
|
13
|
+
#include <momentum/math/types.h>
|
|
14
|
+
|
|
15
|
+
namespace momentum {
|
|
16
|
+
|
|
17
|
+
/// @file linear_skinning.h
|
|
18
|
+
/// Functions for linear blend skinning (Skeletal Subspace Deformation)
|
|
19
|
+
///
|
|
20
|
+
/// Linear blend skinning (LBS), also known as Skeletal Subspace Deformation (SSD),
|
|
21
|
+
/// is a technique used in character animation to deform a mesh based on an underlying
|
|
22
|
+
/// skeleton. Each vertex in the mesh is influenced by one or more joints, with weights
|
|
23
|
+
/// determining how much influence each joint has on the vertex's final position.
|
|
24
|
+
///
|
|
25
|
+
/// This file provides functions to:
|
|
26
|
+
/// - Apply forward skinning (transform vertices from bind pose to animated pose)
|
|
27
|
+
/// - Apply inverse skinning (transform vertices from animated pose back to bind pose)
|
|
28
|
+
/// - Compute inverse skinning transformations for specific vertices
|
|
29
|
+
///
|
|
30
|
+
/// Key concepts:
|
|
31
|
+
/// - Bind pose: The reference pose of the character, where skin weights are defined
|
|
32
|
+
/// - Skin weights: Per-vertex weights defining how much influence each joint has
|
|
33
|
+
/// - Joint transformations: Current transformations of the skeleton's joints
|
|
34
|
+
/// - Forward skinning: Applying joint transformations to deform the mesh
|
|
35
|
+
/// - Inverse skinning: Reversing the deformation to return to bind pose
|
|
36
|
+
|
|
37
|
+
/// Applies forward SSD (linear blend skinning) to points, returning new points
|
|
38
|
+
///
|
|
39
|
+
/// This overload transforms individual points and returns a new vector of transformed points.
|
|
40
|
+
/// Use this when you need to transform arbitrary points without modifying a mesh.
|
|
41
|
+
///
|
|
42
|
+
/// @param inverseBindPose Inverse bind pose transformations for each joint
|
|
43
|
+
/// @param skin Skin weights defining influence of each joint on vertices
|
|
44
|
+
/// @param points Input points to transform
|
|
45
|
+
/// @param state Current skeleton state containing joint transformations
|
|
46
|
+
/// @return Vector of transformed points
|
|
47
|
+
template <typename T>
|
|
48
|
+
std::vector<Vector3<T>> applySSD(
|
|
49
|
+
const TransformationListT<T>& inverseBindPose,
|
|
50
|
+
const SkinWeights& skin,
|
|
51
|
+
typename DeduceSpanType<const Vector3<T>>::type points,
|
|
52
|
+
const SkeletonStateT<T>& state);
|
|
53
|
+
|
|
54
|
+
/// Applies forward SSD to a mesh using skeleton state, modifying output mesh
|
|
55
|
+
///
|
|
56
|
+
/// This overload transforms both vertices and normals of the mesh, writing results to outputMesh.
|
|
57
|
+
/// Use this when working with complete meshes and full skeleton state.
|
|
58
|
+
///
|
|
59
|
+
/// @param inverseBindPose Inverse bind pose transformations for each joint
|
|
60
|
+
/// @param skin Skin weights defining influence of each joint on vertices
|
|
61
|
+
/// @param mesh Input mesh to transform
|
|
62
|
+
/// @param state Current skeleton state containing joint transformations
|
|
63
|
+
/// @param outputMesh Output mesh to store the transformed result
|
|
64
|
+
template <typename T>
|
|
65
|
+
void applySSD(
|
|
66
|
+
const TransformationListT<T>& inverseBindPose,
|
|
67
|
+
const SkinWeights& skin,
|
|
68
|
+
const MeshT<T>& mesh,
|
|
69
|
+
const SkeletonStateT<T>& state,
|
|
70
|
+
MeshT<T>& outputMesh);
|
|
71
|
+
|
|
72
|
+
/// Applies forward SSD to a mesh using raw joint state list, modifying output mesh
|
|
73
|
+
///
|
|
74
|
+
/// This overload accepts a JointStateList directly instead of a full SkeletonState.
|
|
75
|
+
/// Use this when you have joint transformations but not a complete skeleton state.
|
|
76
|
+
///
|
|
77
|
+
/// @param inverseBindPose Inverse bind pose transformations for each joint
|
|
78
|
+
/// @param skin Skin weights defining influence of each joint on vertices
|
|
79
|
+
/// @param mesh Input mesh to transform
|
|
80
|
+
/// @param state List of joint states containing transformations
|
|
81
|
+
/// @param outputMesh Output mesh to store the transformed result
|
|
82
|
+
template <typename T>
|
|
83
|
+
void applySSD(
|
|
84
|
+
const TransformationListT<T>& inverseBindPose,
|
|
85
|
+
const SkinWeights& skin,
|
|
86
|
+
const MeshT<T>& mesh,
|
|
87
|
+
const JointStateListT<T>& state,
|
|
88
|
+
MeshT<T>& outputMesh);
|
|
89
|
+
|
|
90
|
+
/// Computes the inverse SSD transformation for a specific vertex
|
|
91
|
+
///
|
|
92
|
+
/// Returns a transformation matrix that converts from skinned space back to bind pose space.
|
|
93
|
+
/// This is useful for operations that need to work in the original bind pose space.
|
|
94
|
+
///
|
|
95
|
+
/// @param inverseBindPose Inverse bind pose transformations for each joint
|
|
96
|
+
/// @param skin Skin weights defining influence of each joint on vertices
|
|
97
|
+
/// @param state Current skeleton state containing joint transformations
|
|
98
|
+
/// @param index Index of the vertex to compute inverse transformation for
|
|
99
|
+
/// @return Inverse transformation matrix for the specified vertex
|
|
100
|
+
Affine3f getInverseSSDTransformation(
|
|
101
|
+
const TransformationList& inverseBindPose,
|
|
102
|
+
const SkinWeights& skin,
|
|
103
|
+
const SkeletonState& state,
|
|
104
|
+
size_t index);
|
|
105
|
+
|
|
106
|
+
/// Applies inverse SSD to points, returning new points in bind pose space
|
|
107
|
+
///
|
|
108
|
+
/// This overload transforms points from skinned space back to bind pose space,
|
|
109
|
+
/// returning a new vector of transformed points.
|
|
110
|
+
///
|
|
111
|
+
/// @param inverseBindPose Inverse bind pose transformations for each joint
|
|
112
|
+
/// @param skin Skin weights defining influence of each joint on vertices
|
|
113
|
+
/// @param points Input points to transform (in skinned space)
|
|
114
|
+
/// @param state Current skeleton state containing joint transformations
|
|
115
|
+
/// @return Vector of transformed points in bind pose space
|
|
116
|
+
std::vector<Vector3f> applyInverseSSD(
|
|
117
|
+
const TransformationList& inverseBindPose,
|
|
118
|
+
const SkinWeights& skin,
|
|
119
|
+
std::span<const Vector3f> points,
|
|
120
|
+
const SkeletonState& state);
|
|
121
|
+
|
|
122
|
+
/// Applies inverse SSD to points, storing results in a mesh
|
|
123
|
+
///
|
|
124
|
+
/// This overload transforms points from skinned space back to bind pose space,
|
|
125
|
+
/// writing the results directly to the provided mesh's vertices.
|
|
126
|
+
///
|
|
127
|
+
/// @param inverseBindPose Inverse bind pose transformations for each joint
|
|
128
|
+
/// @param skin Skin weights defining influence of each joint on vertices
|
|
129
|
+
/// @param points Input points to transform (in skinned space)
|
|
130
|
+
/// @param state Current skeleton state containing joint transformations
|
|
131
|
+
/// @param mesh Output mesh to store the transformed vertices
|
|
132
|
+
void applyInverseSSD(
|
|
133
|
+
const TransformationList& inverseBindPose,
|
|
134
|
+
const SkinWeights& skin,
|
|
135
|
+
std::span<const Vector3f> points,
|
|
136
|
+
const SkeletonState& state,
|
|
137
|
+
Mesh& mesh);
|
|
138
|
+
|
|
139
|
+
} // namespace momentum
|
|
@@ -0,0 +1,94 @@
|
|
|
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/types.h>
|
|
11
|
+
#include <momentum/math/utility.h>
|
|
12
|
+
|
|
13
|
+
namespace momentum {
|
|
14
|
+
|
|
15
|
+
/// Represents a point attached to a joint in a skeleton.
|
|
16
|
+
///
|
|
17
|
+
/// Locators can be used for various purposes such as tracking specific points
|
|
18
|
+
/// on a character, defining constraints, or serving as targets for inverse kinematics.
|
|
19
|
+
struct Locator {
|
|
20
|
+
/// Name identifier for the locator
|
|
21
|
+
std::string name;
|
|
22
|
+
|
|
23
|
+
/// Index of the parent joint in the skeleton
|
|
24
|
+
size_t parent;
|
|
25
|
+
|
|
26
|
+
/// Position relative to the parent joint's coordinate system
|
|
27
|
+
Vector3f offset;
|
|
28
|
+
|
|
29
|
+
/// Specifies which axes (x,y,z) are locked (1) or free (0)
|
|
30
|
+
Vector3i locked;
|
|
31
|
+
|
|
32
|
+
/// Influence weight of this locator when used in constraints
|
|
33
|
+
float weight;
|
|
34
|
+
|
|
35
|
+
/// Reference position for limit constraints, typically equal to offset when loaded
|
|
36
|
+
Vector3f limitOrigin;
|
|
37
|
+
|
|
38
|
+
/// Controls how strongly the locator should maintain its original position
|
|
39
|
+
/// Higher values create stronger constraints, zero means completely free
|
|
40
|
+
Vector3f limitWeight;
|
|
41
|
+
|
|
42
|
+
/// Indicates whether the locator is attached to the skin of a person (e.g. as in mocap tracking),
|
|
43
|
+
/// used to determine whether the locator can safely be converted to a skinned locator.
|
|
44
|
+
bool attachedToSkin = false;
|
|
45
|
+
|
|
46
|
+
/// Offset from the skin surface, used when trying to solve for body shape using locators.
|
|
47
|
+
float skinOffset = 0.0f;
|
|
48
|
+
|
|
49
|
+
/// Creates a locator with the specified properties
|
|
50
|
+
///
|
|
51
|
+
/// @param name Identifier for the locator
|
|
52
|
+
/// @param parent Index of the parent joint
|
|
53
|
+
/// @param offset Position relative to the parent joint
|
|
54
|
+
/// @param locked Axes that are locked (1) or free (0)
|
|
55
|
+
/// @param weight Influence weight in constraints
|
|
56
|
+
/// @param limitOrigin Reference position for limit constraints
|
|
57
|
+
/// @param limitWeight Strength of position maintenance constraints
|
|
58
|
+
Locator(
|
|
59
|
+
const std::string& name = "uninitialized",
|
|
60
|
+
const size_t parent = kInvalidIndex,
|
|
61
|
+
const Vector3f& offset = Vector3f::Zero(),
|
|
62
|
+
const Vector3i& locked = Vector3i::Zero(),
|
|
63
|
+
const float weight = 1.0f,
|
|
64
|
+
const Vector3f& limitOrigin = Vector3f::Zero(),
|
|
65
|
+
const Vector3f& limitWeight = Vector3f::Zero(),
|
|
66
|
+
bool attachedToSkin = false,
|
|
67
|
+
float skinOffset = 0.0f)
|
|
68
|
+
: name(name),
|
|
69
|
+
parent(parent),
|
|
70
|
+
offset(offset),
|
|
71
|
+
locked(locked),
|
|
72
|
+
weight(weight),
|
|
73
|
+
limitOrigin(limitOrigin),
|
|
74
|
+
limitWeight(limitWeight),
|
|
75
|
+
attachedToSkin(attachedToSkin),
|
|
76
|
+
skinOffset(skinOffset) {}
|
|
77
|
+
|
|
78
|
+
/// Compares two locators for equality, using approximate comparison for floating-point values
|
|
79
|
+
///
|
|
80
|
+
/// @param locator The locator to compare with
|
|
81
|
+
/// @return True if all properties are equal (or approximately equal for floating-point values)
|
|
82
|
+
inline bool operator==(const Locator& locator) const {
|
|
83
|
+
return (
|
|
84
|
+
(name == locator.name) && (parent == locator.parent) && offset.isApprox(locator.offset) &&
|
|
85
|
+
locked.isApprox(locator.locked) && isApprox(weight, locator.weight) &&
|
|
86
|
+
limitOrigin.isApprox(locator.limitOrigin) && limitWeight.isApprox(locator.limitWeight) &&
|
|
87
|
+
attachedToSkin == locator.attachedToSkin && isApprox(skinOffset, locator.skinOffset));
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
/// A collection of locators attached to a skeleton
|
|
92
|
+
using LocatorList = std::vector<Locator>;
|
|
93
|
+
|
|
94
|
+
} // namespace momentum
|
|
@@ -0,0 +1,43 @@
|
|
|
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/locator.h>
|
|
12
|
+
#include <momentum/character/types.h>
|
|
13
|
+
|
|
14
|
+
namespace momentum {
|
|
15
|
+
|
|
16
|
+
/// Tracks the current world positions of locators in a skeleton.
|
|
17
|
+
///
|
|
18
|
+
/// This class maintains the transformed positions of locators based on the current
|
|
19
|
+
/// state of the skeleton they're attached to.
|
|
20
|
+
struct LocatorState {
|
|
21
|
+
/// World-space positions of all locators, updated when the skeleton moves
|
|
22
|
+
std::vector<Vector3f> position;
|
|
23
|
+
|
|
24
|
+
public:
|
|
25
|
+
/// Creates an empty locator state with no positions
|
|
26
|
+
LocatorState() noexcept = default;
|
|
27
|
+
|
|
28
|
+
/// Creates a locator state and immediately updates positions based on the given skeleton state
|
|
29
|
+
///
|
|
30
|
+
/// @param skeletonState Current pose of the skeleton
|
|
31
|
+
/// @param referenceLocators List of locators to track
|
|
32
|
+
LocatorState(const SkeletonState& skeletonState, const LocatorList& referenceLocators) noexcept {
|
|
33
|
+
update(skeletonState, referenceLocators);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/// Updates the world positions of all locators based on the current skeleton pose
|
|
37
|
+
///
|
|
38
|
+
/// @param skeletonState Current pose of the skeleton
|
|
39
|
+
/// @param referenceLocators List of locators to update positions for
|
|
40
|
+
void update(const SkeletonState& skeletonState, const LocatorList& referenceLocators) noexcept;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
} // namespace momentum
|
|
@@ -0,0 +1,48 @@
|
|
|
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 <string>
|
|
13
|
+
#include <vector>
|
|
14
|
+
|
|
15
|
+
namespace momentum {
|
|
16
|
+
|
|
17
|
+
/// Marker represents a motion capture marker that defines an active marker during motion capture.
|
|
18
|
+
struct Marker {
|
|
19
|
+
/// The name of the marker, default is "Undefined"
|
|
20
|
+
std::string name = "Undefined";
|
|
21
|
+
|
|
22
|
+
/// The 3D position of the marker as a Vector3d object, where the unit is assumed to be in
|
|
23
|
+
/// centimeters.
|
|
24
|
+
Vector3d pos = {0.0, 0.0, 0.0};
|
|
25
|
+
|
|
26
|
+
/// The occlusion status of the marker, true if occluded, false otherwise
|
|
27
|
+
bool occluded = true;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/// MarkerSequence stores all the frames from a single capture sequence for one subject (motion
|
|
31
|
+
/// capture actor).
|
|
32
|
+
///
|
|
33
|
+
/// Each frame is a std::vector<Marker> containing the position and occlusion status of
|
|
34
|
+
/// all the markers placed on the subject.
|
|
35
|
+
/// The size of the std::vector<Marker> must be consistent for all frames.
|
|
36
|
+
struct MarkerSequence {
|
|
37
|
+
/// Name of the actor sequence (typically a unique subject name or ID)
|
|
38
|
+
std::string name;
|
|
39
|
+
|
|
40
|
+
/// A 2D vector that specifies the Marker (name/position/occlusion) for all markers
|
|
41
|
+
/// throughout all captured frames. Size: [numFrames][numMarkers]
|
|
42
|
+
std::vector<std::vector<Marker>> frames;
|
|
43
|
+
|
|
44
|
+
/// The frame rate of the motion capture sequence in frames per second (default is 30.0)
|
|
45
|
+
float fps = 30.0f;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
} // namespace momentum
|
|
@@ -0,0 +1,71 @@
|
|
|
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/types.h>
|
|
12
|
+
#include <momentum/math/mesh.h>
|
|
13
|
+
#include <momentum/math/types.h>
|
|
14
|
+
|
|
15
|
+
namespace momentum {
|
|
16
|
+
|
|
17
|
+
/// Represents the complete state of a model's mesh
|
|
18
|
+
///
|
|
19
|
+
/// Stores the mesh in its various states throughout the deformation pipeline:
|
|
20
|
+
/// - neutralMesh: Base mesh before any deformations
|
|
21
|
+
/// - restMesh: Mesh after blend shapes/expressions are applied
|
|
22
|
+
/// - posedMesh: Final mesh after skinning is applied
|
|
23
|
+
template <typename T>
|
|
24
|
+
struct MeshStateT {
|
|
25
|
+
std::unique_ptr<MeshT<T>>
|
|
26
|
+
neutralMesh_; // Rest mesh without facial expression basis,
|
|
27
|
+
// used to restore the neutral shape after facial expressions are applied.
|
|
28
|
+
// Not used with there is a shape basis.
|
|
29
|
+
std::unique_ptr<MeshT<T>> restMesh_; // The rest positions of the mesh after shape basis
|
|
30
|
+
// (and potentially facial expression) has been applied
|
|
31
|
+
std::unique_ptr<MeshT<T>>
|
|
32
|
+
posedMesh_; // The posed mesh after the skeleton transforms have been applied.
|
|
33
|
+
|
|
34
|
+
/// Creates an empty mesh state
|
|
35
|
+
MeshStateT() noexcept = default;
|
|
36
|
+
MeshStateT(
|
|
37
|
+
const ModelParametersT<T>& parameters,
|
|
38
|
+
const SkeletonStateT<T>& state,
|
|
39
|
+
const Character& character) noexcept;
|
|
40
|
+
~MeshStateT() noexcept;
|
|
41
|
+
|
|
42
|
+
/// Copy constructor
|
|
43
|
+
MeshStateT(const MeshStateT& other);
|
|
44
|
+
|
|
45
|
+
/// Copy assignment operator
|
|
46
|
+
MeshStateT& operator=(const MeshStateT& other);
|
|
47
|
+
|
|
48
|
+
/// Move constructor
|
|
49
|
+
MeshStateT(MeshStateT&& other) noexcept = default;
|
|
50
|
+
|
|
51
|
+
/// Move assignment operator
|
|
52
|
+
MeshStateT& operator=(MeshStateT&& other) noexcept = default;
|
|
53
|
+
|
|
54
|
+
/// Updates the mesh state based on model parameters and skeleton state
|
|
55
|
+
///
|
|
56
|
+
/// This applies the full deformation pipeline:
|
|
57
|
+
/// 1. Apply blend shapes to create rest mesh
|
|
58
|
+
/// 2. Apply face expression blend shapes
|
|
59
|
+
/// 3. Update normals
|
|
60
|
+
/// 4. Apply skinning to create posed mesh
|
|
61
|
+
///
|
|
62
|
+
/// @param parameters Model parameters containing blend weights
|
|
63
|
+
/// @param state Current skeleton state for skinning
|
|
64
|
+
/// @param character Character containing mesh, blend shapes, and skinning data
|
|
65
|
+
void update(
|
|
66
|
+
const ModelParametersT<T>& parameters,
|
|
67
|
+
const SkeletonStateT<T>& state,
|
|
68
|
+
const Character& character);
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
} // namespace momentum
|
|
@@ -0,0 +1,144 @@
|
|
|
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/types.h>
|
|
12
|
+
#include <momentum/common/memory.h>
|
|
13
|
+
#include <momentum/math/utility.h>
|
|
14
|
+
|
|
15
|
+
#include <array>
|
|
16
|
+
#include <cstring>
|
|
17
|
+
|
|
18
|
+
namespace momentum {
|
|
19
|
+
|
|
20
|
+
enum LimitType {
|
|
21
|
+
MinMax,
|
|
22
|
+
MinMaxJoint,
|
|
23
|
+
MinMaxJointPassive,
|
|
24
|
+
Linear,
|
|
25
|
+
LinearJoint,
|
|
26
|
+
Ellipsoid,
|
|
27
|
+
HalfPlane,
|
|
28
|
+
|
|
29
|
+
// Keep this as the last entry to track the number of enum values
|
|
30
|
+
LimitTypeCount
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
[[nodiscard]] std::string_view toString(LimitType type);
|
|
34
|
+
|
|
35
|
+
struct LimitMinMax {
|
|
36
|
+
size_t parameterIndex;
|
|
37
|
+
Vector2f limits; ///< [min, max]
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
struct LimitMinMaxJoint {
|
|
41
|
+
size_t jointIndex;
|
|
42
|
+
size_t jointParameter; ///< One of [tx, ty, tz, rx, ry, rz, sc]
|
|
43
|
+
Vector2f limits; ///< [min, max]
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
/// Linear relationship between parameters: p_0 = s * p_1 - o
|
|
47
|
+
struct LimitLinear {
|
|
48
|
+
size_t referenceIndex; ///< p_0
|
|
49
|
+
size_t targetIndex; ///< p_1
|
|
50
|
+
float scale; ///< s
|
|
51
|
+
float offset; ///< o
|
|
52
|
+
|
|
53
|
+
/// Range where limit applies (in target parameter values)
|
|
54
|
+
///
|
|
55
|
+
/// For piecewise linear limits without double-counting
|
|
56
|
+
float rangeMin; ///< Inclusive
|
|
57
|
+
float rangeMax; ///< Non-inclusive
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
struct LimitLinearJoint {
|
|
61
|
+
size_t referenceJointIndex;
|
|
62
|
+
size_t referenceJointParameter;
|
|
63
|
+
size_t targetJointIndex;
|
|
64
|
+
size_t targetJointParameter;
|
|
65
|
+
float scale;
|
|
66
|
+
float offset;
|
|
67
|
+
|
|
68
|
+
/// Range where limit applies (in target parameter values)
|
|
69
|
+
///
|
|
70
|
+
/// For piecewise linear limits without double-counting
|
|
71
|
+
float rangeMin; ///< Inclusive
|
|
72
|
+
float rangeMax; ///< Non-inclusive
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
struct LimitEllipsoid {
|
|
76
|
+
alignas(32) Affine3f ellipsoid;
|
|
77
|
+
alignas(32) Affine3f ellipsoidInv;
|
|
78
|
+
alignas(32) Vector3f offset;
|
|
79
|
+
size_t ellipsoidParent;
|
|
80
|
+
size_t parent;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
/// Constraint: (p1, p2) · (normal) - offset >= 0
|
|
84
|
+
struct LimitHalfPlane {
|
|
85
|
+
size_t param1;
|
|
86
|
+
size_t param2;
|
|
87
|
+
Vector2f normal;
|
|
88
|
+
float offset;
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
union LimitData {
|
|
92
|
+
LimitMinMax minMax;
|
|
93
|
+
LimitMinMaxJoint minMaxJoint;
|
|
94
|
+
LimitLinear linear;
|
|
95
|
+
LimitLinearJoint linearJoint;
|
|
96
|
+
LimitEllipsoid ellipsoid;
|
|
97
|
+
LimitHalfPlane halfPlane;
|
|
98
|
+
std::array<unsigned char, 512> rawData; ///< For memory operations
|
|
99
|
+
|
|
100
|
+
/// Initializes all data to zero
|
|
101
|
+
LimitData();
|
|
102
|
+
|
|
103
|
+
/// Raw memory copy (compiler can't determine which member's constructor to call)
|
|
104
|
+
LimitData(const LimitData& rhs);
|
|
105
|
+
|
|
106
|
+
LimitData& operator=(const LimitData& rhs);
|
|
107
|
+
|
|
108
|
+
/// Compares raw memory
|
|
109
|
+
bool operator==(const LimitData& limitData) const;
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
struct ParameterLimit {
|
|
113
|
+
LimitData data;
|
|
114
|
+
LimitType type = LimitType::MinMax;
|
|
115
|
+
float weight = 1.0f;
|
|
116
|
+
|
|
117
|
+
inline bool operator==(const ParameterLimit& parameterLimit) const {
|
|
118
|
+
return (
|
|
119
|
+
(data == parameterLimit.data) && (type == parameterLimit.type) &&
|
|
120
|
+
isApprox(weight, parameterLimit.weight));
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
using ParameterLimits = std::vector<ParameterLimit>;
|
|
125
|
+
|
|
126
|
+
/// Only processes MinMaxJointPassive limits, clamping parameters to their ranges
|
|
127
|
+
JointParameters applyPassiveJointParameterLimits(
|
|
128
|
+
const ParameterLimits& limits,
|
|
129
|
+
const JointParameters& jointParams);
|
|
130
|
+
|
|
131
|
+
/// Creates MinMax limits from a pose constraint
|
|
132
|
+
ParameterLimits getPoseConstraintParameterLimits(
|
|
133
|
+
const std::string& name,
|
|
134
|
+
const ParameterTransform& pt,
|
|
135
|
+
float weight = 1.0f);
|
|
136
|
+
|
|
137
|
+
/// If rangeMin and rangeMax are both 0, the limit applies to all values
|
|
138
|
+
bool isInRange(const LimitLinear& limit, float value);
|
|
139
|
+
|
|
140
|
+
/// If rangeMin and rangeMax are both 0, the limit applies to all values
|
|
141
|
+
bool isInRange(const LimitLinearJoint& limit, float value);
|
|
142
|
+
|
|
143
|
+
MOMENTUM_DEFINE_POINTERS(ParameterLimits)
|
|
144
|
+
} // namespace momentum
|