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,108 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/character/character.h>
|
|
11
|
+
#include <momentum/character/locator_state.h>
|
|
12
|
+
#include <momentum/character/skeleton_state.h>
|
|
13
|
+
#include <momentum/math/fwd.h>
|
|
14
|
+
|
|
15
|
+
namespace momentum {
|
|
16
|
+
|
|
17
|
+
/// Represents the complete state of a character at a specific point in time.
|
|
18
|
+
///
|
|
19
|
+
/// Stores the character's parameters, skeleton state, locator positions,
|
|
20
|
+
/// skinned mesh, and collision geometry state. This class is used for
|
|
21
|
+
/// character animation and rendering.
|
|
22
|
+
template <typename T>
|
|
23
|
+
struct CharacterStateT {
|
|
24
|
+
/// Model parameters and joint offsets
|
|
25
|
+
CharacterParameters parameters;
|
|
26
|
+
|
|
27
|
+
/// Joint transformations
|
|
28
|
+
SkeletonState skeletonState;
|
|
29
|
+
|
|
30
|
+
/// Locator positions and orientations
|
|
31
|
+
LocatorState locatorState;
|
|
32
|
+
|
|
33
|
+
/// Skinned mesh (may be null if updateMesh=false)
|
|
34
|
+
Mesh_u meshState;
|
|
35
|
+
|
|
36
|
+
/// Collision geometry state (may be null if updateCollision=false)
|
|
37
|
+
CollisionGeometryState_u collisionState;
|
|
38
|
+
|
|
39
|
+
/// Creates an empty character state
|
|
40
|
+
CharacterStateT();
|
|
41
|
+
|
|
42
|
+
/// Creates a deep copy of another character state
|
|
43
|
+
explicit CharacterStateT(const CharacterStateT& other);
|
|
44
|
+
|
|
45
|
+
/// Move constructor
|
|
46
|
+
CharacterStateT(CharacterStateT&& c) noexcept;
|
|
47
|
+
|
|
48
|
+
/// Copy assignment is disabled
|
|
49
|
+
CharacterStateT& operator=(const CharacterStateT& rhs) = delete;
|
|
50
|
+
|
|
51
|
+
/// Move assignment operator
|
|
52
|
+
CharacterStateT& operator=(CharacterStateT&& rhs) noexcept;
|
|
53
|
+
|
|
54
|
+
/// Destructor
|
|
55
|
+
~CharacterStateT();
|
|
56
|
+
|
|
57
|
+
/// Creates a character state in bind pose
|
|
58
|
+
///
|
|
59
|
+
/// @param referenceCharacter The character to use as reference
|
|
60
|
+
/// @param updateMesh Whether to compute the skinned mesh
|
|
61
|
+
/// @param updateCollision Whether to update collision geometry
|
|
62
|
+
explicit CharacterStateT(
|
|
63
|
+
const CharacterT<T>& referenceCharacter,
|
|
64
|
+
bool updateMesh = true,
|
|
65
|
+
bool updateCollision = true);
|
|
66
|
+
|
|
67
|
+
/// Creates a character state with specific parameters
|
|
68
|
+
///
|
|
69
|
+
/// @param parameters The character parameters to use
|
|
70
|
+
/// @param referenceCharacter The character to use as reference
|
|
71
|
+
/// @param updateMesh Whether to compute the skinned mesh
|
|
72
|
+
/// @param updateCollision Whether to update collision geometry
|
|
73
|
+
/// @param applyLimits Whether to apply joint parameter limits
|
|
74
|
+
CharacterStateT(
|
|
75
|
+
const CharacterParameters& parameters,
|
|
76
|
+
const CharacterT<T>& referenceCharacter,
|
|
77
|
+
bool updateMesh = true,
|
|
78
|
+
bool updateCollision = true,
|
|
79
|
+
bool applyLimits = true);
|
|
80
|
+
|
|
81
|
+
/// Updates the character state with specific parameters
|
|
82
|
+
///
|
|
83
|
+
/// If parameters.offsets is empty, it will be initialized with zeros.
|
|
84
|
+
///
|
|
85
|
+
/// @param parameters The character parameters to use
|
|
86
|
+
/// @param referenceCharacter The character to use as reference
|
|
87
|
+
/// @param updateMesh Whether to compute the skinned mesh
|
|
88
|
+
/// @param updateCollision Whether to update collision geometry
|
|
89
|
+
/// @param applyLimits Whether to apply joint parameter limits
|
|
90
|
+
void set(
|
|
91
|
+
const CharacterParameters& parameters,
|
|
92
|
+
const CharacterT<T>& referenceCharacter,
|
|
93
|
+
bool updateMesh = true,
|
|
94
|
+
bool updateCollision = true,
|
|
95
|
+
bool applyLimits = true);
|
|
96
|
+
|
|
97
|
+
/// Sets the character state to the bind pose
|
|
98
|
+
///
|
|
99
|
+
/// @param referenceCharacter The character to use as reference
|
|
100
|
+
/// @param updateMesh Whether to compute the skinned mesh
|
|
101
|
+
/// @param updateCollision Whether to update collision geometry
|
|
102
|
+
void setBindPose(
|
|
103
|
+
const CharacterT<T>& referenceCharacter,
|
|
104
|
+
bool updateMesh = true,
|
|
105
|
+
bool updateCollision = true);
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
} // namespace momentum
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/character/character.h>
|
|
11
|
+
|
|
12
|
+
namespace momentum {
|
|
13
|
+
|
|
14
|
+
/// Scales the character (mesh and skeleton) by the desired amount.
|
|
15
|
+
///
|
|
16
|
+
/// Note that this should primarily be used when transforming the character into different units. If
|
|
17
|
+
/// you simply want to apply an identity-specific scale to the character, you should use the
|
|
18
|
+
/// 'scale_global' parameter in the ParameterTransform class.
|
|
19
|
+
///
|
|
20
|
+
/// @param[in] character Character to be scaled
|
|
21
|
+
/// @param[in] scale Scale factor to apply
|
|
22
|
+
/// @return A new Character object that has been scaled
|
|
23
|
+
[[nodiscard]] Character scaleCharacter(const Character& character, float scale);
|
|
24
|
+
|
|
25
|
+
/// Transforms the character (mesh and skeleton) by the desired transformation matrix. The
|
|
26
|
+
/// transformation matrix should not have any scale or shear.
|
|
27
|
+
///
|
|
28
|
+
/// Note that this should primarily be used for transforming models between different coordinate
|
|
29
|
+
/// spaces (e.g. y-up vs. z-up). If you want to move a character around the scene, you should
|
|
30
|
+
/// preferably use the model parameters.
|
|
31
|
+
///
|
|
32
|
+
/// @param[in] character Character to be transformed
|
|
33
|
+
/// @param[in] xform Transformation to apply
|
|
34
|
+
/// @return A new Character object that has been transformed
|
|
35
|
+
[[nodiscard]] Character transformCharacter(const Character& character, const Affine3f& xform);
|
|
36
|
+
|
|
37
|
+
/// Replaces the part of target_character's skeleton rooted at target_root with the part of
|
|
38
|
+
/// source_character's skeleton rooted at source_root.
|
|
39
|
+
///
|
|
40
|
+
/// This function is typically used to swap one character's hand skeleton with another, for example.
|
|
41
|
+
///
|
|
42
|
+
/// @param[in] srcCharacter The source character whose skeleton will be copied.
|
|
43
|
+
/// @param[in] tgtCharacter The target character whose skeleton will be replaced.
|
|
44
|
+
/// @param[in] srcRootJoint Root of the source skeleton hierarchy to be copied.
|
|
45
|
+
/// @param[in] tgtRootJoint Root of the target skeleton hierarchy to be replaced.
|
|
46
|
+
/// @return A new Character that is identical to tgtCharacter except that the skeleton under
|
|
47
|
+
/// tgtRootJoint has been replaced by the part of srcCharacter's skeleton rooted at srcRootJoint.
|
|
48
|
+
[[nodiscard]] Character replaceSkeletonHierarchy(
|
|
49
|
+
const Character& srcCharacter,
|
|
50
|
+
const Character& tgtCharacter,
|
|
51
|
+
const std::string& srcRootJoint,
|
|
52
|
+
const std::string& tgtRootJoint);
|
|
53
|
+
|
|
54
|
+
/// Removes the specified joints and any joints parented beneath them from the character.
|
|
55
|
+
///
|
|
56
|
+
/// Currently, it is necessary to remove child joints to prevent dangling joints. Mesh points
|
|
57
|
+
/// skinned to the removed joints are re-skinned to their parent joint in the hierarchy.
|
|
58
|
+
///
|
|
59
|
+
/// @param[in] character The character from which joints will be removed.
|
|
60
|
+
/// @param[in] jointsToRemove A vector of joint indices to be removed.
|
|
61
|
+
/// @return A new Character object that is identical to the original except for the removal of
|
|
62
|
+
/// specified joints.
|
|
63
|
+
[[nodiscard]] Character removeJoints(
|
|
64
|
+
const Character& character,
|
|
65
|
+
std::span<const size_t> jointsToRemove);
|
|
66
|
+
|
|
67
|
+
/// Maps the input ModelParameter motion to a target character by matching model parameter names.
|
|
68
|
+
/// Mismatched names will be discarded (source) or set to zero (target).
|
|
69
|
+
///
|
|
70
|
+
/// @param[in] inputMotion Input ModelParameter motion with names.
|
|
71
|
+
/// @param[in] targetCharacter Target character that defines its own ModelParameters.
|
|
72
|
+
/// @return A matrix of model parameters for the target character.
|
|
73
|
+
MatrixXf mapMotionToCharacter(
|
|
74
|
+
const MotionParameters& inputMotion,
|
|
75
|
+
const Character& targetCharacter);
|
|
76
|
+
|
|
77
|
+
/// Maps the input JointParameter vector to a target character by matching joint names. Mismatched
|
|
78
|
+
/// names will be discarded (source) or set to zero (target). For every matched joint, all 7
|
|
79
|
+
/// parameters will be copied over.
|
|
80
|
+
///
|
|
81
|
+
/// @param[in] inputIdentity Input JointParameter vector with joint names.
|
|
82
|
+
/// @param[in] targetCharacter Target character that defines its own Joints.
|
|
83
|
+
/// @return A vector of joint parameters for the target character.
|
|
84
|
+
VectorXf mapIdentityToCharacter(
|
|
85
|
+
const IdentityParameters& inputIdentity,
|
|
86
|
+
const Character& targetCharacter);
|
|
87
|
+
|
|
88
|
+
/// Reduces the mesh to only include the specified vertices and associated faces
|
|
89
|
+
///
|
|
90
|
+
/// @param[in] character Character to be reduced
|
|
91
|
+
/// @param[in] activeVertices Boolean vector indicating which vertices to keep
|
|
92
|
+
/// @return A new character with mesh reduced to the specified vertices
|
|
93
|
+
template <typename T>
|
|
94
|
+
[[nodiscard]] CharacterT<T> reduceMeshByVertices(
|
|
95
|
+
const CharacterT<T>& character,
|
|
96
|
+
const std::vector<bool>& activeVertices);
|
|
97
|
+
|
|
98
|
+
/// Reduces the mesh to only include the specified faces and associated vertices
|
|
99
|
+
///
|
|
100
|
+
/// @param[in] character Character to be reduced
|
|
101
|
+
/// @param[in] activeFaces Boolean vector indicating which faces to keep
|
|
102
|
+
/// @return A new character with mesh reduced to the specified faces
|
|
103
|
+
template <typename T>
|
|
104
|
+
[[nodiscard]] CharacterT<T> reduceMeshByFaces(
|
|
105
|
+
const CharacterT<T>& character,
|
|
106
|
+
const std::vector<bool>& activeFaces);
|
|
107
|
+
|
|
108
|
+
/// Converts vertex selection to face selection
|
|
109
|
+
///
|
|
110
|
+
/// @param[in] character Character containing the mesh
|
|
111
|
+
/// @param[in] activeVertices Boolean vector indicating which vertices are active
|
|
112
|
+
/// @return Boolean vector indicating which faces only contain active vertices
|
|
113
|
+
template <typename T>
|
|
114
|
+
[[nodiscard]] std::vector<bool> verticesToFaces(
|
|
115
|
+
const MeshT<T>& mesh,
|
|
116
|
+
const std::vector<bool>& activeVertices);
|
|
117
|
+
|
|
118
|
+
/// Converts face selection to vertex selection
|
|
119
|
+
///
|
|
120
|
+
/// @param[in] character Character containing the mesh
|
|
121
|
+
/// @param[in] activeFaces Boolean vector indicating which faces are active
|
|
122
|
+
/// @return Boolean vector indicating which vertices are used by active faces
|
|
123
|
+
template <typename T>
|
|
124
|
+
[[nodiscard]] std::vector<bool> facesToVertices(
|
|
125
|
+
const MeshT<T>& mesh,
|
|
126
|
+
const std::vector<bool>& activeFaces);
|
|
127
|
+
|
|
128
|
+
} // namespace momentum
|
|
@@ -0,0 +1,80 @@
|
|
|
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/common/memory.h>
|
|
12
|
+
#include <momentum/math/constants.h>
|
|
13
|
+
#include <momentum/math/transform.h>
|
|
14
|
+
#include <momentum/math/utility.h>
|
|
15
|
+
|
|
16
|
+
namespace momentum {
|
|
17
|
+
|
|
18
|
+
/// Tapered capsule collision geometry for character collision detection.
|
|
19
|
+
///
|
|
20
|
+
/// Defined by a transformation, length, and two radii at the endpoints, creating
|
|
21
|
+
/// a capsule with potentially different radii at each end.
|
|
22
|
+
template <typename S>
|
|
23
|
+
struct TaperedCapsuleT {
|
|
24
|
+
using Scalar = S;
|
|
25
|
+
|
|
26
|
+
/// Transformation defining the orientation and starting point relative to the parent coordinate
|
|
27
|
+
/// system.
|
|
28
|
+
TransformT<S> transformation;
|
|
29
|
+
|
|
30
|
+
/// Radii at the two endpoints of the capsule.
|
|
31
|
+
Vector2<S> radius;
|
|
32
|
+
|
|
33
|
+
/// Parent joint to which the geometry is attached.
|
|
34
|
+
size_t parent;
|
|
35
|
+
|
|
36
|
+
/// Length of the collision geometry along the x-axis.
|
|
37
|
+
S length;
|
|
38
|
+
|
|
39
|
+
TaperedCapsuleT()
|
|
40
|
+
: transformation(TransformT<S>()),
|
|
41
|
+
radius(Vector2<S>::Zero()),
|
|
42
|
+
parent(kInvalidIndex),
|
|
43
|
+
length(S(0)) {
|
|
44
|
+
// Empty
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/// Checks if the current capsule is approximately equal to another.
|
|
48
|
+
[[nodiscard]] bool isApprox(const TaperedCapsuleT& other, const S& tol = Eps<S>(1e-4f, 1e-10))
|
|
49
|
+
const {
|
|
50
|
+
if (!transformation.isApprox(other.transformation, tol)) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (!radius.isApprox(other.radius)) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (parent != other.parent) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (!::momentum::isApprox(length, other.length)) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
/// Collection of tapered capsules representing a character's collision geometry.
|
|
71
|
+
template <typename S>
|
|
72
|
+
using CollisionGeometryT = std::vector<TaperedCapsuleT<S>>;
|
|
73
|
+
|
|
74
|
+
using CollisionGeometry = CollisionGeometryT<float>;
|
|
75
|
+
using CollisionGeometryd = CollisionGeometryT<double>;
|
|
76
|
+
|
|
77
|
+
MOMENTUM_DEFINE_POINTERS(CollisionGeometry)
|
|
78
|
+
MOMENTUM_DEFINE_POINTERS(CollisionGeometryd)
|
|
79
|
+
|
|
80
|
+
} // namespace momentum
|
|
@@ -0,0 +1,130 @@
|
|
|
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/collision_geometry.h>
|
|
11
|
+
#include <momentum/character/fwd.h>
|
|
12
|
+
|
|
13
|
+
#include <axel/BoundingBox.h>
|
|
14
|
+
|
|
15
|
+
namespace momentum {
|
|
16
|
+
|
|
17
|
+
/// Represents collision geometry states using a Structure of Arrays (SoA) format.
|
|
18
|
+
template <typename T>
|
|
19
|
+
struct CollisionGeometryStateT {
|
|
20
|
+
// ASCII Art to visualize the capsule:
|
|
21
|
+
//
|
|
22
|
+
// ^
|
|
23
|
+
// :
|
|
24
|
+
// :________________________________________
|
|
25
|
+
// /: :\
|
|
26
|
+
// / : : \
|
|
27
|
+
// | :(origin) : |
|
|
28
|
+
// | O-------------(direction)--------------->:--|------------------> X-axis
|
|
29
|
+
// | : : |
|
|
30
|
+
// \ : (radius[0]) : / (radius[1])
|
|
31
|
+
// \:________________________________________:/
|
|
32
|
+
//
|
|
33
|
+
//
|
|
34
|
+
// Note: radius[0] and radius[1] can be different.
|
|
35
|
+
|
|
36
|
+
/// Capsule's origin in global coordinates.
|
|
37
|
+
std::vector<Vector3<T>> origin;
|
|
38
|
+
|
|
39
|
+
/// Capsule's direction vector (representing the X-axis) in global coordinates.
|
|
40
|
+
std::vector<Vector3<T>> direction;
|
|
41
|
+
|
|
42
|
+
/// Scaled radii of the capsule's endpoints.
|
|
43
|
+
std::vector<Vector2<T>> radius;
|
|
44
|
+
|
|
45
|
+
/// Signed difference between the capsule's radii (radius[1] - radius[0]).
|
|
46
|
+
std::vector<T> delta;
|
|
47
|
+
|
|
48
|
+
/// Updates the state based on a given skeleton state and collision geometry.
|
|
49
|
+
void update(const SkeletonStateT<T>& skeletonState, const CollisionGeometry& collisionGeometry);
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
/// Determines if two tapered capsules overlap.
|
|
53
|
+
///
|
|
54
|
+
/// @param originA Origin of the first capsule
|
|
55
|
+
/// @param directionA Direction vector of the first capsule
|
|
56
|
+
/// @param radiiA Radii at the endpoints of the first capsule
|
|
57
|
+
/// @param deltaA Difference between radii of the first capsule
|
|
58
|
+
/// @param originB Origin of the second capsule
|
|
59
|
+
/// @param directionB Direction vector of the second capsule
|
|
60
|
+
/// @param radiiB Radii at the endpoints of the second capsule
|
|
61
|
+
/// @param deltaB Difference between radii of the second capsule
|
|
62
|
+
/// @param outDistance Output parameter for the distance between the closest points
|
|
63
|
+
/// (normalized). No modification on return false.
|
|
64
|
+
/// @param outOverlap Output parameter for the overlap amount (positive if overlapping)
|
|
65
|
+
/// @return True if the capsules overlap, false otherwise
|
|
66
|
+
template <typename T>
|
|
67
|
+
bool overlaps(
|
|
68
|
+
const Vector3<T>& originA,
|
|
69
|
+
const Vector3<T>& directionA,
|
|
70
|
+
const Vector2<T>& radiiA,
|
|
71
|
+
T deltaA,
|
|
72
|
+
const Vector3<T>& originB,
|
|
73
|
+
const Vector3<T>& directionB,
|
|
74
|
+
const Vector2<T>& radiiB,
|
|
75
|
+
T deltaB,
|
|
76
|
+
T& outDistance,
|
|
77
|
+
Vector2<T>& outClosestPoints,
|
|
78
|
+
T& outOverlap) {
|
|
79
|
+
// Sum of the maximum radii of the tapered capsules
|
|
80
|
+
const T maxRadiiSum = radiiA.maxCoeff() + radiiB.maxCoeff();
|
|
81
|
+
|
|
82
|
+
// Determine the closest points on the segments of the tapered capsules
|
|
83
|
+
auto [success, closestDist, closestPoints] =
|
|
84
|
+
closestPointsOnSegments<T>(originA, directionA, originB, directionB, maxRadiiSum);
|
|
85
|
+
|
|
86
|
+
if (!success) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Store the closest points to the output argument
|
|
91
|
+
outClosestPoints = closestPoints;
|
|
92
|
+
|
|
93
|
+
// Calculate the radii at the closest points
|
|
94
|
+
const T radiusAtClosestPoints =
|
|
95
|
+
radiiA[0] + closestPoints[0] * deltaA + radiiB[0] + closestPoints[1] * deltaB;
|
|
96
|
+
|
|
97
|
+
// Determine the overlap and distance between the closest points
|
|
98
|
+
outOverlap = radiusAtClosestPoints - closestDist;
|
|
99
|
+
outDistance = closestDist;
|
|
100
|
+
|
|
101
|
+
// Check for overlap and sufficient proximity
|
|
102
|
+
return (outOverlap > T(0)) && (closestDist >= Eps<T>(1e-8, 1e-17));
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/// Updates an axis-aligned bounding box to encompass a tapered capsule.
|
|
106
|
+
///
|
|
107
|
+
/// @param aabb The bounding box to update
|
|
108
|
+
/// @param originA Origin of the capsule
|
|
109
|
+
/// @param direction Direction vector of the capsule
|
|
110
|
+
/// @param radii Radii at the endpoints of the capsule
|
|
111
|
+
template <typename T>
|
|
112
|
+
void updateAabb(
|
|
113
|
+
axel::BoundingBox<T>& aabb,
|
|
114
|
+
const Vector3<T>& originA,
|
|
115
|
+
const Vector3<T>& direction,
|
|
116
|
+
const Vector2<T>& radii) {
|
|
117
|
+
const Vector3<T> radius0 = Vector3<T>::Constant(radii[0]);
|
|
118
|
+
const Vector3<T> radius1 = Vector3<T>::Constant(radii[1]);
|
|
119
|
+
const Vector3<T> originB = originA + direction;
|
|
120
|
+
|
|
121
|
+
const Vector3<T> minA = originA - radius0;
|
|
122
|
+
const Vector3<T> maxA = originA + radius0;
|
|
123
|
+
const Vector3<T> minB = originB - radius1;
|
|
124
|
+
const Vector3<T> maxB = originB + radius1;
|
|
125
|
+
|
|
126
|
+
aabb.aabb.min() = minA.cwiseMin(minB);
|
|
127
|
+
aabb.aabb.max() = maxA.cwiseMax(maxB);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
} // namespace momentum
|