pymomentum-cpu 0.1.78.post11__cp312-cp312-win_amd64.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/arrow_bundled_dependencies.lib +0 -0
- lib/arrow_static.lib +0 -0
- lib/axel.lib +0 -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/momentum_app_utils.lib +0 -0
- lib/momentum_character.lib +0 -0
- lib/momentum_character_sequence_solver.lib +0 -0
- lib/momentum_character_solver.lib +0 -0
- lib/momentum_common.lib +0 -0
- lib/momentum_diff_ik.lib +0 -0
- lib/momentum_io.lib +0 -0
- lib/momentum_io_common.lib +0 -0
- lib/momentum_io_fbx.lib +0 -0
- lib/momentum_io_gltf.lib +0 -0
- lib/momentum_io_legacy_json.lib +0 -0
- lib/momentum_io_marker.lib +0 -0
- lib/momentum_io_motion.lib +0 -0
- lib/momentum_io_shape.lib +0 -0
- lib/momentum_io_skeleton.lib +0 -0
- lib/momentum_io_urdf.lib +0 -0
- lib/momentum_marker_tracker.lib +0 -0
- lib/momentum_math.lib +0 -0
- lib/momentum_online_qr.lib +0 -0
- lib/momentum_process_markers.lib +0 -0
- lib/momentum_rerun.lib +0 -0
- lib/momentum_simd_constraints.lib +0 -0
- lib/momentum_simd_generalized_loss.lib +0 -0
- lib/momentum_skeleton.lib +0 -0
- lib/momentum_solver.lib +0 -0
- lib/rerun_c__win_x64.lib +0 -0
- lib/rerun_sdk.lib +0 -0
- pymomentum/axel.cp312-win_amd64.pyd +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.cp312-win_amd64.pyd +0 -0
- pymomentum/marker_tracking.cp312-win_amd64.pyd +0 -0
- pymomentum/quaternion.py +740 -0
- pymomentum/skel_state.py +514 -0
- pymomentum/solver.cp312-win_amd64.pyd +0 -0
- pymomentum/solver2.cp312-win_amd64.pyd +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.78.post11.dist-info/METADATA +121 -0
- pymomentum_cpu-0.1.78.post11.dist-info/RECORD +512 -0
- pymomentum_cpu-0.1.78.post11.dist-info/WHEEL +5 -0
- pymomentum_cpu-0.1.78.post11.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,36 @@
|
|
|
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 <Eigen/Core>
|
|
11
|
+
|
|
12
|
+
namespace axel {
|
|
13
|
+
|
|
14
|
+
template <typename T>
|
|
15
|
+
bool rayTriangleIntersect(
|
|
16
|
+
const Eigen::Vector3<T>& beginRay,
|
|
17
|
+
const Eigen::Vector3<T>& direction,
|
|
18
|
+
const Eigen::Vector3<T>& p0,
|
|
19
|
+
const Eigen::Vector3<T>& p1,
|
|
20
|
+
const Eigen::Vector3<T>& p2,
|
|
21
|
+
Eigen::Vector3<T>& intersectionPoint,
|
|
22
|
+
T& tOut);
|
|
23
|
+
|
|
24
|
+
template <typename T>
|
|
25
|
+
bool rayTriangleIntersect(
|
|
26
|
+
const Eigen::Vector3<T>& beginRay,
|
|
27
|
+
const Eigen::Vector3<T>& direction,
|
|
28
|
+
const Eigen::Vector3<T>& p0,
|
|
29
|
+
const Eigen::Vector3<T>& p1,
|
|
30
|
+
const Eigen::Vector3<T>& p2,
|
|
31
|
+
Eigen::Vector3<T>& intersectionPoint,
|
|
32
|
+
T& tOut,
|
|
33
|
+
T& u,
|
|
34
|
+
T& v);
|
|
35
|
+
|
|
36
|
+
} // namespace axel
|
|
@@ -0,0 +1,91 @@
|
|
|
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/blend_shape_base.h>
|
|
11
|
+
|
|
12
|
+
namespace momentum {
|
|
13
|
+
|
|
14
|
+
/// Skinning class that combines blend shape vectors with a base shape
|
|
15
|
+
///
|
|
16
|
+
/// Extends BlendShapeBase by adding a base shape (e.g., PCA mean) and
|
|
17
|
+
/// functionality for computing deformed shapes and estimating blend coefficients.
|
|
18
|
+
/// Primarily used to model identity-dependent shape deformations.
|
|
19
|
+
struct BlendShape : public BlendShapeBase {
|
|
20
|
+
public:
|
|
21
|
+
BlendShape() : factorizationValid_(false) {}
|
|
22
|
+
|
|
23
|
+
/// @param baseShape Base shape vertices
|
|
24
|
+
/// @param numShapes Number of blend shapes
|
|
25
|
+
BlendShape(gsl::span<const Vector3f> baseShape, size_t numShapes);
|
|
26
|
+
|
|
27
|
+
void setBaseShape(gsl::span<const Vector3f> baseShape) {
|
|
28
|
+
baseShape_.assign(baseShape.begin(), baseShape.end());
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
[[nodiscard]] const std::vector<Vector3f>& getBaseShape() const {
|
|
32
|
+
return baseShape_;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/// Whether SVD factorization is up-to-date
|
|
36
|
+
[[nodiscard]] bool getFactorizationValid() const {
|
|
37
|
+
return factorizationValid_;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/// Applies blend weights to create a deformed shape
|
|
41
|
+
///
|
|
42
|
+
/// Adds weighted shape vectors to the base shape
|
|
43
|
+
///
|
|
44
|
+
/// @tparam T Scalar type (float or double)
|
|
45
|
+
/// @param coefficients Weights for each shape vector
|
|
46
|
+
/// @return Resulting deformed shape
|
|
47
|
+
template <typename T>
|
|
48
|
+
[[nodiscard]] std::vector<Eigen::Vector3<T>> computeShape(
|
|
49
|
+
const BlendWeightsT<T>& coefficients) const;
|
|
50
|
+
|
|
51
|
+
/// Output parameter version of computeShape
|
|
52
|
+
///
|
|
53
|
+
/// @tparam T Scalar type (float or double)
|
|
54
|
+
/// @param coefficients Weights for each shape vector
|
|
55
|
+
/// @param result [out] Resulting deformed shape
|
|
56
|
+
template <typename T>
|
|
57
|
+
void computeShape(const BlendWeightsT<T>& coefficients, std::vector<Eigen::Vector3<T>>& result)
|
|
58
|
+
const;
|
|
59
|
+
|
|
60
|
+
/// Solves for blend weights that best approximate a target shape
|
|
61
|
+
///
|
|
62
|
+
/// Uses SVD to find optimal coefficients with optional regularization
|
|
63
|
+
/// and per-vertex weighting
|
|
64
|
+
///
|
|
65
|
+
/// @param vertices Target shape to approximate
|
|
66
|
+
/// @param regularization Higher values produce smaller coefficients
|
|
67
|
+
/// @param weights Optional per-vertex importance weights
|
|
68
|
+
/// @return Estimated blend shape coefficients
|
|
69
|
+
[[nodiscard]] VectorXf estimateCoefficients(
|
|
70
|
+
gsl::span<const Vector3f> vertices,
|
|
71
|
+
float regularization = 1.0f,
|
|
72
|
+
const VectorXf& weights = VectorXf()) const;
|
|
73
|
+
|
|
74
|
+
/// Overrides base method to also invalidate factorization
|
|
75
|
+
///
|
|
76
|
+
/// @param index Index of the shape vector to set
|
|
77
|
+
/// @param shapeVector Vector of vertex offsets
|
|
78
|
+
void setShapeVector(size_t index, gsl::span<const Vector3f> shapeVector);
|
|
79
|
+
|
|
80
|
+
/// Compares all components of two blend shapes
|
|
81
|
+
///
|
|
82
|
+
/// @param blendShape Other blend shape to compare with
|
|
83
|
+
[[nodiscard]] bool isApprox(const BlendShape& blendShape) const;
|
|
84
|
+
|
|
85
|
+
private:
|
|
86
|
+
std::vector<Vector3f> baseShape_;
|
|
87
|
+
mutable Eigen::JacobiSVD<MatrixXf> factorization_;
|
|
88
|
+
mutable bool factorizationValid_;
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
} // namespace momentum
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/character/types.h>
|
|
11
|
+
#include <momentum/math/types.h>
|
|
12
|
+
|
|
13
|
+
namespace momentum {
|
|
14
|
+
|
|
15
|
+
/// Skinning class that manages blend shape vectors/offsets
|
|
16
|
+
///
|
|
17
|
+
/// Used to model facial expressions and potentially other deformations
|
|
18
|
+
/// such as pose-dependent shape changes
|
|
19
|
+
struct BlendShapeBase {
|
|
20
|
+
public:
|
|
21
|
+
BlendShapeBase() = default;
|
|
22
|
+
|
|
23
|
+
/// @param modelSize Number of vertices in the model
|
|
24
|
+
/// @param numShapes Number of blend shapes
|
|
25
|
+
BlendShapeBase(size_t modelSize, size_t numShapes);
|
|
26
|
+
|
|
27
|
+
/// @param shapeVectors Matrix where each column is a shape vector
|
|
28
|
+
void setShapeVectors(const MatrixXf& shapeVectors) {
|
|
29
|
+
shapeVectors_ = shapeVectors;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
[[nodiscard]] const MatrixXf& getShapeVectors() const {
|
|
33
|
+
return shapeVectors_;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/// Calculates weighted combination of shape vectors
|
|
37
|
+
///
|
|
38
|
+
/// @tparam T Scalar type (float or double)
|
|
39
|
+
/// @param blendWeights Weights for each shape vector
|
|
40
|
+
/// @return Combined vertex offsets
|
|
41
|
+
template <typename T>
|
|
42
|
+
[[nodiscard]] VectorX<T> computeDeltas(const BlendWeightsT<T>& blendWeights) const;
|
|
43
|
+
|
|
44
|
+
/// Adds weighted shape vectors to existing vertices
|
|
45
|
+
///
|
|
46
|
+
/// @tparam T Scalar type (float or double)
|
|
47
|
+
/// @param blendWeights Weights for each shape vector
|
|
48
|
+
/// @param result [in,out] Vertices to modify
|
|
49
|
+
template <typename T>
|
|
50
|
+
void applyDeltas(const BlendWeightsT<T>& blendWeights, std::vector<Eigen::Vector3<T>>& result)
|
|
51
|
+
const;
|
|
52
|
+
|
|
53
|
+
/// @param index Index of the shape vector to set
|
|
54
|
+
/// @param shapeVector Vector of vertex offsets
|
|
55
|
+
void setShapeVector(size_t index, gsl::span<const Vector3f> shapeVector);
|
|
56
|
+
|
|
57
|
+
[[nodiscard]] Eigen::Index shapeSize() const {
|
|
58
|
+
return shapeVectors_.cols();
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/// Returns number of vertices (rows/3)
|
|
62
|
+
[[nodiscard]] size_t modelSize() const {
|
|
63
|
+
return shapeVectors_.rows() / 3;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
protected:
|
|
67
|
+
MatrixXf shapeVectors_;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
} // namespace momentum
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/character/fwd.h>
|
|
11
|
+
#include <momentum/character/types.h>
|
|
12
|
+
#include <momentum/math/fwd.h>
|
|
13
|
+
|
|
14
|
+
namespace momentum {
|
|
15
|
+
|
|
16
|
+
/// @file blend_shape_skinning.h
|
|
17
|
+
///
|
|
18
|
+
/// This file provides functions for applying blend shape deformations and skeletal transformations
|
|
19
|
+
/// to character meshes. It contains two main sets of functionality:
|
|
20
|
+
///
|
|
21
|
+
/// 1. Skinning functions:
|
|
22
|
+
/// - skinWithBlendShapes(character, state, blendWeights, outputMesh): Use when you already have
|
|
23
|
+
/// blend weights calculated and want to apply them directly.
|
|
24
|
+
/// - skinWithBlendShapes(character, state, modelParams, outputMesh): Use when you have model
|
|
25
|
+
/// parameters and need to extract blend weights before skinning. This is more convenient for
|
|
26
|
+
/// high-level character animation where you work with model parameters.
|
|
27
|
+
///
|
|
28
|
+
/// 2. Weight extraction functions:
|
|
29
|
+
/// - extractBlendWeights(): Use to get blend shape weights from model parameters for
|
|
30
|
+
/// identity/shape
|
|
31
|
+
/// blend shapes (e.g., body shape variations).
|
|
32
|
+
/// - extractFaceExpressionBlendWeights(): Use to get blend shape weights specifically for facial
|
|
33
|
+
/// expressions, which are stored separately from regular blend shapes.
|
|
34
|
+
|
|
35
|
+
/// Applies blend shape deformations and skeletal transformations to a mesh.
|
|
36
|
+
///
|
|
37
|
+
/// Computes the final vertex positions by applying blend shape offsets to the base mesh,
|
|
38
|
+
/// then transforming the resulting vertices using linear blend skinning based on the
|
|
39
|
+
/// skeleton state. Use this version when you already have pre-calculated blend weights.
|
|
40
|
+
///
|
|
41
|
+
/// @param character Character containing mesh, blend shapes, and skinning data
|
|
42
|
+
/// @param state Current pose of the skeleton
|
|
43
|
+
/// @param blendWeights Weights for each blend shape
|
|
44
|
+
/// @param outputMesh Mesh to store the resulting deformed vertices
|
|
45
|
+
template <typename T>
|
|
46
|
+
void skinWithBlendShapes(
|
|
47
|
+
const Character& character,
|
|
48
|
+
const SkeletonStateT<T>& state,
|
|
49
|
+
const BlendWeightsT<T>& blendWeights,
|
|
50
|
+
MeshT<T>& outputMesh);
|
|
51
|
+
|
|
52
|
+
/// Applies blend shape deformations and skeletal transformations to a mesh.
|
|
53
|
+
///
|
|
54
|
+
/// Overload that extracts blend shape weights from model parameters before skinning.
|
|
55
|
+
/// Use this version when working with high-level character animation where you have
|
|
56
|
+
/// model parameters rather than direct blend weights.
|
|
57
|
+
///
|
|
58
|
+
/// @param character Character containing mesh, blend shapes, and skinning data
|
|
59
|
+
/// @param state Current pose of the skeleton
|
|
60
|
+
/// @param modelParams Model parameters containing blend shape weights
|
|
61
|
+
/// @param outputMesh Mesh to store the resulting deformed vertices
|
|
62
|
+
template <typename T>
|
|
63
|
+
void skinWithBlendShapes(
|
|
64
|
+
const Character& character,
|
|
65
|
+
const SkeletonStateT<T>& state,
|
|
66
|
+
const ModelParametersT<T>& modelParams,
|
|
67
|
+
MeshT<T>& outputMesh);
|
|
68
|
+
|
|
69
|
+
/// Extracts blend shape weights from model parameters.
|
|
70
|
+
///
|
|
71
|
+
/// Maps from the model parameter space to blend shape weights using the parameter transform.
|
|
72
|
+
/// Use this function to get weights for identity/shape blend shapes (e.g., body shape variations).
|
|
73
|
+
///
|
|
74
|
+
/// @param paramTransform Mapping between model parameters and blend shape parameters
|
|
75
|
+
/// @param modelParams Current model parameters
|
|
76
|
+
/// @return Vector of blend shape weights
|
|
77
|
+
template <typename T>
|
|
78
|
+
BlendWeightsT<T> extractBlendWeights(
|
|
79
|
+
const ParameterTransform& paramTransform,
|
|
80
|
+
const ModelParametersT<T>& modelParams);
|
|
81
|
+
|
|
82
|
+
/// Extracts facial expression blend shape weights from model parameters.
|
|
83
|
+
///
|
|
84
|
+
/// Maps from the model parameter space to facial expression blend shape weights
|
|
85
|
+
/// using the parameter transform. Use this function specifically for facial animation
|
|
86
|
+
/// parameters, which are stored separately from regular blend shapes.
|
|
87
|
+
///
|
|
88
|
+
/// @param paramTransform Mapping between model parameters and face expression parameters
|
|
89
|
+
/// @param modelParams Current model parameters
|
|
90
|
+
/// @return Vector of facial expression blend shape weights
|
|
91
|
+
template <typename T>
|
|
92
|
+
BlendWeightsT<T> extractFaceExpressionBlendWeights(
|
|
93
|
+
const ParameterTransform& paramTransform,
|
|
94
|
+
const ModelParametersT<T>& modelParams);
|
|
95
|
+
|
|
96
|
+
} // namespace momentum
|
|
@@ -0,0 +1,272 @@
|
|
|
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
|
+
#include <momentum/character/locator.h>
|
|
13
|
+
#include <momentum/character/parameter_limits.h>
|
|
14
|
+
#include <momentum/character/parameter_transform.h>
|
|
15
|
+
#include <momentum/character/skeleton.h>
|
|
16
|
+
#include <momentum/character/skinned_locator.h>
|
|
17
|
+
#include <momentum/character/types.h>
|
|
18
|
+
#include <momentum/math/fwd.h>
|
|
19
|
+
|
|
20
|
+
namespace momentum {
|
|
21
|
+
|
|
22
|
+
/// A character model with skeletal structure, mesh, and optional components.
|
|
23
|
+
template <typename T>
|
|
24
|
+
struct CharacterT {
|
|
25
|
+
/// @{ @name Required components
|
|
26
|
+
|
|
27
|
+
/// Skeletal structure defining the character's joints and hierarchy
|
|
28
|
+
Skeleton skeleton;
|
|
29
|
+
|
|
30
|
+
/// Maps model parameters to joint parameters
|
|
31
|
+
ParameterTransform parameterTransform;
|
|
32
|
+
|
|
33
|
+
/// @}
|
|
34
|
+
|
|
35
|
+
/// @{ @name Optional components
|
|
36
|
+
|
|
37
|
+
/// Constraints on model parameters
|
|
38
|
+
ParameterLimits parameterLimits;
|
|
39
|
+
|
|
40
|
+
/// Points of interest attached to joints
|
|
41
|
+
LocatorList locators;
|
|
42
|
+
|
|
43
|
+
/// Points of interest attached to joints, with skinning weights
|
|
44
|
+
SkinnedLocatorList skinnedLocators;
|
|
45
|
+
|
|
46
|
+
/// 3D mesh representing the character's surface
|
|
47
|
+
Mesh_u mesh;
|
|
48
|
+
|
|
49
|
+
/// Defines how mesh vertices are influenced by joints
|
|
50
|
+
SkinWeights_u skinWeights;
|
|
51
|
+
|
|
52
|
+
/// Pose-dependent shape corrections
|
|
53
|
+
PoseShape_u poseShapes;
|
|
54
|
+
|
|
55
|
+
/// Collision volumes for the character
|
|
56
|
+
CollisionGeometry_u collision;
|
|
57
|
+
|
|
58
|
+
/// Shape variations that can be blended
|
|
59
|
+
BlendShape_const_p blendShape;
|
|
60
|
+
|
|
61
|
+
/// Facial expression blend shapes
|
|
62
|
+
BlendShapeBase_const_p faceExpressionBlendShape;
|
|
63
|
+
|
|
64
|
+
/// Inverse of the bind pose transformations for each joint
|
|
65
|
+
TransformationList inverseBindPose;
|
|
66
|
+
|
|
67
|
+
/// Maps from original joint indices to simplified joint indices
|
|
68
|
+
std::vector<size_t> jointMap;
|
|
69
|
+
|
|
70
|
+
/// Character identifier
|
|
71
|
+
std::string name;
|
|
72
|
+
|
|
73
|
+
/// @}
|
|
74
|
+
|
|
75
|
+
/// Default constructor
|
|
76
|
+
CharacterT();
|
|
77
|
+
|
|
78
|
+
/// Destructor
|
|
79
|
+
~CharacterT();
|
|
80
|
+
|
|
81
|
+
/// Constructs a character with the specified components
|
|
82
|
+
///
|
|
83
|
+
/// @param s Skeleton defining joint hierarchy
|
|
84
|
+
/// @param pt Parameter transform mapping model parameters to joint parameters
|
|
85
|
+
/// @param pl Optional parameter limits/constraints
|
|
86
|
+
/// @param l Optional locators attached to joints
|
|
87
|
+
/// @param m Optional mesh representing the character's surface
|
|
88
|
+
/// @param sw Optional skin weights defining how mesh vertices are influenced by joints
|
|
89
|
+
/// @param cg Optional collision geometry
|
|
90
|
+
/// @param bs Optional pose-dependent shape corrections
|
|
91
|
+
/// @param blendShapes Optional shape variations that can be blended
|
|
92
|
+
/// @param faceExpressionBlendShapes Optional facial expression blend shapes
|
|
93
|
+
/// @param nameIn Optional character identifier
|
|
94
|
+
/// @param inverseBindPose Optional inverse bind pose transformations
|
|
95
|
+
CharacterT(
|
|
96
|
+
const Skeleton& s,
|
|
97
|
+
const ParameterTransform& pt,
|
|
98
|
+
const ParameterLimits& pl = ParameterLimits(),
|
|
99
|
+
const LocatorList& l = LocatorList(),
|
|
100
|
+
const Mesh* m = nullptr,
|
|
101
|
+
const SkinWeights* sw = nullptr,
|
|
102
|
+
const CollisionGeometry* cg = nullptr,
|
|
103
|
+
const PoseShape* bs = nullptr,
|
|
104
|
+
BlendShape_const_p blendShapes = {},
|
|
105
|
+
BlendShapeBase_const_p faceExpressionBlendShapes = {},
|
|
106
|
+
const std::string& nameIn = "",
|
|
107
|
+
const momentum::TransformationList& inverseBindPose = {},
|
|
108
|
+
const SkinnedLocatorList& skinnedLocators = {});
|
|
109
|
+
|
|
110
|
+
/// Copy constructor
|
|
111
|
+
CharacterT(const CharacterT& c);
|
|
112
|
+
|
|
113
|
+
/// Move constructor
|
|
114
|
+
CharacterT(CharacterT&& c) noexcept;
|
|
115
|
+
|
|
116
|
+
/// Copy assignment operator
|
|
117
|
+
CharacterT& operator=(const CharacterT& rhs);
|
|
118
|
+
|
|
119
|
+
/// Move assignment operator
|
|
120
|
+
CharacterT& operator=(CharacterT&& rhs) noexcept;
|
|
121
|
+
|
|
122
|
+
/// Creates a simplified character with only joints affected by the specified parameters
|
|
123
|
+
///
|
|
124
|
+
/// @param activeParams Parameters to keep (defaults to all parameters)
|
|
125
|
+
/// @return A new character with simplified skeleton and parameter transform
|
|
126
|
+
[[nodiscard]] CharacterT simplify(const ParameterSet& activeParams = ParameterSet().flip()) const;
|
|
127
|
+
|
|
128
|
+
/// Creates a simplified character with only the specified joints
|
|
129
|
+
///
|
|
130
|
+
/// @param activeJoints Boolean vector indicating which joints to keep
|
|
131
|
+
/// @return A new character with only the requested joints
|
|
132
|
+
[[nodiscard]] CharacterT simplifySkeleton(const std::vector<bool>& activeJoints) const;
|
|
133
|
+
|
|
134
|
+
/// Creates a simplified character with only the specified parameters
|
|
135
|
+
///
|
|
136
|
+
/// @param parameterSet Set of parameters to keep
|
|
137
|
+
/// @return A new character with only the requested parameters
|
|
138
|
+
[[nodiscard]] CharacterT simplifyParameterTransform(const ParameterSet& parameterSet) const;
|
|
139
|
+
|
|
140
|
+
/// Remaps skin weights from original character to simplified version
|
|
141
|
+
///
|
|
142
|
+
/// @param skinWeights Original skin weights
|
|
143
|
+
/// @param originalCharacter Original character containing the full joint hierarchy
|
|
144
|
+
/// @return Remapped skin weights for the simplified character
|
|
145
|
+
[[nodiscard]] SkinWeights remapSkinWeights(
|
|
146
|
+
const SkinWeights& skinWeights,
|
|
147
|
+
const CharacterT& originalCharacter) const;
|
|
148
|
+
|
|
149
|
+
/// Remaps parameter limits from original character to simplified version
|
|
150
|
+
///
|
|
151
|
+
/// @param limits Original parameter limits
|
|
152
|
+
/// @param originalCharacter Original character containing the full joint hierarchy
|
|
153
|
+
/// @return Remapped parameter limits for the simplified character
|
|
154
|
+
[[nodiscard]] ParameterLimits remapParameterLimits(
|
|
155
|
+
const ParameterLimits& limits,
|
|
156
|
+
const CharacterT& originalCharacter) const;
|
|
157
|
+
|
|
158
|
+
/// Remaps locators from original character to simplified version
|
|
159
|
+
///
|
|
160
|
+
/// @param locs Original locators
|
|
161
|
+
/// @param originalCharacter Original character containing the full joint hierarchy
|
|
162
|
+
/// @return Remapped locators for the simplified character
|
|
163
|
+
[[nodiscard]] LocatorList remapLocators(
|
|
164
|
+
const LocatorList& locs,
|
|
165
|
+
const CharacterT& originalCharacter) const;
|
|
166
|
+
|
|
167
|
+
[[nodiscard]] SkinnedLocatorList remapSkinnedLocators(
|
|
168
|
+
const SkinnedLocatorList& locs,
|
|
169
|
+
const CharacterT& originalCharacter) const;
|
|
170
|
+
|
|
171
|
+
/// Determines which joints are affected by the specified parameters
|
|
172
|
+
///
|
|
173
|
+
/// @param parameterSet Set of parameters to check
|
|
174
|
+
/// @return Boolean vector indicating which joints are affected by the parameters
|
|
175
|
+
[[nodiscard]] std::vector<bool> parametersToActiveJoints(const ParameterSet& parameterSet) const;
|
|
176
|
+
|
|
177
|
+
/// Determines which parameters affect the specified joints
|
|
178
|
+
///
|
|
179
|
+
/// @param activeJoints Boolean vector indicating which joints to check
|
|
180
|
+
/// @return Set of parameters that affect the specified joints
|
|
181
|
+
[[nodiscard]] ParameterSet activeJointsToParameters(const std::vector<bool>& activeJoints) const;
|
|
182
|
+
|
|
183
|
+
/// Returns parameters representing the character's bind pose
|
|
184
|
+
///
|
|
185
|
+
/// The bind pose is the rest pose when all model parameters and joint offsets are zero.
|
|
186
|
+
/// When forward kinematics is applied to the bind pose, it results in the rest pose skeleton.
|
|
187
|
+
[[nodiscard]] CharacterParameters bindPose() const;
|
|
188
|
+
|
|
189
|
+
/// Initializes the parameter transform with the correct dimensions for this character
|
|
190
|
+
void initParameterTransform();
|
|
191
|
+
|
|
192
|
+
/// Resets the joint map to identity (each joint maps to itself)
|
|
193
|
+
void resetJointMap();
|
|
194
|
+
|
|
195
|
+
/// Initializes the inverse bind pose transformations
|
|
196
|
+
///
|
|
197
|
+
/// The inverse bind pose is a set of affine transformations for each joint that
|
|
198
|
+
/// map from world space to local joint space in the bind pose configuration.
|
|
199
|
+
void initInverseBindPose();
|
|
200
|
+
|
|
201
|
+
/// Splits character parameters into active and inactive components
|
|
202
|
+
///
|
|
203
|
+
/// @param character Character to use for the parameter transform
|
|
204
|
+
/// @param parameters Input parameters to split
|
|
205
|
+
/// @param parameterSet Set indicating which parameters are active
|
|
206
|
+
/// @return Parameters with active parameters zeroed in pose and applied to offsets
|
|
207
|
+
[[nodiscard]] static CharacterParameters splitParameters(
|
|
208
|
+
const CharacterT& character,
|
|
209
|
+
const CharacterParameters& parameters,
|
|
210
|
+
const ParameterSet& parameterSet);
|
|
211
|
+
|
|
212
|
+
/// Creates a new character with the specified blend shapes
|
|
213
|
+
///
|
|
214
|
+
/// @param blendShape_in Blend shapes to add to the character
|
|
215
|
+
/// @param maxBlendShapes Maximum number of blend shape parameters to add (use all if <= 0)
|
|
216
|
+
/// @return A new character with the specified blend shapes
|
|
217
|
+
[[nodiscard]] CharacterT withBlendShape(
|
|
218
|
+
BlendShape_const_p blendShape_in,
|
|
219
|
+
Eigen::Index maxBlendShapes) const;
|
|
220
|
+
|
|
221
|
+
/// Creates a new character with the specified face expression blend shapes
|
|
222
|
+
///
|
|
223
|
+
/// @param blendShape_in Face expression blend shapes to add to the character
|
|
224
|
+
/// @param maxBlendShapes Maximum number of blend shape parameters to add (use all if <= 0)
|
|
225
|
+
/// @return A new character with the specified face expression blend shapes
|
|
226
|
+
[[nodiscard]] CharacterT withFaceExpressionBlendShape(
|
|
227
|
+
BlendShapeBase_const_p blendShape_in,
|
|
228
|
+
Eigen::Index maxBlendShapes = -1) const;
|
|
229
|
+
|
|
230
|
+
/// Adds blend shapes to this character
|
|
231
|
+
///
|
|
232
|
+
/// @param blendShape_in Blend shapes to add to the character
|
|
233
|
+
/// @param maxBlendShapes Maximum number of blend shape parameters to add (use all if <= 0)
|
|
234
|
+
void addBlendShape(const BlendShape_const_p& blendShape_in, Eigen::Index maxBlendShapes);
|
|
235
|
+
|
|
236
|
+
/// Adds face expression blend shapes to this character
|
|
237
|
+
///
|
|
238
|
+
/// @param blendShape_in Face expression blend shapes to add to the character
|
|
239
|
+
/// @param maxBlendShapes Maximum number of blend shape parameters to add (use all if <= 0)
|
|
240
|
+
void addFaceExpressionBlendShape(
|
|
241
|
+
const BlendShapeBase_const_p& blendShape_in,
|
|
242
|
+
Eigen::Index maxBlendShapes = -1);
|
|
243
|
+
|
|
244
|
+
/// Creates a new character with blend shapes baked into the mesh
|
|
245
|
+
///
|
|
246
|
+
/// @param modelParams Model parameters containing blend shape weights
|
|
247
|
+
/// @return A new character with blend shapes baked into the mesh
|
|
248
|
+
[[nodiscard]] CharacterT bakeBlendShape(const ModelParameters& modelParams) const;
|
|
249
|
+
|
|
250
|
+
/// Creates a new character with blend shapes baked into the mesh
|
|
251
|
+
///
|
|
252
|
+
/// @param blendWeights Blend shape weights to apply
|
|
253
|
+
/// @return A new character with blend shapes baked into the mesh
|
|
254
|
+
[[nodiscard]] CharacterT bakeBlendShape(const BlendWeights& blendWeights) const;
|
|
255
|
+
|
|
256
|
+
/// Generic "bake-out" for turning a character into self-contained geometry.
|
|
257
|
+
///
|
|
258
|
+
/// @param[in] modelParams Current pose/scale/blend-shape parameters.
|
|
259
|
+
/// @param[in] bakeBlendShapes Set true (default) to apply blend-shape deltas and remove their
|
|
260
|
+
/// parameters from the character.
|
|
261
|
+
/// @param[in] bakeScales Set true (default) to evaluate the posed skeleton, run
|
|
262
|
+
/// Linear-Blend-Skinning once, and remove all scaling parameters from the character.
|
|
263
|
+
///
|
|
264
|
+
/// The returned character contains a static mesh with all requested deformations baked in, while
|
|
265
|
+
/// still supporting any parameters you elected to keep.
|
|
266
|
+
[[nodiscard]] CharacterT bake(
|
|
267
|
+
const ModelParameters& modelParams,
|
|
268
|
+
bool bakeBlendShapes = true,
|
|
269
|
+
bool bakeScales = true) const;
|
|
270
|
+
};
|
|
271
|
+
|
|
272
|
+
} // namespace momentum
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/character/character.h>
|
|
11
|
+
#include <momentum/character/locator_state.h>
|
|
12
|
+
#include <momentum/character/skeleton_state.h>
|
|
13
|
+
#include <momentum/math/fwd.h>
|
|
14
|
+
|
|
15
|
+
namespace momentum {
|
|
16
|
+
|
|
17
|
+
/// Represents the complete state of a character at a specific point in time.
|
|
18
|
+
///
|
|
19
|
+
/// Stores the character's parameters, skeleton state, locator positions,
|
|
20
|
+
/// skinned mesh, and collision geometry state. This class is used for
|
|
21
|
+
/// character animation and rendering.
|
|
22
|
+
template <typename T>
|
|
23
|
+
struct CharacterStateT {
|
|
24
|
+
/// Model parameters and joint offsets
|
|
25
|
+
CharacterParameters parameters;
|
|
26
|
+
|
|
27
|
+
/// Joint transformations
|
|
28
|
+
SkeletonState skeletonState;
|
|
29
|
+
|
|
30
|
+
/// Locator positions and orientations
|
|
31
|
+
LocatorState locatorState;
|
|
32
|
+
|
|
33
|
+
/// Skinned mesh (may be null if updateMesh=false)
|
|
34
|
+
Mesh_u meshState;
|
|
35
|
+
|
|
36
|
+
/// Collision geometry state (may be null if updateCollision=false)
|
|
37
|
+
CollisionGeometryState_u collisionState;
|
|
38
|
+
|
|
39
|
+
/// Creates an empty character state
|
|
40
|
+
CharacterStateT();
|
|
41
|
+
|
|
42
|
+
/// Creates a deep copy of another character state
|
|
43
|
+
explicit CharacterStateT(const CharacterStateT& other);
|
|
44
|
+
|
|
45
|
+
/// Move constructor
|
|
46
|
+
CharacterStateT(CharacterStateT&& c) noexcept;
|
|
47
|
+
|
|
48
|
+
/// Copy assignment is disabled
|
|
49
|
+
CharacterStateT& operator=(const CharacterStateT& rhs) = delete;
|
|
50
|
+
|
|
51
|
+
/// Move assignment operator
|
|
52
|
+
CharacterStateT& operator=(CharacterStateT&& rhs) noexcept;
|
|
53
|
+
|
|
54
|
+
/// Destructor
|
|
55
|
+
~CharacterStateT();
|
|
56
|
+
|
|
57
|
+
/// Creates a character state in bind pose
|
|
58
|
+
///
|
|
59
|
+
/// @param referenceCharacter The character to use as reference
|
|
60
|
+
/// @param updateMesh Whether to compute the skinned mesh
|
|
61
|
+
/// @param updateCollision Whether to update collision geometry
|
|
62
|
+
explicit CharacterStateT(
|
|
63
|
+
const CharacterT<T>& referenceCharacter,
|
|
64
|
+
bool updateMesh = true,
|
|
65
|
+
bool updateCollision = true);
|
|
66
|
+
|
|
67
|
+
/// Creates a character state with specific parameters
|
|
68
|
+
///
|
|
69
|
+
/// @param parameters The character parameters to use
|
|
70
|
+
/// @param referenceCharacter The character to use as reference
|
|
71
|
+
/// @param updateMesh Whether to compute the skinned mesh
|
|
72
|
+
/// @param updateCollision Whether to update collision geometry
|
|
73
|
+
/// @param applyLimits Whether to apply joint parameter limits
|
|
74
|
+
CharacterStateT(
|
|
75
|
+
const CharacterParameters& parameters,
|
|
76
|
+
const CharacterT<T>& referenceCharacter,
|
|
77
|
+
bool updateMesh = true,
|
|
78
|
+
bool updateCollision = true,
|
|
79
|
+
bool applyLimits = true);
|
|
80
|
+
|
|
81
|
+
/// Updates the character state with specific parameters
|
|
82
|
+
///
|
|
83
|
+
/// If parameters.offsets is empty, it will be initialized with zeros.
|
|
84
|
+
///
|
|
85
|
+
/// @param parameters The character parameters to use
|
|
86
|
+
/// @param referenceCharacter The character to use as reference
|
|
87
|
+
/// @param updateMesh Whether to compute the skinned mesh
|
|
88
|
+
/// @param updateCollision Whether to update collision geometry
|
|
89
|
+
/// @param applyLimits Whether to apply joint parameter limits
|
|
90
|
+
void set(
|
|
91
|
+
const CharacterParameters& parameters,
|
|
92
|
+
const CharacterT<T>& referenceCharacter,
|
|
93
|
+
bool updateMesh = true,
|
|
94
|
+
bool updateCollision = true,
|
|
95
|
+
bool applyLimits = true);
|
|
96
|
+
|
|
97
|
+
/// Sets the character state to the bind pose
|
|
98
|
+
///
|
|
99
|
+
/// @param referenceCharacter The character to use as reference
|
|
100
|
+
/// @param updateMesh Whether to compute the skinned mesh
|
|
101
|
+
/// @param updateCollision Whether to update collision geometry
|
|
102
|
+
void setBindPose(
|
|
103
|
+
const CharacterT<T>& referenceCharacter,
|
|
104
|
+
bool updateMesh = true,
|
|
105
|
+
bool updateCollision = true);
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
} // namespace momentum
|