pymomentum-cpu 0.1.77.post26__cp313-cp313-macosx_15_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 +58 -0
- include/axel/Bvh.h +708 -0
- include/axel/BvhBase.h +75 -0
- include/axel/BvhCommon.h +43 -0
- include/axel/BvhEmbree.h +86 -0
- include/axel/BvhFactory.h +34 -0
- include/axel/Checks.h +21 -0
- include/axel/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 +181 -0
- include/momentum/character/skeleton_utility.h +38 -0
- include/momentum/character/skin_weights.h +67 -0
- include/momentum/character/skinned_locator.h +80 -0
- include/momentum/character/types.h +202 -0
- include/momentum/character_sequence_solver/fwd.h +200 -0
- include/momentum/character_sequence_solver/model_parameters_sequence_error_function.h +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 +128 -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 +126 -0
- include/momentum/character_solver/vertex_vertex_distance_error_function.h +151 -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 +109 -0
- include/momentum/io/fbx/fbx_memory_stream.h +66 -0
- include/momentum/io/fbx/openfbx_loader.h +49 -0
- include/momentum/io/fbx/polygon_data.h +60 -0
- include/momentum/io/gltf/gltf_builder.h +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 +29 -0
- include/momentum/io/marker/conversions.h +57 -0
- include/momentum/io/marker/coordinate_system.h +30 -0
- include/momentum/io/marker/marker_io.h +54 -0
- include/momentum/io/marker/trc_io.h +27 -0
- include/momentum/io/motion/mmo_io.h +97 -0
- include/momentum/io/shape/blend_shape_io.h +70 -0
- include/momentum/io/shape/pose_shape_io.h +21 -0
- include/momentum/io/skeleton/locator_io.h +41 -0
- include/momentum/io/skeleton/mppca_io.h +26 -0
- include/momentum/io/skeleton/parameter_limits_io.h +25 -0
- include/momentum/io/skeleton/parameter_transform_io.h +41 -0
- include/momentum/io/skeleton/parameters_io.h +20 -0
- include/momentum/io/urdf/urdf_io.h +26 -0
- include/momentum/io/usd/usd_io.h +36 -0
- include/momentum/marker_tracking/app_utils.h +62 -0
- include/momentum/marker_tracking/marker_tracker.h +213 -0
- include/momentum/marker_tracking/process_markers.h +58 -0
- include/momentum/marker_tracking/tracker_utils.h +90 -0
- include/momentum/math/constants.h +82 -0
- include/momentum/math/covariance_matrix.h +84 -0
- include/momentum/math/fmt_eigen.h +23 -0
- include/momentum/math/fwd.h +132 -0
- include/momentum/math/generalized_loss.h +61 -0
- include/momentum/math/intersection.h +32 -0
- include/momentum/math/mesh.h +84 -0
- include/momentum/math/mppca.h +67 -0
- include/momentum/math/online_householder_qr.h +516 -0
- include/momentum/math/random-inl.h +404 -0
- include/momentum/math/random.h +310 -0
- include/momentum/math/simd_generalized_loss.h +40 -0
- include/momentum/math/transform.h +229 -0
- include/momentum/math/types.h +461 -0
- include/momentum/math/utility.h +251 -0
- include/momentum/rasterizer/camera.h +453 -0
- include/momentum/rasterizer/fwd.h +102 -0
- include/momentum/rasterizer/geometry.h +83 -0
- include/momentum/rasterizer/image.h +18 -0
- include/momentum/rasterizer/rasterizer.h +583 -0
- include/momentum/rasterizer/tensor.h +140 -0
- include/momentum/rasterizer/utility.h +268 -0
- include/momentum/simd/simd.h +221 -0
- include/momentum/solver/fwd.h +131 -0
- include/momentum/solver/gauss_newton_solver.h +136 -0
- include/momentum/solver/gradient_descent_solver.h +65 -0
- include/momentum/solver/solver.h +155 -0
- include/momentum/solver/solver_function.h +126 -0
- include/momentum/solver/subset_gauss_newton_solver.h +109 -0
- include/rerun/archetypes/annotation_context.hpp +157 -0
- include/rerun/archetypes/arrows2d.hpp +271 -0
- include/rerun/archetypes/arrows3d.hpp +257 -0
- include/rerun/archetypes/asset3d.hpp +262 -0
- include/rerun/archetypes/asset_video.hpp +275 -0
- include/rerun/archetypes/bar_chart.hpp +261 -0
- include/rerun/archetypes/boxes2d.hpp +293 -0
- include/rerun/archetypes/boxes3d.hpp +369 -0
- include/rerun/archetypes/capsules3d.hpp +333 -0
- include/rerun/archetypes/clear.hpp +180 -0
- include/rerun/archetypes/depth_image.hpp +425 -0
- include/rerun/archetypes/ellipsoids3d.hpp +384 -0
- include/rerun/archetypes/encoded_image.hpp +250 -0
- include/rerun/archetypes/geo_line_strings.hpp +166 -0
- include/rerun/archetypes/geo_points.hpp +177 -0
- include/rerun/archetypes/graph_edges.hpp +152 -0
- include/rerun/archetypes/graph_nodes.hpp +206 -0
- include/rerun/archetypes/image.hpp +434 -0
- include/rerun/archetypes/instance_poses3d.hpp +221 -0
- include/rerun/archetypes/line_strips2d.hpp +289 -0
- include/rerun/archetypes/line_strips3d.hpp +270 -0
- include/rerun/archetypes/mesh3d.hpp +387 -0
- include/rerun/archetypes/pinhole.hpp +385 -0
- include/rerun/archetypes/points2d.hpp +333 -0
- include/rerun/archetypes/points3d.hpp +369 -0
- include/rerun/archetypes/recording_properties.hpp +132 -0
- include/rerun/archetypes/scalar.hpp +170 -0
- include/rerun/archetypes/scalars.hpp +153 -0
- include/rerun/archetypes/segmentation_image.hpp +305 -0
- include/rerun/archetypes/series_line.hpp +274 -0
- include/rerun/archetypes/series_lines.hpp +271 -0
- include/rerun/archetypes/series_point.hpp +265 -0
- include/rerun/archetypes/series_points.hpp +251 -0
- include/rerun/archetypes/tensor.hpp +213 -0
- include/rerun/archetypes/text_document.hpp +200 -0
- include/rerun/archetypes/text_log.hpp +211 -0
- include/rerun/archetypes/transform3d.hpp +925 -0
- include/rerun/archetypes/video_frame_reference.hpp +295 -0
- include/rerun/archetypes/view_coordinates.hpp +393 -0
- include/rerun/archetypes.hpp +43 -0
- include/rerun/arrow_utils.hpp +32 -0
- include/rerun/as_components.hpp +90 -0
- include/rerun/blueprint/archetypes/background.hpp +113 -0
- include/rerun/blueprint/archetypes/container_blueprint.hpp +259 -0
- include/rerun/blueprint/archetypes/dataframe_query.hpp +178 -0
- include/rerun/blueprint/archetypes/entity_behavior.hpp +130 -0
- include/rerun/blueprint/archetypes/force_center.hpp +115 -0
- include/rerun/blueprint/archetypes/force_collision_radius.hpp +141 -0
- include/rerun/blueprint/archetypes/force_link.hpp +136 -0
- include/rerun/blueprint/archetypes/force_many_body.hpp +124 -0
- include/rerun/blueprint/archetypes/force_position.hpp +132 -0
- include/rerun/blueprint/archetypes/line_grid3d.hpp +178 -0
- include/rerun/blueprint/archetypes/map_background.hpp +104 -0
- include/rerun/blueprint/archetypes/map_zoom.hpp +103 -0
- include/rerun/blueprint/archetypes/near_clip_plane.hpp +109 -0
- include/rerun/blueprint/archetypes/panel_blueprint.hpp +95 -0
- include/rerun/blueprint/archetypes/plot_legend.hpp +118 -0
- include/rerun/blueprint/archetypes/scalar_axis.hpp +116 -0
- include/rerun/blueprint/archetypes/tensor_scalar_mapping.hpp +146 -0
- include/rerun/blueprint/archetypes/tensor_slice_selection.hpp +167 -0
- include/rerun/blueprint/archetypes/tensor_view_fit.hpp +95 -0
- include/rerun/blueprint/archetypes/view_blueprint.hpp +170 -0
- include/rerun/blueprint/archetypes/view_contents.hpp +142 -0
- include/rerun/blueprint/archetypes/viewport_blueprint.hpp +200 -0
- include/rerun/blueprint/archetypes/visible_time_ranges.hpp +116 -0
- include/rerun/blueprint/archetypes/visual_bounds2d.hpp +109 -0
- include/rerun/blueprint/archetypes/visualizer_overrides.hpp +113 -0
- include/rerun/blueprint/archetypes.hpp +29 -0
- include/rerun/blueprint/components/active_tab.hpp +82 -0
- include/rerun/blueprint/components/apply_latest_at.hpp +79 -0
- include/rerun/blueprint/components/auto_layout.hpp +77 -0
- include/rerun/blueprint/components/auto_views.hpp +77 -0
- include/rerun/blueprint/components/background_kind.hpp +66 -0
- include/rerun/blueprint/components/column_share.hpp +78 -0
- include/rerun/blueprint/components/component_column_selector.hpp +81 -0
- include/rerun/blueprint/components/container_kind.hpp +65 -0
- include/rerun/blueprint/components/corner2d.hpp +64 -0
- include/rerun/blueprint/components/enabled.hpp +77 -0
- include/rerun/blueprint/components/filter_by_range.hpp +74 -0
- include/rerun/blueprint/components/filter_is_not_null.hpp +77 -0
- include/rerun/blueprint/components/force_distance.hpp +82 -0
- include/rerun/blueprint/components/force_iterations.hpp +82 -0
- include/rerun/blueprint/components/force_strength.hpp +82 -0
- include/rerun/blueprint/components/grid_columns.hpp +78 -0
- include/rerun/blueprint/components/grid_spacing.hpp +78 -0
- include/rerun/blueprint/components/included_content.hpp +86 -0
- include/rerun/blueprint/components/lock_range_during_zoom.hpp +82 -0
- include/rerun/blueprint/components/map_provider.hpp +64 -0
- include/rerun/blueprint/components/near_clip_plane.hpp +82 -0
- include/rerun/blueprint/components/panel_state.hpp +61 -0
- include/rerun/blueprint/components/query_expression.hpp +89 -0
- include/rerun/blueprint/components/root_container.hpp +77 -0
- include/rerun/blueprint/components/row_share.hpp +78 -0
- include/rerun/blueprint/components/selected_columns.hpp +76 -0
- include/rerun/blueprint/components/tensor_dimension_index_slider.hpp +90 -0
- include/rerun/blueprint/components/timeline_name.hpp +76 -0
- include/rerun/blueprint/components/view_class.hpp +76 -0
- include/rerun/blueprint/components/view_fit.hpp +61 -0
- include/rerun/blueprint/components/view_maximized.hpp +79 -0
- include/rerun/blueprint/components/view_origin.hpp +81 -0
- include/rerun/blueprint/components/viewer_recommendation_hash.hpp +82 -0
- include/rerun/blueprint/components/visible_time_range.hpp +77 -0
- include/rerun/blueprint/components/visual_bounds2d.hpp +74 -0
- include/rerun/blueprint/components/visualizer_override.hpp +86 -0
- include/rerun/blueprint/components/zoom_level.hpp +78 -0
- include/rerun/blueprint/components.hpp +41 -0
- include/rerun/blueprint/datatypes/component_column_selector.hpp +61 -0
- include/rerun/blueprint/datatypes/filter_by_range.hpp +59 -0
- include/rerun/blueprint/datatypes/filter_is_not_null.hpp +61 -0
- include/rerun/blueprint/datatypes/selected_columns.hpp +62 -0
- include/rerun/blueprint/datatypes/tensor_dimension_index_slider.hpp +63 -0
- include/rerun/blueprint/datatypes.hpp +9 -0
- include/rerun/c/arrow_c_data_interface.h +111 -0
- include/rerun/c/compiler_utils.h +10 -0
- include/rerun/c/rerun.h +627 -0
- include/rerun/c/sdk_info.h +28 -0
- include/rerun/collection.hpp +496 -0
- include/rerun/collection_adapter.hpp +43 -0
- include/rerun/collection_adapter_builtins.hpp +138 -0
- include/rerun/compiler_utils.hpp +61 -0
- include/rerun/component_batch.hpp +163 -0
- include/rerun/component_column.hpp +111 -0
- include/rerun/component_descriptor.hpp +142 -0
- include/rerun/component_type.hpp +35 -0
- include/rerun/components/aggregation_policy.hpp +76 -0
- include/rerun/components/albedo_factor.hpp +74 -0
- include/rerun/components/annotation_context.hpp +102 -0
- include/rerun/components/axis_length.hpp +74 -0
- include/rerun/components/blob.hpp +73 -0
- include/rerun/components/class_id.hpp +71 -0
- include/rerun/components/clear_is_recursive.hpp +75 -0
- include/rerun/components/color.hpp +99 -0
- include/rerun/components/colormap.hpp +99 -0
- include/rerun/components/depth_meter.hpp +84 -0
- include/rerun/components/draw_order.hpp +79 -0
- include/rerun/components/entity_path.hpp +83 -0
- include/rerun/components/fill_mode.hpp +72 -0
- include/rerun/components/fill_ratio.hpp +79 -0
- include/rerun/components/gamma_correction.hpp +80 -0
- include/rerun/components/geo_line_string.hpp +63 -0
- include/rerun/components/graph_edge.hpp +75 -0
- include/rerun/components/graph_node.hpp +79 -0
- include/rerun/components/graph_type.hpp +57 -0
- include/rerun/components/half_size2d.hpp +91 -0
- include/rerun/components/half_size3d.hpp +95 -0
- include/rerun/components/image_buffer.hpp +86 -0
- include/rerun/components/image_format.hpp +84 -0
- include/rerun/components/image_plane_distance.hpp +77 -0
- include/rerun/components/interactive.hpp +76 -0
- include/rerun/components/keypoint_id.hpp +74 -0
- include/rerun/components/lat_lon.hpp +89 -0
- include/rerun/components/length.hpp +77 -0
- include/rerun/components/line_strip2d.hpp +73 -0
- include/rerun/components/line_strip3d.hpp +73 -0
- include/rerun/components/magnification_filter.hpp +63 -0
- include/rerun/components/marker_shape.hpp +82 -0
- include/rerun/components/marker_size.hpp +74 -0
- include/rerun/components/media_type.hpp +157 -0
- include/rerun/components/name.hpp +83 -0
- include/rerun/components/opacity.hpp +77 -0
- include/rerun/components/pinhole_projection.hpp +94 -0
- include/rerun/components/plane3d.hpp +75 -0
- include/rerun/components/pose_rotation_axis_angle.hpp +73 -0
- include/rerun/components/pose_rotation_quat.hpp +71 -0
- include/rerun/components/pose_scale3d.hpp +102 -0
- include/rerun/components/pose_transform_mat3x3.hpp +87 -0
- include/rerun/components/pose_translation3d.hpp +96 -0
- include/rerun/components/position2d.hpp +86 -0
- include/rerun/components/position3d.hpp +90 -0
- include/rerun/components/radius.hpp +98 -0
- include/rerun/components/range1d.hpp +75 -0
- include/rerun/components/resolution.hpp +88 -0
- include/rerun/components/rotation_axis_angle.hpp +72 -0
- include/rerun/components/rotation_quat.hpp +71 -0
- include/rerun/components/scalar.hpp +76 -0
- include/rerun/components/scale3d.hpp +102 -0
- include/rerun/components/series_visible.hpp +76 -0
- include/rerun/components/show_labels.hpp +79 -0
- include/rerun/components/stroke_width.hpp +74 -0
- include/rerun/components/tensor_data.hpp +94 -0
- include/rerun/components/tensor_dimension_index_selection.hpp +77 -0
- include/rerun/components/tensor_height_dimension.hpp +71 -0
- include/rerun/components/tensor_width_dimension.hpp +71 -0
- include/rerun/components/texcoord2d.hpp +101 -0
- include/rerun/components/text.hpp +83 -0
- include/rerun/components/text_log_level.hpp +110 -0
- include/rerun/components/timestamp.hpp +76 -0
- include/rerun/components/transform_mat3x3.hpp +92 -0
- include/rerun/components/transform_relation.hpp +66 -0
- include/rerun/components/translation3d.hpp +96 -0
- include/rerun/components/triangle_indices.hpp +85 -0
- include/rerun/components/value_range.hpp +78 -0
- include/rerun/components/vector2d.hpp +92 -0
- include/rerun/components/vector3d.hpp +96 -0
- include/rerun/components/video_timestamp.hpp +120 -0
- include/rerun/components/view_coordinates.hpp +346 -0
- include/rerun/components/visible.hpp +74 -0
- include/rerun/components.hpp +77 -0
- include/rerun/config.hpp +52 -0
- include/rerun/datatypes/angle.hpp +76 -0
- include/rerun/datatypes/annotation_info.hpp +76 -0
- include/rerun/datatypes/blob.hpp +67 -0
- include/rerun/datatypes/bool.hpp +57 -0
- include/rerun/datatypes/channel_datatype.hpp +87 -0
- include/rerun/datatypes/class_description.hpp +92 -0
- include/rerun/datatypes/class_description_map_elem.hpp +69 -0
- include/rerun/datatypes/class_id.hpp +62 -0
- include/rerun/datatypes/color_model.hpp +68 -0
- include/rerun/datatypes/dvec2d.hpp +76 -0
- include/rerun/datatypes/entity_path.hpp +60 -0
- include/rerun/datatypes/float32.hpp +62 -0
- include/rerun/datatypes/float64.hpp +62 -0
- include/rerun/datatypes/image_format.hpp +107 -0
- include/rerun/datatypes/keypoint_id.hpp +63 -0
- include/rerun/datatypes/keypoint_pair.hpp +65 -0
- include/rerun/datatypes/mat3x3.hpp +105 -0
- include/rerun/datatypes/mat4x4.hpp +119 -0
- include/rerun/datatypes/pixel_format.hpp +142 -0
- include/rerun/datatypes/plane3d.hpp +60 -0
- include/rerun/datatypes/quaternion.hpp +110 -0
- include/rerun/datatypes/range1d.hpp +59 -0
- include/rerun/datatypes/range2d.hpp +55 -0
- include/rerun/datatypes/rgba32.hpp +94 -0
- include/rerun/datatypes/rotation_axis_angle.hpp +67 -0
- include/rerun/datatypes/tensor_buffer.hpp +529 -0
- include/rerun/datatypes/tensor_data.hpp +100 -0
- include/rerun/datatypes/tensor_dimension_index_selection.hpp +58 -0
- include/rerun/datatypes/tensor_dimension_selection.hpp +56 -0
- include/rerun/datatypes/time_int.hpp +62 -0
- include/rerun/datatypes/time_range.hpp +55 -0
- include/rerun/datatypes/time_range_boundary.hpp +175 -0
- include/rerun/datatypes/uint16.hpp +62 -0
- include/rerun/datatypes/uint32.hpp +62 -0
- include/rerun/datatypes/uint64.hpp +62 -0
- include/rerun/datatypes/utf8.hpp +76 -0
- include/rerun/datatypes/utf8pair.hpp +62 -0
- include/rerun/datatypes/uuid.hpp +60 -0
- include/rerun/datatypes/uvec2d.hpp +76 -0
- include/rerun/datatypes/uvec3d.hpp +80 -0
- include/rerun/datatypes/uvec4d.hpp +59 -0
- include/rerun/datatypes/vec2d.hpp +76 -0
- include/rerun/datatypes/vec3d.hpp +80 -0
- include/rerun/datatypes/vec4d.hpp +84 -0
- include/rerun/datatypes/video_timestamp.hpp +67 -0
- include/rerun/datatypes/view_coordinates.hpp +87 -0
- include/rerun/datatypes/visible_time_range.hpp +57 -0
- include/rerun/datatypes.hpp +51 -0
- include/rerun/demo_utils.hpp +75 -0
- include/rerun/entity_path.hpp +20 -0
- include/rerun/error.hpp +180 -0
- include/rerun/half.hpp +10 -0
- include/rerun/image_utils.hpp +187 -0
- include/rerun/indicator_component.hpp +59 -0
- include/rerun/loggable.hpp +54 -0
- include/rerun/recording_stream.hpp +960 -0
- include/rerun/rerun_sdk_export.hpp +25 -0
- include/rerun/result.hpp +86 -0
- include/rerun/rotation3d.hpp +33 -0
- include/rerun/sdk_info.hpp +20 -0
- include/rerun/spawn.hpp +21 -0
- include/rerun/spawn_options.hpp +57 -0
- include/rerun/string_utils.hpp +16 -0
- include/rerun/third_party/cxxopts.hpp +2198 -0
- include/rerun/time_column.hpp +288 -0
- include/rerun/timeline.hpp +38 -0
- include/rerun/type_traits.hpp +40 -0
- include/rerun.hpp +86 -0
- lib/cmake/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 +614 -0
- pymomentum/backend/trs_backend.py +871 -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 +809 -0
- pymomentum/torch/parameter_limits.py +494 -0
- pymomentum/torch/utility.py +20 -0
- pymomentum/trs.py +535 -0
- pymomentum_cpu-0.1.77.post26.dist-info/METADATA +208 -0
- pymomentum_cpu-0.1.77.post26.dist-info/RECORD +512 -0
- pymomentum_cpu-0.1.77.post26.dist-info/WHEEL +5 -0
- pymomentum_cpu-0.1.77.post26.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/character_solver/constraint_error_function.h>
|
|
11
|
+
|
|
12
|
+
namespace momentum {
|
|
13
|
+
|
|
14
|
+
/// 3D position constraint data
|
|
15
|
+
template <typename T>
|
|
16
|
+
struct PositionDataT : ConstraintData {
|
|
17
|
+
/// Positional offset in the parent joint space
|
|
18
|
+
Vector3<T> offset;
|
|
19
|
+
/// Target position
|
|
20
|
+
Vector3<T> target;
|
|
21
|
+
|
|
22
|
+
explicit PositionDataT(
|
|
23
|
+
const Vector3<T>& inOffset,
|
|
24
|
+
const Vector3<T>& inTarget,
|
|
25
|
+
size_t pIndex,
|
|
26
|
+
float w,
|
|
27
|
+
const std::string& n = "")
|
|
28
|
+
: ConstraintData(pIndex, w, n), offset(inOffset), target(inTarget) {}
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/// The PositionErrorFunction computes the 3D positional errors from a list of Constraints.
|
|
32
|
+
/// Each constraint specifies a locator on the skeleton (parent joint and offset), and its target 3D
|
|
33
|
+
/// position.
|
|
34
|
+
template <typename T>
|
|
35
|
+
class PositionErrorFunctionT : public ConstraintErrorFunctionT<T, PositionDataT<T>> {
|
|
36
|
+
public:
|
|
37
|
+
/// Constructor
|
|
38
|
+
///
|
|
39
|
+
/// @param[in] skel: character skeleton
|
|
40
|
+
/// @param[in] pt: character parameter transformation
|
|
41
|
+
/// @param[in] lossAlpha: alpha parameter for the loss function
|
|
42
|
+
/// @param[in] lossC: c parameter for the loss function
|
|
43
|
+
explicit PositionErrorFunctionT(
|
|
44
|
+
const Skeleton& skel,
|
|
45
|
+
const ParameterTransform& pt,
|
|
46
|
+
const T& lossAlpha = GeneralizedLossT<T>::kL2,
|
|
47
|
+
const T& lossC = T(1))
|
|
48
|
+
: ConstraintErrorFunctionT<T, PositionDataT<T>>(skel, pt, lossAlpha, lossC) {}
|
|
49
|
+
|
|
50
|
+
/// A convenience api where character contains info of the skeleton and parameter transform.
|
|
51
|
+
///
|
|
52
|
+
/// @param[in] character: character definition
|
|
53
|
+
/// @param[in] lossAlpha: alpha parameter for the loss function
|
|
54
|
+
/// @param[in] lossC: c parameter for the loss function
|
|
55
|
+
explicit PositionErrorFunctionT(
|
|
56
|
+
const Character& character,
|
|
57
|
+
const T& lossAlpha = GeneralizedLossT<T>::kL2,
|
|
58
|
+
const T& lossC = T(1))
|
|
59
|
+
: PositionErrorFunctionT(character.skeleton, character.parameterTransform, lossAlpha, lossC) {
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/// Default constant weight in MarkerErrorFunction. This can be used for backwards compatibility
|
|
63
|
+
/// in setWeight().
|
|
64
|
+
static constexpr T kLegacyWeight = 1e-4f;
|
|
65
|
+
|
|
66
|
+
protected:
|
|
67
|
+
void evalFunction(
|
|
68
|
+
size_t constrIndex,
|
|
69
|
+
const JointStateT<T>& state,
|
|
70
|
+
Vector3<T>& f,
|
|
71
|
+
optional_ref<std::array<Vector3<T>, 1>> v = {},
|
|
72
|
+
optional_ref<std::array<Matrix3<T>, 1>> dfdv = {}) const final;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
} // namespace momentum
|
|
@@ -0,0 +1,93 @@
|
|
|
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
|
+
#include <momentum/character/locator.h>
|
|
10
|
+
#include <momentum/character_solver/skeleton_error_function.h>
|
|
11
|
+
|
|
12
|
+
namespace momentum {
|
|
13
|
+
|
|
14
|
+
template <typename T>
|
|
15
|
+
struct ProjectionConstraintDataT {
|
|
16
|
+
// Project a 3d point (after skinning) to (rxz, ryz, z) where
|
|
17
|
+
// (rx,ry) is the residual.
|
|
18
|
+
//
|
|
19
|
+
// This encodes the target 2d point, the view and camera transforms, and the
|
|
20
|
+
// camera distortion (if any).
|
|
21
|
+
//
|
|
22
|
+
// This projection model was copied from the hand IK FullProjectionConstraint.
|
|
23
|
+
// Ideally we would refactor somehow to make them share more code but
|
|
24
|
+
// the kinematic models are so different this would take some work.
|
|
25
|
+
Eigen::Matrix<T, 3, 4> projection; // Projection matrix
|
|
26
|
+
|
|
27
|
+
size_t parent{}; // parent joint of the constraint
|
|
28
|
+
Eigen::Vector3<T> offset = Eigen::Vector3<T>::Zero(); // relative offset to the parent
|
|
29
|
+
T weight = 1; // constraint weight
|
|
30
|
+
|
|
31
|
+
Eigen::Vector2<T> target = Eigen::Vector2<T>::Zero();
|
|
32
|
+
|
|
33
|
+
static ProjectionConstraintDataT<T> createFromLocator(const momentum::Locator& locator);
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
template <typename T>
|
|
37
|
+
class ProjectionErrorFunctionT : public momentum::SkeletonErrorFunctionT<T> {
|
|
38
|
+
public:
|
|
39
|
+
ProjectionErrorFunctionT(
|
|
40
|
+
const momentum::Skeleton& skel,
|
|
41
|
+
const momentum::ParameterTransform& pt,
|
|
42
|
+
T nearClip = T(1));
|
|
43
|
+
|
|
44
|
+
[[nodiscard]] double getError(
|
|
45
|
+
const momentum::ModelParametersT<T>& params,
|
|
46
|
+
const momentum::SkeletonStateT<T>& state,
|
|
47
|
+
const momentum::MeshStateT<T>& meshState) final;
|
|
48
|
+
double getGradient(
|
|
49
|
+
const momentum::ModelParametersT<T>& params,
|
|
50
|
+
const momentum::SkeletonStateT<T>& state,
|
|
51
|
+
const momentum::MeshStateT<T>& meshState,
|
|
52
|
+
Eigen::Ref<Eigen::VectorX<T>> gradient) final;
|
|
53
|
+
double getJacobian(
|
|
54
|
+
const momentum::ModelParametersT<T>& params,
|
|
55
|
+
const momentum::SkeletonStateT<T>& state,
|
|
56
|
+
const momentum::MeshStateT<T>& meshState,
|
|
57
|
+
Eigen::Ref<Eigen::MatrixX<T>> jacobian,
|
|
58
|
+
Eigen::Ref<Eigen::VectorX<T>> residual,
|
|
59
|
+
int& usedRows) final;
|
|
60
|
+
[[nodiscard]] size_t getJacobianSize() const final;
|
|
61
|
+
|
|
62
|
+
void addConstraint(const ProjectionConstraintDataT<T>& data);
|
|
63
|
+
|
|
64
|
+
void clearConstraints() {
|
|
65
|
+
constraints_.clear();
|
|
66
|
+
}
|
|
67
|
+
[[nodiscard]] bool empty() const {
|
|
68
|
+
return constraints_.empty();
|
|
69
|
+
}
|
|
70
|
+
[[nodiscard]] size_t numConstraints() const {
|
|
71
|
+
return constraints_.size();
|
|
72
|
+
}
|
|
73
|
+
void setConstraints(std::vector<ProjectionConstraintDataT<T>> constraints) {
|
|
74
|
+
constraints_ = std::move(constraints);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
[[nodiscard]] const std::vector<ProjectionConstraintDataT<T>>& getConstraints() const {
|
|
78
|
+
return constraints_;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
protected:
|
|
82
|
+
std::vector<ProjectionConstraintDataT<T>> constraints_;
|
|
83
|
+
|
|
84
|
+
// Projection error is roughly in radians, so a value near 1 is reasonable here:
|
|
85
|
+
static constexpr T kProjectionWeight = 1.0f;
|
|
86
|
+
|
|
87
|
+
// Ignore projection constraints involving joints closer than this distance.
|
|
88
|
+
// Prevents divide-by-zero in the projection matrix and bad behavior close to
|
|
89
|
+
// the camera.
|
|
90
|
+
T _nearClip = 1.0f;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
} // namespace momentum
|
|
@@ -0,0 +1,99 @@
|
|
|
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/collision_geometry_state.h>
|
|
12
|
+
#include <momentum/character_solver/fwd.h>
|
|
13
|
+
#include <momentum/character_solver/skeleton_error_function.h>
|
|
14
|
+
#include <momentum/common/aligned.h>
|
|
15
|
+
#include <momentum/simd/simd.h>
|
|
16
|
+
|
|
17
|
+
#include <axel/Bvh.h>
|
|
18
|
+
|
|
19
|
+
#include <unordered_set>
|
|
20
|
+
#include <vector>
|
|
21
|
+
|
|
22
|
+
namespace momentum {
|
|
23
|
+
|
|
24
|
+
/// Represents an error function that penalizes self-intersections between collision geometries of
|
|
25
|
+
/// the character.
|
|
26
|
+
///
|
|
27
|
+
/// The function pre-filters collision geometries to ignore those attached to the same joint, those
|
|
28
|
+
/// intersecting in the rest pose, or those very close in the rest pose.
|
|
29
|
+
template <typename T>
|
|
30
|
+
class SimdCollisionErrorFunctionT : public SkeletonErrorFunctionT<T> {
|
|
31
|
+
public:
|
|
32
|
+
explicit SimdCollisionErrorFunctionT(
|
|
33
|
+
const Skeleton& skel,
|
|
34
|
+
const ParameterTransform& pt,
|
|
35
|
+
const CollisionGeometry& collisionGeometry);
|
|
36
|
+
|
|
37
|
+
explicit SimdCollisionErrorFunctionT(const Character& character);
|
|
38
|
+
|
|
39
|
+
[[nodiscard]] double getError(
|
|
40
|
+
const ModelParametersT<T>& params,
|
|
41
|
+
const SkeletonStateT<T>& state,
|
|
42
|
+
const MeshStateT<T>& /* meshState */) final;
|
|
43
|
+
|
|
44
|
+
double getGradient(
|
|
45
|
+
const ModelParametersT<T>& params,
|
|
46
|
+
const SkeletonStateT<T>& state,
|
|
47
|
+
const MeshStateT<T>& /* meshState */,
|
|
48
|
+
Ref<VectorX<T>> gradient) override;
|
|
49
|
+
|
|
50
|
+
double getJacobian(
|
|
51
|
+
const ModelParametersT<T>& /*unused*/,
|
|
52
|
+
const SkeletonStateT<T>& state,
|
|
53
|
+
const MeshStateT<T>& /* meshState */,
|
|
54
|
+
Ref<MatrixX<T>> jacobian,
|
|
55
|
+
Ref<VectorX<T>> residual,
|
|
56
|
+
int& usedRows) override;
|
|
57
|
+
|
|
58
|
+
[[nodiscard]] size_t getJacobianSize() const final;
|
|
59
|
+
|
|
60
|
+
protected:
|
|
61
|
+
void updateCollisionPairs();
|
|
62
|
+
|
|
63
|
+
// Update collisionState_, bvh_, and collisionPairs_ given the new skeleton state.
|
|
64
|
+
void computeBroadPhase(const SkeletonStateT<T>& state);
|
|
65
|
+
|
|
66
|
+
using PairId = std::pair<size_t, size_t>;
|
|
67
|
+
|
|
68
|
+
struct PairHash {
|
|
69
|
+
std::size_t operator()(const std::pair<size_t, size_t>& p) const {
|
|
70
|
+
// Use the smaller value as the high-order bits and the larger value as the low-order bits
|
|
71
|
+
return (static_cast<uint64_t>(std::min(p.first, p.second)) << (sizeof(size_t) * 8 / 2)) |
|
|
72
|
+
std::max(p.first, p.second);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
struct PairEqual {
|
|
77
|
+
bool operator()(const PairId& a, const PairId& b) const {
|
|
78
|
+
return (a.first == b.first && a.second == b.second) ||
|
|
79
|
+
(a.first == b.second && a.second == b.first);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
const CollisionGeometry collisionGeometry_;
|
|
84
|
+
|
|
85
|
+
std::unordered_set<PairId, PairHash, PairEqual> excludingPairIds_;
|
|
86
|
+
|
|
87
|
+
std::vector<std::vector<int, AlignedAllocator<int, momentum::kSimdAlignment>>> collisionPairs_;
|
|
88
|
+
|
|
89
|
+
size_t jacobianSize_ = 0;
|
|
90
|
+
|
|
91
|
+
CollisionGeometryStateT<T> collisionState_;
|
|
92
|
+
|
|
93
|
+
// weights for the error functions
|
|
94
|
+
static constexpr T kCollisionWeight = 5e-3f;
|
|
95
|
+
|
|
96
|
+
axel::Bvh<T> bvh_;
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
} // namespace momentum
|
|
@@ -0,0 +1,157 @@
|
|
|
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_solver/fwd.h>
|
|
12
|
+
#include <momentum/character_solver/skeleton_error_function.h>
|
|
13
|
+
#include <momentum/common/aligned.h>
|
|
14
|
+
|
|
15
|
+
#include <array>
|
|
16
|
+
#include <atomic>
|
|
17
|
+
#include <cstdint>
|
|
18
|
+
|
|
19
|
+
namespace momentum {
|
|
20
|
+
|
|
21
|
+
struct SimdNormalConstraints {
|
|
22
|
+
public:
|
|
23
|
+
explicit SimdNormalConstraints(const Skeleton* skel);
|
|
24
|
+
~SimdNormalConstraints();
|
|
25
|
+
|
|
26
|
+
void clearConstraints();
|
|
27
|
+
|
|
28
|
+
bool addConstraint(
|
|
29
|
+
size_t jointIndex,
|
|
30
|
+
const Vector3f& offset,
|
|
31
|
+
const Vector3f& normal,
|
|
32
|
+
const Vector3f& target,
|
|
33
|
+
float targetWeight);
|
|
34
|
+
|
|
35
|
+
[[nodiscard]] VectorXi getNumConstraints() const;
|
|
36
|
+
|
|
37
|
+
public:
|
|
38
|
+
// max number of constraints per segment
|
|
39
|
+
static constexpr size_t kMaxConstraints = 4096;
|
|
40
|
+
static constexpr size_t kMaxJoints = 512;
|
|
41
|
+
|
|
42
|
+
// striped arrays for storing the offset
|
|
43
|
+
std::unique_ptr<float, AlignedDeleter> data;
|
|
44
|
+
float* offsetX;
|
|
45
|
+
float* offsetY;
|
|
46
|
+
float* offsetZ;
|
|
47
|
+
// striped arrays for storing the normal + target
|
|
48
|
+
float* normalX;
|
|
49
|
+
float* normalY;
|
|
50
|
+
float* normalZ;
|
|
51
|
+
float* targetX;
|
|
52
|
+
float* targetY;
|
|
53
|
+
float* targetZ;
|
|
54
|
+
// array for constraint weight
|
|
55
|
+
float* weights;
|
|
56
|
+
|
|
57
|
+
// store the number of constraints per joint
|
|
58
|
+
std::array<std::atomic<uint32_t>, kMaxJoints> constraintCount;
|
|
59
|
+
int numJoints;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
/// A highly optimized error function for "point-to-plane" (signed) distance errors. See
|
|
63
|
+
/// NormalErrorFunction for detailed explanation.
|
|
64
|
+
///
|
|
65
|
+
/// This function should primarily be used when dealing with a large number of constraints. For
|
|
66
|
+
/// smaller numbers of constraints, consider using the generic NormalErrorFunction.
|
|
67
|
+
///
|
|
68
|
+
/// @warning Due to the multi-threaded evaluation of the error/gradient, the functions are
|
|
69
|
+
/// non-deterministic, which may cause numerical inconsistencies. As a result, slightly different
|
|
70
|
+
/// results may occur on multiple calls with the same data.
|
|
71
|
+
class SimdNormalErrorFunction : public SkeletonErrorFunction {
|
|
72
|
+
public:
|
|
73
|
+
/// @param maxThreads An optional parameter that specifies the maximum number of threads to be
|
|
74
|
+
/// used with dispenso::parallel_for. If this parameter is set to zero, the function will run in
|
|
75
|
+
/// serial mode, i.e., it will not use any additional threads. By default, the value is set to the
|
|
76
|
+
/// maximum allowable size of a uint32_t, which is also the default for dispenso.
|
|
77
|
+
explicit SimdNormalErrorFunction(
|
|
78
|
+
const Skeleton& skel,
|
|
79
|
+
const ParameterTransform& pt,
|
|
80
|
+
uint32_t maxThreads = std::numeric_limits<uint32_t>::max());
|
|
81
|
+
|
|
82
|
+
/// @param maxThreads An optional parameter that specifies the maximum number of threads to be
|
|
83
|
+
/// used with dispenso::parallel_for. If this parameter is set to zero, the function will run in
|
|
84
|
+
/// serial mode, i.e., it will not use any additional threads. By default, the value is set to the
|
|
85
|
+
/// maximum allowable size of a uint32_t, which is also the default for dispenso.
|
|
86
|
+
explicit SimdNormalErrorFunction(
|
|
87
|
+
const Character& character,
|
|
88
|
+
uint32_t maxThreads = std::numeric_limits<uint32_t>::max());
|
|
89
|
+
|
|
90
|
+
[[nodiscard]] double getError(
|
|
91
|
+
const ModelParameters& params,
|
|
92
|
+
const SkeletonState& state,
|
|
93
|
+
const MeshState& meshState) final;
|
|
94
|
+
|
|
95
|
+
double getGradient(
|
|
96
|
+
const ModelParameters& params,
|
|
97
|
+
const SkeletonState& state,
|
|
98
|
+
const MeshState& meshState,
|
|
99
|
+
Ref<VectorXf> gradient) final;
|
|
100
|
+
|
|
101
|
+
double getJacobian(
|
|
102
|
+
const ModelParameters& params,
|
|
103
|
+
const SkeletonState& state,
|
|
104
|
+
const MeshState& meshState,
|
|
105
|
+
Ref<MatrixXf> jacobian,
|
|
106
|
+
Ref<VectorXf> residual,
|
|
107
|
+
int& usedRows) override;
|
|
108
|
+
|
|
109
|
+
[[nodiscard]] size_t getJacobianSize() const override;
|
|
110
|
+
|
|
111
|
+
void setConstraints(const SimdNormalConstraints* cstrs) {
|
|
112
|
+
constraints_ = cstrs;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
protected:
|
|
116
|
+
// weights for the error functions
|
|
117
|
+
static constexpr float kPlaneWeight = 1e-4f;
|
|
118
|
+
|
|
119
|
+
mutable std::vector<size_t> jacobianOffset_;
|
|
120
|
+
|
|
121
|
+
// constraints to use
|
|
122
|
+
const SimdNormalConstraints* constraints_;
|
|
123
|
+
|
|
124
|
+
uint32_t maxThreads_;
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
#ifdef MOMENTUM_ENABLE_AVX
|
|
128
|
+
|
|
129
|
+
// A version of SimdNormalErrorFunction where the Jacobian has been hand-unrolled using
|
|
130
|
+
// AVX instructions. On some platforms this performs better than the generic SIMD version
|
|
131
|
+
// but it only works on Intel platforms that support AVX.
|
|
132
|
+
class SimdNormalErrorFunctionAVX : public SimdNormalErrorFunction {
|
|
133
|
+
public:
|
|
134
|
+
explicit SimdNormalErrorFunctionAVX(
|
|
135
|
+
const Skeleton& skel,
|
|
136
|
+
const ParameterTransform& pt,
|
|
137
|
+
uint32_t maxThreads = std::numeric_limits<uint32_t>::max())
|
|
138
|
+
: SimdNormalErrorFunction(skel, pt, maxThreads) {}
|
|
139
|
+
explicit SimdNormalErrorFunctionAVX(
|
|
140
|
+
const Character& character,
|
|
141
|
+
uint32_t maxThreads = std::numeric_limits<uint32_t>::max())
|
|
142
|
+
: SimdNormalErrorFunction(character, maxThreads) {}
|
|
143
|
+
|
|
144
|
+
double getJacobian(
|
|
145
|
+
const ModelParameters& params,
|
|
146
|
+
const SkeletonState& state,
|
|
147
|
+
const MeshState& meshState,
|
|
148
|
+
Ref<MatrixXf> jacobian,
|
|
149
|
+
Ref<VectorXf> residual,
|
|
150
|
+
int& usedRows) final;
|
|
151
|
+
|
|
152
|
+
[[nodiscard]] size_t getJacobianSize() const final;
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
#endif // MOMENTUM_ENABLE_AVX
|
|
156
|
+
|
|
157
|
+
} // namespace momentum
|
|
@@ -0,0 +1,164 @@
|
|
|
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_solver/fwd.h>
|
|
12
|
+
#include <momentum/character_solver/skeleton_error_function.h>
|
|
13
|
+
#include <momentum/common/aligned.h>
|
|
14
|
+
|
|
15
|
+
#include <array>
|
|
16
|
+
#include <atomic>
|
|
17
|
+
#include <cstdint>
|
|
18
|
+
#include <vector>
|
|
19
|
+
|
|
20
|
+
namespace momentum {
|
|
21
|
+
|
|
22
|
+
struct SimdPlaneConstraints final {
|
|
23
|
+
public:
|
|
24
|
+
explicit SimdPlaneConstraints(const Skeleton* skel);
|
|
25
|
+
|
|
26
|
+
~SimdPlaneConstraints();
|
|
27
|
+
|
|
28
|
+
void clearConstraints();
|
|
29
|
+
|
|
30
|
+
void addConstraint(
|
|
31
|
+
size_t jointIndex,
|
|
32
|
+
const Vector3f& offset,
|
|
33
|
+
const Vector3f& targetNormal,
|
|
34
|
+
float targetOffset,
|
|
35
|
+
float targetWeight);
|
|
36
|
+
|
|
37
|
+
[[nodiscard]] VectorXi getNumConstraints() const;
|
|
38
|
+
|
|
39
|
+
public:
|
|
40
|
+
// max number of constraints per segment
|
|
41
|
+
static constexpr size_t kMaxConstraints = 4096;
|
|
42
|
+
static constexpr size_t kMaxJoints = 512;
|
|
43
|
+
|
|
44
|
+
// striped arrays for storing the offset
|
|
45
|
+
std::unique_ptr<float, AlignedDeleter> data;
|
|
46
|
+
float* offsetX;
|
|
47
|
+
float* offsetY;
|
|
48
|
+
float* offsetZ;
|
|
49
|
+
// striped arrays for storing the normal + target
|
|
50
|
+
float* normalX;
|
|
51
|
+
float* normalY;
|
|
52
|
+
float* normalZ;
|
|
53
|
+
float* targets;
|
|
54
|
+
// array for constraint weight
|
|
55
|
+
float* weights;
|
|
56
|
+
|
|
57
|
+
// store the number of constraints per joint
|
|
58
|
+
std::array<std::atomic<uint32_t>, kMaxJoints> constraintCount;
|
|
59
|
+
int numJoints;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
/// A highly optimized error function for "point-on-plane" or "point-in-half-plane" errors.
|
|
63
|
+
///
|
|
64
|
+
/// This function is recommended for use only when dealing with a large number of constraints. For a
|
|
65
|
+
/// smaller number of constraints, consider using the generic PlaneErrorFunction.
|
|
66
|
+
///
|
|
67
|
+
/// @warning Due to the multi-threaded evaluation of the error/gradient, the functions are
|
|
68
|
+
/// non-deterministic. This might lead to numerical inconsistencies, resulting in slightly different
|
|
69
|
+
/// outcomes on multiple calls with the same data.
|
|
70
|
+
class SimdPlaneErrorFunction : public SkeletonErrorFunction {
|
|
71
|
+
public:
|
|
72
|
+
/// @param maxThreads An optional parameter that specifies the maximum number of threads to be
|
|
73
|
+
/// used with dispenso::parallel_for. If this parameter is set to zero, the function will run in
|
|
74
|
+
/// serial mode, i.e., it will not use any additional threads. By default, the value is set to the
|
|
75
|
+
/// maximum allowable size of a uint32_t, which is also the default for dispenso.
|
|
76
|
+
explicit SimdPlaneErrorFunction(
|
|
77
|
+
const Skeleton& skel,
|
|
78
|
+
const ParameterTransform& pt,
|
|
79
|
+
uint32_t maxThreads = std::numeric_limits<uint32_t>::max());
|
|
80
|
+
|
|
81
|
+
/// @param maxThreads An optional parameter that specifies the maximum number of threads to be
|
|
82
|
+
/// used with dispenso::parallel_for. If this parameter is set to zero, the function will run in
|
|
83
|
+
/// serial mode, i.e., it will not use any additional threads. By default, the value is set to the
|
|
84
|
+
/// maximum allowable size of a uint32_t, which is also the default for dispenso.
|
|
85
|
+
explicit SimdPlaneErrorFunction(
|
|
86
|
+
const Character& character,
|
|
87
|
+
uint32_t maxThreads = std::numeric_limits<uint32_t>::max());
|
|
88
|
+
|
|
89
|
+
[[nodiscard]] double getError(
|
|
90
|
+
const ModelParameters& params,
|
|
91
|
+
const SkeletonState& state,
|
|
92
|
+
const MeshState& /* unused */) override;
|
|
93
|
+
|
|
94
|
+
double getGradient(
|
|
95
|
+
const ModelParameters& params,
|
|
96
|
+
const SkeletonState& state,
|
|
97
|
+
const MeshState& /* meshState */,
|
|
98
|
+
Ref<VectorXf> gradient) override;
|
|
99
|
+
|
|
100
|
+
double getJacobian(
|
|
101
|
+
const ModelParameters& params,
|
|
102
|
+
const SkeletonState& state,
|
|
103
|
+
const MeshState& /* meshState */,
|
|
104
|
+
Ref<MatrixXf> jacobian,
|
|
105
|
+
Ref<VectorXf> residual,
|
|
106
|
+
int& usedRows) override;
|
|
107
|
+
|
|
108
|
+
[[nodiscard]] size_t getJacobianSize() const override;
|
|
109
|
+
|
|
110
|
+
void setConstraints(const SimdPlaneConstraints* cstrs);
|
|
111
|
+
|
|
112
|
+
protected:
|
|
113
|
+
// weights for the error functions
|
|
114
|
+
static constexpr float kPlaneWeight = 1e-4f;
|
|
115
|
+
|
|
116
|
+
mutable std::vector<size_t> jacobianOffset_;
|
|
117
|
+
|
|
118
|
+
// constraints to use
|
|
119
|
+
const SimdPlaneConstraints* constraints_;
|
|
120
|
+
|
|
121
|
+
uint32_t maxThreads_;
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
#ifdef MOMENTUM_ENABLE_AVX
|
|
125
|
+
|
|
126
|
+
// A version of SimdPlaneErrorFunction where the Jacobian has been hand-unrolled using
|
|
127
|
+
// AVX instructions. On some platforms this performs better than the generic SIMD version
|
|
128
|
+
// but it only works on Intel platforms that support AVX.
|
|
129
|
+
class SimdPlaneErrorFunctionAVX : public SimdPlaneErrorFunction {
|
|
130
|
+
public:
|
|
131
|
+
explicit SimdPlaneErrorFunctionAVX(
|
|
132
|
+
const Skeleton& skel,
|
|
133
|
+
const ParameterTransform& pt,
|
|
134
|
+
uint32_t maxThreads = std::numeric_limits<uint32_t>::max());
|
|
135
|
+
|
|
136
|
+
explicit SimdPlaneErrorFunctionAVX(
|
|
137
|
+
const Character& character,
|
|
138
|
+
uint32_t maxThreads = std::numeric_limits<uint32_t>::max());
|
|
139
|
+
|
|
140
|
+
[[nodiscard]] double getError(
|
|
141
|
+
const ModelParameters& params,
|
|
142
|
+
const SkeletonState& state,
|
|
143
|
+
const MeshState& /* unused */) final;
|
|
144
|
+
|
|
145
|
+
double getGradient(
|
|
146
|
+
const ModelParameters& params,
|
|
147
|
+
const SkeletonState& state,
|
|
148
|
+
const MeshState& /* unused */,
|
|
149
|
+
Ref<VectorXf> gradient) final;
|
|
150
|
+
|
|
151
|
+
double getJacobian(
|
|
152
|
+
const ModelParameters& params,
|
|
153
|
+
const SkeletonState& state,
|
|
154
|
+
const MeshState& /* unused */,
|
|
155
|
+
Ref<MatrixXf> jacobian,
|
|
156
|
+
Ref<VectorXf> residual,
|
|
157
|
+
int& usedRows) final;
|
|
158
|
+
|
|
159
|
+
[[nodiscard]] size_t getJacobianSize() const final;
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
#endif // MOMENTUM_ENABLE_AVX
|
|
163
|
+
|
|
164
|
+
} // namespace momentum
|