pymomentum-cpu 0.1.77.post26__cp312-cp312-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-312-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-312-darwin.so +0 -0
- pymomentum/marker_tracking.cpython-312-darwin.so +0 -0
- pymomentum/quaternion.py +740 -0
- pymomentum/skel_state.py +514 -0
- pymomentum/solver.cpython-312-darwin.so +0 -0
- pymomentum/solver2.cpython-312-darwin.so +0 -0
- pymomentum/torch/character.py +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,583 @@
|
|
|
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 <drjit/fwd.h>
|
|
11
|
+
#include <mdspan/mdspan.hpp>
|
|
12
|
+
#include <momentum/common/aligned.h>
|
|
13
|
+
#include <momentum/rasterizer/camera.h>
|
|
14
|
+
#include <momentum/rasterizer/fwd.h>
|
|
15
|
+
#include <momentum/rasterizer/geometry.h>
|
|
16
|
+
#include <momentum/rasterizer/tensor.h>
|
|
17
|
+
#include <Eigen/Geometry>
|
|
18
|
+
#include <gsl/span>
|
|
19
|
+
#include <optional>
|
|
20
|
+
|
|
21
|
+
namespace momentum::rasterizer {
|
|
22
|
+
|
|
23
|
+
using index_t = std::ptrdiff_t;
|
|
24
|
+
|
|
25
|
+
/// mdspan type aliases for cleaner signatures
|
|
26
|
+
template <typename T, size_t Rank>
|
|
27
|
+
using Span = Kokkos::mdspan<T, Kokkos::dextents<index_t, Rank>>;
|
|
28
|
+
|
|
29
|
+
/// Constant variant of Span for read-only access
|
|
30
|
+
template <typename T, size_t Rank>
|
|
31
|
+
using ConstSpan = Span<const T, Rank>;
|
|
32
|
+
|
|
33
|
+
/// Dynamic extent type for mdspan
|
|
34
|
+
template <size_t Rank>
|
|
35
|
+
using Extents = Kokkos::dextents<index_t, Rank>;
|
|
36
|
+
|
|
37
|
+
/// 2D span of floats
|
|
38
|
+
using Span2f = Span<float, 2>;
|
|
39
|
+
/// 3D span of floats
|
|
40
|
+
using Span3f = Span<float, 3>;
|
|
41
|
+
/// 2D span of 32-bit integers
|
|
42
|
+
using Span2i = Span<int32_t, 2>;
|
|
43
|
+
|
|
44
|
+
/// Phong material definition for realistic lighting calculations
|
|
45
|
+
///
|
|
46
|
+
/// This structure defines the material properties used in Phong shading,
|
|
47
|
+
/// including diffuse, specular, and emissive components, as well as optional
|
|
48
|
+
/// texture maps for enhanced visual fidelity.
|
|
49
|
+
struct PhongMaterial {
|
|
50
|
+
/// Diffuse color component (base color under diffuse lighting)
|
|
51
|
+
Eigen::Vector3f diffuseColor;
|
|
52
|
+
/// Specular color component (color of specular highlights)
|
|
53
|
+
Eigen::Vector3f specularColor;
|
|
54
|
+
/// Specular exponent controlling the sharpness of specular highlights
|
|
55
|
+
float specularExponent;
|
|
56
|
+
/// Emissive color component (self-illumination)
|
|
57
|
+
Eigen::Vector3f emissiveColor;
|
|
58
|
+
|
|
59
|
+
/// Optional diffuse texture map (RGB channels)
|
|
60
|
+
Tensor<float, 3> diffuseTextureMap;
|
|
61
|
+
/// Optional emissive texture map (RGB channels)
|
|
62
|
+
Tensor<float, 3> emissiveTextureMap;
|
|
63
|
+
|
|
64
|
+
/// Check if material has any texture maps
|
|
65
|
+
///
|
|
66
|
+
/// @return true if either diffuse or emissive texture maps are present
|
|
67
|
+
[[nodiscard]] bool hasTextureMap() const {
|
|
68
|
+
return !diffuseTextureMap.empty() || !emissiveTextureMap.empty();
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/// Constructor with default Phong material values
|
|
72
|
+
///
|
|
73
|
+
/// @param diffuseColor Base diffuse color (default: white)
|
|
74
|
+
/// @param specularColor Specular highlight color (default: black)
|
|
75
|
+
/// @param specularExponent Specular sharpness (default: 10.0)
|
|
76
|
+
/// @param emissiveColor Self-illumination color (default: black)
|
|
77
|
+
PhongMaterial(
|
|
78
|
+
const Eigen::Vector3f& diffuseColor = Eigen::Vector3f::Ones(),
|
|
79
|
+
const Eigen::Vector3f& specularColor = Eigen::Vector3f::Zero(),
|
|
80
|
+
float specularExponent = 10.0f,
|
|
81
|
+
const Eigen::Vector3f& emissiveColor = Eigen::Vector3f::Zero())
|
|
82
|
+
: diffuseColor(diffuseColor),
|
|
83
|
+
specularColor(specularColor),
|
|
84
|
+
specularExponent(specularExponent),
|
|
85
|
+
emissiveColor(emissiveColor) {}
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
/// Types of lights supported by the rasterizer
|
|
89
|
+
enum class LightType { Point, Directional, Ambient };
|
|
90
|
+
|
|
91
|
+
/// Basic light structure for rendering calculations
|
|
92
|
+
///
|
|
93
|
+
/// Represents a light source with position, color, and type information
|
|
94
|
+
/// for use in Phong shading calculations.
|
|
95
|
+
struct Light {
|
|
96
|
+
Light() = default;
|
|
97
|
+
/// Constructor for creating a light with specified properties
|
|
98
|
+
///
|
|
99
|
+
/// @param position Light position in world/eye space
|
|
100
|
+
/// @param color RGB color intensity of the light
|
|
101
|
+
/// @param type Type of light (Point, Directional, or Ambient)
|
|
102
|
+
Light(const Eigen::Vector3f& position, const Eigen::Vector3f& color, LightType type)
|
|
103
|
+
: position(position), color(color), type(type) {}
|
|
104
|
+
|
|
105
|
+
/// Light position (for Point lights) or direction (for Directional lights)
|
|
106
|
+
Eigen::Vector3f position{0, 0, 0};
|
|
107
|
+
/// RGB color intensity of the light
|
|
108
|
+
Eigen::Vector3f color{1, 1, 1};
|
|
109
|
+
/// Type of light source
|
|
110
|
+
LightType type = LightType::Point;
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
/// Create an ambient light source
|
|
114
|
+
///
|
|
115
|
+
/// @param color RGB color intensity (default: white)
|
|
116
|
+
/// @return Configured ambient light
|
|
117
|
+
Light createAmbientLight(const Eigen::Vector3f& color = Eigen::Vector3f::Ones());
|
|
118
|
+
|
|
119
|
+
/// Create a directional light source (like sunlight)
|
|
120
|
+
///
|
|
121
|
+
/// @param dir Direction vector of the light
|
|
122
|
+
/// @param color RGB color intensity (default: white)
|
|
123
|
+
/// @return Configured directional light
|
|
124
|
+
Light createDirectionalLight(
|
|
125
|
+
const Eigen::Vector3f& dir,
|
|
126
|
+
const Eigen::Vector3f& color = Eigen::Vector3f::Ones());
|
|
127
|
+
|
|
128
|
+
/// Create a point light source
|
|
129
|
+
///
|
|
130
|
+
/// @param pos Position of the light in world space
|
|
131
|
+
/// @param color RGB color intensity (default: white)
|
|
132
|
+
/// @return Configured point light
|
|
133
|
+
Light createPointLight(
|
|
134
|
+
const Eigen::Vector3f& pos,
|
|
135
|
+
const Eigen::Vector3f& color = Eigen::Vector3f::Ones());
|
|
136
|
+
|
|
137
|
+
/// Transform a light by the given transformation matrix
|
|
138
|
+
///
|
|
139
|
+
/// @param light Light to transform
|
|
140
|
+
/// @param xf Affine transformation matrix
|
|
141
|
+
/// @return Transformed light
|
|
142
|
+
Light transformLight(const Light& light, const Eigen::Affine3f& xf);
|
|
143
|
+
|
|
144
|
+
/// Pad image width to ensure proper SIMD alignment
|
|
145
|
+
///
|
|
146
|
+
/// @param width Original image width
|
|
147
|
+
/// @return Padded width (multiple of 8 for SIMD support)
|
|
148
|
+
index_t padImageWidthForRasterizer(index_t width);
|
|
149
|
+
|
|
150
|
+
/// Rasterize a mesh to depth/RGB buffer using Phong lighting model
|
|
151
|
+
///
|
|
152
|
+
/// This function renders a 3D mesh with realistic lighting using the Phong shading model.
|
|
153
|
+
/// It supports texture mapping, multi-pass rendering, and various output buffers for
|
|
154
|
+
/// advanced rendering techniques.
|
|
155
|
+
///
|
|
156
|
+
/// @param positions_world Vertex positions in world space (flat array of floats)
|
|
157
|
+
/// @param normals_world Vertex normals in world space (flat array of floats)
|
|
158
|
+
/// @param triangles Triangle indices into vertex arrays
|
|
159
|
+
/// @param textureCoords Texture coordinates for vertices
|
|
160
|
+
/// @param textureTriangles Array of triangles in texture space. Should have the same size as the
|
|
161
|
+
/// triangles array but contain indices into the textureCoords array. Supports texture
|
|
162
|
+
/// vertices being different from mesh vertices so you can have discontinuities in the
|
|
163
|
+
/// texture map. If textureTriangles is not provided, the regular triangles array will be
|
|
164
|
+
/// used in its place.
|
|
165
|
+
/// @param perVertexDiffuseColor Per-vertex diffuse color modulation
|
|
166
|
+
/// @param camera Camera to render from
|
|
167
|
+
/// @param modelMatrix Additional transform to apply to the model. Unlike the camera extrinsics it
|
|
168
|
+
/// is
|
|
169
|
+
/// allowed to use non-uniform scale and shear.
|
|
170
|
+
/// @param nearClip Near clipping value: triangles closer than this are not rendered.
|
|
171
|
+
/// @param material Phong material to use when rendering.
|
|
172
|
+
/// @param zBuffer Input/output depth buffer. If you want to render multiple objects in a scene, you
|
|
173
|
+
/// can reuse the same depth buffer. Must be padded out to a multiple of 8 for proper SIMD
|
|
174
|
+
/// support (makeRasterizerZBuffer does this automatically).
|
|
175
|
+
/// @param rgbBuffer Input/output RGB buffer. Has the same requirements as the depth buffer.
|
|
176
|
+
/// @param surfaceNormalsBuffer Input/output surface normal buffer. Writes the eye-space surface
|
|
177
|
+
/// normal
|
|
178
|
+
/// as (x,y,z) triplet for each pixel.
|
|
179
|
+
/// @param vertexIndexBuffer Input/output buffer of vertex indices; writes the index of the closest
|
|
180
|
+
/// vertex in the triangle for every rendered pixel (values where the depth buffer is set).
|
|
181
|
+
/// @param triangleIndexBuffer Writes the index of the closest triangle for every rendered pixel.
|
|
182
|
+
/// @param lights_eye Lights in eye coordinates. If not provided, uses a default lighting setup
|
|
183
|
+
/// with a single light colocated with the camera.
|
|
184
|
+
/// @param backfaceCulling Enable back-face culling; speeds up the render but means back-facing
|
|
185
|
+
/// surfaces
|
|
186
|
+
/// will not appear.
|
|
187
|
+
/// @param depthOffset Offset the depth; useful for e.g. rendering the skeleton slightly in front of
|
|
188
|
+
/// the
|
|
189
|
+
/// mesh.
|
|
190
|
+
/// @param imageOffset Offset within the image by (delta_x, delta_y) pixels. Useful for rendering
|
|
191
|
+
/// slightly off to the side of the background or another mesh so you can compare the two
|
|
192
|
+
/// without needing to construct a special camera.
|
|
193
|
+
///
|
|
194
|
+
/// For use with Torch tensors, takes the positions/normals/triangles as a flat array of floats
|
|
195
|
+
void rasterizeMesh(
|
|
196
|
+
const Eigen::Ref<const Eigen::VectorXf>& positions_world,
|
|
197
|
+
const Eigen::Ref<const Eigen::VectorXf>& normals_world,
|
|
198
|
+
const Eigen::Ref<const Eigen::VectorXi>& triangles,
|
|
199
|
+
const Eigen::Ref<const Eigen::VectorXf>& textureCoords,
|
|
200
|
+
const Eigen::Ref<const Eigen::VectorXi>& textureTriangles,
|
|
201
|
+
const Eigen::Ref<const Eigen::VectorXf>& perVertexDiffuseColor,
|
|
202
|
+
const Camera& camera,
|
|
203
|
+
const Eigen::Matrix4f& modelMatrix,
|
|
204
|
+
float nearClip,
|
|
205
|
+
const PhongMaterial& material,
|
|
206
|
+
Span2f zBuffer,
|
|
207
|
+
Span3f rgbBuffer = {},
|
|
208
|
+
Span3f surfaceNormalsBuffer = {},
|
|
209
|
+
Span2i vertexIndexBuffer = {},
|
|
210
|
+
Span2i triangleIndexBuffer = {},
|
|
211
|
+
const std::vector<Light>& lights_eye = {},
|
|
212
|
+
bool backfaceCulling = true,
|
|
213
|
+
float depthOffset = 0,
|
|
214
|
+
const Eigen::Vector2f& imageOffset = {0, 0});
|
|
215
|
+
|
|
216
|
+
/// Rasterize 3D line segments with specified thickness and color
|
|
217
|
+
///
|
|
218
|
+
/// This function projects 3D line segments to image space using camera transformation
|
|
219
|
+
/// and rasterizes them using the actual computed line depth for depth testing.
|
|
220
|
+
/// Lines are not anti-aliased; for smoother rendering consider using supersampling.
|
|
221
|
+
///
|
|
222
|
+
/// @param positions_world 3D line vertex positions in world space (consecutive pairs form line
|
|
223
|
+
/// segments) @param camera Camera for 3D projection @param modelMatrix Additional model
|
|
224
|
+
/// transformation matrix @param nearClip Near clipping distance @param color RGB color for all line
|
|
225
|
+
/// segments @param thickness Line thickness in pixels @param zBuffer **Required** input/output
|
|
226
|
+
/// depth buffer (SIMD-aligned) @param rgbBuffer Optional input/output RGB color buffer @param
|
|
227
|
+
/// depthOffset Depth offset for layered rendering @param imageOffset Pixel offset for comparative
|
|
228
|
+
/// rendering
|
|
229
|
+
void rasterizeLines(
|
|
230
|
+
gsl::span<const Eigen::Vector3f> positions_world,
|
|
231
|
+
const Camera& camera,
|
|
232
|
+
const Eigen::Matrix4f& modelMatrix,
|
|
233
|
+
float nearClip,
|
|
234
|
+
const Eigen::Vector3f& color,
|
|
235
|
+
float thickness,
|
|
236
|
+
Span2f zBuffer,
|
|
237
|
+
Span3f rgbBuffer = {},
|
|
238
|
+
float depthOffset = 0,
|
|
239
|
+
const Eigen::Vector2f& imageOffset = {0, 0});
|
|
240
|
+
|
|
241
|
+
/// Rasterize 3D line segments (flat array version)
|
|
242
|
+
///
|
|
243
|
+
/// @see rasterizeLines(gsl::span<const Eigen::Vector3f>&, const Camera&, const Eigen::Matrix4f&,
|
|
244
|
+
/// float, const Eigen::Vector3f&, float, Span2f, Span3f, float, const Eigen::Vector2f&)
|
|
245
|
+
///
|
|
246
|
+
/// @param positions_world Flat array of 3D positions (x1,y1,z1,x2,y2,z2,...)
|
|
247
|
+
void rasterizeLines(
|
|
248
|
+
const Eigen::Ref<const Eigen::VectorXf>& positions_world,
|
|
249
|
+
const Camera& camera,
|
|
250
|
+
const Eigen::Matrix4f& modelMatrix,
|
|
251
|
+
float nearClip,
|
|
252
|
+
const Eigen::Vector3f& color,
|
|
253
|
+
float thickness,
|
|
254
|
+
Span2f zBuffer,
|
|
255
|
+
Span3f rgbBuffer = {},
|
|
256
|
+
float depthOffset = 0,
|
|
257
|
+
const Eigen::Vector2f& imageOffset = {0, 0});
|
|
258
|
+
|
|
259
|
+
/// Rasterize 3D circles (possibly filled) projected to screen space
|
|
260
|
+
///
|
|
261
|
+
/// This function projects 3D circle centers to image space using camera transformation
|
|
262
|
+
/// and rasterizes them using the actual computed circle depth for depth testing.
|
|
263
|
+
/// Circles can be rendered as outlines only, filled only, or both. Circles are not
|
|
264
|
+
/// anti-aliased; for smoother rendering consider using supersampling.
|
|
265
|
+
///
|
|
266
|
+
/// @param positions_world 3D circle center positions in world space
|
|
267
|
+
/// @param camera Camera for 3D projection
|
|
268
|
+
/// @param modelMatrix Additional model transformation matrix
|
|
269
|
+
/// @param nearClip Near clipping distance
|
|
270
|
+
/// @param lineColor Optional outline color (if not set, no outline is drawn)
|
|
271
|
+
/// @param fillColor Optional fill color (if not set, circles are not filled)
|
|
272
|
+
/// @param lineThickness Outline thickness in pixels
|
|
273
|
+
/// @param radius Circle radius in world units
|
|
274
|
+
/// @param zBuffer **Required** input/output depth buffer (SIMD-aligned)
|
|
275
|
+
/// @param rgbBuffer Optional input/output RGB color buffer
|
|
276
|
+
/// @param depthOffset Depth offset for layered rendering
|
|
277
|
+
/// @param imageOffset Pixel offset for comparative rendering
|
|
278
|
+
void rasterizeCircles(
|
|
279
|
+
gsl::span<const Eigen::Vector3f> positions_world,
|
|
280
|
+
const Camera& camera,
|
|
281
|
+
const Eigen::Matrix4f& modelMatrix,
|
|
282
|
+
float nearClip,
|
|
283
|
+
const std::optional<Eigen::Vector3f>& lineColor,
|
|
284
|
+
const std::optional<Eigen::Vector3f>& fillColor,
|
|
285
|
+
float lineThickness,
|
|
286
|
+
float radius,
|
|
287
|
+
Span2f zBuffer,
|
|
288
|
+
Span3f rgbBuffer = {},
|
|
289
|
+
float depthOffset = 0,
|
|
290
|
+
const Eigen::Vector2f& imageOffset = {0, 0});
|
|
291
|
+
|
|
292
|
+
/// Rasterize 3D circles (flat array version)
|
|
293
|
+
///
|
|
294
|
+
/// @see rasterizeCircles(gsl::span<const Eigen::Vector3f>, const Camera&, const Eigen::Matrix4f&,
|
|
295
|
+
/// float, const std::optional<Eigen::Vector3f>&, const std::optional<Eigen::Vector3f>&, float,
|
|
296
|
+
/// float, Span2f, Span3f, float, const Eigen::Vector2f&)
|
|
297
|
+
///
|
|
298
|
+
/// @param positions_world Flat array of 3D positions (x1,y1,z1,x2,y2,z2,...)
|
|
299
|
+
void rasterizeCircles(
|
|
300
|
+
const Eigen::Ref<const Eigen::VectorXf>& positions_world,
|
|
301
|
+
const Camera& camera,
|
|
302
|
+
const Eigen::Matrix4f& modelMatrix,
|
|
303
|
+
float nearClip,
|
|
304
|
+
const std::optional<Eigen::Vector3f>& lineColor,
|
|
305
|
+
const std::optional<Eigen::Vector3f>& fillColor,
|
|
306
|
+
float lineThickness,
|
|
307
|
+
float radius,
|
|
308
|
+
Span2f zBuffer,
|
|
309
|
+
Span3f rgbBuffer = {},
|
|
310
|
+
float depthOffset = 0,
|
|
311
|
+
const Eigen::Vector2f& imageOffset = {0, 0});
|
|
312
|
+
|
|
313
|
+
/// Rasterize a mesh using Eigen vector containers (uint32 triangles)
|
|
314
|
+
///
|
|
315
|
+
/// @see rasterizeMesh(const Eigen::Ref<const Eigen::VectorXf>&, const Eigen::Ref<const
|
|
316
|
+
/// Eigen::VectorXf>&, const Eigen::Ref<const Eigen::VectorXi>&, const Eigen::Ref<const
|
|
317
|
+
/// Eigen::VectorXf>&, const Eigen::Ref<const Eigen::VectorXi>&, const Eigen::Ref<const
|
|
318
|
+
/// Eigen::VectorXf>&, const Camera&, const Eigen::Matrix4f&, float, const PhongMaterial&, Span2f,
|
|
319
|
+
/// Span3f, Span3f, Span2i, Span2i, const std::vector<Light>&, bool, float, const Eigen::Vector2f&)
|
|
320
|
+
///
|
|
321
|
+
/// @param positions_world Vector of 3D vertex positions in world space
|
|
322
|
+
/// @param normals_world Vector of 3D vertex normals in world space
|
|
323
|
+
/// @param triangles Vector of triangles with uint32 indices
|
|
324
|
+
void rasterizeMesh(
|
|
325
|
+
gsl::span<const Eigen::Vector3f> positions_world,
|
|
326
|
+
gsl::span<const Eigen::Vector3f> normals_world,
|
|
327
|
+
gsl::span<const Eigen::Matrix<uint32_t, 3, 1>> triangles,
|
|
328
|
+
gsl::span<const Eigen::Vector2f> textureCoords,
|
|
329
|
+
gsl::span<const Eigen::Matrix<uint32_t, 3, 1>> textureTriangles,
|
|
330
|
+
const Eigen::Ref<const Eigen::VectorXf>& perVertexDiffuseColor,
|
|
331
|
+
const Camera& camera,
|
|
332
|
+
const Eigen::Matrix4f& modelMatrix,
|
|
333
|
+
float nearClip,
|
|
334
|
+
const PhongMaterial& material,
|
|
335
|
+
Span2f zBuffer,
|
|
336
|
+
Span3f rgbBuffer = {},
|
|
337
|
+
Span3f surfaceNormalsBuffer = {},
|
|
338
|
+
Span2i vertexIndexBuffer = {},
|
|
339
|
+
Span2i triangleIndexBuffer = {},
|
|
340
|
+
const std::vector<Light>& lights_eye = {},
|
|
341
|
+
bool backfaceCulling = true,
|
|
342
|
+
float depthOffset = 0,
|
|
343
|
+
const Eigen::Vector2f& imageOffset = {0, 0});
|
|
344
|
+
|
|
345
|
+
/// Rasterize a mesh using a Mesh object
|
|
346
|
+
///
|
|
347
|
+
/// @see rasterizeMesh(const Eigen::Ref<const Eigen::VectorXf>&, const Eigen::Ref<const
|
|
348
|
+
/// Eigen::VectorXf>&, const Eigen::Ref<const Eigen::VectorXi>&, const Eigen::Ref<const
|
|
349
|
+
/// Eigen::VectorXf>&, const Eigen::Ref<const Eigen::VectorXi>&, const Eigen::Ref<const
|
|
350
|
+
/// Eigen::VectorXf>&, const Camera&, const Eigen::Matrix4f&, float, const PhongMaterial&, Span2f,
|
|
351
|
+
/// Span3f, Span3f, Span2i, Span2i, const std::vector<Light>&, bool, float, const Eigen::Vector2f&)
|
|
352
|
+
///
|
|
353
|
+
/// @param mesh Mesh object containing all geometry data
|
|
354
|
+
void rasterizeMesh(
|
|
355
|
+
const Mesh& mesh,
|
|
356
|
+
const Camera& camera,
|
|
357
|
+
const Eigen::Matrix4f& modelMatrix,
|
|
358
|
+
float nearClip,
|
|
359
|
+
const PhongMaterial& material,
|
|
360
|
+
Span2f zBuffer,
|
|
361
|
+
Span3f rgbBuffer = {},
|
|
362
|
+
Span3f surfaceNormalsBuffer = {},
|
|
363
|
+
Span2i vertexIndexBuffer = {},
|
|
364
|
+
Span2i triangleIndexBuffer = {},
|
|
365
|
+
const std::vector<Light>& lights_eye = {},
|
|
366
|
+
bool backfaceCulling = true,
|
|
367
|
+
float depthOffset = 0,
|
|
368
|
+
const Eigen::Vector2f& imageOffset = {0, 0});
|
|
369
|
+
|
|
370
|
+
/// Rasterize a mesh using Eigen vector containers (int32 triangles)
|
|
371
|
+
///
|
|
372
|
+
/// @see rasterizeMesh(const Eigen::Ref<const Eigen::VectorXf>&, const Eigen::Ref<const
|
|
373
|
+
/// Eigen::VectorXf>&, const Eigen::Ref<const Eigen::VectorXi>&, const Eigen::Ref<const
|
|
374
|
+
/// Eigen::VectorXf>&, const Eigen::Ref<const Eigen::VectorXi>&, const Eigen::Ref<const
|
|
375
|
+
/// Eigen::VectorXf>&, const Camera&, const Eigen::Matrix4f&, float, const PhongMaterial&, Span2f,
|
|
376
|
+
/// Span3f, Span3f, Span2i, Span2i, const std::vector<Light>&, bool, float, const Eigen::Vector2f&)
|
|
377
|
+
///
|
|
378
|
+
/// @param positions_world Vector of 3D vertex positions in world space
|
|
379
|
+
/// @param normals_world Vector of 3D vertex normals in world space
|
|
380
|
+
/// @param triangles Vector of triangles with int32 indices
|
|
381
|
+
void rasterizeMesh(
|
|
382
|
+
gsl::span<const Eigen::Vector3f> positions_world,
|
|
383
|
+
gsl::span<const Eigen::Vector3f> normals_world,
|
|
384
|
+
gsl::span<const Eigen::Vector3i> triangles,
|
|
385
|
+
gsl::span<const Eigen::Vector2f> textureCoords,
|
|
386
|
+
gsl::span<const Eigen::Vector3i> textureTriangles,
|
|
387
|
+
const Eigen::Ref<const Eigen::VectorXf>& perVertexDiffuseColor,
|
|
388
|
+
const Camera& camera,
|
|
389
|
+
const Eigen::Matrix4f& modelMatrix,
|
|
390
|
+
float nearClip,
|
|
391
|
+
const PhongMaterial& material,
|
|
392
|
+
Span2f zBuffer,
|
|
393
|
+
Span3f rgbBuffer = {},
|
|
394
|
+
Span3f surfaceNormalsBuffer = {},
|
|
395
|
+
Span2i vertexIndexBuffer = {},
|
|
396
|
+
Span2i triangleIndexBuffer = {},
|
|
397
|
+
const std::vector<Light>& lights_eye = {},
|
|
398
|
+
bool backfaceCulling = true,
|
|
399
|
+
float depthOffset = 0,
|
|
400
|
+
const Eigen::Vector2f& imageOffset = {0, 0});
|
|
401
|
+
|
|
402
|
+
/// Rasterize mesh wireframe with outlined edges
|
|
403
|
+
///
|
|
404
|
+
/// This function renders only the edges of triangles, useful for debugging geometry
|
|
405
|
+
/// or creating wireframe visualizations. Lines are not anti-aliased; for smoother
|
|
406
|
+
/// wireframes consider using supersampling.
|
|
407
|
+
///
|
|
408
|
+
/// @param positions_world Vector of 3D vertex positions in world space
|
|
409
|
+
/// @param triangles Vector of triangles defining mesh connectivity
|
|
410
|
+
/// @param camera Camera for 3D projection
|
|
411
|
+
/// @param modelMatrix Additional model transformation matrix
|
|
412
|
+
/// @param nearClip Near clipping distance
|
|
413
|
+
/// @param color RGB color for all wireframe edges
|
|
414
|
+
/// @param thickness Line thickness in pixels
|
|
415
|
+
/// @param zBuffer Input/output depth buffer (SIMD-aligned)
|
|
416
|
+
/// @param rgbBuffer Optional input/output RGB color buffer
|
|
417
|
+
/// @param backfaceCulling Enable back-face culling
|
|
418
|
+
/// @param depthOffset Depth offset for layered rendering
|
|
419
|
+
/// @param imageOffset Pixel offset for comparative rendering
|
|
420
|
+
void rasterizeWireframe(
|
|
421
|
+
gsl::span<const Eigen::Vector3f> positions_world,
|
|
422
|
+
gsl::span<const Eigen::Vector3i> triangles,
|
|
423
|
+
const Camera& camera,
|
|
424
|
+
const Eigen::Matrix4f& modelMatrix,
|
|
425
|
+
float nearClip,
|
|
426
|
+
const Eigen::Vector3f& color,
|
|
427
|
+
float thickness,
|
|
428
|
+
Span2f zBuffer,
|
|
429
|
+
Span3f rgbBuffer = {},
|
|
430
|
+
bool backfaceCulling = true,
|
|
431
|
+
float depthOffset = 0,
|
|
432
|
+
const Eigen::Vector2f& imageOffset = {0, 0});
|
|
433
|
+
|
|
434
|
+
/// Rasterize mesh wireframe (flat array version)
|
|
435
|
+
///
|
|
436
|
+
/// @see rasterizeWireframe(gsl::span<const Eigen::Vector3f>, gsl::span<const Eigen::Vector3i>,
|
|
437
|
+
/// const Camera&, const Eigen::Matrix4f&, float, const Eigen::Vector3f&, float, Span2f, Span3f,
|
|
438
|
+
/// bool, float, const Eigen::Vector2f&)
|
|
439
|
+
///
|
|
440
|
+
/// @param positions_world Flat array of 3D positions (x1,y1,z1,x2,y2,z2,...)
|
|
441
|
+
/// @param triangles Flat array of triangle indices
|
|
442
|
+
void rasterizeWireframe(
|
|
443
|
+
const Eigen::Ref<const Eigen::VectorXf>& positions_world,
|
|
444
|
+
const Eigen::Ref<const Eigen::VectorXi>& triangles,
|
|
445
|
+
const Camera& camera,
|
|
446
|
+
const Eigen::Matrix4f& modelMatrix,
|
|
447
|
+
float nearClip,
|
|
448
|
+
const Eigen::Vector3f& color,
|
|
449
|
+
float thickness,
|
|
450
|
+
Span2f zBuffer,
|
|
451
|
+
Span3f rgbBuffer = {},
|
|
452
|
+
bool backfaceCulling = true,
|
|
453
|
+
float depthOffset = 0,
|
|
454
|
+
const Eigen::Vector2f& imageOffset = {0, 0});
|
|
455
|
+
|
|
456
|
+
/// Rasterize oriented circular splats with normal-based orientation
|
|
457
|
+
///
|
|
458
|
+
/// A "splat" is an oriented circle centered at the provided position and oriented
|
|
459
|
+
/// orthogonal to the normal. This is particularly useful for rasterizing point clouds
|
|
460
|
+
/// like those constructed from depth maps, providing a surface-like appearance.
|
|
461
|
+
///
|
|
462
|
+
/// @param positions_world 3D splat center positions in world space
|
|
463
|
+
/// @param normals_world 3D normal vectors defining splat orientation
|
|
464
|
+
/// @param camera Camera for 3D projection
|
|
465
|
+
/// @param modelMatrix Additional model transformation matrix
|
|
466
|
+
/// @param nearClip Near clipping distance
|
|
467
|
+
/// @param frontMaterial Phong material for front-facing splats
|
|
468
|
+
/// @param backMaterial Phong material for back-facing splats
|
|
469
|
+
/// @param radius Splat radius in world units
|
|
470
|
+
/// @param zBuffer Input/output depth buffer (SIMD-aligned)
|
|
471
|
+
/// @param rgbBuffer Optional input/output RGB color buffer
|
|
472
|
+
/// @param lights_eye Lights in eye coordinates
|
|
473
|
+
/// @param depthOffset Depth offset for layered rendering
|
|
474
|
+
/// @param imageOffset Pixel offset for comparative rendering
|
|
475
|
+
void rasterizeSplats(
|
|
476
|
+
gsl::span<const Eigen::Vector3f> positions_world,
|
|
477
|
+
gsl::span<const Eigen::Vector3f> normals_world,
|
|
478
|
+
const Camera& camera,
|
|
479
|
+
const Eigen::Matrix4f& modelMatrix,
|
|
480
|
+
float nearClip,
|
|
481
|
+
const PhongMaterial& frontMaterial,
|
|
482
|
+
const PhongMaterial& backMaterial,
|
|
483
|
+
float radius,
|
|
484
|
+
Span2f zBuffer,
|
|
485
|
+
Span3f rgbBuffer = {},
|
|
486
|
+
const std::vector<Light>& lights_eye = {},
|
|
487
|
+
float depthOffset = 0,
|
|
488
|
+
const Eigen::Vector2f& imageOffset = {0, 0});
|
|
489
|
+
|
|
490
|
+
/// Rasterize 2D line segments directly in image space
|
|
491
|
+
///
|
|
492
|
+
/// This function renders line segments using 2D image coordinates directly, without 3D
|
|
493
|
+
/// projection. When a depth buffer is provided, it fills the buffer with zeros, effectively
|
|
494
|
+
/// placing the lines within the image plane. Useful for UI overlays or 2D graphics.
|
|
495
|
+
/// Lines are not anti-aliased; for smoother rendering consider using supersampling.
|
|
496
|
+
///
|
|
497
|
+
/// @param positions_image 2D line vertex positions in image coordinates (consecutive pairs form
|
|
498
|
+
/// line segments) @param color RGB color for all line segments @param thickness Line thickness in
|
|
499
|
+
/// pixels @param rgbBuffer Input/output RGB color buffer @param zBuffer **Optional** depth buffer
|
|
500
|
+
/// (fills with zeros when provided) @param imageOffset Pixel offset for positioning
|
|
501
|
+
void rasterizeLines2D(
|
|
502
|
+
gsl::span<const Eigen::Vector2f> positions_image,
|
|
503
|
+
const Eigen::Vector3f& color,
|
|
504
|
+
float thickness,
|
|
505
|
+
Span3f rgbBuffer,
|
|
506
|
+
Span2f zBuffer = {},
|
|
507
|
+
const Eigen::Vector2f& imageOffset = {0, 0});
|
|
508
|
+
|
|
509
|
+
/// Rasterize 2D line segments (flat array version)
|
|
510
|
+
///
|
|
511
|
+
/// @see rasterizeLines2D(gsl::span<const Eigen::Vector2f>, const Eigen::Vector3f&, float, Span3f,
|
|
512
|
+
/// Span2f, const Eigen::Vector2f&)
|
|
513
|
+
///
|
|
514
|
+
/// @param positions_image Flat array of 2D positions (x1,y1,x2,y2,...)
|
|
515
|
+
void rasterizeLines2D(
|
|
516
|
+
const Eigen::Ref<const Eigen::VectorXf>& positions_image,
|
|
517
|
+
const Eigen::Vector3f& color,
|
|
518
|
+
float thickness,
|
|
519
|
+
Span3f rgbBuffer,
|
|
520
|
+
Span2f zBuffer = {},
|
|
521
|
+
const Eigen::Vector2f& imageOffset = {0, 0});
|
|
522
|
+
|
|
523
|
+
/// Rasterize 2D circles directly in image space
|
|
524
|
+
///
|
|
525
|
+
/// This function renders circles using 2D image coordinates directly, without 3D
|
|
526
|
+
/// projection. When a depth buffer is provided, it fills the buffer with zeros, effectively
|
|
527
|
+
/// placing the circles within the image plane. Circles can be rendered as outlines only,
|
|
528
|
+
/// filled only, or both. Circles are not anti-aliased; for smoother rendering consider
|
|
529
|
+
/// using supersampling.
|
|
530
|
+
///
|
|
531
|
+
/// @param positions_image 2D circle center positions in image coordinates
|
|
532
|
+
/// @param lineColor Optional outline color (if not set, no outline is drawn)
|
|
533
|
+
/// @param fillColor Optional fill color (if not set, circles are not filled)
|
|
534
|
+
/// @param lineThickness Outline thickness in pixels
|
|
535
|
+
/// @param radius Circle radius in pixels
|
|
536
|
+
/// @param rgbBuffer Input/output RGB color buffer
|
|
537
|
+
/// @param zBuffer **Optional** depth buffer (fills with zeros when provided)
|
|
538
|
+
/// @param imageOffset Pixel offset for positioning
|
|
539
|
+
void rasterizeCircles2D(
|
|
540
|
+
gsl::span<const Eigen::Vector2f> positions_image,
|
|
541
|
+
const std::optional<Eigen::Vector3f>& lineColor,
|
|
542
|
+
const std::optional<Eigen::Vector3f>& fillColor,
|
|
543
|
+
float lineThickness,
|
|
544
|
+
float radius,
|
|
545
|
+
Span3f rgbBuffer,
|
|
546
|
+
Span2f zBuffer = {},
|
|
547
|
+
const Eigen::Vector2f& imageOffset = {0, 0});
|
|
548
|
+
|
|
549
|
+
/// Rasterize 2D circles (flat array version)
|
|
550
|
+
///
|
|
551
|
+
/// @see rasterizeCircles2D(gsl::span<const Eigen::Vector2f>, const std::optional<Eigen::Vector3f>&,
|
|
552
|
+
/// const std::optional<Eigen::Vector3f>&, float, float, Span3f, Span2f, const Eigen::Vector2f&)
|
|
553
|
+
///
|
|
554
|
+
/// @param positions_image Flat array of 2D positions (x1,y1,x2,y2,...)
|
|
555
|
+
void rasterizeCircles2D(
|
|
556
|
+
const Eigen::Ref<const Eigen::VectorXf>& positions_image,
|
|
557
|
+
const std::optional<Eigen::Vector3f>& lineColor,
|
|
558
|
+
const std::optional<Eigen::Vector3f>& fillColor,
|
|
559
|
+
float lineThickness,
|
|
560
|
+
float radius,
|
|
561
|
+
Span3f rgbBuffer,
|
|
562
|
+
Span2f zBuffer = {},
|
|
563
|
+
const Eigen::Vector2f& imageOffset = {0, 0});
|
|
564
|
+
|
|
565
|
+
/// Create a properly sized and aligned depth buffer for rasterization
|
|
566
|
+
///
|
|
567
|
+
/// @param camera Camera configuration defining image dimensions
|
|
568
|
+
/// @return SIMD-aligned depth buffer tensor initialized to infinity
|
|
569
|
+
Tensor2f makeRasterizerZBuffer(const Camera& camera);
|
|
570
|
+
|
|
571
|
+
/// Create a properly sized RGB color buffer for rasterization
|
|
572
|
+
///
|
|
573
|
+
/// @param camera Camera configuration defining image dimensions
|
|
574
|
+
/// @return RGB color buffer tensor initialized to black
|
|
575
|
+
Tensor3f makeRasterizerRGBBuffer(const Camera& camera);
|
|
576
|
+
|
|
577
|
+
/// Create a properly sized index buffer for rasterization
|
|
578
|
+
///
|
|
579
|
+
/// @param camera Camera configuration defining image dimensions
|
|
580
|
+
/// @return Index buffer tensor initialized to -1 (invalid indices)
|
|
581
|
+
Tensor2i makeRasterizerIndexBuffer(const Camera& camera);
|
|
582
|
+
|
|
583
|
+
} // namespace momentum::rasterizer
|