pymomentum-cpu 0.1.84.post0__cp313-cp313-macosx_14_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pymomentum-cpu might be problematic. Click here for more details.
- include/axel/BoundingBox.h +59 -0
- include/axel/Bvh.h +708 -0
- include/axel/BvhBase.h +75 -0
- include/axel/BvhCommon.h +43 -0
- include/axel/BvhEmbree.h +86 -0
- include/axel/BvhFactory.h +34 -0
- include/axel/Checks.h +21 -0
- include/axel/DualContouring.h +79 -0
- include/axel/KdTree.h +199 -0
- include/axel/Log.h +22 -0
- include/axel/MeshToSdf.h +123 -0
- include/axel/Profile.h +64 -0
- include/axel/Ray.h +45 -0
- include/axel/SignedDistanceField.h +248 -0
- include/axel/SimdKdTree.h +515 -0
- include/axel/TriBvh.h +157 -0
- include/axel/TriBvhEmbree.h +57 -0
- include/axel/common/Constants.h +27 -0
- include/axel/common/Types.h +21 -0
- include/axel/common/VectorizationTypes.h +58 -0
- include/axel/math/BoundingBoxUtils.h +54 -0
- include/axel/math/ContinuousCollisionDetection.h +48 -0
- include/axel/math/CoplanarityCheck.h +30 -0
- include/axel/math/EdgeEdgeDistance.h +31 -0
- include/axel/math/MeshHoleFilling.h +117 -0
- include/axel/math/PointTriangleProjection.h +34 -0
- include/axel/math/PointTriangleProjectionDefinitions.h +209 -0
- include/axel/math/RayTriangleIntersection.h +36 -0
- include/momentum/character/blend_shape.h +91 -0
- include/momentum/character/blend_shape_base.h +70 -0
- include/momentum/character/blend_shape_skinning.h +96 -0
- include/momentum/character/character.h +272 -0
- include/momentum/character/character_state.h +108 -0
- include/momentum/character/character_utility.h +128 -0
- include/momentum/character/collision_geometry.h +80 -0
- include/momentum/character/collision_geometry_state.h +130 -0
- include/momentum/character/fwd.h +262 -0
- include/momentum/character/inverse_parameter_transform.h +58 -0
- include/momentum/character/joint.h +82 -0
- include/momentum/character/joint_state.h +241 -0
- include/momentum/character/linear_skinning.h +139 -0
- include/momentum/character/locator.h +82 -0
- include/momentum/character/locator_state.h +43 -0
- include/momentum/character/marker.h +48 -0
- include/momentum/character/mesh_state.h +71 -0
- include/momentum/character/parameter_limits.h +144 -0
- include/momentum/character/parameter_transform.h +250 -0
- include/momentum/character/pose_shape.h +65 -0
- include/momentum/character/skeleton.h +85 -0
- include/momentum/character/skeleton_state.h +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 +144 -0
- include/momentum/character_sequence_solver/sequence_solver_function.h +134 -0
- include/momentum/character_sequence_solver/state_sequence_error_function.h +109 -0
- include/momentum/character_sequence_solver/vertex_sequence_error_function.h +123 -0
- include/momentum/character_solver/aim_error_function.h +112 -0
- include/momentum/character_solver/collision_error_function.h +92 -0
- include/momentum/character_solver/collision_error_function_stateless.h +75 -0
- include/momentum/character_solver/constraint_error_function-inl.h +324 -0
- include/momentum/character_solver/constraint_error_function.h +248 -0
- include/momentum/character_solver/distance_error_function.h +77 -0
- include/momentum/character_solver/error_function_utils.h +60 -0
- include/momentum/character_solver/fixed_axis_error_function.h +139 -0
- include/momentum/character_solver/fwd.h +924 -0
- include/momentum/character_solver/gauss_newton_solver_qr.h +64 -0
- include/momentum/character_solver/limit_error_function.h +57 -0
- include/momentum/character_solver/model_parameters_error_function.h +64 -0
- include/momentum/character_solver/normal_error_function.h +73 -0
- include/momentum/character_solver/orientation_error_function.h +74 -0
- include/momentum/character_solver/plane_error_function.h +102 -0
- include/momentum/character_solver/point_triangle_vertex_error_function.h +141 -0
- include/momentum/character_solver/pose_prior_error_function.h +80 -0
- include/momentum/character_solver/position_error_function.h +75 -0
- include/momentum/character_solver/projection_error_function.h +93 -0
- include/momentum/character_solver/simd_collision_error_function.h +99 -0
- include/momentum/character_solver/simd_normal_error_function.h +157 -0
- include/momentum/character_solver/simd_plane_error_function.h +164 -0
- include/momentum/character_solver/simd_position_error_function.h +165 -0
- include/momentum/character_solver/skeleton_error_function.h +151 -0
- include/momentum/character_solver/skeleton_solver_function.h +94 -0
- include/momentum/character_solver/skinned_locator_error_function.h +166 -0
- include/momentum/character_solver/skinned_locator_triangle_error_function.h +146 -0
- include/momentum/character_solver/skinning_weight_iterator.h +80 -0
- include/momentum/character_solver/state_error_function.h +94 -0
- include/momentum/character_solver/transform_pose.h +80 -0
- include/momentum/character_solver/trust_region_qr.h +80 -0
- include/momentum/character_solver/vertex_error_function.h +155 -0
- include/momentum/character_solver/vertex_projection_error_function.h +117 -0
- include/momentum/character_solver/vertex_vertex_distance_error_function.h +147 -0
- include/momentum/common/aligned.h +155 -0
- include/momentum/common/checks.h +27 -0
- include/momentum/common/exception.h +70 -0
- include/momentum/common/filesystem.h +20 -0
- include/momentum/common/fwd.h +27 -0
- include/momentum/common/log.h +173 -0
- include/momentum/common/log_channel.h +17 -0
- include/momentum/common/memory.h +71 -0
- include/momentum/common/profile.h +79 -0
- include/momentum/common/progress_bar.h +37 -0
- include/momentum/common/string.h +52 -0
- include/momentum/diff_ik/ceres_utility.h +73 -0
- include/momentum/diff_ik/fully_differentiable_body_ik.h +58 -0
- include/momentum/diff_ik/fully_differentiable_distance_error_function.h +69 -0
- include/momentum/diff_ik/fully_differentiable_motion_error_function.h +46 -0
- include/momentum/diff_ik/fully_differentiable_orientation_error_function.h +114 -0
- include/momentum/diff_ik/fully_differentiable_pose_prior_error_function.h +76 -0
- include/momentum/diff_ik/fully_differentiable_position_error_function.h +138 -0
- include/momentum/diff_ik/fully_differentiable_projection_error_function.h +65 -0
- include/momentum/diff_ik/fully_differentiable_skeleton_error_function.h +160 -0
- include/momentum/diff_ik/fully_differentiable_state_error_function.h +54 -0
- include/momentum/diff_ik/fwd.h +385 -0
- include/momentum/diff_ik/union_error_function.h +67 -0
- include/momentum/gui/rerun/eigen_adapters.h +70 -0
- include/momentum/gui/rerun/logger.h +102 -0
- include/momentum/gui/rerun/logging_redirect.h +27 -0
- include/momentum/io/character_io.h +56 -0
- include/momentum/io/common/gsl_utils.h +50 -0
- include/momentum/io/common/stream_utils.h +65 -0
- include/momentum/io/fbx/fbx_io.h +161 -0
- include/momentum/io/fbx/fbx_memory_stream.h +66 -0
- include/momentum/io/fbx/openfbx_loader.h +62 -0
- include/momentum/io/fbx/polygon_data.h +60 -0
- include/momentum/io/gltf/gltf_builder.h +132 -0
- include/momentum/io/gltf/gltf_file_format.h +19 -0
- include/momentum/io/gltf/gltf_io.h +148 -0
- include/momentum/io/gltf/utils/accessor_utils.h +299 -0
- include/momentum/io/gltf/utils/coordinate_utils.h +60 -0
- include/momentum/io/gltf/utils/json_utils.h +102 -0
- include/momentum/io/legacy_json/legacy_json_io.h +70 -0
- include/momentum/io/marker/c3d_io.h +30 -0
- include/momentum/io/marker/conversions.h +57 -0
- include/momentum/io/marker/coordinate_system.h +30 -0
- include/momentum/io/marker/marker_io.h +56 -0
- include/momentum/io/marker/trc_io.h +27 -0
- include/momentum/io/motion/mmo_io.h +97 -0
- include/momentum/io/shape/blend_shape_io.h +70 -0
- include/momentum/io/shape/pose_shape_io.h +21 -0
- include/momentum/io/skeleton/locator_io.h +41 -0
- include/momentum/io/skeleton/mppca_io.h +26 -0
- include/momentum/io/skeleton/parameter_limits_io.h +25 -0
- include/momentum/io/skeleton/parameter_transform_io.h +41 -0
- include/momentum/io/skeleton/parameters_io.h +20 -0
- include/momentum/io/urdf/urdf_io.h +26 -0
- include/momentum/io/usd/usd_io.h +36 -0
- include/momentum/marker_tracking/app_utils.h +62 -0
- include/momentum/marker_tracking/marker_tracker.h +213 -0
- include/momentum/marker_tracking/process_markers.h +58 -0
- include/momentum/marker_tracking/tracker_utils.h +90 -0
- include/momentum/math/constants.h +82 -0
- include/momentum/math/covariance_matrix.h +84 -0
- include/momentum/math/fmt_eigen.h +23 -0
- include/momentum/math/fwd.h +132 -0
- include/momentum/math/generalized_loss.h +61 -0
- include/momentum/math/intersection.h +32 -0
- include/momentum/math/mesh.h +84 -0
- include/momentum/math/mppca.h +67 -0
- include/momentum/math/online_householder_qr.h +516 -0
- include/momentum/math/random-inl.h +404 -0
- include/momentum/math/random.h +310 -0
- include/momentum/math/simd_generalized_loss.h +40 -0
- include/momentum/math/transform.h +229 -0
- include/momentum/math/types.h +461 -0
- include/momentum/math/utility.h +282 -0
- include/momentum/rasterizer/camera.h +453 -0
- include/momentum/rasterizer/fwd.h +102 -0
- include/momentum/rasterizer/geometry.h +83 -0
- include/momentum/rasterizer/image.h +18 -0
- include/momentum/rasterizer/rasterizer.h +583 -0
- include/momentum/rasterizer/tensor.h +140 -0
- include/momentum/rasterizer/utility.h +268 -0
- include/momentum/simd/simd.h +221 -0
- include/momentum/solver/fwd.h +131 -0
- include/momentum/solver/gauss_newton_solver.h +136 -0
- include/momentum/solver/gradient_descent_solver.h +65 -0
- include/momentum/solver/solver.h +155 -0
- include/momentum/solver/solver_function.h +126 -0
- include/momentum/solver/subset_gauss_newton_solver.h +109 -0
- include/rerun/archetypes/annotation_context.hpp +157 -0
- include/rerun/archetypes/arrows2d.hpp +271 -0
- include/rerun/archetypes/arrows3d.hpp +257 -0
- include/rerun/archetypes/asset3d.hpp +262 -0
- include/rerun/archetypes/asset_video.hpp +275 -0
- include/rerun/archetypes/bar_chart.hpp +261 -0
- include/rerun/archetypes/boxes2d.hpp +293 -0
- include/rerun/archetypes/boxes3d.hpp +369 -0
- include/rerun/archetypes/capsules3d.hpp +333 -0
- include/rerun/archetypes/clear.hpp +180 -0
- include/rerun/archetypes/depth_image.hpp +425 -0
- include/rerun/archetypes/ellipsoids3d.hpp +384 -0
- include/rerun/archetypes/encoded_image.hpp +250 -0
- include/rerun/archetypes/geo_line_strings.hpp +166 -0
- include/rerun/archetypes/geo_points.hpp +177 -0
- include/rerun/archetypes/graph_edges.hpp +152 -0
- include/rerun/archetypes/graph_nodes.hpp +206 -0
- include/rerun/archetypes/image.hpp +434 -0
- include/rerun/archetypes/instance_poses3d.hpp +221 -0
- include/rerun/archetypes/line_strips2d.hpp +289 -0
- include/rerun/archetypes/line_strips3d.hpp +270 -0
- include/rerun/archetypes/mesh3d.hpp +387 -0
- include/rerun/archetypes/pinhole.hpp +385 -0
- include/rerun/archetypes/points2d.hpp +333 -0
- include/rerun/archetypes/points3d.hpp +369 -0
- include/rerun/archetypes/recording_properties.hpp +132 -0
- include/rerun/archetypes/scalar.hpp +170 -0
- include/rerun/archetypes/scalars.hpp +153 -0
- include/rerun/archetypes/segmentation_image.hpp +305 -0
- include/rerun/archetypes/series_line.hpp +274 -0
- include/rerun/archetypes/series_lines.hpp +271 -0
- include/rerun/archetypes/series_point.hpp +265 -0
- include/rerun/archetypes/series_points.hpp +251 -0
- include/rerun/archetypes/tensor.hpp +213 -0
- include/rerun/archetypes/text_document.hpp +200 -0
- include/rerun/archetypes/text_log.hpp +211 -0
- include/rerun/archetypes/transform3d.hpp +925 -0
- include/rerun/archetypes/video_frame_reference.hpp +295 -0
- include/rerun/archetypes/view_coordinates.hpp +393 -0
- include/rerun/archetypes.hpp +43 -0
- include/rerun/arrow_utils.hpp +32 -0
- include/rerun/as_components.hpp +90 -0
- include/rerun/blueprint/archetypes/background.hpp +113 -0
- include/rerun/blueprint/archetypes/container_blueprint.hpp +259 -0
- include/rerun/blueprint/archetypes/dataframe_query.hpp +178 -0
- include/rerun/blueprint/archetypes/entity_behavior.hpp +130 -0
- include/rerun/blueprint/archetypes/force_center.hpp +115 -0
- include/rerun/blueprint/archetypes/force_collision_radius.hpp +141 -0
- include/rerun/blueprint/archetypes/force_link.hpp +136 -0
- include/rerun/blueprint/archetypes/force_many_body.hpp +124 -0
- include/rerun/blueprint/archetypes/force_position.hpp +132 -0
- include/rerun/blueprint/archetypes/line_grid3d.hpp +178 -0
- include/rerun/blueprint/archetypes/map_background.hpp +104 -0
- include/rerun/blueprint/archetypes/map_zoom.hpp +103 -0
- include/rerun/blueprint/archetypes/near_clip_plane.hpp +109 -0
- include/rerun/blueprint/archetypes/panel_blueprint.hpp +95 -0
- include/rerun/blueprint/archetypes/plot_legend.hpp +118 -0
- include/rerun/blueprint/archetypes/scalar_axis.hpp +116 -0
- include/rerun/blueprint/archetypes/tensor_scalar_mapping.hpp +146 -0
- include/rerun/blueprint/archetypes/tensor_slice_selection.hpp +167 -0
- include/rerun/blueprint/archetypes/tensor_view_fit.hpp +95 -0
- include/rerun/blueprint/archetypes/view_blueprint.hpp +170 -0
- include/rerun/blueprint/archetypes/view_contents.hpp +142 -0
- include/rerun/blueprint/archetypes/viewport_blueprint.hpp +200 -0
- include/rerun/blueprint/archetypes/visible_time_ranges.hpp +116 -0
- include/rerun/blueprint/archetypes/visual_bounds2d.hpp +109 -0
- include/rerun/blueprint/archetypes/visualizer_overrides.hpp +113 -0
- include/rerun/blueprint/archetypes.hpp +29 -0
- include/rerun/blueprint/components/active_tab.hpp +82 -0
- include/rerun/blueprint/components/apply_latest_at.hpp +79 -0
- include/rerun/blueprint/components/auto_layout.hpp +77 -0
- include/rerun/blueprint/components/auto_views.hpp +77 -0
- include/rerun/blueprint/components/background_kind.hpp +66 -0
- include/rerun/blueprint/components/column_share.hpp +78 -0
- include/rerun/blueprint/components/component_column_selector.hpp +81 -0
- include/rerun/blueprint/components/container_kind.hpp +65 -0
- include/rerun/blueprint/components/corner2d.hpp +64 -0
- include/rerun/blueprint/components/enabled.hpp +77 -0
- include/rerun/blueprint/components/filter_by_range.hpp +74 -0
- include/rerun/blueprint/components/filter_is_not_null.hpp +77 -0
- include/rerun/blueprint/components/force_distance.hpp +82 -0
- include/rerun/blueprint/components/force_iterations.hpp +82 -0
- include/rerun/blueprint/components/force_strength.hpp +82 -0
- include/rerun/blueprint/components/grid_columns.hpp +78 -0
- include/rerun/blueprint/components/grid_spacing.hpp +78 -0
- include/rerun/blueprint/components/included_content.hpp +86 -0
- include/rerun/blueprint/components/lock_range_during_zoom.hpp +82 -0
- include/rerun/blueprint/components/map_provider.hpp +64 -0
- include/rerun/blueprint/components/near_clip_plane.hpp +82 -0
- include/rerun/blueprint/components/panel_state.hpp +61 -0
- include/rerun/blueprint/components/query_expression.hpp +89 -0
- include/rerun/blueprint/components/root_container.hpp +77 -0
- include/rerun/blueprint/components/row_share.hpp +78 -0
- include/rerun/blueprint/components/selected_columns.hpp +76 -0
- include/rerun/blueprint/components/tensor_dimension_index_slider.hpp +90 -0
- include/rerun/blueprint/components/timeline_name.hpp +76 -0
- include/rerun/blueprint/components/view_class.hpp +76 -0
- include/rerun/blueprint/components/view_fit.hpp +61 -0
- include/rerun/blueprint/components/view_maximized.hpp +79 -0
- include/rerun/blueprint/components/view_origin.hpp +81 -0
- include/rerun/blueprint/components/viewer_recommendation_hash.hpp +82 -0
- include/rerun/blueprint/components/visible_time_range.hpp +77 -0
- include/rerun/blueprint/components/visual_bounds2d.hpp +74 -0
- include/rerun/blueprint/components/visualizer_override.hpp +86 -0
- include/rerun/blueprint/components/zoom_level.hpp +78 -0
- include/rerun/blueprint/components.hpp +41 -0
- include/rerun/blueprint/datatypes/component_column_selector.hpp +61 -0
- include/rerun/blueprint/datatypes/filter_by_range.hpp +59 -0
- include/rerun/blueprint/datatypes/filter_is_not_null.hpp +61 -0
- include/rerun/blueprint/datatypes/selected_columns.hpp +62 -0
- include/rerun/blueprint/datatypes/tensor_dimension_index_slider.hpp +63 -0
- include/rerun/blueprint/datatypes.hpp +9 -0
- include/rerun/c/arrow_c_data_interface.h +111 -0
- include/rerun/c/compiler_utils.h +10 -0
- include/rerun/c/rerun.h +627 -0
- include/rerun/c/sdk_info.h +28 -0
- include/rerun/collection.hpp +496 -0
- include/rerun/collection_adapter.hpp +43 -0
- include/rerun/collection_adapter_builtins.hpp +138 -0
- include/rerun/compiler_utils.hpp +61 -0
- include/rerun/component_batch.hpp +163 -0
- include/rerun/component_column.hpp +111 -0
- include/rerun/component_descriptor.hpp +142 -0
- include/rerun/component_type.hpp +35 -0
- include/rerun/components/aggregation_policy.hpp +76 -0
- include/rerun/components/albedo_factor.hpp +74 -0
- include/rerun/components/annotation_context.hpp +102 -0
- include/rerun/components/axis_length.hpp +74 -0
- include/rerun/components/blob.hpp +73 -0
- include/rerun/components/class_id.hpp +71 -0
- include/rerun/components/clear_is_recursive.hpp +75 -0
- include/rerun/components/color.hpp +99 -0
- include/rerun/components/colormap.hpp +99 -0
- include/rerun/components/depth_meter.hpp +84 -0
- include/rerun/components/draw_order.hpp +79 -0
- include/rerun/components/entity_path.hpp +83 -0
- include/rerun/components/fill_mode.hpp +72 -0
- include/rerun/components/fill_ratio.hpp +79 -0
- include/rerun/components/gamma_correction.hpp +80 -0
- include/rerun/components/geo_line_string.hpp +63 -0
- include/rerun/components/graph_edge.hpp +75 -0
- include/rerun/components/graph_node.hpp +79 -0
- include/rerun/components/graph_type.hpp +57 -0
- include/rerun/components/half_size2d.hpp +91 -0
- include/rerun/components/half_size3d.hpp +95 -0
- include/rerun/components/image_buffer.hpp +86 -0
- include/rerun/components/image_format.hpp +84 -0
- include/rerun/components/image_plane_distance.hpp +77 -0
- include/rerun/components/interactive.hpp +76 -0
- include/rerun/components/keypoint_id.hpp +74 -0
- include/rerun/components/lat_lon.hpp +89 -0
- include/rerun/components/length.hpp +77 -0
- include/rerun/components/line_strip2d.hpp +73 -0
- include/rerun/components/line_strip3d.hpp +73 -0
- include/rerun/components/magnification_filter.hpp +63 -0
- include/rerun/components/marker_shape.hpp +82 -0
- include/rerun/components/marker_size.hpp +74 -0
- include/rerun/components/media_type.hpp +157 -0
- include/rerun/components/name.hpp +83 -0
- include/rerun/components/opacity.hpp +77 -0
- include/rerun/components/pinhole_projection.hpp +94 -0
- include/rerun/components/plane3d.hpp +75 -0
- include/rerun/components/pose_rotation_axis_angle.hpp +73 -0
- include/rerun/components/pose_rotation_quat.hpp +71 -0
- include/rerun/components/pose_scale3d.hpp +102 -0
- include/rerun/components/pose_transform_mat3x3.hpp +87 -0
- include/rerun/components/pose_translation3d.hpp +96 -0
- include/rerun/components/position2d.hpp +86 -0
- include/rerun/components/position3d.hpp +90 -0
- include/rerun/components/radius.hpp +98 -0
- include/rerun/components/range1d.hpp +75 -0
- include/rerun/components/resolution.hpp +88 -0
- include/rerun/components/rotation_axis_angle.hpp +72 -0
- include/rerun/components/rotation_quat.hpp +71 -0
- include/rerun/components/scalar.hpp +76 -0
- include/rerun/components/scale3d.hpp +102 -0
- include/rerun/components/series_visible.hpp +76 -0
- include/rerun/components/show_labels.hpp +79 -0
- include/rerun/components/stroke_width.hpp +74 -0
- include/rerun/components/tensor_data.hpp +94 -0
- include/rerun/components/tensor_dimension_index_selection.hpp +77 -0
- include/rerun/components/tensor_height_dimension.hpp +71 -0
- include/rerun/components/tensor_width_dimension.hpp +71 -0
- include/rerun/components/texcoord2d.hpp +101 -0
- include/rerun/components/text.hpp +83 -0
- include/rerun/components/text_log_level.hpp +110 -0
- include/rerun/components/timestamp.hpp +76 -0
- include/rerun/components/transform_mat3x3.hpp +92 -0
- include/rerun/components/transform_relation.hpp +66 -0
- include/rerun/components/translation3d.hpp +96 -0
- include/rerun/components/triangle_indices.hpp +85 -0
- include/rerun/components/value_range.hpp +78 -0
- include/rerun/components/vector2d.hpp +92 -0
- include/rerun/components/vector3d.hpp +96 -0
- include/rerun/components/video_timestamp.hpp +120 -0
- include/rerun/components/view_coordinates.hpp +346 -0
- include/rerun/components/visible.hpp +74 -0
- include/rerun/components.hpp +77 -0
- include/rerun/config.hpp +52 -0
- include/rerun/datatypes/angle.hpp +76 -0
- include/rerun/datatypes/annotation_info.hpp +76 -0
- include/rerun/datatypes/blob.hpp +67 -0
- include/rerun/datatypes/bool.hpp +57 -0
- include/rerun/datatypes/channel_datatype.hpp +87 -0
- include/rerun/datatypes/class_description.hpp +92 -0
- include/rerun/datatypes/class_description_map_elem.hpp +69 -0
- include/rerun/datatypes/class_id.hpp +62 -0
- include/rerun/datatypes/color_model.hpp +68 -0
- include/rerun/datatypes/dvec2d.hpp +76 -0
- include/rerun/datatypes/entity_path.hpp +60 -0
- include/rerun/datatypes/float32.hpp +62 -0
- include/rerun/datatypes/float64.hpp +62 -0
- include/rerun/datatypes/image_format.hpp +107 -0
- include/rerun/datatypes/keypoint_id.hpp +63 -0
- include/rerun/datatypes/keypoint_pair.hpp +65 -0
- include/rerun/datatypes/mat3x3.hpp +105 -0
- include/rerun/datatypes/mat4x4.hpp +119 -0
- include/rerun/datatypes/pixel_format.hpp +142 -0
- include/rerun/datatypes/plane3d.hpp +60 -0
- include/rerun/datatypes/quaternion.hpp +110 -0
- include/rerun/datatypes/range1d.hpp +59 -0
- include/rerun/datatypes/range2d.hpp +55 -0
- include/rerun/datatypes/rgba32.hpp +94 -0
- include/rerun/datatypes/rotation_axis_angle.hpp +67 -0
- include/rerun/datatypes/tensor_buffer.hpp +529 -0
- include/rerun/datatypes/tensor_data.hpp +100 -0
- include/rerun/datatypes/tensor_dimension_index_selection.hpp +58 -0
- include/rerun/datatypes/tensor_dimension_selection.hpp +56 -0
- include/rerun/datatypes/time_int.hpp +62 -0
- include/rerun/datatypes/time_range.hpp +55 -0
- include/rerun/datatypes/time_range_boundary.hpp +175 -0
- include/rerun/datatypes/uint16.hpp +62 -0
- include/rerun/datatypes/uint32.hpp +62 -0
- include/rerun/datatypes/uint64.hpp +62 -0
- include/rerun/datatypes/utf8.hpp +76 -0
- include/rerun/datatypes/utf8pair.hpp +62 -0
- include/rerun/datatypes/uuid.hpp +60 -0
- include/rerun/datatypes/uvec2d.hpp +76 -0
- include/rerun/datatypes/uvec3d.hpp +80 -0
- include/rerun/datatypes/uvec4d.hpp +59 -0
- include/rerun/datatypes/vec2d.hpp +76 -0
- include/rerun/datatypes/vec3d.hpp +80 -0
- include/rerun/datatypes/vec4d.hpp +84 -0
- include/rerun/datatypes/video_timestamp.hpp +67 -0
- include/rerun/datatypes/view_coordinates.hpp +87 -0
- include/rerun/datatypes/visible_time_range.hpp +57 -0
- include/rerun/datatypes.hpp +51 -0
- include/rerun/demo_utils.hpp +75 -0
- include/rerun/entity_path.hpp +20 -0
- include/rerun/error.hpp +180 -0
- include/rerun/half.hpp +10 -0
- include/rerun/image_utils.hpp +187 -0
- include/rerun/indicator_component.hpp +59 -0
- include/rerun/loggable.hpp +54 -0
- include/rerun/recording_stream.hpp +960 -0
- include/rerun/rerun_sdk_export.hpp +25 -0
- include/rerun/result.hpp +86 -0
- include/rerun/rotation3d.hpp +33 -0
- include/rerun/sdk_info.hpp +20 -0
- include/rerun/spawn.hpp +21 -0
- include/rerun/spawn_options.hpp +57 -0
- include/rerun/string_utils.hpp +16 -0
- include/rerun/third_party/cxxopts.hpp +2198 -0
- include/rerun/time_column.hpp +288 -0
- include/rerun/timeline.hpp +38 -0
- include/rerun/type_traits.hpp +40 -0
- include/rerun.hpp +86 -0
- lib/cmake/axel/axel-config.cmake +45 -0
- lib/cmake/axel/axelTargets-release.cmake +19 -0
- lib/cmake/axel/axelTargets.cmake +108 -0
- lib/cmake/momentum/Findre2.cmake +52 -0
- lib/cmake/momentum/momentum-config.cmake +67 -0
- lib/cmake/momentum/momentumTargets-release.cmake +259 -0
- lib/cmake/momentum/momentumTargets.cmake +377 -0
- lib/cmake/rerun_sdk/rerun_sdkConfig.cmake +70 -0
- lib/cmake/rerun_sdk/rerun_sdkConfigVersion.cmake +83 -0
- lib/cmake/rerun_sdk/rerun_sdkTargets-release.cmake +19 -0
- lib/cmake/rerun_sdk/rerun_sdkTargets.cmake +108 -0
- lib/libarrow.a +0 -0
- lib/libarrow_bundled_dependencies.a +0 -0
- lib/libaxel.a +0 -0
- lib/libmomentum_app_utils.a +0 -0
- lib/libmomentum_character.a +0 -0
- lib/libmomentum_character_sequence_solver.a +0 -0
- lib/libmomentum_character_solver.a +0 -0
- lib/libmomentum_common.a +0 -0
- lib/libmomentum_diff_ik.a +0 -0
- lib/libmomentum_io.a +0 -0
- lib/libmomentum_io_common.a +0 -0
- lib/libmomentum_io_fbx.a +0 -0
- lib/libmomentum_io_gltf.a +0 -0
- lib/libmomentum_io_legacy_json.a +0 -0
- lib/libmomentum_io_marker.a +0 -0
- lib/libmomentum_io_motion.a +0 -0
- lib/libmomentum_io_shape.a +0 -0
- lib/libmomentum_io_skeleton.a +0 -0
- lib/libmomentum_io_urdf.a +0 -0
- lib/libmomentum_marker_tracker.a +0 -0
- lib/libmomentum_math.a +0 -0
- lib/libmomentum_online_qr.a +0 -0
- lib/libmomentum_process_markers.a +0 -0
- lib/libmomentum_rerun.a +0 -0
- lib/libmomentum_simd_constraints.a +0 -0
- lib/libmomentum_simd_generalized_loss.a +0 -0
- lib/libmomentum_skeleton.a +0 -0
- lib/libmomentum_solver.a +0 -0
- lib/librerun_c__macos_arm64.a +0 -0
- lib/librerun_sdk.a +0 -0
- pymomentum/axel.cpython-313-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-313-darwin.so +0 -0
- pymomentum/marker_tracking.cpython-313-darwin.so +0 -0
- pymomentum/quaternion.py +740 -0
- pymomentum/skel_state.py +514 -0
- pymomentum/solver.cpython-313-darwin.so +0 -0
- pymomentum/solver2.cpython-313-darwin.so +0 -0
- pymomentum/torch/character.py +863 -0
- pymomentum/torch/parameter_limits.py +494 -0
- pymomentum/torch/utility.py +20 -0
- pymomentum/trs.py +535 -0
- pymomentum_cpu-0.1.84.post0.dist-info/METADATA +126 -0
- pymomentum_cpu-0.1.84.post0.dist-info/RECORD +512 -0
- pymomentum_cpu-0.1.84.post0.dist-info/WHEEL +5 -0
- pymomentum_cpu-0.1.84.post0.dist-info/licenses/LICENSE +21 -0
|
@@ -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
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// This file is @generated by gen_fwd.py
|
|
9
|
+
// Do not edit this file directly, instead update gen_fwd_input.toml and run:
|
|
10
|
+
// buck run @arvr/mode/platform010/opt //arvr/libraries/momentum:gen_fwd
|
|
11
|
+
|
|
12
|
+
#pragma once
|
|
13
|
+
|
|
14
|
+
#include <memory>
|
|
15
|
+
|
|
16
|
+
namespace momentum {
|
|
17
|
+
|
|
18
|
+
struct BlendShape;
|
|
19
|
+
|
|
20
|
+
using BlendShape_p = ::std::shared_ptr<BlendShape>;
|
|
21
|
+
using BlendShape_u = ::std::unique_ptr<BlendShape>;
|
|
22
|
+
using BlendShape_w = ::std::weak_ptr<BlendShape>;
|
|
23
|
+
using BlendShape_const_p = ::std::shared_ptr<const BlendShape>;
|
|
24
|
+
using BlendShape_const_u = ::std::unique_ptr<const BlendShape>;
|
|
25
|
+
using BlendShape_const_w = ::std::weak_ptr<const BlendShape>;
|
|
26
|
+
|
|
27
|
+
struct BlendShapeBase;
|
|
28
|
+
|
|
29
|
+
using BlendShapeBase_p = ::std::shared_ptr<BlendShapeBase>;
|
|
30
|
+
using BlendShapeBase_u = ::std::unique_ptr<BlendShapeBase>;
|
|
31
|
+
using BlendShapeBase_w = ::std::weak_ptr<BlendShapeBase>;
|
|
32
|
+
using BlendShapeBase_const_p = ::std::shared_ptr<const BlendShapeBase>;
|
|
33
|
+
using BlendShapeBase_const_u = ::std::unique_ptr<const BlendShapeBase>;
|
|
34
|
+
using BlendShapeBase_const_w = ::std::weak_ptr<const BlendShapeBase>;
|
|
35
|
+
|
|
36
|
+
struct Locator;
|
|
37
|
+
|
|
38
|
+
using Locator_p = ::std::shared_ptr<Locator>;
|
|
39
|
+
using Locator_u = ::std::unique_ptr<Locator>;
|
|
40
|
+
using Locator_w = ::std::weak_ptr<Locator>;
|
|
41
|
+
using Locator_const_p = ::std::shared_ptr<const Locator>;
|
|
42
|
+
using Locator_const_u = ::std::unique_ptr<const Locator>;
|
|
43
|
+
using Locator_const_w = ::std::weak_ptr<const Locator>;
|
|
44
|
+
|
|
45
|
+
struct PoseShape;
|
|
46
|
+
|
|
47
|
+
using PoseShape_p = ::std::shared_ptr<PoseShape>;
|
|
48
|
+
using PoseShape_u = ::std::unique_ptr<PoseShape>;
|
|
49
|
+
using PoseShape_w = ::std::weak_ptr<PoseShape>;
|
|
50
|
+
using PoseShape_const_p = ::std::shared_ptr<const PoseShape>;
|
|
51
|
+
using PoseShape_const_u = ::std::unique_ptr<const PoseShape>;
|
|
52
|
+
using PoseShape_const_w = ::std::weak_ptr<const PoseShape>;
|
|
53
|
+
|
|
54
|
+
struct SkinWeights;
|
|
55
|
+
|
|
56
|
+
using SkinWeights_p = ::std::shared_ptr<SkinWeights>;
|
|
57
|
+
using SkinWeights_u = ::std::unique_ptr<SkinWeights>;
|
|
58
|
+
using SkinWeights_w = ::std::weak_ptr<SkinWeights>;
|
|
59
|
+
using SkinWeights_const_p = ::std::shared_ptr<const SkinWeights>;
|
|
60
|
+
using SkinWeights_const_u = ::std::unique_ptr<const SkinWeights>;
|
|
61
|
+
using SkinWeights_const_w = ::std::weak_ptr<const SkinWeights>;
|
|
62
|
+
|
|
63
|
+
struct SkinnedLocator;
|
|
64
|
+
|
|
65
|
+
using SkinnedLocator_p = ::std::shared_ptr<SkinnedLocator>;
|
|
66
|
+
using SkinnedLocator_u = ::std::unique_ptr<SkinnedLocator>;
|
|
67
|
+
using SkinnedLocator_w = ::std::weak_ptr<SkinnedLocator>;
|
|
68
|
+
using SkinnedLocator_const_p = ::std::shared_ptr<const SkinnedLocator>;
|
|
69
|
+
using SkinnedLocator_const_u = ::std::unique_ptr<const SkinnedLocator>;
|
|
70
|
+
using SkinnedLocator_const_w = ::std::weak_ptr<const SkinnedLocator>;
|
|
71
|
+
|
|
72
|
+
template <typename T>
|
|
73
|
+
struct CharacterT;
|
|
74
|
+
using Character = CharacterT<float>;
|
|
75
|
+
using Characterd = CharacterT<double>;
|
|
76
|
+
|
|
77
|
+
using Character_p = ::std::shared_ptr<Character>;
|
|
78
|
+
using Character_u = ::std::unique_ptr<Character>;
|
|
79
|
+
using Character_w = ::std::weak_ptr<Character>;
|
|
80
|
+
using Character_const_p = ::std::shared_ptr<const Character>;
|
|
81
|
+
using Character_const_u = ::std::unique_ptr<const Character>;
|
|
82
|
+
using Character_const_w = ::std::weak_ptr<const Character>;
|
|
83
|
+
|
|
84
|
+
using Characterd_p = ::std::shared_ptr<Characterd>;
|
|
85
|
+
using Characterd_u = ::std::unique_ptr<Characterd>;
|
|
86
|
+
using Characterd_w = ::std::weak_ptr<Characterd>;
|
|
87
|
+
using Characterd_const_p = ::std::shared_ptr<const Characterd>;
|
|
88
|
+
using Characterd_const_u = ::std::unique_ptr<const Characterd>;
|
|
89
|
+
using Characterd_const_w = ::std::weak_ptr<const Characterd>;
|
|
90
|
+
|
|
91
|
+
template <typename T>
|
|
92
|
+
struct CharacterStateT;
|
|
93
|
+
using CharacterState = CharacterStateT<float>;
|
|
94
|
+
using CharacterStated = CharacterStateT<double>;
|
|
95
|
+
|
|
96
|
+
using CharacterState_p = ::std::shared_ptr<CharacterState>;
|
|
97
|
+
using CharacterState_u = ::std::unique_ptr<CharacterState>;
|
|
98
|
+
using CharacterState_w = ::std::weak_ptr<CharacterState>;
|
|
99
|
+
using CharacterState_const_p = ::std::shared_ptr<const CharacterState>;
|
|
100
|
+
using CharacterState_const_u = ::std::unique_ptr<const CharacterState>;
|
|
101
|
+
using CharacterState_const_w = ::std::weak_ptr<const CharacterState>;
|
|
102
|
+
|
|
103
|
+
using CharacterStated_p = ::std::shared_ptr<CharacterStated>;
|
|
104
|
+
using CharacterStated_u = ::std::unique_ptr<CharacterStated>;
|
|
105
|
+
using CharacterStated_w = ::std::weak_ptr<CharacterStated>;
|
|
106
|
+
using CharacterStated_const_p = ::std::shared_ptr<const CharacterStated>;
|
|
107
|
+
using CharacterStated_const_u = ::std::unique_ptr<const CharacterStated>;
|
|
108
|
+
using CharacterStated_const_w = ::std::weak_ptr<const CharacterStated>;
|
|
109
|
+
|
|
110
|
+
template <typename T>
|
|
111
|
+
struct CollisionGeometryStateT;
|
|
112
|
+
using CollisionGeometryState = CollisionGeometryStateT<float>;
|
|
113
|
+
using CollisionGeometryStated = CollisionGeometryStateT<double>;
|
|
114
|
+
|
|
115
|
+
using CollisionGeometryState_p = ::std::shared_ptr<CollisionGeometryState>;
|
|
116
|
+
using CollisionGeometryState_u = ::std::unique_ptr<CollisionGeometryState>;
|
|
117
|
+
using CollisionGeometryState_w = ::std::weak_ptr<CollisionGeometryState>;
|
|
118
|
+
using CollisionGeometryState_const_p = ::std::shared_ptr<const CollisionGeometryState>;
|
|
119
|
+
using CollisionGeometryState_const_u = ::std::unique_ptr<const CollisionGeometryState>;
|
|
120
|
+
using CollisionGeometryState_const_w = ::std::weak_ptr<const CollisionGeometryState>;
|
|
121
|
+
|
|
122
|
+
using CollisionGeometryStated_p = ::std::shared_ptr<CollisionGeometryStated>;
|
|
123
|
+
using CollisionGeometryStated_u = ::std::unique_ptr<CollisionGeometryStated>;
|
|
124
|
+
using CollisionGeometryStated_w = ::std::weak_ptr<CollisionGeometryStated>;
|
|
125
|
+
using CollisionGeometryStated_const_p = ::std::shared_ptr<const CollisionGeometryStated>;
|
|
126
|
+
using CollisionGeometryStated_const_u = ::std::unique_ptr<const CollisionGeometryStated>;
|
|
127
|
+
using CollisionGeometryStated_const_w = ::std::weak_ptr<const CollisionGeometryStated>;
|
|
128
|
+
|
|
129
|
+
template <typename T>
|
|
130
|
+
struct JointT;
|
|
131
|
+
using Joint = JointT<float>;
|
|
132
|
+
using Jointd = JointT<double>;
|
|
133
|
+
|
|
134
|
+
using Joint_p = ::std::shared_ptr<Joint>;
|
|
135
|
+
using Joint_u = ::std::unique_ptr<Joint>;
|
|
136
|
+
using Joint_w = ::std::weak_ptr<Joint>;
|
|
137
|
+
using Joint_const_p = ::std::shared_ptr<const Joint>;
|
|
138
|
+
using Joint_const_u = ::std::unique_ptr<const Joint>;
|
|
139
|
+
using Joint_const_w = ::std::weak_ptr<const Joint>;
|
|
140
|
+
|
|
141
|
+
using Jointd_p = ::std::shared_ptr<Jointd>;
|
|
142
|
+
using Jointd_u = ::std::unique_ptr<Jointd>;
|
|
143
|
+
using Jointd_w = ::std::weak_ptr<Jointd>;
|
|
144
|
+
using Jointd_const_p = ::std::shared_ptr<const Jointd>;
|
|
145
|
+
using Jointd_const_u = ::std::unique_ptr<const Jointd>;
|
|
146
|
+
using Jointd_const_w = ::std::weak_ptr<const Jointd>;
|
|
147
|
+
|
|
148
|
+
template <typename T>
|
|
149
|
+
struct JointStateT;
|
|
150
|
+
using JointState = JointStateT<float>;
|
|
151
|
+
using JointStated = JointStateT<double>;
|
|
152
|
+
|
|
153
|
+
using JointState_p = ::std::shared_ptr<JointState>;
|
|
154
|
+
using JointState_u = ::std::unique_ptr<JointState>;
|
|
155
|
+
using JointState_w = ::std::weak_ptr<JointState>;
|
|
156
|
+
using JointState_const_p = ::std::shared_ptr<const JointState>;
|
|
157
|
+
using JointState_const_u = ::std::unique_ptr<const JointState>;
|
|
158
|
+
using JointState_const_w = ::std::weak_ptr<const JointState>;
|
|
159
|
+
|
|
160
|
+
using JointStated_p = ::std::shared_ptr<JointStated>;
|
|
161
|
+
using JointStated_u = ::std::unique_ptr<JointStated>;
|
|
162
|
+
using JointStated_w = ::std::weak_ptr<JointStated>;
|
|
163
|
+
using JointStated_const_p = ::std::shared_ptr<const JointStated>;
|
|
164
|
+
using JointStated_const_u = ::std::unique_ptr<const JointStated>;
|
|
165
|
+
using JointStated_const_w = ::std::weak_ptr<const JointStated>;
|
|
166
|
+
|
|
167
|
+
template <typename T>
|
|
168
|
+
struct ParameterTransformT;
|
|
169
|
+
using ParameterTransform = ParameterTransformT<float>;
|
|
170
|
+
using ParameterTransformd = ParameterTransformT<double>;
|
|
171
|
+
|
|
172
|
+
using ParameterTransform_p = ::std::shared_ptr<ParameterTransform>;
|
|
173
|
+
using ParameterTransform_u = ::std::unique_ptr<ParameterTransform>;
|
|
174
|
+
using ParameterTransform_w = ::std::weak_ptr<ParameterTransform>;
|
|
175
|
+
using ParameterTransform_const_p = ::std::shared_ptr<const ParameterTransform>;
|
|
176
|
+
using ParameterTransform_const_u = ::std::unique_ptr<const ParameterTransform>;
|
|
177
|
+
using ParameterTransform_const_w = ::std::weak_ptr<const ParameterTransform>;
|
|
178
|
+
|
|
179
|
+
using ParameterTransformd_p = ::std::shared_ptr<ParameterTransformd>;
|
|
180
|
+
using ParameterTransformd_u = ::std::unique_ptr<ParameterTransformd>;
|
|
181
|
+
using ParameterTransformd_w = ::std::weak_ptr<ParameterTransformd>;
|
|
182
|
+
using ParameterTransformd_const_p = ::std::shared_ptr<const ParameterTransformd>;
|
|
183
|
+
using ParameterTransformd_const_u = ::std::unique_ptr<const ParameterTransformd>;
|
|
184
|
+
using ParameterTransformd_const_w = ::std::weak_ptr<const ParameterTransformd>;
|
|
185
|
+
|
|
186
|
+
template <typename T>
|
|
187
|
+
struct SkeletonT;
|
|
188
|
+
using Skeleton = SkeletonT<float>;
|
|
189
|
+
using Skeletond = SkeletonT<double>;
|
|
190
|
+
|
|
191
|
+
using Skeleton_p = ::std::shared_ptr<Skeleton>;
|
|
192
|
+
using Skeleton_u = ::std::unique_ptr<Skeleton>;
|
|
193
|
+
using Skeleton_w = ::std::weak_ptr<Skeleton>;
|
|
194
|
+
using Skeleton_const_p = ::std::shared_ptr<const Skeleton>;
|
|
195
|
+
using Skeleton_const_u = ::std::unique_ptr<const Skeleton>;
|
|
196
|
+
using Skeleton_const_w = ::std::weak_ptr<const Skeleton>;
|
|
197
|
+
|
|
198
|
+
using Skeletond_p = ::std::shared_ptr<Skeletond>;
|
|
199
|
+
using Skeletond_u = ::std::unique_ptr<Skeletond>;
|
|
200
|
+
using Skeletond_w = ::std::weak_ptr<Skeletond>;
|
|
201
|
+
using Skeletond_const_p = ::std::shared_ptr<const Skeletond>;
|
|
202
|
+
using Skeletond_const_u = ::std::unique_ptr<const Skeletond>;
|
|
203
|
+
using Skeletond_const_w = ::std::weak_ptr<const Skeletond>;
|
|
204
|
+
|
|
205
|
+
template <typename T>
|
|
206
|
+
struct SkeletonStateT;
|
|
207
|
+
using SkeletonState = SkeletonStateT<float>;
|
|
208
|
+
using SkeletonStated = SkeletonStateT<double>;
|
|
209
|
+
|
|
210
|
+
using SkeletonState_p = ::std::shared_ptr<SkeletonState>;
|
|
211
|
+
using SkeletonState_u = ::std::unique_ptr<SkeletonState>;
|
|
212
|
+
using SkeletonState_w = ::std::weak_ptr<SkeletonState>;
|
|
213
|
+
using SkeletonState_const_p = ::std::shared_ptr<const SkeletonState>;
|
|
214
|
+
using SkeletonState_const_u = ::std::unique_ptr<const SkeletonState>;
|
|
215
|
+
using SkeletonState_const_w = ::std::weak_ptr<const SkeletonState>;
|
|
216
|
+
|
|
217
|
+
using SkeletonStated_p = ::std::shared_ptr<SkeletonStated>;
|
|
218
|
+
using SkeletonStated_u = ::std::unique_ptr<SkeletonStated>;
|
|
219
|
+
using SkeletonStated_w = ::std::weak_ptr<SkeletonStated>;
|
|
220
|
+
using SkeletonStated_const_p = ::std::shared_ptr<const SkeletonStated>;
|
|
221
|
+
using SkeletonStated_const_u = ::std::unique_ptr<const SkeletonStated>;
|
|
222
|
+
using SkeletonStated_const_w = ::std::weak_ptr<const SkeletonStated>;
|
|
223
|
+
|
|
224
|
+
template <typename T>
|
|
225
|
+
struct MeshStateT;
|
|
226
|
+
using MeshState = MeshStateT<float>;
|
|
227
|
+
using MeshStated = MeshStateT<double>;
|
|
228
|
+
|
|
229
|
+
using MeshState_p = ::std::shared_ptr<MeshState>;
|
|
230
|
+
using MeshState_u = ::std::unique_ptr<MeshState>;
|
|
231
|
+
using MeshState_w = ::std::weak_ptr<MeshState>;
|
|
232
|
+
using MeshState_const_p = ::std::shared_ptr<const MeshState>;
|
|
233
|
+
using MeshState_const_u = ::std::unique_ptr<const MeshState>;
|
|
234
|
+
using MeshState_const_w = ::std::weak_ptr<const MeshState>;
|
|
235
|
+
|
|
236
|
+
using MeshStated_p = ::std::shared_ptr<MeshStated>;
|
|
237
|
+
using MeshStated_u = ::std::unique_ptr<MeshStated>;
|
|
238
|
+
using MeshStated_w = ::std::weak_ptr<MeshStated>;
|
|
239
|
+
using MeshStated_const_p = ::std::shared_ptr<const MeshStated>;
|
|
240
|
+
using MeshStated_const_u = ::std::unique_ptr<const MeshStated>;
|
|
241
|
+
using MeshStated_const_w = ::std::weak_ptr<const MeshStated>;
|
|
242
|
+
|
|
243
|
+
template <typename T>
|
|
244
|
+
struct TaperedCapsuleT;
|
|
245
|
+
using TaperedCapsule = TaperedCapsuleT<float>;
|
|
246
|
+
using TaperedCapsuled = TaperedCapsuleT<double>;
|
|
247
|
+
|
|
248
|
+
using TaperedCapsule_p = ::std::shared_ptr<TaperedCapsule>;
|
|
249
|
+
using TaperedCapsule_u = ::std::unique_ptr<TaperedCapsule>;
|
|
250
|
+
using TaperedCapsule_w = ::std::weak_ptr<TaperedCapsule>;
|
|
251
|
+
using TaperedCapsule_const_p = ::std::shared_ptr<const TaperedCapsule>;
|
|
252
|
+
using TaperedCapsule_const_u = ::std::unique_ptr<const TaperedCapsule>;
|
|
253
|
+
using TaperedCapsule_const_w = ::std::weak_ptr<const TaperedCapsule>;
|
|
254
|
+
|
|
255
|
+
using TaperedCapsuled_p = ::std::shared_ptr<TaperedCapsuled>;
|
|
256
|
+
using TaperedCapsuled_u = ::std::unique_ptr<TaperedCapsuled>;
|
|
257
|
+
using TaperedCapsuled_w = ::std::weak_ptr<TaperedCapsuled>;
|
|
258
|
+
using TaperedCapsuled_const_p = ::std::shared_ptr<const TaperedCapsuled>;
|
|
259
|
+
using TaperedCapsuled_const_u = ::std::unique_ptr<const TaperedCapsuled>;
|
|
260
|
+
using TaperedCapsuled_const_w = ::std::weak_ptr<const TaperedCapsuled>;
|
|
261
|
+
|
|
262
|
+
} // namespace momentum
|
|
@@ -0,0 +1,58 @@
|
|
|
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/types.h>
|
|
13
|
+
|
|
14
|
+
#include <Eigen/Sparse>
|
|
15
|
+
|
|
16
|
+
namespace momentum {
|
|
17
|
+
|
|
18
|
+
// Maps from joint parameters back to the model parameters. Because the joint
|
|
19
|
+
// parameters have a much higher dimensionality (7*nJoints) than the number of
|
|
20
|
+
// model parameters, in general we can't always find a set of model parameters
|
|
21
|
+
// that reproduce the passed-in joint parameters. Therefore, the mapping is
|
|
22
|
+
// done in a least squares sense: we find the model parameters that bring use
|
|
23
|
+
// closest to the passed-in joint parameters under L2.
|
|
24
|
+
//
|
|
25
|
+
// Note that this assumes the parameter transform is well-formed, in the sense
|
|
26
|
+
// that it has rank equal to the number of model parameters. Any sane
|
|
27
|
+
// parameter transform should have this property (if not, it would be possible
|
|
28
|
+
// to generate the same set of joint parameters with two different model
|
|
29
|
+
// parameter vectors).
|
|
30
|
+
|
|
31
|
+
template <typename T>
|
|
32
|
+
struct InverseParameterTransformT {
|
|
33
|
+
public:
|
|
34
|
+
const SparseRowMatrix<T> transform;
|
|
35
|
+
const Eigen::SparseQR<Eigen::SparseMatrix<T>, Eigen::COLAMDOrdering<int>> inverseTransform;
|
|
36
|
+
const Eigen::VectorX<T> offsets; // DEPRECATED: constant offset factor for each joint
|
|
37
|
+
|
|
38
|
+
explicit InverseParameterTransformT(const ParameterTransformT<T>& paramTransform);
|
|
39
|
+
|
|
40
|
+
// map joint parameters to model parameters. The residual from the fit is
|
|
41
|
+
// left in the result's offsets vector.
|
|
42
|
+
[[nodiscard]] CharacterParametersT<T> apply(const JointParametersT<T>& parameters) const;
|
|
43
|
+
|
|
44
|
+
// Dimension of the output model parameters vector:
|
|
45
|
+
[[nodiscard]] Eigen::Index numAllModelParameters() const {
|
|
46
|
+
return transform.cols();
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Dimension of the input joint parameters vector:
|
|
50
|
+
[[nodiscard]] Eigen::Index numJointParameters() const {
|
|
51
|
+
return transform.rows();
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
using InverseParameterTransform = InverseParameterTransformT<float>;
|
|
56
|
+
using InverseParameterTransformd = InverseParameterTransformT<double>;
|
|
57
|
+
|
|
58
|
+
} // namespace momentum
|