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.

Files changed (512) hide show
  1. include/axel/BoundingBox.h +58 -0
  2. include/axel/Bvh.h +708 -0
  3. include/axel/BvhBase.h +75 -0
  4. include/axel/BvhCommon.h +43 -0
  5. include/axel/BvhEmbree.h +86 -0
  6. include/axel/BvhFactory.h +34 -0
  7. include/axel/Checks.h +21 -0
  8. include/axel/DualContouring.h +79 -0
  9. include/axel/KdTree.h +199 -0
  10. include/axel/Log.h +22 -0
  11. include/axel/MeshToSdf.h +123 -0
  12. include/axel/Profile.h +64 -0
  13. include/axel/Ray.h +45 -0
  14. include/axel/SignedDistanceField.h +248 -0
  15. include/axel/SimdKdTree.h +515 -0
  16. include/axel/TriBvh.h +157 -0
  17. include/axel/TriBvhEmbree.h +57 -0
  18. include/axel/common/Constants.h +27 -0
  19. include/axel/common/Types.h +21 -0
  20. include/axel/common/VectorizationTypes.h +58 -0
  21. include/axel/math/BoundingBoxUtils.h +54 -0
  22. include/axel/math/ContinuousCollisionDetection.h +48 -0
  23. include/axel/math/CoplanarityCheck.h +30 -0
  24. include/axel/math/EdgeEdgeDistance.h +31 -0
  25. include/axel/math/MeshHoleFilling.h +117 -0
  26. include/axel/math/PointTriangleProjection.h +34 -0
  27. include/axel/math/PointTriangleProjectionDefinitions.h +209 -0
  28. include/axel/math/RayTriangleIntersection.h +36 -0
  29. include/momentum/character/blend_shape.h +91 -0
  30. include/momentum/character/blend_shape_base.h +70 -0
  31. include/momentum/character/blend_shape_skinning.h +96 -0
  32. include/momentum/character/character.h +272 -0
  33. include/momentum/character/character_state.h +108 -0
  34. include/momentum/character/character_utility.h +128 -0
  35. include/momentum/character/collision_geometry.h +80 -0
  36. include/momentum/character/collision_geometry_state.h +130 -0
  37. include/momentum/character/fwd.h +262 -0
  38. include/momentum/character/inverse_parameter_transform.h +58 -0
  39. include/momentum/character/joint.h +82 -0
  40. include/momentum/character/joint_state.h +241 -0
  41. include/momentum/character/linear_skinning.h +139 -0
  42. include/momentum/character/locator.h +82 -0
  43. include/momentum/character/locator_state.h +43 -0
  44. include/momentum/character/marker.h +48 -0
  45. include/momentum/character/mesh_state.h +71 -0
  46. include/momentum/character/parameter_limits.h +144 -0
  47. include/momentum/character/parameter_transform.h +250 -0
  48. include/momentum/character/pose_shape.h +65 -0
  49. include/momentum/character/skeleton.h +85 -0
  50. include/momentum/character/skeleton_state.h +181 -0
  51. include/momentum/character/skeleton_utility.h +38 -0
  52. include/momentum/character/skin_weights.h +67 -0
  53. include/momentum/character/skinned_locator.h +80 -0
  54. include/momentum/character/types.h +202 -0
  55. include/momentum/character_sequence_solver/fwd.h +200 -0
  56. include/momentum/character_sequence_solver/model_parameters_sequence_error_function.h +65 -0
  57. include/momentum/character_sequence_solver/multipose_solver.h +65 -0
  58. include/momentum/character_sequence_solver/multipose_solver_function.h +82 -0
  59. include/momentum/character_sequence_solver/sequence_error_function.h +104 -0
  60. include/momentum/character_sequence_solver/sequence_solver.h +144 -0
  61. include/momentum/character_sequence_solver/sequence_solver_function.h +134 -0
  62. include/momentum/character_sequence_solver/state_sequence_error_function.h +109 -0
  63. include/momentum/character_sequence_solver/vertex_sequence_error_function.h +128 -0
  64. include/momentum/character_solver/aim_error_function.h +112 -0
  65. include/momentum/character_solver/collision_error_function.h +92 -0
  66. include/momentum/character_solver/collision_error_function_stateless.h +75 -0
  67. include/momentum/character_solver/constraint_error_function-inl.h +324 -0
  68. include/momentum/character_solver/constraint_error_function.h +248 -0
  69. include/momentum/character_solver/distance_error_function.h +77 -0
  70. include/momentum/character_solver/error_function_utils.h +60 -0
  71. include/momentum/character_solver/fixed_axis_error_function.h +139 -0
  72. include/momentum/character_solver/fwd.h +924 -0
  73. include/momentum/character_solver/gauss_newton_solver_qr.h +64 -0
  74. include/momentum/character_solver/limit_error_function.h +57 -0
  75. include/momentum/character_solver/model_parameters_error_function.h +64 -0
  76. include/momentum/character_solver/normal_error_function.h +73 -0
  77. include/momentum/character_solver/orientation_error_function.h +74 -0
  78. include/momentum/character_solver/plane_error_function.h +102 -0
  79. include/momentum/character_solver/point_triangle_vertex_error_function.h +141 -0
  80. include/momentum/character_solver/pose_prior_error_function.h +80 -0
  81. include/momentum/character_solver/position_error_function.h +75 -0
  82. include/momentum/character_solver/projection_error_function.h +93 -0
  83. include/momentum/character_solver/simd_collision_error_function.h +99 -0
  84. include/momentum/character_solver/simd_normal_error_function.h +157 -0
  85. include/momentum/character_solver/simd_plane_error_function.h +164 -0
  86. include/momentum/character_solver/simd_position_error_function.h +165 -0
  87. include/momentum/character_solver/skeleton_error_function.h +151 -0
  88. include/momentum/character_solver/skeleton_solver_function.h +94 -0
  89. include/momentum/character_solver/skinned_locator_error_function.h +166 -0
  90. include/momentum/character_solver/skinned_locator_triangle_error_function.h +146 -0
  91. include/momentum/character_solver/skinning_weight_iterator.h +80 -0
  92. include/momentum/character_solver/state_error_function.h +94 -0
  93. include/momentum/character_solver/transform_pose.h +80 -0
  94. include/momentum/character_solver/trust_region_qr.h +80 -0
  95. include/momentum/character_solver/vertex_error_function.h +155 -0
  96. include/momentum/character_solver/vertex_projection_error_function.h +126 -0
  97. include/momentum/character_solver/vertex_vertex_distance_error_function.h +151 -0
  98. include/momentum/common/aligned.h +155 -0
  99. include/momentum/common/checks.h +27 -0
  100. include/momentum/common/exception.h +70 -0
  101. include/momentum/common/filesystem.h +20 -0
  102. include/momentum/common/fwd.h +27 -0
  103. include/momentum/common/log.h +173 -0
  104. include/momentum/common/log_channel.h +17 -0
  105. include/momentum/common/memory.h +71 -0
  106. include/momentum/common/profile.h +79 -0
  107. include/momentum/common/progress_bar.h +37 -0
  108. include/momentum/common/string.h +52 -0
  109. include/momentum/diff_ik/ceres_utility.h +73 -0
  110. include/momentum/diff_ik/fully_differentiable_body_ik.h +58 -0
  111. include/momentum/diff_ik/fully_differentiable_distance_error_function.h +69 -0
  112. include/momentum/diff_ik/fully_differentiable_motion_error_function.h +46 -0
  113. include/momentum/diff_ik/fully_differentiable_orientation_error_function.h +114 -0
  114. include/momentum/diff_ik/fully_differentiable_pose_prior_error_function.h +76 -0
  115. include/momentum/diff_ik/fully_differentiable_position_error_function.h +138 -0
  116. include/momentum/diff_ik/fully_differentiable_projection_error_function.h +65 -0
  117. include/momentum/diff_ik/fully_differentiable_skeleton_error_function.h +160 -0
  118. include/momentum/diff_ik/fully_differentiable_state_error_function.h +54 -0
  119. include/momentum/diff_ik/fwd.h +385 -0
  120. include/momentum/diff_ik/union_error_function.h +67 -0
  121. include/momentum/gui/rerun/eigen_adapters.h +70 -0
  122. include/momentum/gui/rerun/logger.h +102 -0
  123. include/momentum/gui/rerun/logging_redirect.h +27 -0
  124. include/momentum/io/character_io.h +56 -0
  125. include/momentum/io/common/gsl_utils.h +50 -0
  126. include/momentum/io/common/stream_utils.h +65 -0
  127. include/momentum/io/fbx/fbx_io.h +109 -0
  128. include/momentum/io/fbx/fbx_memory_stream.h +66 -0
  129. include/momentum/io/fbx/openfbx_loader.h +49 -0
  130. include/momentum/io/fbx/polygon_data.h +60 -0
  131. include/momentum/io/gltf/gltf_builder.h +132 -0
  132. include/momentum/io/gltf/gltf_file_format.h +19 -0
  133. include/momentum/io/gltf/gltf_io.h +148 -0
  134. include/momentum/io/gltf/utils/accessor_utils.h +299 -0
  135. include/momentum/io/gltf/utils/coordinate_utils.h +60 -0
  136. include/momentum/io/gltf/utils/json_utils.h +102 -0
  137. include/momentum/io/legacy_json/legacy_json_io.h +70 -0
  138. include/momentum/io/marker/c3d_io.h +29 -0
  139. include/momentum/io/marker/conversions.h +57 -0
  140. include/momentum/io/marker/coordinate_system.h +30 -0
  141. include/momentum/io/marker/marker_io.h +54 -0
  142. include/momentum/io/marker/trc_io.h +27 -0
  143. include/momentum/io/motion/mmo_io.h +97 -0
  144. include/momentum/io/shape/blend_shape_io.h +70 -0
  145. include/momentum/io/shape/pose_shape_io.h +21 -0
  146. include/momentum/io/skeleton/locator_io.h +41 -0
  147. include/momentum/io/skeleton/mppca_io.h +26 -0
  148. include/momentum/io/skeleton/parameter_limits_io.h +25 -0
  149. include/momentum/io/skeleton/parameter_transform_io.h +41 -0
  150. include/momentum/io/skeleton/parameters_io.h +20 -0
  151. include/momentum/io/urdf/urdf_io.h +26 -0
  152. include/momentum/io/usd/usd_io.h +36 -0
  153. include/momentum/marker_tracking/app_utils.h +62 -0
  154. include/momentum/marker_tracking/marker_tracker.h +213 -0
  155. include/momentum/marker_tracking/process_markers.h +58 -0
  156. include/momentum/marker_tracking/tracker_utils.h +90 -0
  157. include/momentum/math/constants.h +82 -0
  158. include/momentum/math/covariance_matrix.h +84 -0
  159. include/momentum/math/fmt_eigen.h +23 -0
  160. include/momentum/math/fwd.h +132 -0
  161. include/momentum/math/generalized_loss.h +61 -0
  162. include/momentum/math/intersection.h +32 -0
  163. include/momentum/math/mesh.h +84 -0
  164. include/momentum/math/mppca.h +67 -0
  165. include/momentum/math/online_householder_qr.h +516 -0
  166. include/momentum/math/random-inl.h +404 -0
  167. include/momentum/math/random.h +310 -0
  168. include/momentum/math/simd_generalized_loss.h +40 -0
  169. include/momentum/math/transform.h +229 -0
  170. include/momentum/math/types.h +461 -0
  171. include/momentum/math/utility.h +251 -0
  172. include/momentum/rasterizer/camera.h +453 -0
  173. include/momentum/rasterizer/fwd.h +102 -0
  174. include/momentum/rasterizer/geometry.h +83 -0
  175. include/momentum/rasterizer/image.h +18 -0
  176. include/momentum/rasterizer/rasterizer.h +583 -0
  177. include/momentum/rasterizer/tensor.h +140 -0
  178. include/momentum/rasterizer/utility.h +268 -0
  179. include/momentum/simd/simd.h +221 -0
  180. include/momentum/solver/fwd.h +131 -0
  181. include/momentum/solver/gauss_newton_solver.h +136 -0
  182. include/momentum/solver/gradient_descent_solver.h +65 -0
  183. include/momentum/solver/solver.h +155 -0
  184. include/momentum/solver/solver_function.h +126 -0
  185. include/momentum/solver/subset_gauss_newton_solver.h +109 -0
  186. include/rerun/archetypes/annotation_context.hpp +157 -0
  187. include/rerun/archetypes/arrows2d.hpp +271 -0
  188. include/rerun/archetypes/arrows3d.hpp +257 -0
  189. include/rerun/archetypes/asset3d.hpp +262 -0
  190. include/rerun/archetypes/asset_video.hpp +275 -0
  191. include/rerun/archetypes/bar_chart.hpp +261 -0
  192. include/rerun/archetypes/boxes2d.hpp +293 -0
  193. include/rerun/archetypes/boxes3d.hpp +369 -0
  194. include/rerun/archetypes/capsules3d.hpp +333 -0
  195. include/rerun/archetypes/clear.hpp +180 -0
  196. include/rerun/archetypes/depth_image.hpp +425 -0
  197. include/rerun/archetypes/ellipsoids3d.hpp +384 -0
  198. include/rerun/archetypes/encoded_image.hpp +250 -0
  199. include/rerun/archetypes/geo_line_strings.hpp +166 -0
  200. include/rerun/archetypes/geo_points.hpp +177 -0
  201. include/rerun/archetypes/graph_edges.hpp +152 -0
  202. include/rerun/archetypes/graph_nodes.hpp +206 -0
  203. include/rerun/archetypes/image.hpp +434 -0
  204. include/rerun/archetypes/instance_poses3d.hpp +221 -0
  205. include/rerun/archetypes/line_strips2d.hpp +289 -0
  206. include/rerun/archetypes/line_strips3d.hpp +270 -0
  207. include/rerun/archetypes/mesh3d.hpp +387 -0
  208. include/rerun/archetypes/pinhole.hpp +385 -0
  209. include/rerun/archetypes/points2d.hpp +333 -0
  210. include/rerun/archetypes/points3d.hpp +369 -0
  211. include/rerun/archetypes/recording_properties.hpp +132 -0
  212. include/rerun/archetypes/scalar.hpp +170 -0
  213. include/rerun/archetypes/scalars.hpp +153 -0
  214. include/rerun/archetypes/segmentation_image.hpp +305 -0
  215. include/rerun/archetypes/series_line.hpp +274 -0
  216. include/rerun/archetypes/series_lines.hpp +271 -0
  217. include/rerun/archetypes/series_point.hpp +265 -0
  218. include/rerun/archetypes/series_points.hpp +251 -0
  219. include/rerun/archetypes/tensor.hpp +213 -0
  220. include/rerun/archetypes/text_document.hpp +200 -0
  221. include/rerun/archetypes/text_log.hpp +211 -0
  222. include/rerun/archetypes/transform3d.hpp +925 -0
  223. include/rerun/archetypes/video_frame_reference.hpp +295 -0
  224. include/rerun/archetypes/view_coordinates.hpp +393 -0
  225. include/rerun/archetypes.hpp +43 -0
  226. include/rerun/arrow_utils.hpp +32 -0
  227. include/rerun/as_components.hpp +90 -0
  228. include/rerun/blueprint/archetypes/background.hpp +113 -0
  229. include/rerun/blueprint/archetypes/container_blueprint.hpp +259 -0
  230. include/rerun/blueprint/archetypes/dataframe_query.hpp +178 -0
  231. include/rerun/blueprint/archetypes/entity_behavior.hpp +130 -0
  232. include/rerun/blueprint/archetypes/force_center.hpp +115 -0
  233. include/rerun/blueprint/archetypes/force_collision_radius.hpp +141 -0
  234. include/rerun/blueprint/archetypes/force_link.hpp +136 -0
  235. include/rerun/blueprint/archetypes/force_many_body.hpp +124 -0
  236. include/rerun/blueprint/archetypes/force_position.hpp +132 -0
  237. include/rerun/blueprint/archetypes/line_grid3d.hpp +178 -0
  238. include/rerun/blueprint/archetypes/map_background.hpp +104 -0
  239. include/rerun/blueprint/archetypes/map_zoom.hpp +103 -0
  240. include/rerun/blueprint/archetypes/near_clip_plane.hpp +109 -0
  241. include/rerun/blueprint/archetypes/panel_blueprint.hpp +95 -0
  242. include/rerun/blueprint/archetypes/plot_legend.hpp +118 -0
  243. include/rerun/blueprint/archetypes/scalar_axis.hpp +116 -0
  244. include/rerun/blueprint/archetypes/tensor_scalar_mapping.hpp +146 -0
  245. include/rerun/blueprint/archetypes/tensor_slice_selection.hpp +167 -0
  246. include/rerun/blueprint/archetypes/tensor_view_fit.hpp +95 -0
  247. include/rerun/blueprint/archetypes/view_blueprint.hpp +170 -0
  248. include/rerun/blueprint/archetypes/view_contents.hpp +142 -0
  249. include/rerun/blueprint/archetypes/viewport_blueprint.hpp +200 -0
  250. include/rerun/blueprint/archetypes/visible_time_ranges.hpp +116 -0
  251. include/rerun/blueprint/archetypes/visual_bounds2d.hpp +109 -0
  252. include/rerun/blueprint/archetypes/visualizer_overrides.hpp +113 -0
  253. include/rerun/blueprint/archetypes.hpp +29 -0
  254. include/rerun/blueprint/components/active_tab.hpp +82 -0
  255. include/rerun/blueprint/components/apply_latest_at.hpp +79 -0
  256. include/rerun/blueprint/components/auto_layout.hpp +77 -0
  257. include/rerun/blueprint/components/auto_views.hpp +77 -0
  258. include/rerun/blueprint/components/background_kind.hpp +66 -0
  259. include/rerun/blueprint/components/column_share.hpp +78 -0
  260. include/rerun/blueprint/components/component_column_selector.hpp +81 -0
  261. include/rerun/blueprint/components/container_kind.hpp +65 -0
  262. include/rerun/blueprint/components/corner2d.hpp +64 -0
  263. include/rerun/blueprint/components/enabled.hpp +77 -0
  264. include/rerun/blueprint/components/filter_by_range.hpp +74 -0
  265. include/rerun/blueprint/components/filter_is_not_null.hpp +77 -0
  266. include/rerun/blueprint/components/force_distance.hpp +82 -0
  267. include/rerun/blueprint/components/force_iterations.hpp +82 -0
  268. include/rerun/blueprint/components/force_strength.hpp +82 -0
  269. include/rerun/blueprint/components/grid_columns.hpp +78 -0
  270. include/rerun/blueprint/components/grid_spacing.hpp +78 -0
  271. include/rerun/blueprint/components/included_content.hpp +86 -0
  272. include/rerun/blueprint/components/lock_range_during_zoom.hpp +82 -0
  273. include/rerun/blueprint/components/map_provider.hpp +64 -0
  274. include/rerun/blueprint/components/near_clip_plane.hpp +82 -0
  275. include/rerun/blueprint/components/panel_state.hpp +61 -0
  276. include/rerun/blueprint/components/query_expression.hpp +89 -0
  277. include/rerun/blueprint/components/root_container.hpp +77 -0
  278. include/rerun/blueprint/components/row_share.hpp +78 -0
  279. include/rerun/blueprint/components/selected_columns.hpp +76 -0
  280. include/rerun/blueprint/components/tensor_dimension_index_slider.hpp +90 -0
  281. include/rerun/blueprint/components/timeline_name.hpp +76 -0
  282. include/rerun/blueprint/components/view_class.hpp +76 -0
  283. include/rerun/blueprint/components/view_fit.hpp +61 -0
  284. include/rerun/blueprint/components/view_maximized.hpp +79 -0
  285. include/rerun/blueprint/components/view_origin.hpp +81 -0
  286. include/rerun/blueprint/components/viewer_recommendation_hash.hpp +82 -0
  287. include/rerun/blueprint/components/visible_time_range.hpp +77 -0
  288. include/rerun/blueprint/components/visual_bounds2d.hpp +74 -0
  289. include/rerun/blueprint/components/visualizer_override.hpp +86 -0
  290. include/rerun/blueprint/components/zoom_level.hpp +78 -0
  291. include/rerun/blueprint/components.hpp +41 -0
  292. include/rerun/blueprint/datatypes/component_column_selector.hpp +61 -0
  293. include/rerun/blueprint/datatypes/filter_by_range.hpp +59 -0
  294. include/rerun/blueprint/datatypes/filter_is_not_null.hpp +61 -0
  295. include/rerun/blueprint/datatypes/selected_columns.hpp +62 -0
  296. include/rerun/blueprint/datatypes/tensor_dimension_index_slider.hpp +63 -0
  297. include/rerun/blueprint/datatypes.hpp +9 -0
  298. include/rerun/c/arrow_c_data_interface.h +111 -0
  299. include/rerun/c/compiler_utils.h +10 -0
  300. include/rerun/c/rerun.h +627 -0
  301. include/rerun/c/sdk_info.h +28 -0
  302. include/rerun/collection.hpp +496 -0
  303. include/rerun/collection_adapter.hpp +43 -0
  304. include/rerun/collection_adapter_builtins.hpp +138 -0
  305. include/rerun/compiler_utils.hpp +61 -0
  306. include/rerun/component_batch.hpp +163 -0
  307. include/rerun/component_column.hpp +111 -0
  308. include/rerun/component_descriptor.hpp +142 -0
  309. include/rerun/component_type.hpp +35 -0
  310. include/rerun/components/aggregation_policy.hpp +76 -0
  311. include/rerun/components/albedo_factor.hpp +74 -0
  312. include/rerun/components/annotation_context.hpp +102 -0
  313. include/rerun/components/axis_length.hpp +74 -0
  314. include/rerun/components/blob.hpp +73 -0
  315. include/rerun/components/class_id.hpp +71 -0
  316. include/rerun/components/clear_is_recursive.hpp +75 -0
  317. include/rerun/components/color.hpp +99 -0
  318. include/rerun/components/colormap.hpp +99 -0
  319. include/rerun/components/depth_meter.hpp +84 -0
  320. include/rerun/components/draw_order.hpp +79 -0
  321. include/rerun/components/entity_path.hpp +83 -0
  322. include/rerun/components/fill_mode.hpp +72 -0
  323. include/rerun/components/fill_ratio.hpp +79 -0
  324. include/rerun/components/gamma_correction.hpp +80 -0
  325. include/rerun/components/geo_line_string.hpp +63 -0
  326. include/rerun/components/graph_edge.hpp +75 -0
  327. include/rerun/components/graph_node.hpp +79 -0
  328. include/rerun/components/graph_type.hpp +57 -0
  329. include/rerun/components/half_size2d.hpp +91 -0
  330. include/rerun/components/half_size3d.hpp +95 -0
  331. include/rerun/components/image_buffer.hpp +86 -0
  332. include/rerun/components/image_format.hpp +84 -0
  333. include/rerun/components/image_plane_distance.hpp +77 -0
  334. include/rerun/components/interactive.hpp +76 -0
  335. include/rerun/components/keypoint_id.hpp +74 -0
  336. include/rerun/components/lat_lon.hpp +89 -0
  337. include/rerun/components/length.hpp +77 -0
  338. include/rerun/components/line_strip2d.hpp +73 -0
  339. include/rerun/components/line_strip3d.hpp +73 -0
  340. include/rerun/components/magnification_filter.hpp +63 -0
  341. include/rerun/components/marker_shape.hpp +82 -0
  342. include/rerun/components/marker_size.hpp +74 -0
  343. include/rerun/components/media_type.hpp +157 -0
  344. include/rerun/components/name.hpp +83 -0
  345. include/rerun/components/opacity.hpp +77 -0
  346. include/rerun/components/pinhole_projection.hpp +94 -0
  347. include/rerun/components/plane3d.hpp +75 -0
  348. include/rerun/components/pose_rotation_axis_angle.hpp +73 -0
  349. include/rerun/components/pose_rotation_quat.hpp +71 -0
  350. include/rerun/components/pose_scale3d.hpp +102 -0
  351. include/rerun/components/pose_transform_mat3x3.hpp +87 -0
  352. include/rerun/components/pose_translation3d.hpp +96 -0
  353. include/rerun/components/position2d.hpp +86 -0
  354. include/rerun/components/position3d.hpp +90 -0
  355. include/rerun/components/radius.hpp +98 -0
  356. include/rerun/components/range1d.hpp +75 -0
  357. include/rerun/components/resolution.hpp +88 -0
  358. include/rerun/components/rotation_axis_angle.hpp +72 -0
  359. include/rerun/components/rotation_quat.hpp +71 -0
  360. include/rerun/components/scalar.hpp +76 -0
  361. include/rerun/components/scale3d.hpp +102 -0
  362. include/rerun/components/series_visible.hpp +76 -0
  363. include/rerun/components/show_labels.hpp +79 -0
  364. include/rerun/components/stroke_width.hpp +74 -0
  365. include/rerun/components/tensor_data.hpp +94 -0
  366. include/rerun/components/tensor_dimension_index_selection.hpp +77 -0
  367. include/rerun/components/tensor_height_dimension.hpp +71 -0
  368. include/rerun/components/tensor_width_dimension.hpp +71 -0
  369. include/rerun/components/texcoord2d.hpp +101 -0
  370. include/rerun/components/text.hpp +83 -0
  371. include/rerun/components/text_log_level.hpp +110 -0
  372. include/rerun/components/timestamp.hpp +76 -0
  373. include/rerun/components/transform_mat3x3.hpp +92 -0
  374. include/rerun/components/transform_relation.hpp +66 -0
  375. include/rerun/components/translation3d.hpp +96 -0
  376. include/rerun/components/triangle_indices.hpp +85 -0
  377. include/rerun/components/value_range.hpp +78 -0
  378. include/rerun/components/vector2d.hpp +92 -0
  379. include/rerun/components/vector3d.hpp +96 -0
  380. include/rerun/components/video_timestamp.hpp +120 -0
  381. include/rerun/components/view_coordinates.hpp +346 -0
  382. include/rerun/components/visible.hpp +74 -0
  383. include/rerun/components.hpp +77 -0
  384. include/rerun/config.hpp +52 -0
  385. include/rerun/datatypes/angle.hpp +76 -0
  386. include/rerun/datatypes/annotation_info.hpp +76 -0
  387. include/rerun/datatypes/blob.hpp +67 -0
  388. include/rerun/datatypes/bool.hpp +57 -0
  389. include/rerun/datatypes/channel_datatype.hpp +87 -0
  390. include/rerun/datatypes/class_description.hpp +92 -0
  391. include/rerun/datatypes/class_description_map_elem.hpp +69 -0
  392. include/rerun/datatypes/class_id.hpp +62 -0
  393. include/rerun/datatypes/color_model.hpp +68 -0
  394. include/rerun/datatypes/dvec2d.hpp +76 -0
  395. include/rerun/datatypes/entity_path.hpp +60 -0
  396. include/rerun/datatypes/float32.hpp +62 -0
  397. include/rerun/datatypes/float64.hpp +62 -0
  398. include/rerun/datatypes/image_format.hpp +107 -0
  399. include/rerun/datatypes/keypoint_id.hpp +63 -0
  400. include/rerun/datatypes/keypoint_pair.hpp +65 -0
  401. include/rerun/datatypes/mat3x3.hpp +105 -0
  402. include/rerun/datatypes/mat4x4.hpp +119 -0
  403. include/rerun/datatypes/pixel_format.hpp +142 -0
  404. include/rerun/datatypes/plane3d.hpp +60 -0
  405. include/rerun/datatypes/quaternion.hpp +110 -0
  406. include/rerun/datatypes/range1d.hpp +59 -0
  407. include/rerun/datatypes/range2d.hpp +55 -0
  408. include/rerun/datatypes/rgba32.hpp +94 -0
  409. include/rerun/datatypes/rotation_axis_angle.hpp +67 -0
  410. include/rerun/datatypes/tensor_buffer.hpp +529 -0
  411. include/rerun/datatypes/tensor_data.hpp +100 -0
  412. include/rerun/datatypes/tensor_dimension_index_selection.hpp +58 -0
  413. include/rerun/datatypes/tensor_dimension_selection.hpp +56 -0
  414. include/rerun/datatypes/time_int.hpp +62 -0
  415. include/rerun/datatypes/time_range.hpp +55 -0
  416. include/rerun/datatypes/time_range_boundary.hpp +175 -0
  417. include/rerun/datatypes/uint16.hpp +62 -0
  418. include/rerun/datatypes/uint32.hpp +62 -0
  419. include/rerun/datatypes/uint64.hpp +62 -0
  420. include/rerun/datatypes/utf8.hpp +76 -0
  421. include/rerun/datatypes/utf8pair.hpp +62 -0
  422. include/rerun/datatypes/uuid.hpp +60 -0
  423. include/rerun/datatypes/uvec2d.hpp +76 -0
  424. include/rerun/datatypes/uvec3d.hpp +80 -0
  425. include/rerun/datatypes/uvec4d.hpp +59 -0
  426. include/rerun/datatypes/vec2d.hpp +76 -0
  427. include/rerun/datatypes/vec3d.hpp +80 -0
  428. include/rerun/datatypes/vec4d.hpp +84 -0
  429. include/rerun/datatypes/video_timestamp.hpp +67 -0
  430. include/rerun/datatypes/view_coordinates.hpp +87 -0
  431. include/rerun/datatypes/visible_time_range.hpp +57 -0
  432. include/rerun/datatypes.hpp +51 -0
  433. include/rerun/demo_utils.hpp +75 -0
  434. include/rerun/entity_path.hpp +20 -0
  435. include/rerun/error.hpp +180 -0
  436. include/rerun/half.hpp +10 -0
  437. include/rerun/image_utils.hpp +187 -0
  438. include/rerun/indicator_component.hpp +59 -0
  439. include/rerun/loggable.hpp +54 -0
  440. include/rerun/recording_stream.hpp +960 -0
  441. include/rerun/rerun_sdk_export.hpp +25 -0
  442. include/rerun/result.hpp +86 -0
  443. include/rerun/rotation3d.hpp +33 -0
  444. include/rerun/sdk_info.hpp +20 -0
  445. include/rerun/spawn.hpp +21 -0
  446. include/rerun/spawn_options.hpp +57 -0
  447. include/rerun/string_utils.hpp +16 -0
  448. include/rerun/third_party/cxxopts.hpp +2198 -0
  449. include/rerun/time_column.hpp +288 -0
  450. include/rerun/timeline.hpp +38 -0
  451. include/rerun/type_traits.hpp +40 -0
  452. include/rerun.hpp +86 -0
  453. lib/arrow_bundled_dependencies.lib +0 -0
  454. lib/arrow_static.lib +0 -0
  455. lib/axel.lib +0 -0
  456. lib/cmake/axel/axel-config.cmake +45 -0
  457. lib/cmake/axel/axelTargets-release.cmake +19 -0
  458. lib/cmake/axel/axelTargets.cmake +108 -0
  459. lib/cmake/momentum/Findre2.cmake +52 -0
  460. lib/cmake/momentum/momentum-config.cmake +67 -0
  461. lib/cmake/momentum/momentumTargets-release.cmake +259 -0
  462. lib/cmake/momentum/momentumTargets.cmake +377 -0
  463. lib/cmake/rerun_sdk/rerun_sdkConfig.cmake +70 -0
  464. lib/cmake/rerun_sdk/rerun_sdkConfigVersion.cmake +83 -0
  465. lib/cmake/rerun_sdk/rerun_sdkTargets-release.cmake +19 -0
  466. lib/cmake/rerun_sdk/rerun_sdkTargets.cmake +108 -0
  467. lib/momentum_app_utils.lib +0 -0
  468. lib/momentum_character.lib +0 -0
  469. lib/momentum_character_sequence_solver.lib +0 -0
  470. lib/momentum_character_solver.lib +0 -0
  471. lib/momentum_common.lib +0 -0
  472. lib/momentum_diff_ik.lib +0 -0
  473. lib/momentum_io.lib +0 -0
  474. lib/momentum_io_common.lib +0 -0
  475. lib/momentum_io_fbx.lib +0 -0
  476. lib/momentum_io_gltf.lib +0 -0
  477. lib/momentum_io_legacy_json.lib +0 -0
  478. lib/momentum_io_marker.lib +0 -0
  479. lib/momentum_io_motion.lib +0 -0
  480. lib/momentum_io_shape.lib +0 -0
  481. lib/momentum_io_skeleton.lib +0 -0
  482. lib/momentum_io_urdf.lib +0 -0
  483. lib/momentum_marker_tracker.lib +0 -0
  484. lib/momentum_math.lib +0 -0
  485. lib/momentum_online_qr.lib +0 -0
  486. lib/momentum_process_markers.lib +0 -0
  487. lib/momentum_rerun.lib +0 -0
  488. lib/momentum_simd_constraints.lib +0 -0
  489. lib/momentum_simd_generalized_loss.lib +0 -0
  490. lib/momentum_skeleton.lib +0 -0
  491. lib/momentum_solver.lib +0 -0
  492. lib/rerun_c__win_x64.lib +0 -0
  493. lib/rerun_sdk.lib +0 -0
  494. pymomentum/axel.cp312-win_amd64.pyd +0 -0
  495. pymomentum/backend/__init__.py +16 -0
  496. pymomentum/backend/skel_state_backend.py +614 -0
  497. pymomentum/backend/trs_backend.py +871 -0
  498. pymomentum/backend/utils.py +224 -0
  499. pymomentum/geometry.cp312-win_amd64.pyd +0 -0
  500. pymomentum/marker_tracking.cp312-win_amd64.pyd +0 -0
  501. pymomentum/quaternion.py +740 -0
  502. pymomentum/skel_state.py +514 -0
  503. pymomentum/solver.cp312-win_amd64.pyd +0 -0
  504. pymomentum/solver2.cp312-win_amd64.pyd +0 -0
  505. pymomentum/torch/character.py +809 -0
  506. pymomentum/torch/parameter_limits.py +494 -0
  507. pymomentum/torch/utility.py +20 -0
  508. pymomentum/trs.py +535 -0
  509. pymomentum_cpu-0.1.78.post11.dist-info/METADATA +121 -0
  510. pymomentum_cpu-0.1.78.post11.dist-info/RECORD +512 -0
  511. pymomentum_cpu-0.1.78.post11.dist-info/WHEEL +5 -0
  512. pymomentum_cpu-0.1.78.post11.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