@woosh/meep-engine 2.163.11 → 2.165.0
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.
- package/build/bundle-worker-terrain.js +1 -1
- package/editor/ecs/component/editors/ecs/Trail3DEditor.js +45 -0
- package/editor/ecs/component/prototypeObjectEditor.js +3 -0
- package/editor/tools/v2/BlenderCameraOrientationGizmo.js +2 -2
- package/editor/view/node-graph/connection_wire_geometry.js +2 -2
- package/package.json +1 -1
- package/src/core/binary/BitImage2.d.ts +91 -0
- package/src/core/binary/BitImage2.d.ts.map +1 -0
- package/src/core/binary/BitImage2.js +242 -0
- package/src/core/bvh2/binary/2/BinaryUint32BVH.js +2 -2
- package/src/core/bvh2/binary/2/bvh32_query_user_data_ray.d.ts.map +1 -1
- package/src/core/bvh2/binary/2/bvh32_query_user_data_ray.js +2 -4
- package/src/core/bvh2/bvh3/BVH.d.ts +388 -55
- package/src/core/bvh2/bvh3/BVH.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/BVH.js +11 -5
- package/src/core/bvh2/bvh3/BvhClient.d.ts +31 -11
- package/src/core/bvh2/bvh3/bvh_build_from_unindexed_triangles.d.ts.map +1 -0
- package/src/core/bvh2/bvh3/ebvh_build_for_geometry_incremental.js +2 -2
- package/src/core/bvh2/bvh3/ebvh_build_hierarchy.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/ebvh_build_hierarchy.js +8 -0
- package/src/core/bvh2/bvh3/ebvh_geometry_query_any_triangle_ray.d.ts +22 -0
- package/src/core/bvh2/bvh3/ebvh_geometry_query_any_triangle_ray.d.ts.map +1 -0
- package/src/core/bvh2/bvh3/ebvh_geometry_query_any_triangle_ray.js +149 -0
- package/src/core/bvh2/bvh3/ebvh_geometry_query_nearest_triangle_ray.d.ts +5 -2
- package/src/core/bvh2/bvh3/ebvh_geometry_query_nearest_triangle_ray.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/ebvh_geometry_query_nearest_triangle_ray.js +16 -10
- package/src/core/bvh2/bvh3/ebvh_optimize_treelet.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/ebvh_optimize_treelet.js +19 -6
- package/src/core/bvh2/bvh3/ebvh_sort_for_traversal_depth_first.d.ts +14 -3
- package/src/core/bvh2/bvh3/ebvh_sort_for_traversal_depth_first.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/ebvh_sort_for_traversal_depth_first.js +96 -116
- package/src/core/bvh2/bvh3/query/backtracking/bvh_backtracking_query_leaves_ray.d.ts +3 -3
- package/src/core/bvh2/bvh3/query/backtracking/bvh_backtracking_query_leaves_ray.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/query/backtracking/bvh_backtracking_query_leaves_ray.js +3 -3
- package/src/core/bvh2/bvh3/query/bvh_query_depth_range_in_frustum.js +2 -2
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_generic.d.ts +12 -5
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_generic.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_generic.js +11 -4
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray.d.ts +3 -3
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray.js +3 -3
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray_segment.d.ts +3 -3
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray_segment.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray_segment.js +3 -3
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_generic.d.ts +12 -5
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_generic.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_generic.js +11 -4
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_aabb.d.ts +9 -0
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_aabb.d.ts.map +1 -0
- package/src/core/bvh2/bvh3/query/{bvh_query_user_data_overlaps_aabb.js → bvh_query_user_data_intersects_aabb.js} +1 -1
- package/src/core/bvh2/bvh3/query/{bvh_query_user_data_overlaps_capsule.d.ts → bvh_query_user_data_intersects_capsule.d.ts} +4 -4
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_capsule.d.ts.map +1 -0
- package/src/core/bvh2/bvh3/query/{bvh_query_user_data_overlaps_capsule.js → bvh_query_user_data_intersects_capsule.js} +3 -3
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_frustum.d.ts +9 -0
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_frustum.d.ts.map +1 -0
- package/src/core/bvh2/bvh3/query/{bvh_query_user_data_overlaps_frustum.js → bvh_query_user_data_intersects_frustum.js} +3 -3
- package/src/core/bvh2/bvh3/query/{bvh_query_user_data_overlaps_sphere.d.ts → bvh_query_user_data_intersects_sphere.d.ts} +2 -2
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_sphere.d.ts.map +1 -0
- package/src/core/bvh2/bvh3/query/{bvh_query_user_data_overlaps_sphere.js → bvh_query_user_data_intersects_sphere.js} +1 -1
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_nearest_to_point_filtered.d.ts +23 -0
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_nearest_to_point_filtered.d.ts.map +1 -0
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_nearest_to_point_filtered.js +86 -0
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray.d.ts +3 -3
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray.js +3 -3
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray_segment.d.ts +3 -3
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray_segment.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray_segment.js +3 -3
- package/src/core/bvh2/traversal/aabb3_detailed_volume_intersection_callback_based.js +2 -2
- package/src/core/bvh8/bvh8_node_child_surface_area.js +2 -2
- package/src/core/bvh8/bvh8_quality.js +2 -2
- package/src/core/collection/SCRATCH_UINT32_TRAVERSAL_STACK.d.ts +12 -0
- package/src/core/collection/SCRATCH_UINT32_TRAVERSAL_STACK.d.ts.map +1 -1
- package/src/core/collection/SCRATCH_UINT32_TRAVERSAL_STACK.js +12 -0
- package/src/core/collection/heap/IndexedFloatMinHeap.d.ts +62 -0
- package/src/core/collection/heap/IndexedFloatMinHeap.d.ts.map +1 -0
- package/src/core/collection/heap/IndexedFloatMinHeap.js +268 -0
- package/src/core/color/tonemap/tonemap_aces.d.ts +21 -0
- package/src/core/color/tonemap/tonemap_aces.d.ts.map +1 -0
- package/src/core/color/tonemap/tonemap_aces.js +41 -0
- package/src/core/geom/2d/Rectangle.js +2 -2
- package/src/core/geom/2d/aabb/AABB2.d.ts.map +1 -1
- package/src/core/geom/2d/aabb/AABB2.js +11 -13
- package/src/core/geom/2d/aabb/aabb2_area.d.ts +10 -0
- package/src/core/geom/2d/aabb/aabb2_area.d.ts.map +1 -0
- package/src/core/geom/2d/aabb/aabb2_area.js +14 -0
- package/src/core/geom/2d/aabb/aabb2_array_combine.d.ts +4 -8
- package/src/core/geom/2d/aabb/aabb2_array_combine.d.ts.map +1 -1
- package/src/core/geom/2d/aabb/aabb2_array_combine.js +7 -35
- package/src/core/geom/2d/aabb/aabb2_center_from_aabb2_buffer.d.ts +8 -0
- package/src/core/geom/2d/aabb/aabb2_center_from_aabb2_buffer.d.ts.map +1 -0
- package/src/core/geom/2d/aabb/aabb2_center_from_aabb2_buffer.js +24 -0
- package/src/core/geom/2d/aabb/aabb2_compute_area.d.ts +4 -7
- package/src/core/geom/2d/aabb/aabb2_compute_area.d.ts.map +1 -1
- package/src/core/geom/2d/aabb/aabb2_compute_area.js +7 -14
- package/src/core/geom/2d/aabb/aabb2_compute_center_from_multiple.d.ts +4 -5
- package/src/core/geom/2d/aabb/aabb2_compute_center_from_multiple.d.ts.map +1 -1
- package/src/core/geom/2d/aabb/aabb2_compute_center_from_multiple.js +7 -24
- package/src/core/geom/2d/aabb/aabb2_compute_intersection.d.ts +15 -0
- package/src/core/geom/2d/aabb/aabb2_compute_intersection.d.ts.map +1 -0
- package/src/core/geom/2d/aabb/aabb2_compute_intersection.js +42 -0
- package/src/core/geom/2d/aabb/aabb2_compute_overlap.d.ts +4 -12
- package/src/core/geom/2d/aabb/aabb2_compute_overlap.d.ts.map +1 -1
- package/src/core/geom/2d/aabb/aabb2_compute_overlap.js +7 -42
- package/src/core/geom/2d/aabb/aabb2_contains_point.d.ts +12 -0
- package/src/core/geom/2d/aabb/aabb2_contains_point.d.ts.map +1 -0
- package/src/core/geom/2d/aabb/aabb2_contains_point.js +17 -0
- package/src/core/geom/2d/aabb/aabb2_from_rectangle.d.ts +8 -0
- package/src/core/geom/2d/aabb/aabb2_from_rectangle.d.ts.map +1 -0
- package/src/core/geom/2d/aabb/aabb2_from_rectangle.js +29 -0
- package/src/core/geom/2d/aabb/aabb2_from_v2_array.d.ts +4 -5
- package/src/core/geom/2d/aabb/aabb2_from_v2_array.d.ts.map +1 -1
- package/src/core/geom/2d/aabb/aabb2_from_v2_array.js +7 -33
- package/src/core/geom/2d/aabb/aabb2_from_v2_buffer.d.ts +8 -0
- package/src/core/geom/2d/aabb/aabb2_from_v2_buffer.d.ts.map +1 -0
- package/src/core/geom/2d/aabb/aabb2_from_v2_buffer.js +33 -0
- package/src/core/geom/2d/aabb/aabb2_intersects_aabb2.d.ts +14 -0
- package/src/core/geom/2d/aabb/aabb2_intersects_aabb2.d.ts.map +1 -0
- package/src/core/geom/2d/aabb/aabb2_intersects_aabb2.js +21 -0
- package/src/core/geom/2d/aabb/aabb2_intersects_point.d.ts +4 -9
- package/src/core/geom/2d/aabb/aabb2_intersects_point.d.ts.map +1 -1
- package/src/core/geom/2d/aabb/aabb2_intersects_point.js +7 -17
- package/src/core/geom/2d/aabb/aabb2_overlap_exists.d.ts +4 -11
- package/src/core/geom/2d/aabb/aabb2_overlap_exists.d.ts.map +1 -1
- package/src/core/geom/2d/aabb/aabb2_overlap_exists.js +7 -21
- package/src/core/geom/2d/aabb/aabb2_union_array.d.ts +11 -0
- package/src/core/geom/2d/aabb/aabb2_union_array.d.ts.map +1 -0
- package/src/core/geom/2d/aabb/aabb2_union_array.js +35 -0
- package/src/core/geom/2d/bvh/BVH2D.js +5 -5
- package/src/core/geom/2d/circle/circle_compute_circle_intersection.d.ts +4 -11
- package/src/core/geom/2d/circle/circle_compute_circle_intersection.d.ts.map +1 -1
- package/src/core/geom/2d/circle/circle_compute_circle_intersection.js +7 -64
- package/src/core/geom/2d/circle/circle_compute_circle_penetration.d.ts +4 -9
- package/src/core/geom/2d/circle/circle_compute_circle_penetration.d.ts.map +1 -1
- package/src/core/geom/2d/circle/circle_compute_circle_penetration.js +7 -32
- package/src/core/geom/2d/circle/circle_compute_intersection.d.ts +14 -0
- package/src/core/geom/2d/circle/circle_compute_intersection.d.ts.map +1 -0
- package/src/core/geom/2d/circle/circle_compute_intersection.js +64 -0
- package/src/core/geom/2d/circle/circle_compute_penetration.d.ts +12 -0
- package/src/core/geom/2d/circle/circle_compute_penetration.d.ts.map +1 -0
- package/src/core/geom/2d/circle/circle_compute_penetration.js +32 -0
- package/src/core/geom/2d/circle/circle_contains_point.d.ts +11 -0
- package/src/core/geom/2d/circle/circle_contains_point.d.ts.map +1 -0
- package/src/core/geom/2d/circle/circle_contains_point.js +16 -0
- package/src/core/geom/2d/circle/circle_intersects_point.d.ts +4 -8
- package/src/core/geom/2d/circle/circle_intersects_point.d.ts.map +1 -1
- package/src/core/geom/2d/circle/circle_intersects_point.js +7 -16
- package/src/core/geom/2d/compute_polygon_area_2d.d.ts +4 -5
- package/src/core/geom/2d/compute_polygon_area_2d.d.ts.map +1 -1
- package/src/core/geom/2d/compute_polygon_area_2d.js +7 -34
- package/src/core/geom/2d/convex-hull/convex_hull_fixed_count_2d_bruteforce.d.ts +17 -0
- package/src/core/geom/2d/convex-hull/convex_hull_fixed_count_2d_bruteforce.d.ts.map +1 -0
- package/src/core/geom/2d/convex-hull/convex_hull_fixed_count_2d_bruteforce.js +156 -0
- package/src/core/geom/2d/convex-hull/convex_hull_fixed_count_2d_relaxation.d.ts +17 -0
- package/src/core/geom/2d/convex-hull/convex_hull_fixed_count_2d_relaxation.d.ts.map +1 -0
- package/src/core/geom/2d/convex-hull/convex_hull_fixed_count_2d_relaxation.js +288 -0
- package/src/core/geom/2d/convex-hull/convex_hull_jarvis_2d.js +2 -2
- package/src/core/geom/2d/convex-hull/convex_hull_monotone_2d.js +3 -3
- package/src/core/geom/2d/convex-hull/fixed_convex_hull_humus.d.ts +4 -14
- package/src/core/geom/2d/convex-hull/fixed_convex_hull_humus.d.ts.map +1 -1
- package/src/core/geom/2d/convex-hull/fixed_convex_hull_humus.js +7 -156
- package/src/core/geom/2d/convex-hull/fixed_convex_hull_relaxation.d.ts +4 -14
- package/src/core/geom/2d/convex-hull/fixed_convex_hull_relaxation.d.ts.map +1 -1
- package/src/core/geom/2d/convex-hull/fixed_convex_hull_relaxation.js +7 -288
- package/src/core/geom/2d/convex-hull/orient2d_indexed.d.ts +10 -0
- package/src/core/geom/2d/convex-hull/orient2d_indexed.d.ts.map +1 -0
- package/src/core/geom/2d/convex-hull/orient2d_indexed.js +22 -0
- package/src/core/geom/2d/convex-hull/orientation3_array.d.ts +4 -7
- package/src/core/geom/2d/convex-hull/orientation3_array.d.ts.map +1 -1
- package/src/core/geom/2d/convex-hull/orientation3_array.js +7 -22
- package/src/core/geom/2d/hash-grid/shg_query_elements_line.js +3 -3
- package/src/core/geom/2d/intersect_ray_2d.d.ts +4 -13
- package/src/core/geom/2d/intersect_ray_2d.d.ts.map +1 -1
- package/src/core/geom/2d/intersect_ray_2d.js +7 -49
- package/src/core/geom/2d/line/line2_compute_segment_point_distance_sqr.d.ts +11 -0
- package/src/core/geom/2d/line/line2_compute_segment_point_distance_sqr.d.ts.map +1 -0
- package/src/core/geom/2d/line/line2_compute_segment_point_distance_sqr.js +39 -0
- package/src/core/geom/2d/line/line2_distance_to_point_sqr.d.ts +4 -8
- package/src/core/geom/2d/line/line2_distance_to_point_sqr.d.ts.map +1 -1
- package/src/core/geom/2d/line/line2_distance_to_point_sqr.js +7 -39
- package/src/core/geom/2d/line/line2_segment_intersection_fraction_2d.d.ts +23 -0
- package/src/core/geom/2d/line/line2_segment_intersection_fraction_2d.d.ts.map +1 -0
- package/src/core/geom/2d/line/line2_segment_intersection_fraction_2d.js +44 -0
- package/src/core/geom/2d/line/line_segment_compute_line_segment_intersection_2d.d.ts +4 -11
- package/src/core/geom/2d/line/line_segment_compute_line_segment_intersection_2d.d.ts.map +1 -1
- package/src/core/geom/2d/line/line_segment_compute_line_segment_intersection_2d.js +7 -35
- package/src/core/geom/2d/line/line_segment_compute_line_segment_intersection_array_2d.d.ts +4 -17
- package/src/core/geom/2d/line/line_segment_compute_line_segment_intersection_array_2d.d.ts.map +1 -1
- package/src/core/geom/2d/line/line_segment_compute_line_segment_intersection_array_2d.js +7 -51
- package/src/core/geom/2d/line/line_segment_compute_line_segment_intersection_vectors_2d.d.ts +4 -7
- package/src/core/geom/2d/line/line_segment_compute_line_segment_intersection_vectors_2d.d.ts.map +1 -1
- package/src/core/geom/2d/line/line_segment_compute_line_segment_intersection_vectors_2d.js +7 -15
- package/src/core/geom/2d/line/line_segment_compute_line_segment_intersection_vectors_array_2d.d.ts +4 -6
- package/src/core/geom/2d/line/line_segment_compute_line_segment_intersection_vectors_array_2d.d.ts.map +1 -1
- package/src/core/geom/2d/line/line_segment_compute_line_segment_intersection_vectors_array_2d.js +7 -30
- package/src/core/geom/2d/line/line_segment_intersection_fraction_2d.d.ts +4 -20
- package/src/core/geom/2d/line/line_segment_intersection_fraction_2d.d.ts.map +1 -1
- package/src/core/geom/2d/line/line_segment_intersection_fraction_2d.js +4 -41
- package/src/core/geom/2d/line/line_segment_line_segment_intersection_exists_2d.d.ts +4 -12
- package/src/core/geom/2d/line/line_segment_line_segment_intersection_exists_2d.d.ts.map +1 -1
- package/src/core/geom/2d/line/line_segment_line_segment_intersection_exists_2d.js +7 -29
- package/src/core/geom/2d/line/ray2_ray2_compute_intersection_array_2d.d.ts +16 -0
- package/src/core/geom/2d/line/ray2_ray2_compute_intersection_array_2d.d.ts.map +1 -0
- package/src/core/geom/2d/line/ray2_ray2_compute_intersection_array_2d.js +49 -0
- package/src/core/geom/2d/line/segment2_intersects_segment2_2d.d.ts +15 -0
- package/src/core/geom/2d/line/segment2_intersects_segment2_2d.d.ts.map +1 -0
- package/src/core/geom/2d/line/segment2_intersects_segment2_2d.js +29 -0
- package/src/core/geom/2d/line/segment2_segment_compute_intersection_array_2d.d.ts +20 -0
- package/src/core/geom/2d/line/segment2_segment_compute_intersection_array_2d.d.ts.map +1 -0
- package/src/core/geom/2d/line/segment2_segment_compute_intersection_array_2d.js +51 -0
- package/src/core/geom/2d/line/segment2_segment_compute_intersection_to_new_array_2d.d.ts +9 -0
- package/src/core/geom/2d/line/segment2_segment_compute_intersection_to_new_array_2d.d.ts.map +1 -0
- package/src/core/geom/2d/line/segment2_segment_compute_intersection_to_new_array_2d.js +28 -0
- package/src/core/geom/2d/line/segment2_segment_compute_intersection_v2_2d.d.ts +14 -0
- package/src/core/geom/2d/line/segment2_segment_compute_intersection_v2_2d.d.ts.map +1 -0
- package/src/core/geom/2d/line/segment2_segment_compute_intersection_v2_2d.js +33 -0
- package/src/core/geom/2d/line/segment2_segment_compute_intersection_v2_objects_2d.d.ts +10 -0
- package/src/core/geom/2d/line/segment2_segment_compute_intersection_v2_objects_2d.d.ts.map +1 -0
- package/src/core/geom/2d/line/segment2_segment_compute_intersection_v2_objects_2d.js +13 -0
- package/src/core/geom/2d/oriented-box/min_area_rect_2d.d.ts +22 -0
- package/src/core/geom/2d/oriented-box/min_area_rect_2d.d.ts.map +1 -0
- package/src/core/geom/2d/oriented-box/min_area_rect_2d.js +69 -0
- package/src/core/geom/2d/packing/skyline.d.ts +116 -0
- package/src/core/geom/2d/packing/skyline.d.ts.map +1 -0
- package/src/core/geom/2d/packing/skyline.js +258 -0
- package/src/core/geom/2d/polygon/polygon2_clip_halfplane.d.ts +17 -0
- package/src/core/geom/2d/polygon/polygon2_clip_halfplane.d.ts.map +1 -0
- package/src/core/geom/2d/polygon/polygon2_clip_halfplane.js +50 -0
- package/src/core/geom/2d/polygon/polygon2_signed_area.d.ts +8 -0
- package/src/core/geom/2d/polygon/polygon2_signed_area.d.ts.map +1 -0
- package/src/core/geom/2d/polygon/polygon2_signed_area.js +34 -0
- package/src/core/geom/2d/quad-tree/qt_collect_by_box.js +3 -3
- package/src/core/geom/2d/quad-tree/qt_collect_by_point.js +3 -3
- package/src/core/geom/2d/quad-tree/qt_query_closest_to_point.d.ts +12 -0
- package/src/core/geom/2d/quad-tree/qt_query_closest_to_point.d.ts.map +1 -0
- package/src/core/geom/2d/quad-tree/qt_query_closest_to_point.js +62 -0
- package/src/core/geom/2d/quad-tree/qt_query_data_nearest_to_point.d.ts +4 -9
- package/src/core/geom/2d/quad-tree/qt_query_data_nearest_to_point.d.ts.map +1 -1
- package/src/core/geom/2d/quad-tree/qt_query_data_nearest_to_point.js +7 -62
- package/src/core/geom/2d/r-tree/StaticR2Tree.js +3 -3
- package/src/core/geom/2d/rectangle_to_aabb.d.ts +4 -5
- package/src/core/geom/2d/rectangle_to_aabb.d.ts.map +1 -1
- package/src/core/geom/2d/rectangle_to_aabb.js +7 -29
- package/src/core/geom/2d/spline2_quadratic_bezier.d.ts +13 -0
- package/src/core/geom/2d/spline2_quadratic_bezier.d.ts.map +1 -0
- package/src/core/geom/2d/spline2_quadratic_bezier.js +26 -0
- package/src/core/geom/2d/spline_bezier2_2d.d.ts +4 -10
- package/src/core/geom/2d/spline_bezier2_2d.d.ts.map +1 -1
- package/src/core/geom/2d/spline_bezier2_2d.js +7 -26
- package/src/core/geom/2d/triangle/tri2_compute_barycentric.d.ts +15 -0
- package/src/core/geom/2d/triangle/tri2_compute_barycentric.d.ts.map +1 -0
- package/src/core/geom/2d/triangle/tri2_compute_barycentric.js +48 -0
- package/src/core/geom/2d/triangle/tri2_contains_point.d.ts +14 -0
- package/src/core/geom/2d/triangle/tri2_contains_point.d.ts.map +1 -0
- package/src/core/geom/2d/triangle/tri2_contains_point.js +39 -0
- package/src/core/geom/2d/triangle/tri2_rasterize_conservative.d.ts +18 -0
- package/src/core/geom/2d/triangle/tri2_rasterize_conservative.d.ts.map +1 -0
- package/src/core/geom/2d/triangle/tri2_rasterize_conservative.js +86 -0
- package/src/core/geom/2d/triangle/tri2_signed_area.d.ts +12 -0
- package/src/core/geom/2d/triangle/tri2_signed_area.d.ts.map +1 -0
- package/src/core/geom/2d/triangle/tri2_signed_area.js +23 -0
- package/src/core/geom/2d/triangle2d_compute_area.d.ts +4 -9
- package/src/core/geom/2d/triangle2d_compute_area.d.ts.map +1 -1
- package/src/core/geom/2d/triangle2d_compute_area.js +7 -23
- package/src/core/geom/2d/triangle2d_contains_point.d.ts +4 -11
- package/src/core/geom/2d/triangle2d_contains_point.d.ts.map +1 -1
- package/src/core/geom/2d/triangle2d_contains_point.js +7 -39
- package/src/core/geom/2d/triangle2d_get_barycentric.d.ts +4 -12
- package/src/core/geom/2d/triangle2d_get_barycentric.d.ts.map +1 -1
- package/src/core/geom/2d/triangle2d_get_barycentric.js +7 -48
- package/src/core/geom/3d/aabb/AABB3.js +6 -6
- package/src/core/geom/3d/aabb/aabb3_array_intersects_frustum_degree.d.ts +4 -6
- package/src/core/geom/3d/aabb/aabb3_array_intersects_frustum_degree.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_array_intersects_frustum_degree.js +7 -29
- package/src/core/geom/3d/aabb/aabb3_array_near_distance_to_intersection_ray_segment.js +2 -2
- package/src/core/geom/3d/aabb/aabb3_box_surface_area_2.d.ts +4 -4
- package/src/core/geom/3d/aabb/aabb3_box_surface_area_2.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_box_surface_area_2.js +7 -10
- package/src/core/geom/3d/aabb/aabb3_build_frustum.d.ts +11 -0
- package/src/core/geom/3d/aabb/aabb3_build_frustum.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_build_frustum.js +6 -1
- package/src/core/geom/3d/aabb/aabb3_classify_against_frustum.d.ts +13 -0
- package/src/core/geom/3d/aabb/aabb3_classify_against_frustum.d.ts.map +1 -0
- package/src/core/geom/3d/aabb/aabb3_classify_against_frustum.js +46 -0
- package/src/core/geom/3d/aabb/aabb3_classify_against_frustum_array.d.ts +9 -0
- package/src/core/geom/3d/aabb/aabb3_classify_against_frustum_array.d.ts.map +1 -0
- package/src/core/geom/3d/aabb/aabb3_classify_against_frustum_array.js +29 -0
- package/src/core/geom/3d/aabb/aabb3_closest_point_on_surface.d.ts +15 -0
- package/src/core/geom/3d/aabb/aabb3_closest_point_on_surface.d.ts.map +1 -0
- package/src/core/geom/3d/aabb/aabb3_closest_point_on_surface.js +57 -0
- package/src/core/geom/3d/aabb/aabb3_combined_surface_area.d.ts +4 -5
- package/src/core/geom/3d/aabb/aabb3_combined_surface_area.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_combined_surface_area.js +7 -21
- package/src/core/geom/3d/aabb/aabb3_compute_clipping_volume_intersection.d.ts +22 -0
- package/src/core/geom/3d/aabb/aabb3_compute_clipping_volume_intersection.d.ts.map +1 -0
- package/src/core/geom/3d/aabb/aabb3_compute_clipping_volume_intersection.js +298 -0
- package/src/core/geom/3d/aabb/aabb3_compute_half_surface_area.d.ts +4 -9
- package/src/core/geom/3d/aabb/aabb3_compute_half_surface_area.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_compute_half_surface_area.js +7 -19
- package/src/core/geom/3d/aabb/aabb3_compute_projected_area.d.ts +4 -6
- package/src/core/geom/3d/aabb/aabb3_compute_projected_area.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_compute_projected_area.js +7 -86
- package/src/core/geom/3d/aabb/aabb3_compute_surface_area.d.ts +4 -9
- package/src/core/geom/3d/aabb/aabb3_compute_surface_area.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_compute_surface_area.js +7 -16
- package/src/core/geom/3d/aabb/aabb3_detailed_volume_intersection.d.ts +4 -19
- package/src/core/geom/3d/aabb/aabb3_detailed_volume_intersection.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_detailed_volume_intersection.js +7 -298
- package/src/core/geom/3d/aabb/aabb3_estimate_projected_area.d.ts +8 -0
- package/src/core/geom/3d/aabb/aabb3_estimate_projected_area.d.ts.map +1 -0
- package/src/core/geom/3d/aabb/aabb3_estimate_projected_area.js +59 -0
- package/src/core/geom/3d/aabb/aabb3_estimate_projected_area2.d.ts +4 -5
- package/src/core/geom/3d/aabb/aabb3_estimate_projected_area2.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_estimate_projected_area2.js +7 -59
- package/src/core/geom/3d/aabb/aabb3_from_three_geometry.d.ts +7 -0
- package/src/core/geom/3d/aabb/aabb3_from_three_geometry.d.ts.map +1 -0
- package/src/core/geom/3d/aabb/aabb3_from_three_geometry.js +18 -0
- package/src/core/geom/3d/aabb/aabb3_from_threejs_geometry.d.ts +4 -4
- package/src/core/geom/3d/aabb/aabb3_from_threejs_geometry.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_from_threejs_geometry.js +7 -18
- package/src/core/geom/3d/aabb/aabb3_from_triangle_group.d.ts +12 -0
- package/src/core/geom/3d/aabb/aabb3_from_triangle_group.d.ts.map +1 -0
- package/src/core/geom/3d/aabb/aabb3_from_triangle_group.js +46 -0
- package/src/core/geom/3d/aabb/aabb3_half_surface_area.d.ts +7 -0
- package/src/core/geom/3d/aabb/aabb3_half_surface_area.d.ts.map +1 -0
- package/src/core/geom/3d/aabb/aabb3_half_surface_area.js +10 -0
- package/src/core/geom/3d/aabb/aabb3_half_surface_area_extents.d.ts +12 -0
- package/src/core/geom/3d/aabb/aabb3_half_surface_area_extents.d.ts.map +1 -0
- package/src/core/geom/3d/aabb/aabb3_half_surface_area_extents.js +19 -0
- package/src/core/geom/3d/aabb/aabb3_intersects_frustum_degree.d.ts +4 -10
- package/src/core/geom/3d/aabb/aabb3_intersects_frustum_degree.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_intersects_frustum_degree.js +7 -46
- package/src/core/geom/3d/aabb/aabb3_intersects_line_segment.d.ts +4 -15
- package/src/core/geom/3d/aabb/aabb3_intersects_line_segment.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_intersects_line_segment.js +7 -77
- package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.d.ts +13 -0
- package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.js +27 -6
- package/src/core/geom/3d/aabb/aabb3_intersects_segment3.d.ts +18 -0
- package/src/core/geom/3d/aabb/aabb3_intersects_segment3.d.ts.map +1 -0
- package/src/core/geom/3d/aabb/aabb3_intersects_segment3.js +77 -0
- package/src/core/geom/3d/aabb/aabb3_near_distance_to_intersection_ray_segment.d.ts +4 -17
- package/src/core/geom/3d/aabb/aabb3_near_distance_to_intersection_ray_segment.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_near_distance_to_intersection_ray_segment.js +7 -70
- package/src/core/geom/3d/aabb/aabb3_nearest_point_on_surface.d.ts +4 -12
- package/src/core/geom/3d/aabb/aabb3_nearest_point_on_surface.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_nearest_point_on_surface.js +4 -54
- package/src/core/geom/3d/aabb/aabb3_projected_area.d.ts +9 -0
- package/src/core/geom/3d/aabb/aabb3_projected_area.d.ts.map +1 -0
- package/src/core/geom/3d/aabb/aabb3_projected_area.js +86 -0
- package/src/core/geom/3d/aabb/aabb3_ray_segment_entry_distance.d.ts +38 -0
- package/src/core/geom/3d/aabb/aabb3_ray_segment_entry_distance.d.ts.map +1 -0
- package/src/core/geom/3d/aabb/aabb3_ray_segment_entry_distance.js +95 -0
- package/src/core/geom/3d/aabb/aabb3_raycast.d.ts +4 -22
- package/src/core/geom/3d/aabb/aabb3_raycast.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_raycast.js +7 -109
- package/src/core/geom/3d/aabb/aabb3_raycast_hit_point.d.ts +25 -0
- package/src/core/geom/3d/aabb/aabb3_raycast_hit_point.d.ts.map +1 -0
- package/src/core/geom/3d/aabb/aabb3_raycast_hit_point.js +109 -0
- package/src/core/geom/3d/aabb/aabb3_score_boxes_SAH.js +2 -2
- package/src/core/geom/3d/aabb/aabb3_score_boxes_SAH_delta.d.ts +7 -1
- package/src/core/geom/3d/aabb/aabb3_score_boxes_SAH_delta.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_score_boxes_SAH_delta.js +8 -5
- package/src/core/geom/3d/aabb/aabb3_surface_area.d.ts +12 -0
- package/src/core/geom/3d/aabb/aabb3_surface_area.d.ts.map +1 -0
- package/src/core/geom/3d/aabb/aabb3_surface_area.js +16 -0
- package/src/core/geom/3d/aabb/aabb3_transform_oriented_inverse.js +2 -2
- package/src/core/geom/3d/aabb/aabb3_transformed_compute_plane_side.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_transformed_compute_plane_side.js +4 -1
- package/src/core/geom/3d/aabb/aabb3_union_half_surface_area.d.ts +8 -0
- package/src/core/geom/3d/aabb/aabb3_union_half_surface_area.d.ts.map +1 -0
- package/src/core/geom/3d/aabb/aabb3_union_half_surface_area.js +21 -0
- package/src/core/geom/3d/aabb/aabb_nd_from_points.d.ts +10 -0
- package/src/core/geom/3d/aabb/aabb_nd_from_points.d.ts.map +1 -0
- package/src/core/geom/3d/aabb/aabb_nd_from_points.js +39 -0
- package/src/core/geom/3d/aabb/compute_aabb_from_points.d.ts +4 -7
- package/src/core/geom/3d/aabb/compute_aabb_from_points.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/compute_aabb_from_points.js +7 -39
- package/src/core/geom/3d/aabb/compute_triangle_group_aabb3.d.ts +4 -9
- package/src/core/geom/3d/aabb/compute_triangle_group_aabb3.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/compute_triangle_group_aabb3.js +4 -43
- package/src/core/geom/3d/atlas/ATLAS_PORT_PLAN.md +486 -0
- package/src/core/geom/3d/atlas/BFF_PLAN.md +174 -0
- package/src/core/geom/3d/atlas/Chart.d.ts +58 -0
- package/src/core/geom/3d/atlas/Chart.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/Chart.js +77 -0
- package/src/core/geom/3d/atlas/REVIEW_02.md +392 -0
- package/src/core/geom/3d/atlas/atlas_bench_lib.d.ts +73 -0
- package/src/core/geom/3d/atlas/atlas_bench_lib.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/atlas_bench_lib.js +315 -0
- package/src/core/geom/3d/atlas/atlas_chart_type.d.ts +17 -0
- package/src/core/geom/3d/atlas/atlas_chart_type.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/atlas_chart_type.js +16 -0
- package/src/core/geom/3d/atlas/atlas_compute_charts.d.ts +25 -0
- package/src/core/geom/3d/atlas/atlas_compute_charts.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/atlas_compute_charts.js +188 -0
- package/src/core/geom/3d/atlas/atlas_extract_chart.d.ts +17 -0
- package/src/core/geom/3d/atlas/atlas_extract_chart.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/atlas_extract_chart.js +107 -0
- package/src/core/geom/3d/atlas/atlas_generate.d.ts +39 -0
- package/src/core/geom/3d/atlas/atlas_generate.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/atlas_generate.js +43 -0
- package/src/core/geom/3d/atlas/atlas_test_fixtures.d.ts +84 -0
- package/src/core/geom/3d/atlas/atlas_test_fixtures.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/atlas_test_fixtures.js +266 -0
- package/src/core/geom/3d/atlas/atlas_write_chart_uvs.d.ts +25 -0
- package/src/core/geom/3d/atlas/atlas_write_chart_uvs.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/atlas_write_chart_uvs.js +36 -0
- package/src/core/geom/3d/atlas/data/atlas_build_edge_dihedrals.d.ts +22 -0
- package/src/core/geom/3d/atlas/data/atlas_build_edge_dihedrals.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/data/atlas_build_edge_dihedrals.js +62 -0
- package/src/core/geom/3d/atlas/data/atlas_build_edge_lengths.d.ts +9 -0
- package/src/core/geom/3d/atlas/data/atlas_build_edge_lengths.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/data/atlas_build_edge_lengths.js +33 -0
- package/src/core/geom/3d/atlas/data/atlas_build_face_areas.d.ts +9 -0
- package/src/core/geom/3d/atlas/data/atlas_build_face_areas.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/data/atlas_build_face_areas.js +50 -0
- package/src/core/geom/3d/atlas/io/atlas_mesh_weld_colocals.d.ts +27 -0
- package/src/core/geom/3d/atlas/io/atlas_mesh_weld_colocals.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/io/atlas_mesh_weld_colocals.js +39 -0
- package/src/core/geom/3d/atlas/io/bt_loop_uv.d.ts +22 -0
- package/src/core/geom/3d/atlas/io/bt_loop_uv.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/io/bt_loop_uv.js +57 -0
- package/src/core/geom/3d/atlas/pack/ChartPlacement.d.ts +36 -0
- package/src/core/geom/3d/atlas/pack/ChartPlacement.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/pack/ChartPlacement.js +46 -0
- package/src/core/geom/3d/atlas/pack/atlas_pack_charts.d.ts +62 -0
- package/src/core/geom/3d/atlas/pack/atlas_pack_charts.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/pack/atlas_pack_charts.js +551 -0
- package/src/core/geom/3d/atlas/param/atlas_chart_param_validity.d.ts +22 -0
- package/src/core/geom/3d/atlas/param/atlas_chart_param_validity.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/param/atlas_chart_param_validity.js +73 -0
- package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_bff.d.ts +37 -0
- package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_bff.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_bff.js +270 -0
- package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_lscm.d.ts +23 -0
- package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_lscm.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_lscm.js +224 -0
- package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_ortho.d.ts +14 -0
- package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_ortho.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_ortho.js +38 -0
- package/src/core/geom/3d/atlas/param/atlas_chart_stretch_metric.d.ts +22 -0
- package/src/core/geom/3d/atlas/param/atlas_chart_stretch_metric.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/param/atlas_chart_stretch_metric.js +86 -0
- package/src/core/geom/3d/atlas/param/atlas_piecewise_resegment.d.ts +20 -0
- package/src/core/geom/3d/atlas/param/atlas_piecewise_resegment.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/param/atlas_piecewise_resegment.js +183 -0
- package/src/core/geom/3d/atlas/param/fit_plane_basis.d.ts +27 -0
- package/src/core/geom/3d/atlas/param/fit_plane_basis.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/param/fit_plane_basis.js +66 -0
- package/src/core/geom/3d/atlas/segment/RegionGraph.d.ts +31 -0
- package/src/core/geom/3d/atlas/segment/RegionGraph.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/segment/RegionGraph.js +40 -0
- package/src/core/geom/3d/atlas/segment/atlas_build_region_graph.d.ts +23 -0
- package/src/core/geom/3d/atlas/segment/atlas_build_region_graph.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/segment/atlas_build_region_graph.js +136 -0
- package/src/core/geom/3d/atlas/segment/atlas_compute_planar_regions.d.ts +24 -0
- package/src/core/geom/3d/atlas/segment/atlas_compute_planar_regions.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/segment/atlas_compute_planar_regions.js +77 -0
- package/src/core/geom/3d/atlas/segment/atlas_merge_charts.d.ts +27 -0
- package/src/core/geom/3d/atlas/segment/atlas_merge_charts.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/segment/atlas_merge_charts.js +113 -0
- package/src/core/geom/3d/atlas/segment/atlas_segment_charts.d.ts +44 -0
- package/src/core/geom/3d/atlas/segment/atlas_segment_charts.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/segment/atlas_segment_charts.js +275 -0
- package/src/core/geom/3d/atlas/segment/atlas_segment_charts_atomic.d.ts +22 -0
- package/src/core/geom/3d/atlas/segment/atlas_segment_charts_atomic.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/segment/atlas_segment_charts_atomic.js +199 -0
- package/src/core/geom/3d/capsule/capsule_intersects_aabb3_closed.d.ts +1 -1
- package/src/core/geom/3d/capsule/capsule_intersects_aabb3_closed.js +3 -3
- package/src/core/geom/3d/circle3_compute_bounding_box.d.ts +14 -0
- package/src/core/geom/3d/circle3_compute_bounding_box.d.ts.map +1 -0
- package/src/core/geom/3d/circle3_compute_bounding_box.js +35 -0
- package/src/core/geom/3d/compute_circle_bounding_box.d.ts +4 -11
- package/src/core/geom/3d/compute_circle_bounding_box.d.ts.map +1 -1
- package/src/core/geom/3d/compute_circle_bounding_box.js +7 -35
- package/src/core/geom/3d/cone/computeConeBoundingBox.d.ts +4 -11
- package/src/core/geom/3d/cone/computeConeBoundingBox.d.ts.map +1 -1
- package/src/core/geom/3d/cone/computeConeBoundingBox.js +7 -58
- package/src/core/geom/3d/cone/computeConePlaneSide.d.ts +4 -16
- package/src/core/geom/3d/cone/computeConePlaneSide.d.ts.map +1 -1
- package/src/core/geom/3d/cone/computeConePlaneSide.js +7 -86
- package/src/core/geom/3d/cone/compute_bounding_cone_of_2_cones.d.ts +4 -5
- package/src/core/geom/3d/cone/compute_bounding_cone_of_2_cones.d.ts.map +1 -1
- package/src/core/geom/3d/cone/compute_bounding_cone_of_2_cones.js +7 -97
- package/src/core/geom/3d/cone/cone_compute_bounding_box.d.ts +14 -0
- package/src/core/geom/3d/cone/cone_compute_bounding_box.d.ts.map +1 -0
- package/src/core/geom/3d/cone/cone_compute_bounding_box.js +58 -0
- package/src/core/geom/3d/cone/cone_compute_bounding_of_2_cones.d.ts +8 -0
- package/src/core/geom/3d/cone/cone_compute_bounding_of_2_cones.d.ts.map +1 -0
- package/src/core/geom/3d/cone/cone_compute_bounding_of_2_cones.js +97 -0
- package/src/core/geom/3d/cone/cone_compute_plane_side.d.ts +19 -0
- package/src/core/geom/3d/cone/cone_compute_plane_side.d.ts.map +1 -0
- package/src/core/geom/3d/cone/cone_compute_plane_side.js +86 -0
- package/src/core/geom/3d/frustum/clipping_volume_matrix4_project.d.ts +4 -8
- package/src/core/geom/3d/frustum/clipping_volume_matrix4_project.d.ts.map +1 -1
- package/src/core/geom/3d/frustum/clipping_volume_matrix4_project.js +7 -45
- package/src/core/geom/3d/frustum/frustum3_computeNearestPointToPoint.d.ts +4 -9
- package/src/core/geom/3d/frustum/frustum3_computeNearestPointToPoint.d.ts.map +1 -1
- package/src/core/geom/3d/frustum/frustum3_computeNearestPointToPoint.js +7 -112
- package/src/core/geom/3d/frustum/frustum3_compute_closest_point.d.ts +12 -0
- package/src/core/geom/3d/frustum/frustum3_compute_closest_point.d.ts.map +1 -0
- package/src/core/geom/3d/frustum/frustum3_compute_closest_point.js +110 -0
- package/src/core/geom/3d/frustum/frustum3_from_aabb.d.ts +19 -0
- package/src/core/geom/3d/frustum/frustum3_from_aabb.d.ts.map +1 -0
- package/src/core/geom/3d/frustum/frustum3_from_aabb.js +60 -0
- package/src/core/geom/3d/frustum/frustum3_matrix4_project.d.ts +10 -0
- package/src/core/geom/3d/frustum/frustum3_matrix4_project.d.ts.map +1 -0
- package/src/core/geom/3d/frustum/frustum3_matrix4_project.js +18 -0
- package/src/core/geom/3d/frustum/frustum3_matrix4_project_n.d.ts +11 -0
- package/src/core/geom/3d/frustum/frustum3_matrix4_project_n.d.ts.map +1 -0
- package/src/core/geom/3d/frustum/frustum3_matrix4_project_n.js +45 -0
- package/src/core/geom/3d/frustum/frustum3_planes_to_flat_from_three.d.ts +7 -0
- package/src/core/geom/3d/frustum/frustum3_planes_to_flat_from_three.d.ts.map +1 -0
- package/src/core/geom/3d/frustum/frustum3_planes_to_flat_from_three.js +26 -0
- package/src/core/geom/3d/frustum/frustum3_slice_linear_to_points.d.ts +10 -0
- package/src/core/geom/3d/frustum/frustum3_slice_linear_to_points.d.ts.map +1 -0
- package/src/core/geom/3d/frustum/frustum3_slice_linear_to_points.js +96 -0
- package/src/core/geom/3d/frustum/frustum_compute_corners.js +9 -9
- package/src/core/geom/3d/frustum/frustum_matrix4_project.d.ts +4 -7
- package/src/core/geom/3d/frustum/frustum_matrix4_project.d.ts.map +1 -1
- package/src/core/geom/3d/frustum/frustum_matrix4_project.js +7 -18
- package/src/core/geom/3d/frustum/hexahedron_from_aabb.d.ts +4 -16
- package/src/core/geom/3d/frustum/hexahedron_from_aabb.d.ts.map +1 -1
- package/src/core/geom/3d/frustum/hexahedron_from_aabb.js +7 -60
- package/src/core/geom/3d/frustum/read_three_planes_to_array.d.ts.map +1 -1
- package/src/core/geom/3d/frustum/read_three_planes_to_array.js +7 -26
- package/src/core/geom/3d/frustum/slice_frustum_linear_to_points.d.ts +4 -7
- package/src/core/geom/3d/frustum/slice_frustum_linear_to_points.d.ts.map +1 -1
- package/src/core/geom/3d/frustum/slice_frustum_linear_to_points.js +7 -96
- package/src/core/geom/3d/funnel_string_pull.d.ts.map +1 -0
- package/src/{engine/navigation/mesh → core/geom/3d}/funnel_string_pull.js +1 -1
- package/src/core/geom/3d/gjk/gjk.js +4 -4
- package/src/core/geom/3d/gjk/gjk_epa_penetration.js +13 -13
- package/src/core/geom/3d/line/line3_closest_points_segment_segment.d.ts +4 -24
- package/src/core/geom/3d/line/line3_closest_points_segment_segment.d.ts.map +1 -1
- package/src/core/geom/3d/line/line3_closest_points_segment_segment.js +4 -85
- package/src/core/geom/3d/line/line3_compute_nearest_point_to_point.d.ts.map +1 -1
- package/src/core/geom/3d/line/line3_compute_nearest_point_to_point.js +7 -34
- package/src/core/geom/3d/line/line3_compute_point_segment_point_distance_unfolded.d.ts +32 -0
- package/src/core/geom/3d/line/line3_compute_point_segment_point_distance_unfolded.d.ts.map +1 -0
- package/src/core/geom/3d/line/line3_compute_point_segment_point_distance_unfolded.js +64 -0
- package/src/core/geom/3d/line/line3_compute_segment_closest_point.d.ts +16 -0
- package/src/core/geom/3d/line/line3_compute_segment_closest_point.d.ts.map +1 -0
- package/src/core/geom/3d/line/line3_compute_segment_closest_point.js +34 -0
- package/src/core/geom/3d/line/line3_compute_segment_closest_point_t.d.ts +19 -0
- package/src/core/geom/3d/line/line3_compute_segment_closest_point_t.d.ts.map +1 -0
- package/src/core/geom/3d/line/line3_compute_segment_closest_point_t.js +48 -0
- package/src/core/geom/3d/line/line3_compute_segment_closest_point_to_aabb3_t.d.ts +44 -0
- package/src/core/geom/3d/line/line3_compute_segment_closest_point_to_aabb3_t.d.ts.map +1 -0
- package/src/core/geom/3d/line/line3_compute_segment_closest_point_to_aabb3_t.js +153 -0
- package/src/core/geom/3d/line/line3_compute_segment_nearest_point_to_aabb3_t.d.ts +4 -41
- package/src/core/geom/3d/line/line3_compute_segment_nearest_point_to_aabb3_t.d.ts.map +1 -1
- package/src/core/geom/3d/line/line3_compute_segment_nearest_point_to_aabb3_t.js +4 -150
- package/src/core/geom/3d/line/line3_compute_segment_nearest_point_to_point_t.d.ts +4 -16
- package/src/core/geom/3d/line/line3_compute_segment_nearest_point_to_point_t.d.ts.map +1 -1
- package/src/core/geom/3d/line/line3_compute_segment_nearest_point_to_point_t.js +7 -48
- package/src/core/geom/3d/line/line3_compute_segment_point_distance_sqr.d.ts +1 -1
- package/src/core/geom/3d/line/line3_compute_segment_point_distance_sqr.js +2 -2
- package/src/core/geom/3d/line/line3_compute_segment_segment_closest_points.d.ts +27 -0
- package/src/core/geom/3d/line/line3_compute_segment_segment_closest_points.d.ts.map +1 -0
- package/src/core/geom/3d/line/line3_compute_segment_segment_closest_points.js +88 -0
- package/src/core/geom/3d/line/segment3_point_distance_to_segments.d.ts +11 -0
- package/src/core/geom/3d/line/segment3_point_distance_to_segments.d.ts.map +1 -0
- package/src/core/geom/3d/line/segment3_point_distance_to_segments.js +25 -0
- package/src/core/geom/3d/mat4/allocate_m4.d.ts +4 -3
- package/src/core/geom/3d/mat4/allocate_m4.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/allocate_m4.js +7 -16
- package/src/core/geom/3d/mat4/apply_mat4_transform_to_direction_v3_array.d.ts +4 -9
- package/src/core/geom/3d/mat4/apply_mat4_transform_to_direction_v3_array.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/apply_mat4_transform_to_direction_v3_array.js +7 -55
- package/src/core/geom/3d/mat4/apply_mat4_transform_to_v3_array.d.ts +4 -9
- package/src/core/geom/3d/mat4/apply_mat4_transform_to_v3_array.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/apply_mat4_transform_to_v3_array.js +7 -30
- package/src/core/geom/3d/mat4/compose_matrix4_array.d.ts +4 -19
- package/src/core/geom/3d/mat4/compose_matrix4_array.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/compose_matrix4_array.js +7 -53
- package/src/core/geom/3d/mat4/decompose_matrix_4_array.d.ts +4 -6
- package/src/core/geom/3d/mat4/decompose_matrix_4_array.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/decompose_matrix_4_array.js +7 -76
- package/src/core/geom/3d/mat4/eulerAnglesFromMatrix.d.ts +4 -30
- package/src/core/geom/3d/mat4/eulerAnglesFromMatrix.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/eulerAnglesFromMatrix.js +7 -124
- package/src/core/geom/3d/mat4/m4_allocate.d.ts +6 -0
- package/src/core/geom/3d/mat4/m4_allocate.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_allocate.js +16 -0
- package/src/core/geom/3d/mat4/m4_compose.d.ts +22 -0
- package/src/core/geom/3d/mat4/m4_compose.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_compose.js +53 -0
- package/src/core/geom/3d/mat4/m4_compute_normal_matrix3.d.ts +7 -0
- package/src/core/geom/3d/mat4/m4_compute_normal_matrix3.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_compute_normal_matrix3.js +7 -0
- package/src/core/geom/3d/mat4/m4_decompose.d.ts +9 -0
- package/src/core/geom/3d/mat4/m4_decompose.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_decompose.js +76 -0
- package/src/core/geom/3d/mat4/m4_euler_angles.d.ts +33 -0
- package/src/core/geom/3d/mat4/m4_euler_angles.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_euler_angles.js +124 -0
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts +20 -0
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.js +66 -0
- package/src/core/geom/3d/mat4/m4_normal_matrix3.d.ts +20 -0
- package/src/core/geom/3d/mat4/m4_normal_matrix3.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_normal_matrix3.js +39 -0
- package/src/core/geom/3d/mat4/m4_transform_direction_v3_buffer.d.ts +12 -0
- package/src/core/geom/3d/mat4/m4_transform_direction_v3_buffer.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_transform_direction_v3_buffer.js +55 -0
- package/src/core/geom/3d/mat4/m4_transform_v3_buffer.d.ts +12 -0
- package/src/core/geom/3d/mat4/m4_transform_v3_buffer.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_transform_v3_buffer.js +30 -0
- package/src/core/geom/3d/morton/mortonEncode_LUT.d.ts +4 -9
- package/src/core/geom/3d/morton/mortonEncode_LUT.d.ts.map +1 -1
- package/src/core/geom/3d/morton/mortonEncode_LUT.js +7 -143
- package/src/core/geom/3d/morton/mortonEncode_magicbits.d.ts +4 -9
- package/src/core/geom/3d/morton/mortonEncode_magicbits.d.ts.map +1 -1
- package/src/core/geom/3d/morton/mortonEncode_magicbits.js +7 -20
- package/src/core/geom/3d/morton/v3_morton_encode.d.ts +2 -2
- package/src/core/geom/3d/morton/v3_morton_encode.d.ts.map +1 -1
- package/src/core/geom/3d/morton/v3_morton_encode.js +2 -2
- package/src/core/geom/3d/morton/v3_morton_encode_bounded.d.ts +2 -2
- package/src/core/geom/3d/morton/v3_morton_encode_bounded.d.ts.map +1 -1
- package/src/core/geom/3d/morton/v3_morton_encode_bounded.js +1 -1
- package/src/core/geom/3d/morton/v3_morton_encode_lut.d.ts +12 -0
- package/src/core/geom/3d/morton/v3_morton_encode_lut.d.ts.map +1 -0
- package/src/core/geom/3d/morton/v3_morton_encode_lut.js +143 -0
- package/src/core/geom/3d/morton/v3_morton_encode_magicbits.d.ts +12 -0
- package/src/core/geom/3d/morton/v3_morton_encode_magicbits.d.ts.map +1 -0
- package/src/core/geom/3d/morton/v3_morton_encode_magicbits.js +20 -0
- package/src/core/geom/3d/normal/hemioct/encode_unit3_hemioct.d.ts +1 -14
- package/src/core/geom/3d/normal/hemioct/encode_unit3_hemioct.d.ts.map +1 -1
- package/src/core/geom/3d/normal/hemioct/encode_unit3_hemioct.js +5 -29
- package/src/core/geom/3d/normal/hemioct/encode_unit_to_hemioct.d.ts +15 -0
- package/src/core/geom/3d/normal/hemioct/encode_unit_to_hemioct.d.ts.map +1 -0
- package/src/core/geom/3d/normal/hemioct/encode_unit_to_hemioct.js +28 -0
- package/src/core/geom/3d/normal/lambert_azimuth/decode_azimuth_to_unit.d.ts +9 -0
- package/src/core/geom/3d/normal/lambert_azimuth/decode_azimuth_to_unit.d.ts.map +1 -0
- package/src/core/geom/3d/normal/{lamber_azimuth/transform.js → lambert_azimuth/decode_azimuth_to_unit.js} +30 -61
- package/src/core/geom/3d/normal/lambert_azimuth/encode_unit_to_azimuth.d.ts +10 -0
- package/src/core/geom/3d/normal/lambert_azimuth/encode_unit_to_azimuth.d.ts.map +1 -0
- package/src/core/geom/3d/normal/lambert_azimuth/encode_unit_to_azimuth.js +19 -0
- package/src/core/geom/3d/normal/spherical/decode_spheremap_to_unit.d.ts +9 -0
- package/src/core/geom/3d/normal/spherical/decode_spheremap_to_unit.d.ts.map +1 -0
- package/src/core/geom/3d/normal/spherical/decode_spheremap_to_unit.js +38 -0
- package/src/core/geom/3d/normal/spherical/{sphere_map_transform.d.ts → encode_unit_to_spheremap.d.ts} +2 -2
- package/src/core/geom/3d/normal/spherical/encode_unit_to_spheremap.d.ts.map +1 -0
- package/src/core/geom/3d/normal/spherical/encode_unit_to_spheremap.js +30 -0
- package/src/core/geom/3d/octahedra/octahedral_uv_to_direction.js +2 -2
- package/src/core/geom/3d/plane/is_point_within_planes.d.ts +4 -10
- package/src/core/geom/3d/plane/is_point_within_planes.d.ts.map +1 -1
- package/src/core/geom/3d/plane/is_point_within_planes.js +7 -46
- package/src/core/geom/3d/plane/plane3_compute_3_plane_intersection.d.ts +25 -0
- package/src/core/geom/3d/plane/plane3_compute_3_plane_intersection.d.ts.map +1 -0
- package/src/core/geom/3d/plane/plane3_compute_3_plane_intersection.js +72 -0
- package/src/core/geom/3d/plane/plane3_compute_3_plane_intersection_from_three.d.ts +11 -0
- package/src/core/geom/3d/plane/plane3_compute_3_plane_intersection_from_three.d.ts.map +1 -0
- package/src/core/geom/3d/plane/plane3_compute_3_plane_intersection_from_three.js +27 -0
- package/src/core/geom/3d/plane/plane3_compute_convex_3_plane_intersection.d.ts +4 -22
- package/src/core/geom/3d/plane/plane3_compute_convex_3_plane_intersection.d.ts.map +1 -1
- package/src/core/geom/3d/plane/plane3_compute_convex_3_plane_intersection.js +7 -72
- package/src/core/geom/3d/plane/plane3_compute_intersection.d.ts +17 -0
- package/src/core/geom/3d/plane/plane3_compute_intersection.d.ts.map +1 -0
- package/src/core/geom/3d/plane/plane3_compute_intersection.js +76 -0
- package/src/core/geom/3d/plane/plane3_compute_intersection_objects.d.ts +14 -0
- package/src/core/geom/3d/plane/plane3_compute_intersection_objects.d.ts.map +1 -0
- package/src/core/geom/3d/plane/plane3_compute_intersection_objects.js +82 -0
- package/src/core/geom/3d/plane/plane3_compute_plane_intersection.d.ts +4 -11
- package/src/core/geom/3d/plane/plane3_compute_plane_intersection.d.ts.map +1 -1
- package/src/core/geom/3d/plane/plane3_compute_plane_intersection.js +7 -82
- package/src/core/geom/3d/plane/plane3_contains_point_within_set.d.ts +13 -0
- package/src/core/geom/3d/plane/plane3_contains_point_within_set.d.ts.map +1 -0
- package/src/core/geom/3d/plane/plane3_contains_point_within_set.js +46 -0
- package/src/core/geom/3d/plane/plane3_intersect_plane.d.ts +4 -14
- package/src/core/geom/3d/plane/plane3_intersect_plane.d.ts.map +1 -1
- package/src/core/geom/3d/plane/plane3_intersect_plane.js +7 -76
- package/src/core/geom/3d/plane/plane3_matrix4_project.js +4 -4
- package/src/core/geom/3d/plane/plane3_three_compute_convex_3_plane_intersection.d.ts +4 -8
- package/src/core/geom/3d/plane/plane3_three_compute_convex_3_plane_intersection.d.ts.map +1 -1
- package/src/core/geom/3d/plane/plane3_three_compute_convex_3_plane_intersection.js +7 -27
- package/src/core/geom/3d/quaternion/quat3_createFromAxisAngle.d.ts +4 -5
- package/src/core/geom/3d/quaternion/quat3_createFromAxisAngle.d.ts.map +1 -1
- package/src/core/geom/3d/quaternion/quat3_createFromAxisAngle.js +7 -11
- package/src/core/geom/3d/quaternion/quat3_decode_from_uint32.d.ts +12 -0
- package/src/core/geom/3d/quaternion/quat3_decode_from_uint32.d.ts.map +1 -0
- package/src/core/geom/3d/quaternion/quat3_decode_from_uint32.js +66 -0
- package/src/core/geom/3d/quaternion/quat3_encode_to_uint32.d.ts +14 -0
- package/src/core/geom/3d/quaternion/quat3_encode_to_uint32.d.ts.map +1 -0
- package/src/core/geom/3d/quaternion/quat3_encode_to_uint32.js +110 -0
- package/src/core/geom/3d/quaternion/quat3_from_axis_angle.d.ts +8 -0
- package/src/core/geom/3d/quaternion/quat3_from_axis_angle.d.ts.map +1 -0
- package/src/core/geom/3d/quaternion/quat3_from_axis_angle.js +11 -0
- package/src/core/geom/3d/quaternion/quat_decode_from_uint32.d.ts +4 -9
- package/src/core/geom/3d/quaternion/quat_decode_from_uint32.d.ts.map +1 -1
- package/src/core/geom/3d/quaternion/quat_decode_from_uint32.js +7 -57
- package/src/core/geom/3d/quaternion/quat_encode_to_uint32.d.ts +4 -11
- package/src/core/geom/3d/quaternion/quat_encode_to_uint32.d.ts.map +1 -1
- package/src/core/geom/3d/quaternion/quat_encode_to_uint32.js +7 -110
- package/src/core/geom/3d/ray/Ray3.js +4 -4
- package/src/core/geom/3d/ray/ray3_array_apply_matrix4.js +2 -2
- package/src/core/geom/3d/ray/ray3_array_compose.d.ts +4 -9
- package/src/core/geom/3d/ray/ray3_array_compose.d.ts.map +1 -1
- package/src/core/geom/3d/ray/ray3_array_compose.js +7 -19
- package/src/core/geom/3d/ray/ray3_compose_array.d.ts +12 -0
- package/src/core/geom/3d/ray/ray3_compose_array.d.ts.map +1 -0
- package/src/core/geom/3d/ray/ray3_compose_array.js +19 -0
- package/src/core/geom/3d/ray/ray3_compute_closest_point.d.ts +16 -0
- package/src/core/geom/3d/ray/ray3_compute_closest_point.d.ts.map +1 -0
- package/src/core/geom/3d/ray/ray3_compute_closest_point.js +43 -0
- package/src/core/geom/3d/ray/ray3_compute_nearest_point_to_point.d.ts +4 -13
- package/src/core/geom/3d/ray/ray3_compute_nearest_point_to_point.d.ts.map +1 -1
- package/src/core/geom/3d/ray/ray3_compute_nearest_point_to_point.js +7 -43
- package/src/core/geom/3d/ray/ray3_compute_point_projection_t.d.ts +15 -0
- package/src/core/geom/3d/ray/ray3_compute_point_projection_t.d.ts.map +1 -0
- package/src/core/geom/3d/ray/ray3_compute_point_projection_t.js +31 -0
- package/src/core/geom/3d/ray/ray3_distance_to_point.d.ts +4 -12
- package/src/core/geom/3d/ray/ray3_distance_to_point.d.ts.map +1 -1
- package/src/core/geom/3d/ray/ray3_distance_to_point.js +7 -31
- package/src/core/geom/3d/ray/ray3_shift_origin_along_direction.d.ts +4 -7
- package/src/core/geom/3d/ray/ray3_shift_origin_along_direction.d.ts.map +1 -1
- package/src/core/geom/3d/ray/ray3_shift_origin_along_direction.js +7 -35
- package/src/core/geom/3d/ray/ray3_shift_origin_along_direction_array.d.ts +10 -0
- package/src/core/geom/3d/ray/ray3_shift_origin_along_direction_array.d.ts.map +1 -0
- package/src/core/geom/3d/ray/ray3_shift_origin_along_direction_array.js +35 -0
- package/src/core/geom/3d/shape/AbstractShape3D.d.ts +13 -0
- package/src/core/geom/3d/shape/AbstractShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/AbstractShape3D.js +16 -0
- package/src/core/geom/3d/shape/BoxShape3D.d.ts +1 -0
- package/src/core/geom/3d/shape/BoxShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/BoxShape3D.js +21 -5
- package/src/core/geom/3d/shape/CapsuleShape3D.d.ts +1 -0
- package/src/core/geom/3d/shape/CapsuleShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/CapsuleShape3D.js +23 -4
- package/src/core/geom/3d/shape/ConvexHullShape3D.js +3 -3
- package/src/core/geom/3d/shape/CylinderShape3D.js +2 -2
- package/src/core/geom/3d/shape/MeshShape3D.d.ts +39 -4
- package/src/core/geom/3d/shape/MeshShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/MeshShape3D.js +120 -11
- package/src/core/geom/3d/shape/SphereShape3D.d.ts +1 -0
- package/src/core/geom/3d/shape/SphereShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/SphereShape3D.js +17 -2
- package/src/core/geom/3d/shape/TransformedShape3D.d.ts +7 -3
- package/src/core/geom/3d/shape/TransformedShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/TransformedShape3D.js +3 -1
- package/src/core/geom/3d/shape/Triangle3D.d.ts +1 -1
- package/src/core/geom/3d/shape/Triangle3D.js +5 -5
- package/src/core/geom/3d/shape/shape3_mesh_from_geometry.d.ts +30 -0
- package/src/core/geom/3d/shape/shape3_mesh_from_geometry.d.ts.map +1 -0
- package/src/core/geom/3d/shape/shape3_mesh_from_geometry.js +64 -0
- package/src/core/geom/3d/shape/shape_mesh_from_geometry.d.ts +4 -27
- package/src/core/geom/3d/shape/shape_mesh_from_geometry.d.ts.map +1 -1
- package/src/core/geom/3d/shape/shape_mesh_from_geometry.js +4 -61
- package/src/core/geom/3d/shape/util/shape3_voxelize_to_grid.d.ts +61 -0
- package/src/core/geom/3d/shape/util/shape3_voxelize_to_grid.d.ts.map +1 -0
- package/src/core/geom/3d/shape/util/shape3_voxelize_to_grid.js +153 -0
- package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.d.ts +4 -58
- package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.d.ts.map +1 -1
- package/src/core/geom/3d/shape/util/shape3d_voxelize_to_grid.js +7 -153
- package/src/core/geom/3d/sphere/compute_bounding_sphere_of_2_spheres.d.ts +4 -5
- package/src/core/geom/3d/sphere/compute_bounding_sphere_of_2_spheres.d.ts.map +1 -1
- package/src/core/geom/3d/sphere/compute_bounding_sphere_of_2_spheres.js +7 -74
- package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.d.ts.map +1 -1
- package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.js +15 -13
- package/src/core/geom/3d/sphere/harmonics/sh3_rotate.d.ts +8 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_rotate.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_rotate.js +94 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_rotate_bl.d.ts +4 -5
- package/src/core/geom/3d/sphere/harmonics/sh3_rotate_bl.d.ts.map +1 -1
- package/src/core/geom/3d/sphere/harmonics/sh3_rotate_bl.js +7 -94
- package/src/core/geom/3d/sphere/harmonics/sh_compute_K.d.ts +4 -6
- package/src/core/geom/3d/sphere/harmonics/sh_compute_K.d.ts.map +1 -1
- package/src/core/geom/3d/sphere/harmonics/sh_compute_K.js +7 -17
- package/src/core/geom/3d/sphere/harmonics/sh_normalization_factor.d.ts +9 -0
- package/src/core/geom/3d/sphere/harmonics/sh_normalization_factor.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/harmonics/sh_normalization_factor.js +17 -0
- package/src/core/geom/3d/sphere/sphere_array_intersects_point.d.ts +4 -7
- package/src/core/geom/3d/sphere/sphere_array_intersects_point.d.ts.map +1 -1
- package/src/core/geom/3d/sphere/sphere_array_intersects_point.js +7 -15
- package/src/core/geom/3d/sphere/sphere_array_intersects_ray.d.ts +4 -10
- package/src/core/geom/3d/sphere/sphere_array_intersects_ray.d.ts.map +1 -1
- package/src/core/geom/3d/sphere/sphere_array_intersects_ray.js +7 -25
- package/src/core/geom/3d/sphere/sphere_compute_bounding_of_2_spheres.d.ts +8 -0
- package/src/core/geom/3d/sphere/sphere_compute_bounding_of_2_spheres.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/sphere_compute_bounding_of_2_spheres.js +75 -0
- package/src/core/geom/3d/sphere/sphere_contains_point.d.ts +13 -0
- package/src/core/geom/3d/sphere/sphere_contains_point.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/sphere_contains_point.js +29 -0
- package/src/core/geom/3d/sphere/sphere_fibonacci_point.d.ts +2 -2
- package/src/core/geom/3d/sphere/sphere_fibonacci_point.d.ts.map +1 -1
- package/src/core/geom/3d/sphere/sphere_fibonacci_point.js +1 -1
- package/src/core/geom/3d/sphere/sphere_intersects_point.d.ts +4 -10
- package/src/core/geom/3d/sphere/sphere_intersects_point.d.ts.map +1 -1
- package/src/core/geom/3d/sphere/sphere_intersects_point.js +7 -29
- package/src/core/geom/3d/sphere/sphere_matrix4_transform.d.ts +7 -0
- package/src/core/geom/3d/sphere/sphere_matrix4_transform.d.ts.map +1 -1
- package/src/core/geom/3d/sphere/sphere_matrix4_transform.js +6 -2
- package/src/core/geom/3d/sphere/sphere_packed_contains_point.d.ts +10 -0
- package/src/core/geom/3d/sphere/sphere_packed_contains_point.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/sphere_packed_contains_point.js +15 -0
- package/src/core/geom/3d/sphere/sphere_packed_intersects_ray.d.ts +13 -0
- package/src/core/geom/3d/sphere/sphere_packed_intersects_ray.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/sphere_packed_intersects_ray.js +25 -0
- package/src/core/geom/3d/sphere/sphere_project.js +2 -2
- package/src/core/geom/3d/sphere/sphere_projected_radius_sqr.d.ts +9 -0
- package/src/core/geom/3d/sphere/sphere_projected_radius_sqr.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/sphere_projected_radius_sqr.js +45 -0
- package/src/core/geom/3d/sphere/sphere_projected_sphere_radius_sqr.d.ts +4 -6
- package/src/core/geom/3d/sphere/sphere_projected_sphere_radius_sqr.d.ts.map +1 -1
- package/src/core/geom/3d/sphere/sphere_projected_sphere_radius_sqr.js +7 -45
- package/src/core/geom/3d/sphere/sphere_radius_sqr_from_v3_array_transformed.d.ts +4 -6
- package/src/core/geom/3d/sphere/sphere_radius_sqr_from_v3_array_transformed.d.ts.map +1 -1
- package/src/core/geom/3d/sphere/sphere_radius_sqr_from_v3_array_transformed.js +7 -32
- package/src/core/geom/3d/sphere/sphere_radius_sqr_from_v3_buffer_transformed.d.ts +9 -0
- package/src/core/geom/3d/sphere/sphere_radius_sqr_from_v3_buffer_transformed.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/sphere_radius_sqr_from_v3_buffer_transformed.js +32 -0
- package/src/core/geom/3d/sphere/sphere_spherical_from_cartesian.d.ts +10 -0
- package/src/core/geom/3d/sphere/sphere_spherical_from_cartesian.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/sphere_spherical_from_cartesian.js +29 -0
- package/src/core/geom/3d/sphere/spherical_from_cartesian.d.ts +4 -7
- package/src/core/geom/3d/sphere/spherical_from_cartesian.d.ts.map +1 -1
- package/src/core/geom/3d/sphere/spherical_from_cartesian.js +7 -29
- package/src/core/geom/3d/tetrahedra/compute_bounding_simplex_3d.js +5 -5
- package/src/core/geom/3d/tetrahedra/compute_tetrahedral_mesh_from_surface.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/compute_tetrahedral_mesh_from_surface.js +3 -5
- package/src/core/geom/3d/tetrahedra/compute_tetrahedron_quality.d.ts +4 -12
- package/src/core/geom/3d/tetrahedra/compute_tetrahedron_quality.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/compute_tetrahedron_quality.js +4 -19
- package/src/core/geom/3d/tetrahedra/compute_tetrahedron_volume.d.ts +4 -6
- package/src/core/geom/3d/tetrahedra/compute_tetrahedron_volume.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/compute_tetrahedron_volume.js +7 -18
- package/src/core/geom/3d/tetrahedra/delaunay/compute_delaunay_tetrahedral_mesh.js +2 -2
- package/src/core/geom/3d/tetrahedra/delaunay/fill_in_a_cavity.d.ts +4 -7
- package/src/core/geom/3d/tetrahedra/delaunay/fill_in_a_cavity.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/delaunay/fill_in_a_cavity.js +7 -166
- package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_fill_cavity.d.ts +10 -0
- package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_fill_cavity.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_fill_cavity.js +166 -0
- package/src/core/geom/3d/tetrahedra/prototypeTetrahedraBuilder.js +2 -2
- package/src/core/geom/3d/tetrahedra/prototype_tetrahedrize_mesh.js +6 -8
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.js +3 -3
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_compute_tet_quality.d.ts +15 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_compute_tet_quality.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_compute_tet_quality.js +22 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_compute_tet_volume.d.ts +9 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_compute_tet_volume.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_compute_tet_volume.js +18 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_get_neighbours.d.ts +24 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_get_neighbours.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_get_neighbours.js +39 -0
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_improve_quality.js +12 -12
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_tet_get_neighbours.d.ts +4 -21
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_tet_get_neighbours.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_tet_get_neighbours.js +7 -39
- package/src/core/geom/3d/tetrahedra/tetrahedron_compute_quality.js +5 -5
- package/src/core/geom/3d/tetrahedra/tetrahedron_compute_signed_volume.js +2 -2
- package/src/core/geom/3d/tetrahedra/triangle/prototype.js +5 -4
- package/src/core/geom/3d/tetrahedra/triangle/trace_triangular_depth_map.js +2 -2
- package/src/core/geom/3d/tetrahedra/triangle/triangle_decode_depth.d.ts +2 -0
- package/src/core/geom/3d/tetrahedra/triangle/triangle_decode_depth.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/triangle/{triangle_encode_rasterized_depth.js → triangle_decode_depth.js} +59 -112
- package/src/core/geom/3d/tetrahedra/triangle/triangle_rasterized_depth_sample_index.d.ts +12 -0
- package/src/core/geom/3d/tetrahedra/triangle/triangle_rasterized_depth_sample_index.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/triangle/triangle_rasterized_depth_sample_index.js +54 -0
- package/src/core/geom/3d/tetrahedra/validate_neighbour.d.ts +10 -0
- package/src/core/geom/3d/tetrahedra/validate_neighbour.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/validate_neighbour.js +70 -0
- package/src/core/geom/3d/tetrahedra/validate_tetrahedral_mesh.d.ts +0 -16
- package/src/core/geom/3d/tetrahedra/validate_tetrahedral_mesh.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/validate_tetrahedral_mesh.js +69 -186
- package/src/core/geom/3d/tetrahedra/validate_tetrahedron_neighbourhood.d.ts +9 -0
- package/src/core/geom/3d/tetrahedra/validate_tetrahedron_neighbourhood.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/validate_tetrahedron_neighbourhood.js +50 -0
- package/src/core/geom/3d/topology/bounds/computeTopoMeshBoundingSphere.d.ts +4 -4
- package/src/core/geom/3d/topology/bounds/computeTopoMeshBoundingSphere.d.ts.map +1 -1
- package/src/core/geom/3d/topology/bounds/computeTopoMeshBoundingSphere.js +7 -37
- package/src/core/geom/3d/topology/bounds/computeTopoMeshBoundiningBox.d.ts +4 -4
- package/src/core/geom/3d/topology/bounds/computeTopoMeshBoundiningBox.d.ts.map +1 -1
- package/src/core/geom/3d/topology/bounds/computeTopoMeshBoundiningBox.js +7 -16
- package/src/core/geom/3d/topology/bounds/computeTriangleClusterNormalBoundingCone.d.ts +4 -6
- package/src/core/geom/3d/topology/bounds/computeTriangleClusterNormalBoundingCone.d.ts.map +1 -1
- package/src/core/geom/3d/topology/bounds/computeTriangleClusterNormalBoundingCone.js +7 -87
- package/src/core/geom/3d/topology/bounds/compute_topo_mesh_bounding_box.d.ts +7 -0
- package/src/core/geom/3d/topology/bounds/compute_topo_mesh_bounding_box.d.ts.map +1 -0
- package/src/core/geom/3d/topology/bounds/compute_topo_mesh_bounding_box.js +16 -0
- package/src/core/geom/3d/topology/bounds/compute_topo_mesh_bounding_sphere.d.ts +7 -0
- package/src/core/geom/3d/topology/bounds/compute_topo_mesh_bounding_sphere.d.ts.map +1 -0
- package/src/core/geom/3d/topology/bounds/compute_topo_mesh_bounding_sphere.js +37 -0
- package/src/core/geom/3d/topology/bounds/compute_triangle_cluster_normal_bounding_cone.d.ts +9 -0
- package/src/core/geom/3d/topology/bounds/compute_triangle_cluster_normal_bounding_cone.d.ts.map +1 -0
- package/src/core/geom/3d/topology/bounds/compute_triangle_cluster_normal_bounding_cone.js +87 -0
- package/src/core/geom/3d/topology/build_face_graph_from_mesh.d.ts +0 -7
- package/src/core/geom/3d/topology/build_face_graph_from_mesh.d.ts.map +1 -1
- package/src/core/geom/3d/topology/build_face_graph_from_mesh.js +78 -113
- package/src/core/geom/3d/topology/compareEdges.d.ts +6 -1
- package/src/core/geom/3d/topology/compareEdges.d.ts.map +1 -1
- package/src/core/geom/3d/topology/compareEdges.js +7 -16
- package/src/core/geom/3d/topology/compare_edges.d.ts +8 -0
- package/src/core/geom/3d/topology/compare_edges.d.ts.map +1 -0
- package/src/core/geom/3d/topology/compare_edges.js +16 -0
- package/src/core/geom/3d/topology/computeTopoMeshVertexDuplicates.d.ts +4 -6
- package/src/core/geom/3d/topology/computeTopoMeshVertexDuplicates.d.ts.map +1 -1
- package/src/core/geom/3d/topology/computeTopoMeshVertexDuplicates.js +7 -108
- package/src/core/geom/3d/topology/compute_topo_mesh_vertex_duplicates.d.ts +9 -0
- package/src/core/geom/3d/topology/compute_topo_mesh_vertex_duplicates.d.ts.map +1 -0
- package/src/core/geom/3d/topology/compute_topo_mesh_vertex_duplicates.js +108 -0
- package/src/core/geom/3d/topology/expandConnectivityByLocality.js +2 -2
- package/src/core/geom/3d/topology/graph_create_off_mesh_links.d.ts +8 -0
- package/src/core/geom/3d/topology/graph_create_off_mesh_links.d.ts.map +1 -0
- package/src/core/geom/3d/topology/graph_create_off_mesh_links.js +35 -0
- package/src/core/geom/3d/topology/samples/prototypeFloodFill.js +4 -4
- package/src/core/geom/3d/topology/simplify/EdgeCollapseCandidate.d.ts.map +1 -1
- package/src/core/geom/3d/topology/simplify/EdgeCollapseCandidate.js +9 -8
- package/src/core/geom/3d/topology/simplify/collapse_degenerate_edge.js +2 -2
- package/src/core/geom/3d/topology/simplify/collapse_edge.d.ts +11 -0
- package/src/core/geom/3d/topology/simplify/collapse_edge.d.ts.map +1 -0
- package/src/core/geom/3d/topology/simplify/collapse_edge.js +21 -0
- package/src/core/geom/3d/topology/simplify/computeEdgeCollapseCost.d.ts +4 -8
- package/src/core/geom/3d/topology/simplify/computeEdgeCollapseCost.d.ts.map +1 -1
- package/src/core/geom/3d/topology/simplify/computeEdgeCollapseCost.js +7 -82
- package/src/core/geom/3d/topology/simplify/compute_edge_collapse_cost.d.ts +11 -0
- package/src/core/geom/3d/topology/simplify/compute_edge_collapse_cost.d.ts.map +1 -0
- package/src/core/geom/3d/topology/simplify/compute_edge_collapse_cost.js +82 -0
- package/src/core/geom/3d/topology/simplify/compute_face_normal_change_dot_product.js +3 -3
- package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.d.ts.map +1 -1
- package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.js +6 -5
- package/src/core/geom/3d/topology/simplify/edge_collapse_quadratic.js +2 -2
- package/src/core/geom/3d/topology/simplify/partial_edge_collapse.d.ts +11 -0
- package/src/core/geom/3d/topology/simplify/partial_edge_collapse.d.ts.map +1 -0
- package/src/core/geom/3d/topology/simplify/{collapseEdge.js → partial_edge_collapse.js} +118 -167
- package/src/core/geom/3d/topology/simplify/prototypeMeshSimplification.js +2 -2
- package/src/core/geom/3d/topology/simplify/quadratic/Quadric3.d.ts.map +1 -1
- package/src/core/geom/3d/topology/simplify/quadratic/Quadric3.js +4 -3
- package/src/core/geom/3d/topology/simplify/quadratic/apply_border_penalties_to_vertex_quadrics.d.ts +9 -0
- package/src/core/geom/3d/topology/simplify/quadratic/apply_border_penalties_to_vertex_quadrics.d.ts.map +1 -0
- package/src/core/geom/3d/topology/simplify/quadratic/apply_border_penalties_to_vertex_quadrics.js +16 -0
- package/src/core/geom/3d/topology/simplify/quadratic/apply_border_penalty_to_vertex_quadrics.d.ts +10 -0
- package/src/core/geom/3d/topology/simplify/quadratic/apply_border_penalty_to_vertex_quadrics.d.ts.map +1 -0
- package/src/core/geom/3d/topology/simplify/quadratic/apply_border_penalty_to_vertex_quadrics.js +51 -0
- package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadrics.d.ts +9 -0
- package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadrics.d.ts.map +1 -0
- package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadrics.js +95 -0
- package/src/core/geom/3d/topology/simplify/quadratic/compute_edge_collapse_cost_quadratic.d.ts +4 -7
- package/src/core/geom/3d/topology/simplify/quadratic/compute_edge_collapse_cost_quadratic.d.ts.map +1 -1
- package/src/core/geom/3d/topology/simplify/quadratic/compute_edge_collapse_cost_quadratic.js +7 -28
- package/src/core/geom/3d/topology/simplify/quadratic/compute_edge_collapse_cost_quadric.d.ts +10 -0
- package/src/core/geom/3d/topology/simplify/quadratic/compute_edge_collapse_cost_quadric.d.ts.map +1 -0
- package/src/core/geom/3d/topology/simplify/quadratic/compute_edge_collapse_cost_quadric.js +28 -0
- package/src/core/geom/3d/topology/simplify/quadratic/deep_copy_vertex_quadrics.d.ts +8 -0
- package/src/core/geom/3d/topology/simplify/quadratic/deep_copy_vertex_quadrics.d.ts.map +1 -0
- package/src/core/geom/3d/topology/simplify/quadratic/deep_copy_vertex_quadrics.js +20 -0
- package/src/core/geom/3d/topology/simplify/simplifyTopoMesh.js +2 -2
- package/src/core/geom/3d/topology/simplify/simplifyTopoMesh2.js +2 -2
- package/src/core/geom/3d/topology/struct/TopoMesh.d.ts +3 -3
- package/src/core/geom/3d/topology/struct/TopoMesh.js +12 -12
- package/src/core/geom/3d/topology/struct/TopoTriangle.d.ts +0 -2
- package/src/core/geom/3d/topology/struct/TopoTriangle.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/TopoTriangle.js +4 -4
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_bridge_islands.js +4 -4
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_cleanup_faceless_references.js +2 -2
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.js +2 -2
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_face_normals.js +2 -2
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadratics.d.ts +4 -11
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadratics.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadratics.js +4 -92
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.d.ts +14 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.js +95 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_face_decouple_islands.js +2 -2
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_face_island_erode.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_face_island_erode.js +6 -8
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_fill_small_holes.js +2 -2
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_resolve_t_junctions.js +3 -3
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_simplify.js +6 -6
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_simplify_by_error.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_simplify_by_error.js +45 -10
- package/src/core/geom/3d/topology/struct/binary/io/edge/bt_edge_collapse.js +2 -2
- package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.d.ts +14 -0
- package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.js +6 -2
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_kill_only_vert.d.ts +4 -4
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_kill_only_vert.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_kill_only_vert.js +7 -8
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_merge_vertices_by_distance.d.ts +10 -0
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_merge_vertices_by_distance.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_merge_vertices_by_distance.js +165 -0
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_merge_verts_by_distance.d.ts +4 -7
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_merge_verts_by_distance.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_merge_verts_by_distance.js +7 -165
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vert_fuse_duplicate_edges.d.ts +4 -19
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vert_fuse_duplicate_edges.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vert_fuse_duplicate_edges.js +4 -145
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vert_kill.d.ts +4 -4
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vert_kill.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vert_kill.js +7 -21
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_fuse_duplicate_edges.d.ts +22 -0
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_fuse_duplicate_edges.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_fuse_duplicate_edges.js +148 -0
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_kill.d.ts +7 -0
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_kill.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_kill.js +21 -0
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_kill_only.d.ts +7 -0
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_kill_only.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/io/vertex/bt_vertex_kill_only.js +8 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_collect_boundary_segments.d.ts +14 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_collect_boundary_segments.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_collect_boundary_segments.js +29 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_edge_is_boundary.d.ts +11 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_edge_is_boundary.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_edge_is_boundary.js +20 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_attached_faces.d.ts +4 -9
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_attached_faces.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_attached_faces.js +7 -96
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_edge_adjacent_faces.d.ts +12 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_edge_adjacent_faces.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_edge_adjacent_faces.js +74 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_incenter.js +2 -2
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_neighbour_faces.d.ts +4 -9
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_neighbour_faces.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_neighbour_faces.js +7 -74
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_shared_loop.d.ts +15 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_shared_loop.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_shared_loop.js +48 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_vertex_adjacent_faces.d.ts +12 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_vertex_adjacent_faces.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_get_vertex_adjacent_faces.js +96 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_island_flood_fill.js +2 -2
- package/src/core/geom/3d/topology/struct/binary/query/bt_faces_shared_loop.d.ts +4 -12
- package/src/core/geom/3d/topology/struct/binary/query/bt_faces_shared_loop.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/query/bt_faces_shared_loop.js +4 -45
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_build_boundary_euclidean_distance_field.d.ts +0 -23
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_build_boundary_euclidean_distance_field.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_build_boundary_euclidean_distance_field.js +2 -54
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_build_face_bvh.d.ts +9 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_build_face_bvh.d.ts.map +1 -0
- package/src/{engine/navigation/mesh/bvh_build_from_bt_mesh.js → core/geom/3d/topology/struct/binary/query/bt_mesh_build_face_bvh.js} +5 -3
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path.d.ts.map +1 -0
- package/src/{engine/navigation/mesh → core/geom/3d/topology/struct/binary/query}/bt_mesh_face_find_path.js +7 -9
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path_polyanya.d.ts.map +1 -0
- package/src/{engine/navigation/mesh → core/geom/3d/topology/struct/binary/query}/bt_mesh_face_find_path_polyanya.js +22 -41
- package/src/{engine/navigation/mesh/bvh_query_nearest_face.d.ts → core/geom/3d/topology/struct/binary/query/bt_mesh_find_nearest_face.d.ts} +3 -3
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_find_nearest_face.d.ts.map +1 -0
- package/src/{engine/navigation/mesh/bvh_query_nearest_face.js → core/geom/3d/topology/struct/binary/query/bt_mesh_find_nearest_face.js} +9 -11
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.js +3 -3
- package/src/{engine/navigation/mesh/bvh_segment_penetrates_mesh.d.ts → core/geom/3d/topology/struct/binary/query/bt_mesh_segment_penetrates_surface.d.ts} +3 -3
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_segment_penetrates_surface.d.ts.map +1 -0
- package/src/{engine/navigation/mesh/bvh_segment_penetrates_mesh.js → core/geom/3d/topology/struct/binary/query/bt_mesh_segment_penetrates_surface.js} +4 -4
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_walk_boundary_loops.js +3 -3
- package/src/core/geom/3d/topology/struct/binary/query/bt_query_edge_is_boundary.d.ts +4 -8
- package/src/core/geom/3d/topology/struct/binary/query/bt_query_edge_is_boundary.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/query/bt_query_edge_is_boundary.js +4 -17
- package/src/core/geom/3d/topology/tm_edge_kill.js +2 -2
- package/src/core/geom/3d/topology/tm_edge_kill_only.d.ts +7 -0
- package/src/core/geom/3d/topology/tm_edge_kill_only.d.ts.map +1 -0
- package/src/core/geom/3d/topology/tm_edge_kill_only.js +35 -0
- package/src/core/geom/3d/topology/tm_face_area.js +2 -2
- package/src/core/geom/3d/topology/tm_face_kill.js +2 -2
- package/src/core/geom/3d/topology/tm_face_kill_only.d.ts +7 -0
- package/src/core/geom/3d/topology/tm_face_kill_only.d.ts.map +1 -0
- package/src/core/geom/3d/topology/tm_face_kill_only.js +12 -0
- package/src/core/geom/3d/topology/tm_face_normal.js +2 -2
- package/src/core/geom/3d/topology/tm_kill_only_edge.d.ts +4 -4
- package/src/core/geom/3d/topology/tm_kill_only_edge.d.ts.map +1 -1
- package/src/core/geom/3d/topology/tm_kill_only_edge.js +7 -35
- package/src/core/geom/3d/topology/tm_kill_only_face.d.ts +4 -4
- package/src/core/geom/3d/topology/tm_kill_only_face.d.ts.map +1 -1
- package/src/core/geom/3d/topology/tm_kill_only_face.js +7 -12
- package/src/core/geom/3d/topology/tm_kill_only_vert.d.ts +4 -4
- package/src/core/geom/3d/topology/tm_kill_only_vert.d.ts.map +1 -1
- package/src/core/geom/3d/topology/tm_kill_only_vert.js +7 -14
- package/src/core/geom/3d/topology/tm_vert_kill.d.ts +4 -4
- package/src/core/geom/3d/topology/tm_vert_kill.d.ts.map +1 -1
- package/src/core/geom/3d/topology/tm_vert_kill.js +7 -19
- package/src/core/geom/3d/topology/tm_vert_splice.d.ts +4 -9
- package/src/core/geom/3d/topology/tm_vert_splice.d.ts.map +1 -1
- package/src/core/geom/3d/topology/tm_vert_splice.js +7 -64
- package/src/core/geom/3d/topology/tm_vertex_compute_normal.js +2 -2
- package/src/core/geom/3d/topology/tm_vertex_kill.d.ts +7 -0
- package/src/core/geom/3d/topology/tm_vertex_kill.d.ts.map +1 -0
- package/src/core/geom/3d/topology/tm_vertex_kill.js +19 -0
- package/src/core/geom/3d/topology/tm_vertex_kill_only.d.ts +7 -0
- package/src/core/geom/3d/topology/tm_vertex_kill_only.d.ts.map +1 -0
- package/src/core/geom/3d/topology/tm_vertex_kill_only.js +14 -0
- package/src/core/geom/3d/topology/tm_vertex_splice.d.ts +12 -0
- package/src/core/geom/3d/topology/tm_vertex_splice.d.ts.map +1 -0
- package/src/core/geom/3d/topology/tm_vertex_splice.js +64 -0
- package/src/core/geom/3d/topology/tm_weld_duplicate_vertices.js +4 -4
- package/src/core/geom/3d/triangle/computeTriangleClosestPointToPointBarycentric.d.ts +4 -17
- package/src/core/geom/3d/triangle/computeTriangleClosestPointToPointBarycentric.d.ts.map +1 -1
- package/src/core/geom/3d/triangle/computeTriangleClosestPointToPointBarycentric.js +7 -167
- package/src/core/geom/3d/triangle/computeTriangleRayIntersection.d.ts +4 -20
- package/src/core/geom/3d/triangle/computeTriangleRayIntersection.d.ts.map +1 -1
- package/src/core/geom/3d/triangle/computeTriangleRayIntersection.js +4 -157
- package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentric.d.ts +4 -22
- package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentric.d.ts.map +1 -1
- package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentric.js +4 -93
- package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentricEdge.d.ts +4 -23
- package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentricEdge.d.ts.map +1 -1
- package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentricEdge.js +7 -95
- package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentricGeometry.d.ts +4 -13
- package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentricGeometry.d.ts.map +1 -1
- package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentricGeometry.js +7 -55
- package/src/core/geom/3d/triangle/compute_triangle_area_3d.d.ts +4 -12
- package/src/core/geom/3d/triangle/compute_triangle_area_3d.d.ts.map +1 -1
- package/src/core/geom/3d/triangle/compute_triangle_area_3d.js +7 -50
- package/src/core/geom/3d/triangle/compute_triangle_normal.d.ts +4 -18
- package/src/core/geom/3d/triangle/compute_triangle_normal.d.ts.map +1 -1
- package/src/core/geom/3d/triangle/compute_triangle_normal.js +7 -25
- package/src/core/geom/3d/triangle/rayTriangleIntersection.d.ts +4 -10
- package/src/core/geom/3d/triangle/rayTriangleIntersection.d.ts.map +1 -1
- package/src/core/geom/3d/triangle/rayTriangleIntersection.js +7 -37
- package/src/core/geom/3d/triangle/tri3_area.d.ts +15 -0
- package/src/core/geom/3d/triangle/tri3_area.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/tri3_area.js +50 -0
- package/src/core/geom/3d/triangle/tri3_closest_point_barycentric.d.ts +20 -0
- package/src/core/geom/3d/triangle/tri3_closest_point_barycentric.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/tri3_closest_point_barycentric.js +167 -0
- package/src/core/geom/3d/triangle/tri3_compute_normal.d.ts +16 -0
- package/src/core/geom/3d/triangle/tri3_compute_normal.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/tri3_compute_normal.js +57 -0
- package/src/core/geom/3d/triangle/tri3_compute_normal_v3_objects.d.ts +21 -0
- package/src/core/geom/3d/triangle/tri3_compute_normal_v3_objects.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/tri3_compute_normal_v3_objects.js +25 -0
- package/src/core/geom/3d/triangle/tri3_compute_plane_side.d.ts +24 -0
- package/src/core/geom/3d/triangle/tri3_compute_plane_side.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/tri3_compute_plane_side.js +39 -0
- package/src/core/geom/3d/triangle/tri3_compute_signed_volume.d.ts +17 -0
- package/src/core/geom/3d/triangle/tri3_compute_signed_volume.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/tri3_compute_signed_volume.js +33 -0
- package/src/core/geom/3d/triangle/tri3_incenter.d.ts +19 -0
- package/src/core/geom/3d/triangle/tri3_incenter.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/tri3_incenter.js +60 -0
- package/src/core/geom/3d/triangle/tri3_intersects_clipping_volume.d.ts +17 -0
- package/src/core/geom/3d/triangle/tri3_intersects_clipping_volume.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/tri3_intersects_clipping_volume.js +51 -0
- package/src/core/geom/3d/triangle/tri3_mesh_compute_signed_volume.d.ts +20 -0
- package/src/core/geom/3d/triangle/tri3_mesh_compute_signed_volume.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/tri3_mesh_compute_signed_volume.js +38 -0
- package/src/core/geom/3d/triangle/tri3_ray_intersection.d.ts +23 -0
- package/src/core/geom/3d/triangle/tri3_ray_intersection.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/tri3_ray_intersection.js +160 -0
- package/src/core/geom/3d/triangle/tri3_ray_intersection_barycentric.d.ts +25 -0
- package/src/core/geom/3d/triangle/tri3_ray_intersection_barycentric.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/tri3_ray_intersection_barycentric.js +96 -0
- package/src/core/geom/3d/triangle/tri3_ray_intersection_barycentric_edge.d.ts +26 -0
- package/src/core/geom/3d/triangle/tri3_ray_intersection_barycentric_edge.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/tri3_ray_intersection_barycentric_edge.js +95 -0
- package/src/core/geom/3d/triangle/tri3_ray_intersection_indexed.d.ts +16 -0
- package/src/core/geom/3d/triangle/tri3_ray_intersection_indexed.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/tri3_ray_intersection_indexed.js +55 -0
- package/src/core/geom/3d/triangle/tri3_ray_intersection_v3_objects.d.ts +13 -0
- package/src/core/geom/3d/triangle/tri3_ray_intersection_v3_objects.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/tri3_ray_intersection_v3_objects.js +37 -0
- package/src/core/geom/3d/triangle/triangle3_incenter.d.ts +4 -16
- package/src/core/geom/3d/triangle/triangle3_incenter.d.ts.map +1 -1
- package/src/core/geom/3d/triangle/triangle3_incenter.js +7 -60
- package/src/core/geom/3d/triangle/triangle_compute_plane_side.d.ts +4 -21
- package/src/core/geom/3d/triangle/triangle_compute_plane_side.d.ts.map +1 -1
- package/src/core/geom/3d/triangle/triangle_compute_plane_side.js +7 -39
- package/src/core/geom/3d/triangle/triangle_compute_signed_volume.d.ts +4 -14
- package/src/core/geom/3d/triangle/triangle_compute_signed_volume.d.ts.map +1 -1
- package/src/core/geom/3d/triangle/triangle_compute_signed_volume.js +7 -33
- package/src/core/geom/3d/triangle/triangle_intersects_clipping_volume.d.ts +4 -14
- package/src/core/geom/3d/triangle/triangle_intersects_clipping_volume.d.ts.map +1 -1
- package/src/core/geom/3d/triangle/triangle_intersects_clipping_volume.js +7 -51
- package/src/core/geom/3d/triangle/triangle_mesh_compute_signed_volume.d.ts +4 -17
- package/src/core/geom/3d/triangle/triangle_mesh_compute_signed_volume.d.ts.map +1 -1
- package/src/core/geom/3d/triangle/triangle_mesh_compute_signed_volume.js +4 -35
- package/src/core/geom/3d/triangle/v3_compute_triangle_normal.d.ts +4 -13
- package/src/core/geom/3d/triangle/v3_compute_triangle_normal.d.ts.map +1 -1
- package/src/core/geom/3d/triangle/v3_compute_triangle_normal.js +7 -57
- package/src/core/geom/3d/util/aabb3_emit_point_grid.d.ts +10 -0
- package/src/core/geom/3d/util/aabb3_emit_point_grid.d.ts.map +1 -0
- package/src/core/geom/3d/util/aabb3_emit_point_grid.js +42 -0
- package/src/core/geom/3d/util/make_justified_point_grid.d.ts +4 -7
- package/src/core/geom/3d/util/make_justified_point_grid.d.ts.map +1 -1
- package/src/core/geom/3d/util/make_justified_point_grid.js +7 -42
- package/src/core/geom/GEOMETRY_REVIEW_002_API_ISSUES.md +381 -0
- package/src/core/geom/GEOMETRY_REVIEW_002_NAMING.md +684 -0
- package/src/core/geom/Vector3.js +2 -2
- package/src/core/geom/Vector4.d.ts +1 -1
- package/src/core/geom/Vector4.d.ts.map +1 -1
- package/src/core/geom/Vector4.js +0 -10
- package/src/core/geom/mat3/m3_cm_from_translation.d.ts +4 -5
- package/src/core/geom/mat3/m3_cm_from_translation.d.ts.map +1 -1
- package/src/core/geom/mat3/m3_cm_from_translation.js +7 -19
- package/src/core/geom/mat3/m3_cm_invert.d.ts +4 -4
- package/src/core/geom/mat3/m3_cm_invert.d.ts.map +1 -1
- package/src/core/geom/mat3/m3_cm_invert.js +7 -45
- package/src/core/geom/mat3/m3_cm_make_translation.d.ts +8 -0
- package/src/core/geom/mat3/m3_cm_make_translation.d.ts.map +1 -0
- package/src/core/geom/mat3/m3_cm_make_translation.js +19 -0
- package/src/core/geom/mat3/m3_invert.d.ts +7 -0
- package/src/core/geom/mat3/m3_invert.d.ts.map +1 -0
- package/src/core/geom/mat3/m3_invert.js +45 -0
- package/src/core/geom/mat3/m3_make_rotation.d.ts +1 -8
- package/src/core/geom/mat3/m3_make_rotation.d.ts.map +1 -1
- package/src/core/geom/mat3/m3_make_rotation.js +5 -31
- package/src/core/geom/mat3/m3_make_rotation_TBN.d.ts +9 -0
- package/src/core/geom/mat3/m3_make_rotation_TBN.d.ts.map +1 -0
- package/src/core/geom/mat3/m3_make_rotation_TBN.js +31 -0
- package/src/core/geom/mat3/m3_multiply_vec3.d.ts +4 -5
- package/src/core/geom/mat3/m3_multiply_vec3.d.ts.map +1 -1
- package/src/core/geom/mat3/m3_multiply_vec3.js +7 -21
- package/src/core/geom/mat3/m3_scale_columns_by_vec3.d.ts +8 -0
- package/src/core/geom/mat3/m3_scale_columns_by_vec3.d.ts.map +1 -0
- package/src/core/geom/mat3/m3_scale_columns_by_vec3.js +21 -0
- package/src/core/geom/packing/computeBoundingSphereOfSpheres.d.ts +4 -9
- package/src/core/geom/packing/computeBoundingSphereOfSpheres.d.ts.map +1 -1
- package/src/core/geom/packing/computeBoundingSphereOfSpheres.js +7 -102
- package/src/core/geom/packing/max-rect/MaxRectanglesPacker.js +9 -9
- package/src/core/geom/packing/max-rect/aabb2_validate_packing.d.ts +7 -1
- package/src/core/geom/packing/max-rect/aabb2_validate_packing.d.ts.map +1 -1
- package/src/core/geom/packing/max-rect/aabb2_validate_packing.js +2 -2
- package/src/core/geom/packing/max-rect/cost/costByBestShortSide.d.ts +4 -7
- package/src/core/geom/packing/max-rect/cost/costByBestShortSide.d.ts.map +1 -1
- package/src/core/geom/packing/max-rect/cost/costByBestShortSide.js +7 -11
- package/src/core/geom/packing/max-rect/cost/costByRemainingArea.d.ts +4 -7
- package/src/core/geom/packing/max-rect/cost/costByRemainingArea.d.ts.map +1 -1
- package/src/core/geom/packing/max-rect/cost/costByRemainingArea.js +7 -14
- package/src/core/geom/packing/max-rect/cost/cost_by_best_short_side.d.ts +10 -0
- package/src/core/geom/packing/max-rect/cost/cost_by_best_short_side.d.ts.map +1 -0
- package/src/core/geom/packing/max-rect/cost/cost_by_best_short_side.js +11 -0
- package/src/core/geom/packing/max-rect/cost/cost_by_remaining_area.d.ts +10 -0
- package/src/core/geom/packing/max-rect/cost/cost_by_remaining_area.d.ts.map +1 -0
- package/src/core/geom/packing/max-rect/cost/cost_by_remaining_area.js +14 -0
- package/src/core/geom/packing/max-rect/cutArea.d.ts +4 -4
- package/src/core/geom/packing/max-rect/cutArea.d.ts.map +1 -1
- package/src/core/geom/packing/max-rect/cutArea.js +7 -85
- package/src/core/geom/packing/max-rect/cut_area.d.ts +7 -0
- package/src/core/geom/packing/max-rect/cut_area.d.ts.map +1 -0
- package/src/core/geom/packing/max-rect/cut_area.js +85 -0
- package/src/core/geom/packing/max-rect/findBestContainer.d.ts +4 -7
- package/src/core/geom/packing/max-rect/findBestContainer.d.ts.map +1 -1
- package/src/core/geom/packing/max-rect/findBestContainer.js +7 -80
- package/src/core/geom/packing/max-rect/find_best_container.d.ts +10 -0
- package/src/core/geom/packing/max-rect/find_best_container.d.ts.map +1 -0
- package/src/core/geom/packing/max-rect/find_best_container.js +80 -0
- package/src/core/geom/packing/max-rect/packMaxRectangles.d.ts +4 -7
- package/src/core/geom/packing/max-rect/packMaxRectangles.d.ts.map +1 -1
- package/src/core/geom/packing/max-rect/packMaxRectangles.js +7 -16
- package/src/core/geom/packing/max-rect/packOneBox.d.ts +4 -5
- package/src/core/geom/packing/max-rect/packOneBox.d.ts.map +1 -1
- package/src/core/geom/packing/max-rect/packOneBox.js +7 -54
- package/src/core/geom/packing/max-rect/pack_max_rectangles.d.ts +10 -0
- package/src/core/geom/packing/max-rect/pack_max_rectangles.d.ts.map +1 -0
- package/src/core/geom/packing/max-rect/pack_max_rectangles.js +16 -0
- package/src/core/geom/packing/max-rect/pack_one_box.d.ts +8 -0
- package/src/core/geom/packing/max-rect/pack_one_box.d.ts.map +1 -0
- package/src/core/geom/packing/max-rect/pack_one_box.js +54 -0
- package/src/core/geom/packing/max-rect/removeRedundantBoxes.d.ts +4 -3
- package/src/core/geom/packing/max-rect/removeRedundantBoxes.d.ts.map +1 -1
- package/src/core/geom/packing/max-rect/removeRedundantBoxes.js +7 -84
- package/src/core/geom/packing/max-rect/removeRedundantBoxesArray.d.ts +4 -3
- package/src/core/geom/packing/max-rect/removeRedundantBoxesArray.d.ts.map +1 -1
- package/src/core/geom/packing/max-rect/removeRedundantBoxesArray.js +7 -46
- package/src/core/geom/packing/max-rect/remove_redundant_boxes.d.ts +6 -0
- package/src/core/geom/packing/max-rect/remove_redundant_boxes.d.ts.map +1 -0
- package/src/core/geom/packing/max-rect/remove_redundant_boxes.js +84 -0
- package/src/core/geom/packing/max-rect/remove_redundant_boxes_from_array.d.ts +6 -0
- package/src/core/geom/packing/max-rect/remove_redundant_boxes_from_array.d.ts.map +1 -0
- package/src/core/geom/packing/max-rect/remove_redundant_boxes_from_array.js +46 -0
- package/src/core/geom/packing/sphere_compute_bounding_of_spheres.d.ts +12 -0
- package/src/core/geom/packing/sphere_compute_bounding_of_spheres.d.ts.map +1 -0
- package/src/core/geom/packing/sphere_compute_bounding_of_spheres.js +102 -0
- package/src/core/geom/random/randomPointInBox.d.ts +4 -5
- package/src/core/geom/random/randomPointInBox.d.ts.map +1 -1
- package/src/core/geom/random/randomPointInBox.js +7 -16
- package/src/core/geom/random/randomPointInCircle.d.ts +4 -6
- package/src/core/geom/random/randomPointInCircle.d.ts.map +1 -1
- package/src/core/geom/random/randomPointInCircle.js +7 -21
- package/src/core/geom/random/randomPointInPoint.d.ts +4 -5
- package/src/core/geom/random/randomPointInPoint.d.ts.map +1 -1
- package/src/core/geom/random/randomPointInPoint.js +7 -11
- package/src/core/geom/random/randomPointInSphere.d.ts +4 -6
- package/src/core/geom/random/randomPointInSphere.d.ts.map +1 -1
- package/src/core/geom/random/randomPointInSphere.js +7 -35
- package/src/core/geom/random/randomPointOnBox.d.ts +4 -5
- package/src/core/geom/random/randomPointOnBox.d.ts.map +1 -1
- package/src/core/geom/random/randomPointOnBox.js +7 -37
- package/src/core/geom/random/randomPointOnSphere.d.ts +4 -6
- package/src/core/geom/random/randomPointOnSphere.d.ts.map +1 -1
- package/src/core/geom/random/randomPointOnSphere.js +7 -26
- package/src/core/geom/random/random_point_in_box.d.ts +8 -0
- package/src/core/geom/random/random_point_in_box.d.ts.map +1 -0
- package/src/core/geom/random/random_point_in_box.js +16 -0
- package/src/core/geom/random/random_point_in_circle.d.ts +9 -0
- package/src/core/geom/random/random_point_in_circle.d.ts.map +1 -0
- package/src/core/geom/random/random_point_in_circle.js +21 -0
- package/src/core/geom/random/random_point_in_point.d.ts +8 -0
- package/src/core/geom/random/random_point_in_point.d.ts.map +1 -0
- package/src/core/geom/random/random_point_in_point.js +11 -0
- package/src/core/geom/random/random_point_in_sphere.d.ts +9 -0
- package/src/core/geom/random/random_point_in_sphere.d.ts.map +1 -0
- package/src/core/geom/random/random_point_in_sphere.js +35 -0
- package/src/core/geom/random/random_point_on_box.d.ts +8 -0
- package/src/core/geom/random/random_point_on_box.d.ts.map +1 -0
- package/src/core/geom/random/random_point_on_box.js +37 -0
- package/src/core/geom/random/random_point_on_sphere.d.ts +9 -0
- package/src/core/geom/random/random_point_on_sphere.d.ts.map +1 -0
- package/src/core/geom/random/random_point_on_sphere.js +26 -0
- package/src/core/geom/vec/vector_copy.d.ts +4 -7
- package/src/core/geom/vec/vector_copy.d.ts.map +1 -1
- package/src/core/geom/vec/vector_copy.js +7 -13
- package/src/core/geom/vec/vector_copy_offset.d.ts +10 -0
- package/src/core/geom/vec/vector_copy_offset.d.ts.map +1 -0
- package/src/core/geom/vec/vector_copy_offset.js +13 -0
- package/src/core/geom/vec/vector_scale_array.d.ts +4 -8
- package/src/core/geom/vec/vector_scale_array.d.ts.map +1 -1
- package/src/core/geom/vec/vector_scale_array.js +7 -31
- package/src/core/geom/vec/vector_scale_offset.d.ts +11 -0
- package/src/core/geom/vec/vector_scale_offset.d.ts.map +1 -0
- package/src/core/geom/vec/vector_scale_offset.js +31 -0
- package/src/core/geom/vec3/v3_add.d.ts +10 -0
- package/src/core/geom/vec3/v3_add.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_add.js +13 -0
- package/src/core/geom/vec3/v3_add_array.d.ts +10 -0
- package/src/core/geom/vec3/v3_add_array.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_add_array.js +19 -0
- package/src/core/geom/vec3/v3_angle.d.ts +12 -0
- package/src/core/geom/vec3/v3_angle.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_angle.js +23 -0
- package/src/core/geom/vec3/v3_angle_atan2_between.d.ts +4 -9
- package/src/core/geom/vec3/v3_angle_atan2_between.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_angle_atan2_between.js +7 -27
- package/src/core/geom/vec3/v3_angle_between.d.ts +4 -9
- package/src/core/geom/vec3/v3_angle_between.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_angle_between.js +7 -23
- package/src/core/geom/vec3/v3_angle_cos_between.d.ts +4 -9
- package/src/core/geom/vec3/v3_angle_cos_between.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_angle_cos_between.js +7 -35
- package/src/core/geom/vec3/v3_angle_stable.d.ts +12 -0
- package/src/core/geom/vec3/v3_angle_stable.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_angle_stable.js +27 -0
- package/src/core/geom/vec3/v3_array_add_in_place.d.ts +4 -7
- package/src/core/geom/vec3/v3_array_add_in_place.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_array_add_in_place.js +7 -13
- package/src/core/geom/vec3/v3_array_centroid.d.ts +4 -8
- package/src/core/geom/vec3/v3_array_centroid.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_array_centroid.js +7 -40
- package/src/core/geom/vec3/v3_array_copy.d.ts +4 -6
- package/src/core/geom/vec3/v3_array_copy.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_array_copy.js +7 -17
- package/src/core/geom/vec3/v3_array_displace_in_direction.d.ts +4 -11
- package/src/core/geom/vec3/v3_array_displace_in_direction.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_array_displace_in_direction.js +7 -23
- package/src/core/geom/vec3/v3_array_equals.d.ts +4 -6
- package/src/core/geom/vec3/v3_array_equals.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_array_equals.js +7 -13
- package/src/core/geom/vec3/v3_array_immediate_add.d.ts +4 -7
- package/src/core/geom/vec3/v3_array_immediate_add.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_array_immediate_add.js +7 -19
- package/src/core/geom/vec3/v3_array_matrix4_rotate.d.ts +4 -8
- package/src/core/geom/vec3/v3_array_matrix4_rotate.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_array_matrix4_rotate.js +7 -22
- package/src/core/geom/vec3/v3_array_normalize.d.ts +4 -6
- package/src/core/geom/vec3/v3_array_normalize.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_array_normalize.js +7 -32
- package/src/core/geom/vec3/v3_array_scale.d.ts +4 -8
- package/src/core/geom/vec3/v3_array_scale.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_array_scale.js +5 -16
- package/src/core/geom/vec3/v3_centroid_v3_buffer.d.ts +11 -0
- package/src/core/geom/vec3/v3_centroid_v3_buffer.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_centroid_v3_buffer.js +40 -0
- package/src/core/geom/vec3/v3_compute_interior_angle.d.ts +4 -19
- package/src/core/geom/vec3/v3_compute_interior_angle.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_compute_interior_angle.js +7 -26
- package/src/core/geom/vec3/v3_copy_array.d.ts +9 -0
- package/src/core/geom/vec3/v3_copy_array.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_copy_array.js +17 -0
- package/src/core/geom/vec3/v3_cos_angle.d.ts +12 -0
- package/src/core/geom/vec3/v3_cos_angle.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_cos_angle.js +35 -0
- package/src/core/geom/vec3/v3_cotangent.d.ts +20 -0
- package/src/core/geom/vec3/v3_cotangent.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_cotangent.js +29 -0
- package/src/core/geom/vec3/v3_displace_in_direction_to_array.d.ts +14 -0
- package/src/core/geom/vec3/v3_displace_in_direction_to_array.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_displace_in_direction_to_array.js +23 -0
- package/src/core/geom/vec3/v3_dot_array.d.ts +10 -0
- package/src/core/geom/vec3/v3_dot_array.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_dot_array.js +25 -0
- package/src/core/geom/vec3/v3_dot_array_array.d.ts +4 -7
- package/src/core/geom/vec3/v3_dot_array_array.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_dot_array_array.js +7 -25
- package/src/core/geom/vec3/v3_equals_array.d.ts +9 -0
- package/src/core/geom/vec3/v3_equals_array.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_equals_array.js +13 -0
- package/src/core/geom/vec3/v3_interior_angle.d.ts +22 -0
- package/src/core/geom/vec3/v3_interior_angle.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_interior_angle.js +26 -0
- package/src/core/geom/vec3/v3_matrix3_multiply.d.ts +19 -0
- package/src/core/geom/vec3/v3_matrix3_multiply.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_matrix3_multiply.js +30 -0
- package/src/core/geom/vec3/v3_matrix3_rotate.d.ts +3 -3
- package/src/core/geom/vec3/v3_matrix3_rotate.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_matrix3_rotate.js +2 -2
- package/src/core/geom/vec3/v3_matrix4_rotate.d.ts +4 -13
- package/src/core/geom/vec3/v3_matrix4_rotate.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_matrix4_rotate.js +7 -51
- package/src/core/geom/vec3/v3_matrix4_rotate_array.d.ts +11 -0
- package/src/core/geom/vec3/v3_matrix4_rotate_array.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_matrix4_rotate_array.js +22 -0
- package/src/core/geom/vec3/v3_matrix4_rotate_unit.d.ts +16 -0
- package/src/core/geom/vec3/v3_matrix4_rotate_unit.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_matrix4_rotate_unit.js +51 -0
- package/src/core/geom/vec3/v3_multiply.d.ts +16 -0
- package/src/core/geom/vec3/v3_multiply.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_multiply.js +19 -0
- package/src/core/geom/vec3/v3_multiply_scalar.d.ts +4 -8
- package/src/core/geom/vec3/v3_multiply_scalar.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_multiply_scalar.js +7 -19
- package/src/core/geom/vec3/v3_normalize_array.d.ts +9 -0
- package/src/core/geom/vec3/v3_normalize_array.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_normalize_array.js +32 -0
- package/src/core/geom/vec3/v3_orthonormal_matrix_from_normal.d.ts +4 -1
- package/src/core/geom/vec3/v3_orthonormal_matrix_from_normal.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_orthonormal_matrix_from_normal.js +4 -1
- package/src/core/geom/vec3/v3_quat3_apply.d.ts +4 -26
- package/src/core/geom/vec3/v3_quat3_apply.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_quat3_apply.js +5 -37
- package/src/core/geom/vec3/v3_quat3_apply_inverse.d.ts +4 -27
- package/src/core/geom/vec3/v3_quat3_apply_inverse.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_quat3_apply_inverse.js +5 -39
- package/src/core/geom/vec3/v3_quaternion_apply.d.ts +29 -0
- package/src/core/geom/vec3/v3_quaternion_apply.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_quaternion_apply.js +39 -0
- package/src/core/geom/vec3/v3_quaternion_apply_inverse.d.ts +30 -0
- package/src/core/geom/vec3/v3_quaternion_apply_inverse.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_quaternion_apply_inverse.js +41 -0
- package/src/core/geom/vec3/v3_reflect.d.ts +19 -0
- package/src/core/geom/vec3/v3_reflect.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_reflect.js +24 -0
- package/src/core/geom/vec3/v3_scale.d.ts +11 -0
- package/src/core/geom/vec3/v3_scale.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_scale.js +19 -0
- package/src/core/geom/vec3/v3_scale_array.d.ts +11 -0
- package/src/core/geom/vec3/v3_scale_array.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_scale_array.js +18 -0
- package/src/core/geom/vec3/v3_triple_cross.d.ts +32 -0
- package/src/core/geom/vec3/v3_triple_cross.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_triple_cross.js +45 -0
- package/src/core/geom/vec3/v3_triple_cross_product.d.ts +4 -29
- package/src/core/geom/vec3/v3_triple_cross_product.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_triple_cross_product.js +5 -43
- package/src/core/geom/vec4/v4_matrix4_multiply.d.ts +8 -0
- package/src/core/geom/vec4/v4_matrix4_multiply.d.ts.map +1 -0
- package/src/core/geom/vec4/v4_matrix4_multiply.js +42 -0
- package/src/core/geom/vec4/v4_multiply_mat4.d.ts +4 -5
- package/src/core/geom/vec4/v4_multiply_mat4.d.ts.map +1 -1
- package/src/core/geom/vec4/v4_multiply_mat4.js +7 -42
- package/src/core/graph/csr/CSRGraph.d.ts +12 -8
- package/src/core/graph/csr/CSRGraph.d.ts.map +1 -1
- package/src/core/graph/csr/CSRGraph.js +18 -10
- package/src/core/graph/csr/csr_graph_build_distance_field.d.ts +36 -0
- package/src/core/graph/csr/csr_graph_build_distance_field.d.ts.map +1 -0
- package/src/core/graph/csr/csr_graph_build_distance_field.js +112 -0
- package/src/core/graph/csr/csr_graph_find_edge.d.ts +15 -0
- package/src/core/graph/csr/csr_graph_find_edge.d.ts.map +1 -0
- package/src/core/graph/csr/csr_graph_find_edge.js +25 -0
- package/src/core/graph/csr/csr_graph_find_shortest_path.d.ts +20 -0
- package/src/core/graph/csr/csr_graph_find_shortest_path.d.ts.map +1 -0
- package/src/core/graph/csr/csr_graph_find_shortest_path.js +105 -0
- package/src/core/graph/layout/CircleLayout.d.ts.map +1 -1
- package/src/core/graph/layout/CircleLayout.js +2 -4
- package/src/core/graph/layout/box/applyCentralGravityAABB2.js +2 -2
- package/src/core/graph/metis/cluster_mesh_metis.d.ts.map +1 -1
- package/src/core/graph/metis/cluster_mesh_metis.js +8 -1
- package/src/core/graph/metis/mesh_to_metis_graph.d.ts +2 -2
- package/src/core/graph/metis/mesh_to_metis_graph.d.ts.map +1 -1
- package/src/core/graph/metis/mesh_to_metis_graph.js +3 -3
- package/src/core/graph/metis/native/MetisGraph.d.ts +26 -10
- package/src/core/graph/metis/native/MetisGraph.d.ts.map +1 -1
- package/src/core/graph/metis/native/MetisGraph.js +34 -15
- package/src/core/graph/metis/native/bisection/BisectionScratch.d.ts +2 -2
- package/src/core/graph/metis/native/bisection/BisectionScratch.d.ts.map +1 -1
- package/src/core/graph/metis/native/bisection/BisectionScratch.js +4 -2
- package/src/core/graph/metis/native/bisection/compute_2way_params.d.ts.map +1 -1
- package/src/core/graph/metis/native/bisection/compute_2way_params.js +3 -1
- package/src/core/graph/metis/native/metis_partition_kway.d.ts +2 -2
- package/src/core/graph/metis/native/metis_partition_kway.d.ts.map +1 -1
- package/src/core/graph/metis/native/metis_partition_kway.js +1 -1
- package/src/core/graph/metis/native/refine/compute_kway_params.d.ts.map +1 -1
- package/src/core/graph/metis/native/refine/compute_kway_params.js +20 -8
- package/src/core/graph/metis/native/refine/fm_kway.d.ts.map +1 -1
- package/src/core/graph/metis/native/refine/fm_kway.js +58 -33
- package/src/core/math/linalg/cg/cg_solve.d.ts +24 -0
- package/src/core/math/linalg/cg/cg_solve.d.ts.map +1 -0
- package/src/core/math/linalg/cg/cg_solve.js +106 -0
- package/src/core/math/linalg/cg/cg_solve_normal_equations.d.ts +21 -0
- package/src/core/math/linalg/cg/cg_solve_normal_equations.d.ts.map +1 -0
- package/src/core/math/linalg/cg/cg_solve_normal_equations.js +59 -0
- package/src/core/math/linalg/eigen/matrix_symmetric_3x3_eigen.d.ts +19 -0
- package/src/core/math/linalg/eigen/matrix_symmetric_3x3_eigen.d.ts.map +1 -0
- package/src/core/math/linalg/eigen/matrix_symmetric_3x3_eigen.js +117 -0
- package/src/core/math/linalg/sparse/SparseMatrixCSR.d.ts +50 -0
- package/src/core/math/linalg/sparse/SparseMatrixCSR.d.ts.map +1 -0
- package/src/core/math/linalg/sparse/SparseMatrixCSR.js +88 -0
- package/src/core/math/linalg/sparse/spm_matvec.d.ts +9 -0
- package/src/core/math/linalg/sparse/spm_matvec.d.ts.map +1 -0
- package/src/core/math/linalg/sparse/spm_matvec.js +22 -0
- package/src/core/math/linalg/sparse/spm_matvec_transpose.d.ts +12 -0
- package/src/core/math/linalg/sparse/spm_matvec_transpose.d.ts.map +1 -0
- package/src/core/math/linalg/sparse/spm_matvec_transpose.js +29 -0
- package/src/core/math/physics/mie/MIE_PARTICLES_STANDARD_PRECOMPUTED.d.ts +39 -0
- package/src/core/math/physics/mie/MIE_PARTICLES_STANDARD_PRECOMPUTED.js +22 -1
- package/src/core/math/physics/mie/compute_mie_particle_properties_rgb.d.ts.map +1 -1
- package/src/core/math/physics/mie/compute_mie_particle_properties_rgb.js +32 -9
- package/src/core/math/physics/mie/compute_mie_phase.d.ts +2 -3
- package/src/core/math/physics/mie/compute_mie_phase.d.ts.map +1 -1
- package/src/core/math/physics/mie/compute_mie_phase.js +1 -3
- package/src/core/math/physics/mie/lorenz_mie_coefs.d.ts +0 -1
- package/src/core/math/physics/mie/lorenz_mie_coefs.d.ts.map +1 -1
- package/src/core/math/physics/mie/lorenz_mie_coefs.js +0 -7
- package/src/engine/EngineHarness.js +2 -2
- package/src/engine/animation/curve/view/AnimationCurveView.js +2 -2
- package/src/engine/asset/loaders/material/planeHash.js +2 -2
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +7 -7
- package/src/engine/control/first-person/prototype_first_person_controller.js +3 -3
- package/src/engine/ecs/attachment/TransformAttachmentBinding.js +3 -3
- package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.js +2 -2
- package/src/engine/ecs/terrain/ecs/Terrain.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/Terrain.js +4 -3
- package/src/engine/ecs/terrain/ecs/TerrainSystem.js +6 -6
- package/src/engine/ecs/terrain/tiles/TerrainTile.js +4 -4
- package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts.map +1 -1
- package/src/engine/ecs/terrain/tiles/TerrainTileManager.js +12 -11
- package/src/engine/ecs/transform/Transform.js +7 -7
- package/src/engine/ecs/transform/TransformSerializationAdapter.js +4 -4
- package/src/engine/graphics/GraphicsEngine.d.ts.map +1 -1
- package/src/engine/graphics/GraphicsEngine.js +2 -1
- package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.js +2 -2
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js +2 -2
- package/src/engine/graphics/ecs/decal/v2/FPDecalSystem.js +10 -10
- package/src/engine/graphics/ecs/decal/v2/prototypeDecalSystem.js +2 -2
- package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.d.ts.map +1 -1
- package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.js +4 -6
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.js +4 -4
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.js +6 -7
- package/src/engine/graphics/ecs/mesh-v2/render/ShadedGeometryRendererContext.js +3 -3
- package/src/engine/graphics/ecs/path/tube/build/computeFrenetFrames.d.ts.map +1 -1
- package/src/engine/graphics/ecs/path/tube/build/computeFrenetFrames.js +8 -7
- package/src/engine/graphics/ecs/trail2d/Trail2D.d.ts +26 -5
- package/src/engine/graphics/ecs/trail2d/Trail2D.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail2d/Trail2D.js +51 -11
- package/src/engine/graphics/ecs/trail2d/Trail2DSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail2d/Trail2DSystem.js +1 -0
- package/src/engine/graphics/ecs/trail2d/prototypeTrail2D.js +2 -2
- package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts +186 -0
- package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts.map +1 -0
- package/src/engine/graphics/ecs/trail3d/Trail3D.js +430 -0
- package/src/engine/graphics/ecs/trail3d/Trail3DFlags.d.ts +9 -0
- package/src/engine/graphics/ecs/trail3d/Trail3DFlags.d.ts.map +1 -0
- package/src/engine/graphics/ecs/trail3d/Trail3DFlags.js +18 -0
- package/src/engine/graphics/ecs/trail3d/Trail3DSystem.d.ts +55 -0
- package/src/engine/graphics/ecs/trail3d/Trail3DSystem.d.ts.map +1 -0
- package/src/engine/graphics/ecs/trail3d/Trail3DSystem.js +248 -0
- package/src/engine/graphics/ecs/trail3d/prototypeTrail3D.d.ts +2 -0
- package/src/engine/graphics/ecs/trail3d/prototypeTrail3D.d.ts.map +1 -0
- package/src/engine/graphics/ecs/trail3d/prototypeTrail3D.js +76 -0
- package/src/engine/graphics/geometry/MikkT/AvgTSpace.d.ts.map +1 -1
- package/src/engine/graphics/geometry/MikkT/AvgTSpace.js +11 -6
- package/src/engine/graphics/geometry/MikkT/BuildNeighborsFast.d.ts.map +1 -1
- package/src/engine/graphics/geometry/MikkT/BuildNeighborsFast.js +2 -3
- package/src/engine/graphics/geometry/MikkT/CalcTexArea.d.ts.map +1 -1
- package/src/engine/graphics/geometry/MikkT/CalcTexArea.js +3 -4
- package/src/engine/graphics/geometry/MikkT/DegenEpilogue.js +4 -4
- package/src/engine/graphics/geometry/MikkT/EvalTspace.d.ts.map +1 -1
- package/src/engine/graphics/geometry/MikkT/EvalTspace.js +11 -8
- package/src/engine/graphics/geometry/MikkT/GenerateSharedVerticesIndexList.d.ts.map +1 -1
- package/src/engine/graphics/geometry/MikkT/GenerateSharedVerticesIndexList.js +7 -8
- package/src/engine/graphics/geometry/MikkT/GenerateTSpaces.js +8 -8
- package/src/engine/graphics/geometry/MikkT/InitTriInfo.d.ts.map +1 -1
- package/src/engine/graphics/geometry/MikkT/InitTriInfo.js +30 -25
- package/src/engine/graphics/geometry/MikkT/MikkTSpace.js +7 -7
- package/src/engine/graphics/geometry/MikkT/NormalizeSafe.d.ts +0 -1
- package/src/engine/graphics/geometry/MikkT/NormalizeSafe.d.ts.map +1 -1
- package/src/engine/graphics/geometry/MikkT/NormalizeSafe.js +6 -4
- package/src/engine/graphics/geometry/MikkT/STSpace.d.ts +0 -2
- package/src/engine/graphics/geometry/MikkT/STSpace.d.ts.map +1 -1
- package/src/engine/graphics/geometry/MikkT/STSpace.js +3 -3
- package/src/engine/graphics/geometry/MikkT/v3_scale_dot_sub_normalize.d.ts +0 -2
- package/src/engine/graphics/geometry/MikkT/v3_scale_dot_sub_normalize.d.ts.map +1 -1
- package/src/engine/graphics/geometry/MikkT/v3_scale_dot_sub_normalize.js +0 -1
- package/src/engine/graphics/geometry/buffered/geometry_compute_vertex_normals_indexed.js +4 -4
- package/src/engine/graphics/geometry/buffered/query/GeometrySpatialQueryAccelerator.js +2 -2
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_nearest.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_nearest.js +4 -6
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_overlap_clipping_volume.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_overlap_clipping_volume.js +2 -4
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.js +2 -2
- package/src/engine/graphics/geometry/buffered/query/query_bvh_geometry_nearest.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/query/query_bvh_geometry_nearest.js +4 -6
- package/src/engine/graphics/geometry/buffered/v3_array_normalize_many.js +2 -2
- package/src/engine/graphics/geometry/computeMeshSurfaceArea.js +2 -2
- package/src/engine/graphics/geometry/geometry_construct_triangle_normal.js +2 -2
- package/src/engine/graphics/impostors/octahedral/ImpostorBaker.d.ts +0 -2
- package/src/engine/graphics/impostors/octahedral/ImpostorBaker.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/ImpostorBaker.js +4 -3
- package/src/engine/graphics/impostors/octahedral/bake/compute_bounding_sphere.js +2 -2
- package/src/engine/graphics/impostors/octahedral/bake/compute_bounding_sphere_radius_only.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/bake/compute_bounding_sphere_radius_only.js +2 -4
- package/src/engine/graphics/impostors/octahedral/grid/HemiOctahedralUvEncoder.js +2 -2
- package/src/engine/graphics/impostors/octahedral/grid/UvEncoder.d.ts +17 -7
- package/src/engine/graphics/impostors/octahedral/util/sampler2d_build_cutout.js +4 -4
- package/src/engine/graphics/impostors/voxel/VoxelImpostorBaker.js +2 -2
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +8 -8
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts +20 -5
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.js +2 -2
- package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.js +10 -10
- package/src/engine/graphics/particles/particular/engine/utils/volume/ParticleVolume.js +3 -3
- package/src/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js +4 -3
- package/src/engine/graphics/render/forward_plus/LightManager.d.ts.map +1 -1
- package/src/engine/graphics/render/forward_plus/LightManager.js +10 -15
- package/src/engine/graphics/render/forward_plus/assign_cluster.d.ts.map +1 -1
- package/src/engine/graphics/render/forward_plus/assign_cluster.js +1 -2
- package/src/engine/graphics/render/forward_plus/computeFrustumCorners.d.ts.map +1 -1
- package/src/engine/graphics/render/forward_plus/computeFrustumCorners.js +9 -11
- package/src/engine/graphics/render/forward_plus/model/Decal.d.ts +0 -2
- package/src/engine/graphics/render/forward_plus/model/Decal.d.ts.map +1 -1
- package/src/engine/graphics/render/forward_plus/model/Decal.js +3 -3
- package/src/engine/graphics/render/forward_plus/model/SpotLight.js +2 -2
- package/src/engine/graphics/render/forward_plus/prototype/prototypeLightManager.js +4 -3
- package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.d.ts +8 -0
- package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.d.ts.map +1 -1
- package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.js +8 -0
- package/src/engine/graphics/render/forward_plus/query/point_light_inside_volume.d.ts +12 -2
- package/src/engine/graphics/render/forward_plus/query/point_light_inside_volume.d.ts.map +1 -1
- package/src/engine/graphics/render/forward_plus/query/point_light_inside_volume.js +18 -48
- package/src/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.d.ts +1 -2
- package/src/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.d.ts.map +1 -1
- package/src/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.js +2 -3
- package/src/engine/graphics/render/forward_plus/query/spot_light_inside_volume.js +2 -2
- package/src/engine/graphics/render/forward_plus/testClusterEquality.js +1 -1
- package/src/engine/graphics/render/gizmo/GizmoShapeRenderingInterface.js +5 -5
- package/src/engine/graphics/render/layers/RenderLayerUtils.d.ts.map +1 -1
- package/src/engine/graphics/render/layers/RenderLayerUtils.js +2 -4
- package/src/engine/graphics/render/make_bvh_visibility_builder.js +3 -3
- package/src/engine/graphics/render/view/CameraView.js +2 -2
- package/src/engine/graphics/render/visibility/hiz/prototypeHiZ.js +6 -4
- package/src/engine/graphics/sh3/fromCubeRenderTarget.js +2 -2
- package/src/engine/graphics/sh3/gi/prototypeSHGI.js +2 -2
- package/src/engine/graphics/sh3/lightmap/ARTIFACTS_PLAN.md +146 -0
- package/src/engine/graphics/sh3/lightmap/CODE_REVIEW.md +121 -0
- package/src/engine/graphics/sh3/lightmap/LIGHTMAPPER_REVIEW.md +183 -0
- package/src/engine/graphics/sh3/lightmap/bake_lightmap_for_scene.d.ts +90 -0
- package/src/engine/graphics/sh3/lightmap/bake_lightmap_for_scene.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lightmap/bake_lightmap_for_scene.js +678 -0
- package/src/engine/graphics/sh3/lightmap/lightmap_build_geometry.d.ts +32 -0
- package/src/engine/graphics/sh3/lightmap/lightmap_build_geometry.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lightmap/lightmap_build_geometry.js +155 -0
- package/src/engine/graphics/sh3/lightmap/lightmap_denoise.d.ts +49 -0
- package/src/engine/graphics/sh3/lightmap/lightmap_denoise.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lightmap/lightmap_denoise.js +136 -0
- package/src/engine/graphics/sh3/lightmap/lightmap_dilate.d.ts +19 -0
- package/src/engine/graphics/sh3/lightmap/lightmap_dilate.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lightmap/lightmap_dilate.js +89 -0
- package/src/engine/graphics/sh3/lightmap/lightmap_gather.d.ts +54 -0
- package/src/engine/graphics/sh3/lightmap/lightmap_gather.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lightmap/lightmap_gather.js +168 -0
- package/src/engine/graphics/sh3/lightmap/lightmap_rasterize_triangle.d.ts +30 -0
- package/src/engine/graphics/sh3/lightmap/lightmap_rasterize_triangle.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lightmap/lightmap_rasterize_triangle.js +145 -0
- package/src/engine/graphics/sh3/lightmap/lightmap_seam_fix.d.ts +38 -0
- package/src/engine/graphics/sh3/lightmap/lightmap_seam_fix.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lightmap/lightmap_seam_fix.js +152 -0
- package/src/engine/graphics/sh3/lightmap/prototypeLightmapBaker.d.ts +2 -0
- package/src/engine/graphics/sh3/lightmap/prototypeLightmapBaker.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lightmap/prototypeLightmapBaker.js +186 -0
- package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.js +4 -4
- package/src/engine/graphics/sh3/lpv/depth/octahedral/bake_octahedral_depth_map.js +2 -2
- package/src/engine/graphics/sh3/lpv/depth/octahedral/bake_octahedral_depth_map_fibonacci.js +2 -2
- package/src/engine/graphics/sh3/lpv/depth/sh3_bake_depth.js +2 -2
- package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.js +7 -8
- package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.d.ts +1 -0
- package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.js +22 -8
- package/src/engine/graphics/sh3/path_tracer/PathTracedRenderer.d.ts +57 -0
- package/src/engine/graphics/sh3/path_tracer/PathTracedRenderer.d.ts.map +1 -0
- package/src/engine/graphics/sh3/path_tracer/PathTracedRenderer.js +186 -0
- package/src/engine/graphics/sh3/path_tracer/PathTracedScene.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/PathTracedScene.js +166 -51
- package/src/engine/graphics/sh3/path_tracer/PathTracer.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/PathTracer.js +46 -27
- package/src/engine/graphics/sh3/path_tracer/REVIEW_001_ACTION_PLAN.md +490 -0
- package/src/engine/graphics/sh3/path_tracer/make_sky_hosek.js +4 -4
- package/src/engine/graphics/sh3/path_tracer/material/MaterialConverter.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/material/MaterialConverter.js +10 -2
- package/src/engine/graphics/sh3/path_tracer/material/StandardTexture.d.ts +6 -0
- package/src/engine/graphics/sh3/path_tracer/material/StandardTexture.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/material/StandardTexture.js +14 -0
- package/src/engine/graphics/sh3/path_tracer/prepare_scene_gltf.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/prepare_scene_gltf.js +6 -4
- package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +12 -139
- package/src/engine/graphics/sh3/path_tracer/ray_hit_apply_transform.d.ts +2 -1
- package/src/engine/graphics/sh3/path_tracer/ray_hit_apply_transform.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/ray_hit_apply_transform.js +32 -31
- package/src/engine/graphics/sh3/path_tracer/sampling/getBiasedNormalSample.d.ts +3 -3
- package/src/engine/graphics/sh3/path_tracer/sampling/getBiasedNormalSample.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/sampling/getBiasedNormalSample.js +3 -3
- package/src/engine/graphics/sh3/path_tracer/texture/sample_material.d.ts +1 -1
- package/src/engine/graphics/sh3/path_tracer/texture/sample_material.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/texture/sample_material.js +145 -133
- package/src/engine/graphics/sh3/prototypeSH3Probe.js +2 -2
- package/src/engine/graphics/sh3/sky/hosek/prototype_hosek.js +2 -2
- package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.js +7 -7
- package/src/engine/graphics/texture/sprite/prototypeSpriteCutoutGeometry.js +5 -5
- package/src/engine/graphics/three/expand_aabb_by_transformed_three_object.js +2 -2
- package/src/engine/graphics/trail/TrailSpawnMode.d.ts +19 -0
- package/src/engine/graphics/trail/TrailSpawnMode.d.ts.map +1 -0
- package/src/engine/graphics/trail/TrailSpawnMode.js +20 -0
- package/src/engine/graphics/trail/tube/TubeMaterialX.d.ts +5 -0
- package/src/engine/graphics/trail/tube/TubeMaterialX.d.ts.map +1 -0
- package/src/engine/graphics/trail/tube/TubeMaterialX.js +80 -0
- package/src/engine/graphics/trail/tube/TubeX.d.ts +141 -0
- package/src/engine/graphics/trail/tube/TubeX.d.ts.map +1 -0
- package/src/engine/graphics/trail/tube/TubeX.js +555 -0
- package/src/engine/graphics/trail/tube/TubeXMaterialSpec.d.ts +26 -0
- package/src/engine/graphics/trail/tube/TubeXMaterialSpec.d.ts.map +1 -0
- package/src/engine/graphics/trail/tube/TubeXMaterialSpec.js +47 -0
- package/src/engine/graphics/trail/tube/TubeXPlugin.d.ts +21 -0
- package/src/engine/graphics/trail/tube/TubeXPlugin.d.ts.map +1 -0
- package/src/engine/graphics/trail/tube/TubeXPlugin.js +80 -0
- package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.d.ts +14 -0
- package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.d.ts.map +1 -0
- package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.js +32 -0
- package/src/engine/graphics/trail/tube/tube_attributes_spec.d.ts +26 -0
- package/src/engine/graphics/trail/tube/tube_attributes_spec.d.ts.map +1 -0
- package/src/engine/graphics/trail/tube/tube_attributes_spec.js +69 -0
- package/src/engine/graphics/trail/tube/tube_frame.d.ts +32 -0
- package/src/engine/graphics/trail/tube/tube_frame.d.ts.map +1 -0
- package/src/engine/graphics/trail/tube/tube_frame.js +83 -0
- package/src/engine/graphics/util/composeMatrix4.js +2 -2
- package/src/engine/input/devices/KeyboardDevice.d.ts +61 -14
- package/src/engine/input/devices/KeyboardDevice.d.ts.map +1 -1
- package/src/engine/input/devices/KeyboardDevice.js +41 -15
- package/src/engine/input/devices/isHTMLElementFocusable.d.ts.map +1 -1
- package/src/engine/input/devices/isHTMLElementFocusable.js +2 -9
- package/src/engine/navigation/mesh/NavigationMesh.js +6 -6
- package/src/engine/navigation/mesh/PATHFINDING_PLAN.md +1 -1
- package/src/engine/navigation/mesh/build/clip_soup_against_overhangs.d.ts.map +1 -1
- package/src/engine/navigation/mesh/build/clip_soup_against_overhangs.js +5 -51
- package/src/engine/navigation/mesh/build/navmesh_build_topology.d.ts.map +1 -1
- package/src/engine/navigation/mesh/build/navmesh_build_topology.js +19 -23
- package/src/engine/network/CONGESTION_CONTROL.md +87 -0
- package/src/engine/network/NetworkSession.d.ts +7 -1
- package/src/engine/network/NetworkSession.d.ts.map +1 -1
- package/src/engine/network/NetworkSession.js +144 -0
- package/src/engine/network/README.md +7 -0
- package/src/engine/network/adapters/TransformInterpolationAdapter.js +5 -5
- package/src/engine/network/adapters/TransformReplicationAdapter.js +4 -4
- package/src/engine/network/core/MalformedPacketError.d.ts +24 -0
- package/src/engine/network/core/MalformedPacketError.d.ts.map +1 -0
- package/src/engine/network/core/MalformedPacketError.js +26 -0
- package/src/engine/network/ecs/owner_authorization.d.ts +49 -0
- package/src/engine/network/ecs/owner_authorization.d.ts.map +1 -0
- package/src/engine/network/ecs/owner_authorization.js +55 -0
- package/src/engine/network/orchestrator/NetworkPeer.d.ts +31 -0
- package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
- package/src/engine/network/orchestrator/NetworkPeer.js +89 -2
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts +38 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts.map +1 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.js +75 -0
- package/src/engine/network/replication/Replicator.d.ts.map +1 -1
- package/src/engine/network/replication/Replicator.js +28 -0
- package/src/engine/network/sim/SimActionExecutor.d.ts +46 -1
- package/src/engine/network/sim/SimActionExecutor.d.ts.map +1 -1
- package/src/engine/network/sim/SimActionExecutor.js +68 -0
- package/src/engine/network/sim/Snapshotter.d.ts.map +1 -1
- package/src/engine/network/sim/Snapshotter.js +18 -2
- package/src/engine/network/transport/Channel.d.ts +12 -1
- package/src/engine/network/transport/Channel.d.ts.map +1 -1
- package/src/engine/network/transport/Channel.js +34 -1
- package/src/engine/physics/broadphase/generate_pairs.js +3 -3
- package/src/engine/physics/constraint/solve_constraints.js +3 -3
- package/src/engine/physics/ecs/PhysicsSystem.js +2 -2
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +3 -3
- package/src/engine/physics/inverse_kinematics/two_joint_ik.js +4 -4
- package/src/engine/physics/narrowphase/box_box_manifold.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/box_box_manifold.js +4 -6
- package/src/engine/physics/narrowphase/box_triangle_contact.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/box_triangle_contact.js +4 -6
- package/src/engine/physics/narrowphase/capsule_contacts.js +15 -15
- package/src/engine/physics/narrowphase/capsule_triangle_contact.js +8 -8
- package/src/engine/physics/narrowphase/compute_penetration.js +8 -8
- package/src/engine/physics/narrowphase/convex_convex_manifold.js +9 -9
- package/src/engine/physics/narrowphase/convex_decomposition.js +8 -8
- package/src/engine/physics/narrowphase/mesh_convex_hull.js +3 -3
- package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.js +3 -3
- package/src/engine/physics/narrowphase/refine_ray_concave.js +5 -5
- package/src/engine/physics/narrowphase/refine_ray_hit.js +5 -5
- package/src/engine/physics/narrowphase/sphere_box_contact.js +5 -5
- package/src/engine/physics/narrowphase/sphere_triangle_contact.js +2 -2
- package/src/engine/physics/queries/overlap_shape.js +3 -3
- package/src/engine/physics/queries/raycast.d.ts.map +1 -1
- package/src/engine/physics/queries/raycast.js +3 -5
- package/src/engine/physics/queries/shape_cast.js +3 -3
- package/src/engine/physics/solver/solve_contacts.js +6 -6
- package/src/engine/physics/vehicle/RaycastVehicle.js +4 -4
- package/src/engine/sound/SoundEngine.js +2 -2
- package/src/engine/sound/ecs/audio/AudioEmitter.d.ts +32 -1
- package/src/engine/sound/ecs/audio/AudioEmitter.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/AudioEmitter.js +40 -1
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts +33 -8
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +90 -12
- package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts +12 -1
- package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/LiveEmitterSet.js +25 -4
- package/src/engine/sound/ecs/emitter/SoundEmitterSystem.js +1 -1
- package/src/engine/sound/simulation/AcousticSimulator.d.ts +134 -0
- package/src/engine/sound/simulation/AcousticSimulator.d.ts.map +1 -0
- package/src/engine/sound/simulation/AcousticSimulator.js +637 -0
- package/src/engine/sound/simulation/IMPLEMENTATION_PLAN.md +432 -0
- package/src/engine/sound/simulation/PROBE_PLACEMENT.md +250 -0
- package/src/engine/sound/simulation/PROBE_TRANSFER_RESEARCH.md +322 -0
- package/src/engine/sound/simulation/README.md +277 -0
- package/src/engine/sound/simulation/REFLECTION_IR_PLAN.md +261 -0
- package/src/engine/sound/simulation/VISIBILITY_GRAPH_PLAN.md +121 -0
- package/src/engine/sound/simulation/configureAcousticSimulation.d.ts +31 -0
- package/src/engine/sound/simulation/configureAcousticSimulation.d.ts.map +1 -0
- package/src/engine/sound/simulation/configureAcousticSimulation.js +48 -0
- package/src/engine/sound/simulation/core/AcousticMedium.d.ts +60 -0
- package/src/engine/sound/simulation/core/AcousticMedium.d.ts.map +1 -0
- package/src/engine/sound/simulation/core/AcousticMedium.js +113 -0
- package/src/engine/sound/simulation/core/AcousticMediumSerializationAdapter.d.ts +22 -0
- package/src/engine/sound/simulation/core/AcousticMediumSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/simulation/core/AcousticMediumSerializationAdapter.js +27 -0
- package/src/engine/sound/simulation/core/AcousticOccluderIndex.d.ts +85 -0
- package/src/engine/sound/simulation/core/AcousticOccluderIndex.d.ts.map +1 -0
- package/src/engine/sound/simulation/core/AcousticOccluderIndex.js +314 -0
- package/src/engine/sound/simulation/core/AcousticRegionIndex.d.ts +56 -0
- package/src/engine/sound/simulation/core/AcousticRegionIndex.d.ts.map +1 -0
- package/src/engine/sound/simulation/core/AcousticRegionIndex.js +159 -0
- package/src/engine/sound/simulation/core/AcousticSolution.d.ts +66 -0
- package/src/engine/sound/simulation/core/AcousticSolution.d.ts.map +1 -0
- package/src/engine/sound/simulation/core/AcousticSolution.js +90 -0
- package/src/engine/sound/simulation/core/AcousticSourceState.d.ts +55 -0
- package/src/engine/sound/simulation/core/AcousticSourceState.d.ts.map +1 -0
- package/src/engine/sound/simulation/core/AcousticSourceState.js +109 -0
- package/src/engine/sound/simulation/core/AcousticVolumeRegion.d.ts +45 -0
- package/src/engine/sound/simulation/core/AcousticVolumeRegion.d.ts.map +1 -0
- package/src/engine/sound/simulation/core/AcousticVolumeRegion.js +73 -0
- package/src/engine/sound/simulation/core/OccluderBody.d.ts +57 -0
- package/src/engine/sound/simulation/core/OccluderBody.d.ts.map +1 -0
- package/src/engine/sound/simulation/core/OccluderBody.js +74 -0
- package/src/engine/sound/simulation/core/OcclusionSolver.d.ts +29 -0
- package/src/engine/sound/simulation/core/OcclusionSolver.d.ts.map +1 -0
- package/src/engine/sound/simulation/core/OcclusionSolver.js +119 -0
- package/src/engine/sound/simulation/core/RayHit.d.ts +42 -0
- package/src/engine/sound/simulation/core/RayHit.d.ts.map +1 -0
- package/src/engine/sound/simulation/core/RayHit.js +50 -0
- package/src/engine/sound/simulation/core/VolumeField.d.ts +55 -0
- package/src/engine/sound/simulation/core/VolumeField.d.ts.map +1 -0
- package/src/engine/sound/simulation/core/VolumeField.js +145 -0
- package/src/engine/sound/simulation/definition/AcousticDirectivity.d.ts +75 -0
- package/src/engine/sound/simulation/definition/AcousticDirectivity.d.ts.map +1 -0
- package/src/engine/sound/simulation/definition/AcousticDirectivity.js +114 -0
- package/src/engine/sound/simulation/definition/AcousticDirectivitySerializationAdapter.d.ts +23 -0
- package/src/engine/sound/simulation/definition/AcousticDirectivitySerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/simulation/definition/AcousticDirectivitySerializationAdapter.js +30 -0
- package/src/engine/sound/simulation/definition/AcousticMaterial.d.ts +61 -0
- package/src/engine/sound/simulation/definition/AcousticMaterial.d.ts.map +1 -0
- package/src/engine/sound/simulation/definition/AcousticMaterial.js +122 -0
- package/src/engine/sound/simulation/definition/AcousticMaterialSerializationAdapter.d.ts +23 -0
- package/src/engine/sound/simulation/definition/AcousticMaterialSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/simulation/definition/AcousticMaterialSerializationAdapter.js +32 -0
- package/src/engine/sound/simulation/ecs/AcousticBody.d.ts +39 -0
- package/src/engine/sound/simulation/ecs/AcousticBody.d.ts.map +1 -0
- package/src/engine/sound/simulation/ecs/AcousticBody.js +48 -0
- package/src/engine/sound/simulation/ecs/AcousticBodySerializationAdapter.d.ts +24 -0
- package/src/engine/sound/simulation/ecs/AcousticBodySerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/simulation/ecs/AcousticBodySerializationAdapter.js +34 -0
- package/src/engine/sound/simulation/ecs/AcousticProbeFieldSystem.d.ts +39 -0
- package/src/engine/sound/simulation/ecs/AcousticProbeFieldSystem.d.ts.map +1 -0
- package/src/engine/sound/simulation/ecs/AcousticProbeFieldSystem.js +64 -0
- package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.d.ts +44 -0
- package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.d.ts.map +1 -0
- package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.js +75 -0
- package/src/engine/sound/simulation/ecs/AcousticVolume.d.ts +53 -0
- package/src/engine/sound/simulation/ecs/AcousticVolume.d.ts.map +1 -0
- package/src/engine/sound/simulation/ecs/AcousticVolume.js +74 -0
- package/src/engine/sound/simulation/ecs/AcousticVolumeSerializationAdapter.d.ts +25 -0
- package/src/engine/sound/simulation/ecs/AcousticVolumeSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/simulation/ecs/AcousticVolumeSerializationAdapter.js +37 -0
- package/src/engine/sound/simulation/ecs/AcousticVolumeSystem.d.ts +39 -0
- package/src/engine/sound/simulation/ecs/AcousticVolumeSystem.d.ts.map +1 -0
- package/src/engine/sound/simulation/ecs/AcousticVolumeSystem.js +66 -0
- package/src/engine/sound/simulation/probe/AcousticProbeField.d.ts +245 -0
- package/src/engine/sound/simulation/probe/AcousticProbeField.d.ts.map +1 -0
- package/src/engine/sound/simulation/probe/AcousticProbeField.js +574 -0
- package/src/engine/sound/simulation/probe/AcousticProbeFieldSerializationAdapter.d.ts +24 -0
- package/src/engine/sound/simulation/probe/AcousticProbeFieldSerializationAdapter.d.ts.map +1 -0
- package/src/engine/sound/simulation/probe/AcousticProbeFieldSerializationAdapter.js +60 -0
- package/src/engine/sound/simulation/probe/ProbeFieldPathingSolution.d.ts +48 -0
- package/src/engine/sound/simulation/probe/ProbeFieldPathingSolution.d.ts.map +1 -0
- package/src/engine/sound/simulation/probe/ProbeFieldPathingSolution.js +64 -0
- package/src/engine/sound/simulation/probe/ProbeVisibilityRecheck.d.ts +51 -0
- package/src/engine/sound/simulation/probe/ProbeVisibilityRecheck.d.ts.map +1 -0
- package/src/engine/sound/simulation/probe/ProbeVisibilityRecheck.js +137 -0
- package/src/engine/sound/simulation/probe/acoustic_probe_transfer.d.ts +29 -0
- package/src/engine/sound/simulation/probe/acoustic_probe_transfer.d.ts.map +1 -0
- package/src/engine/sound/simulation/probe/acoustic_probe_transfer.js +99 -0
- package/src/engine/sound/simulation/probe/acoustic_trace_energy.d.ts +46 -0
- package/src/engine/sound/simulation/probe/acoustic_trace_energy.d.ts.map +1 -0
- package/src/engine/sound/simulation/probe/acoustic_trace_energy.js +136 -0
- package/src/engine/sound/simulation/probe/bakeProbeField.d.ts +50 -0
- package/src/engine/sound/simulation/probe/bakeProbeField.d.ts.map +1 -0
- package/src/engine/sound/simulation/probe/bakeProbeField.js +169 -0
- package/src/engine/sound/simulation/probe/bakeProbeReflectors.d.ts +15 -0
- package/src/engine/sound/simulation/probe/bakeProbeReflectors.d.ts.map +1 -0
- package/src/engine/sound/simulation/probe/bakeProbeReflectors.js +108 -0
- package/src/engine/sound/simulation/probe/bakeReverbBands.d.ts +32 -0
- package/src/engine/sound/simulation/probe/bakeReverbBands.d.ts.map +1 -0
- package/src/engine/sound/simulation/probe/bakeReverbBands.js +114 -0
- package/src/engine/sound/simulation/probe/bakeVisibility.d.ts +48 -0
- package/src/engine/sound/simulation/probe/bakeVisibility.d.ts.map +1 -0
- package/src/engine/sound/simulation/probe/bakeVisibility.js +178 -0
- package/src/engine/sound/simulation/probe/echogram_band_rt60.d.ts +17 -0
- package/src/engine/sound/simulation/probe/echogram_band_rt60.d.ts.map +1 -0
- package/src/engine/sound/simulation/probe/echogram_band_rt60.js +83 -0
- package/src/engine/sound/simulation/probe/probe_delaunay_edges.d.ts +23 -0
- package/src/engine/sound/simulation/probe/probe_delaunay_edges.d.ts.map +1 -0
- package/src/engine/sound/simulation/probe/probe_delaunay_edges.js +215 -0
- package/src/engine/sound/simulation/probe/probe_densify_portals.d.ts +35 -0
- package/src/engine/sound/simulation/probe/probe_densify_portals.d.ts.map +1 -0
- package/src/engine/sound/simulation/probe/probe_densify_portals.js +143 -0
- package/src/engine/sound/simulation/probe/probe_detect_portals.d.ts +32 -0
- package/src/engine/sound/simulation/probe/probe_detect_portals.d.ts.map +1 -0
- package/src/engine/sound/simulation/probe/probe_detect_portals.js +196 -0
- package/src/engine/sound/simulation/probe/probe_edge_visible.d.ts +16 -0
- package/src/engine/sound/simulation/probe/probe_edge_visible.d.ts.map +1 -0
- package/src/engine/sound/simulation/probe/probe_edge_visible.js +41 -0
- package/src/engine/sound/simulation/probe/probe_place_sdf_cover.d.ts +28 -0
- package/src/engine/sound/simulation/probe/probe_place_sdf_cover.d.ts.map +1 -0
- package/src/engine/sound/simulation/probe/probe_place_sdf_cover.js +82 -0
- package/src/engine/sound/simulation/probe/probe_refine_connectivity.d.ts +26 -0
- package/src/engine/sound/simulation/probe/probe_refine_connectivity.d.ts.map +1 -0
- package/src/engine/sound/simulation/probe/probe_refine_connectivity.js +181 -0
- package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts +100 -0
- package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts.map +1 -0
- package/src/engine/sound/simulation/probe/probe_sdf_grid.js +183 -0
- package/src/engine/sound/simulation/probe/probe_visibility_augment.d.ts +30 -0
- package/src/engine/sound/simulation/probe/probe_visibility_augment.d.ts.map +1 -0
- package/src/engine/sound/simulation/probe/probe_visibility_augment.js +182 -0
- package/src/engine/sound/simulation/probe/probe_visibility_bridge_components.d.ts +31 -0
- package/src/engine/sound/simulation/probe/probe_visibility_bridge_components.d.ts.map +1 -0
- package/src/engine/sound/simulation/probe/probe_visibility_bridge_components.js +166 -0
- package/src/engine/sound/simulation/prototypeAcousticSolver.d.ts +2 -0
- package/src/engine/sound/simulation/prototypeAcousticSolver.d.ts.map +1 -0
- package/src/engine/sound/simulation/prototypeAcousticSolver.js +1652 -0
- package/src/engine/sound/simulation/render/FoaProbeReverbRenderer.d.ts +80 -0
- package/src/engine/sound/simulation/render/FoaProbeReverbRenderer.d.ts.map +1 -0
- package/src/engine/sound/simulation/render/FoaProbeReverbRenderer.js +354 -0
- package/src/engine/sound/simulation/render/ProbeReverbRenderer.d.ts +75 -0
- package/src/engine/sound/simulation/render/ProbeReverbRenderer.d.ts.map +1 -0
- package/src/engine/sound/simulation/render/ProbeReverbRenderer.js +231 -0
- package/src/engine/sound/simulation/render/foaReverbImpulseResponse.d.ts +37 -0
- package/src/engine/sound/simulation/render/foaReverbImpulseResponse.d.ts.map +1 -0
- package/src/engine/sound/simulation/render/foaReverbImpulseResponse.js +113 -0
- package/src/engine/sound/simulation/render/reverbImpulseResponse.d.ts +26 -0
- package/src/engine/sound/simulation/render/reverbImpulseResponse.d.ts.map +1 -0
- package/src/engine/sound/simulation/render/reverbImpulseResponse.js +76 -0
- package/src/engine/sound/simulation/serialization/populateAcousticSerializationRegistry.d.ts +10 -0
- package/src/engine/sound/simulation/serialization/populateAcousticSerializationRegistry.d.ts.map +1 -0
- package/src/engine/sound/simulation/serialization/populateAcousticSerializationRegistry.js +25 -0
- package/src/engine/sound/sopra/SopraEngine.d.ts +6 -0
- package/src/engine/sound/sopra/SopraEngine.d.ts.map +1 -1
- package/src/engine/sound/sopra/SopraEngine.js +9 -0
- package/src/engine/sound/sopra/definition/EventDescription.d.ts +3 -0
- package/src/engine/sound/sopra/definition/EventDescription.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/EventDescription.js +4 -1
- package/src/engine/sound/sopra/runtime/BusGraph.d.ts +7 -0
- package/src/engine/sound/sopra/runtime/BusGraph.d.ts.map +1 -1
- package/src/engine/sound/sopra/runtime/BusGraph.js +16 -0
- package/src/engine/sound/sopra/runtime/EventInstance.d.ts +46 -2
- package/src/engine/sound/sopra/runtime/EventInstance.d.ts.map +1 -1
- package/src/engine/sound/sopra/runtime/EventInstance.js +240 -4
- package/src/engine/sound/sopra/util/MockAudioContext.d.ts +4 -0
- package/src/engine/sound/sopra/util/MockAudioContext.d.ts.map +1 -1
- package/src/engine/sound/sopra/util/MockAudioContext.js +9 -0
- package/src/engine/ui/tiles2d/computeTileGridMove.js +2 -2
- package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.js +2 -2
- package/src/view/elements/progress/RectangularPieProgressView.d.ts.map +1 -1
- package/src/view/elements/progress/RectangularPieProgressView.js +6 -8
- package/src/view/tooltip/TooltipView.js +2 -2
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_aabb.d.ts +0 -9
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_aabb.d.ts.map +0 -1
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_capsule.d.ts.map +0 -1
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_frustum.d.ts +0 -9
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_frustum.d.ts.map +0 -1
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_sphere.d.ts.map +0 -1
- package/src/core/geom/3d/normal/lamber_azimuth/transform.d.ts +0 -18
- package/src/core/geom/3d/normal/lamber_azimuth/transform.d.ts.map +0 -1
- package/src/core/geom/3d/normal/spherical/sphere_map_transform.d.ts.map +0 -1
- package/src/core/geom/3d/normal/spherical/sphere_map_transform.js +0 -77
- package/src/core/geom/3d/tetrahedra/triangle/triangle_encode_rasterized_depth.d.ts +0 -9
- package/src/core/geom/3d/tetrahedra/triangle/triangle_encode_rasterized_depth.d.ts.map +0 -1
- package/src/core/geom/3d/topology/simplify/collapseEdge.d.ts +0 -21
- package/src/core/geom/3d/topology/simplify/collapseEdge.d.ts.map +0 -1
- package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadratics.d.ts +0 -25
- package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadratics.d.ts.map +0 -1
- package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadratics.js +0 -177
- package/src/engine/navigation/mesh/bt_mesh_face_find_path.d.ts.map +0 -1
- package/src/engine/navigation/mesh/bt_mesh_face_find_path_polyanya.d.ts.map +0 -1
- package/src/engine/navigation/mesh/build/bvh_build_from_unindexed_triangles.d.ts.map +0 -1
- package/src/engine/navigation/mesh/bvh_build_from_bt_mesh.d.ts +0 -7
- package/src/engine/navigation/mesh/bvh_build_from_bt_mesh.d.ts.map +0 -1
- package/src/engine/navigation/mesh/bvh_query_nearest_face.d.ts.map +0 -1
- package/src/engine/navigation/mesh/bvh_segment_penetrates_mesh.d.ts.map +0 -1
- package/src/engine/navigation/mesh/funnel_string_pull.d.ts.map +0 -1
- /package/src/{engine/navigation/mesh/build → core/bvh2/bvh3}/bvh_build_from_unindexed_triangles.d.ts +0 -0
- /package/src/{engine/navigation/mesh/build → core/bvh2/bvh3}/bvh_build_from_unindexed_triangles.js +0 -0
- /package/src/{engine/navigation/mesh → core/geom/3d}/funnel_string_pull.d.ts +0 -0
- /package/src/{engine/navigation/mesh → core/geom/3d/topology/struct/binary/query}/bt_mesh_face_find_path.d.ts +0 -0
- /package/src/{engine/navigation/mesh → core/geom/3d/topology/struct/binary/query}/bt_mesh_face_find_path_polyanya.d.ts +0 -0
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
# Acoustic probe placement — coverage + sparseness, connectivity-aware
|
|
2
|
+
|
|
3
|
+
## The problem with the current placer
|
|
4
|
+
|
|
5
|
+
`bakeProbeField` places probes on a **blind uniform lattice** (`x0 + (x1−x0)·ix/(nx−1)`, …). Three failures:
|
|
6
|
+
|
|
7
|
+
1. **Probes land inside walls / solid.** A probe inside geometry traces a sealed cavity → garbage RT60; the
|
|
8
|
+
grid has no air test. (`bakeReverbBands` of an open-air point bakes all-zero bands; of an interior point,
|
|
9
|
+
nonsense.)
|
|
10
|
+
2. **Density is uniform — wrong everywhere.** A big open hall is over-sampled (hundreds of near-identical
|
|
11
|
+
reverb probes) while a thin twisted corridor is under-sampled or skipped (a probe only every `maxSpacing`,
|
|
12
|
+
regardless of whether sound can route through).
|
|
13
|
+
3. **No coverage/connectivity guarantee.** Whether two rooms end up connected in `bakeVisibility` is an
|
|
14
|
+
accident of where the lattice happens to drop probes relative to a doorway.
|
|
15
|
+
|
|
16
|
+
We want the opposite: **few probes in open volume, more where geometry is detailed, and *guaranteed* probe
|
|
17
|
+
chains through every real acoustic path** (doorways, bent corridors) so `bakeVisibility`'s straight-line LoS
|
|
18
|
+
can route. Good **coverage** (every listener-reachable point has a near probe) **and sparseness** (no wasted
|
|
19
|
+
probes in big empty space) — adaptive to the geometry.
|
|
20
|
+
|
|
21
|
+
## The reference technique (what to draw from)
|
|
22
|
+
|
|
23
|
+
From the WebGPU GI engine (`H:/git/meep-renderer-deferred-algo/src/webgpu/v2/global_illumination/`):
|
|
24
|
+
|
|
25
|
+
- **`lpv/placement/software/lpv_generate_probe_locations2.js` — the SDF maximal-empty-sphere greedy cover.**
|
|
26
|
+
This is the sparse placement we want. Build a signed distance field on a voxel grid; take the free voxels
|
|
27
|
+
(`SDF > halfVoxel`); sort by openness (SDF) **descending**; greedily, take the most-open remaining voxel,
|
|
28
|
+
gradient-ascend it to the local SDF maximum (`sdf_find_local_maxima.js` — the most-open sub-voxel point),
|
|
29
|
+
place a probe, set its radius = `SDF + moveDistance + ½voxel`, and **erase every voxel within that radius**
|
|
30
|
+
from the candidate set. Repeat. Result: probes at the centres of maximal empty spheres, **density adapting
|
|
31
|
+
to local feature size for free** — one big-radius probe fills a hall, many small-radius probes line a
|
|
32
|
+
corridor.
|
|
33
|
+
- **`brick4/cpu/brick4_optimize_probe_placement.js` + `lpv/placement/chunk_refine_probe_placement.js` — the
|
|
34
|
+
validity refine.** Single-probe repositioning: push a probe that's behind/at a surface out along the normal
|
|
35
|
+
to a safe standoff, box-clamped, with a raycast tunnel-check and an inside-geometry reject. This is how they
|
|
36
|
+
keep probes off/out of geometry.
|
|
37
|
+
- **`brick4/cpu/brick4_generate_tree_from_scene.js` — adaptive octree + probe reuse.** Subdivide a cell only
|
|
38
|
+
where it overlaps geometry (`query_aabb_intersection_exists`), down to a feature-size floor, under a memory
|
|
39
|
+
budget; dedup probes by quantised position (shared cell-boundary probes cost nothing). An *alternative*
|
|
40
|
+
adaptive scheme — but it's tuned for GPU trilinear-interpolation bricks (4×4×4, 27-way), not a navigation
|
|
41
|
+
graph, so we take the **ideas** (geometry-driven density, dedup, budget) not the structure.
|
|
42
|
+
|
|
43
|
+
**The decisive gap:** *none of the reference placement reasons about probe-to-probe visibility.* The "refine"
|
|
44
|
+
step is purely single-probe surface standoff. Connectivity through a twisted corridor is NOT a placement
|
|
45
|
+
concern there — it's handled (if at all) by a later visibility bake. **So the connectivity-refinement stage
|
|
46
|
+
the user asked for (ray bounces between probes) is novel work, not a port.**
|
|
47
|
+
|
|
48
|
+
## What meep already has vs. what's missing
|
|
49
|
+
|
|
50
|
+
| Need | Status | meep path |
|
|
51
|
+
|---|---|---|
|
|
52
|
+
| Signed distance from a point to a shape | ✅ closed-form (sphere/box/capsule/cyl/hull), O(tris) mesh | `core/geom/3d/shape/AbstractShape3D.js::signed_distance_at_point` (+ `signed_distance_gradient_at_point`, `nearest_point_on_surface`) |
|
|
53
|
+
| SDF gradient by finite difference | ✅ | `core/geom/3d/shape/util/compute_signed_distance_gradient_by_sampling.js` |
|
|
54
|
+
| Voxelize a shape to a grid | ✅ | `core/geom/3d/shape/util/shape3_voxelize_to_grid.js` |
|
|
55
|
+
| Trilinear sample a 3-channel grid | ✅ | `engine/graphics/texture/3d/scs3d_sample_linear3.js` |
|
|
56
|
+
| lerp / clamp / seededRandom / randomFloatBetween | ✅ | `core/math/…` |
|
|
57
|
+
| **Point → nearest-surface distance / inside-test on the acoustic scene** | ❌ **ray-only** | `engine/sound/simulation/core/AcousticOccluderIndex.js` exposes only `closestHit`/`anyHit`/`addBody`. Bodies (`OccluderBody{shape,matrix,inverse,worldAABB,material}`) carry `signed_distance_at_point`, but no point query is wired up. |
|
|
58
|
+
| Poisson-disk / blue-noise point sampler | ❌ | substitute: Halton / jittered grid (`tetrahedral_mesh_build_from_grid` pattern) |
|
|
59
|
+
| Existing acoustic-aware placement | ❌ | meep LPV baker (`engine/graphics/sh3/lpv/build_probes_for_scene.js`) is a blind uniform grid too |
|
|
60
|
+
|
|
61
|
+
**Keystone primitive to add (Stage 0):** `AcousticOccluderIndex.signedDistanceAt(x, y, z) → number` — negative
|
|
62
|
+
inside solid, positive in air, magnitude = distance to the nearest occluder surface. It already owns a BVH over
|
|
63
|
+
body world-AABBs (the TLAS from the reflection-IR work); descend it by AABB distance to find candidate bodies,
|
|
64
|
+
localize the point through each body's `inverse`, take `min` of `shape.signed_distance_at_point`. This single
|
|
65
|
+
query unlocks everything below: the SDF cover, the air test (`> 0`), surface clearance, and the local-maxima
|
|
66
|
+
nudge (gradient via central differences of the same query). It is the acoustic analogue of the GI engine's
|
|
67
|
+
`StaticSceneBVH.query_point_distance_to_nearest`.
|
|
68
|
+
|
|
69
|
+
## Acoustic constraints that change the design
|
|
70
|
+
|
|
71
|
+
1. **Air only.** Probes must sit where a listener/source can be. The SDF cover gives this intrinsically (free
|
|
72
|
+
voxels are `SDF > 0`), but the floor and the inside-test must use the *signed* distance.
|
|
73
|
+
2. **Coverage = listener-reachable volume, not surface density.** Unlike GI (which densifies *at* surfaces),
|
|
74
|
+
we want probes in the *open volume between* surfaces — exactly what the maximal-empty-sphere cover does.
|
|
75
|
+
(Optional later refinement: restrict to a floor-relative band / navmesh volume so we don't probe
|
|
76
|
+
unreachable voids — deferred, a placement-policy question.)
|
|
77
|
+
3. **Connectivity is a hard requirement, not a nicety.** `bakeVisibility` connects only probes with **straight
|
|
78
|
+
LoS** (`probe_edge_visible` = one `anyHit` ray). A bent corridor must be populated densely enough that
|
|
79
|
+
consecutive probes see each other. The cover handles gentle bends; sharp bends / thin throats need the
|
|
80
|
+
dedicated connectivity stage (below).
|
|
81
|
+
4. **Determinism** (seeded `random`), and the result is **serialized positions-only** — connectivity is always
|
|
82
|
+
re-baked, so placement just has to produce a good, final position set.
|
|
83
|
+
|
|
84
|
+
## Staged design
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
Stage 0 signedDistanceAt(x,y,z) NEW primitive on AcousticOccluderIndex (BVH + per-body SDF)
|
|
88
|
+
Stage 1 sparse SDF cover port of lpv_generate_probe_locations2 → candidate probe positions
|
|
89
|
+
Stage 2 air-validity + clearance refine keep probes in air, off surfaces (port of the refine gauntlet)
|
|
90
|
+
Stage 3 CONNECTIVITY refinement <-- the user's "ray bounces": guarantee LoS chains through paths
|
|
91
|
+
Stage 4 integrate feed final positions → bakeReverbBands → bakeVisibility
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Stage 0 — `signedDistanceAt` (the keystone primitive)
|
|
95
|
+
|
|
96
|
+
`AcousticOccluderIndex.signedDistanceAt(x,y,z)`: BVH-descend body AABBs nearest-first (reuse the
|
|
97
|
+
`bvh_query_user_data_*` machinery already there), for each candidate body localize the point (`body.inverse`)
|
|
98
|
+
and evaluate `body.shape.signed_distance_at_point`, keep the signed value of smallest magnitude. Sign convention
|
|
99
|
+
= negative inside. Add a sibling `clearance(x,y,z) = max(0, signedDistanceAt)` for the cover, and reuse
|
|
100
|
+
`compute_signed_distance_gradient_by_sampling`-style central differences over it for the local-maxima nudge.
|
|
101
|
+
(Mesh occluders are O(tris) per query — flag the same way meep's `MeshShape3D` does; for big meshes a
|
|
102
|
+
surface-triangle BVH is the eventual accelerator, but primitives/convex hulls are closed-form and cheap.)
|
|
103
|
+
|
|
104
|
+
### Stage 1 — sparse SDF cover (`probe_place_sdf_cover.js`, new)
|
|
105
|
+
|
|
106
|
+
Direct port of `lpv_generate_probe_locations2`, acoustic-flavoured:
|
|
107
|
+
1. Voxel grid over `bounds` at resolution `≈ extent / frequency` (the new density knob, replacing
|
|
108
|
+
`maxSpacing`), capped (e.g. 256³) to bound memory.
|
|
109
|
+
2. Fill the SDF via `signedDistanceAt` per voxel (or `shape3_voxelize_to_grid` + a distance pass — decide by
|
|
110
|
+
cost; the per-voxel SDF is simplest and exact).
|
|
111
|
+
3. Candidate voxels = `SDF > clearanceFloor` (in open air, off the walls). Sort by SDF descending.
|
|
112
|
+
4. Greedy cover: take the most-open voxel, gradient-ascend to the local SDF maximum, emit a probe, radius =
|
|
113
|
+
`SDF + moveDist + ½voxel`, erase covered voxels. Repeat until none remain.
|
|
114
|
+
|
|
115
|
+
Output: a sparse, adaptive position set — sparse in halls, dense in detail, **all in air**.
|
|
116
|
+
|
|
117
|
+
### Stage 2 — air-validity + clearance refine
|
|
118
|
+
|
|
119
|
+
The cover already yields `SDF > floor` probes, so most are valid. Belt-and-suspenders, per probe: if
|
|
120
|
+
`signedDistanceAt < clearanceMin`, push out along the SDF gradient to the clearance standoff (the reference's
|
|
121
|
+
`refine_probe_placement`), and drop any probe that can't reach air (a fully-enclosed void). This is cheap and
|
|
122
|
+
guarantees the air invariant `bakeReverbBands` relies on.
|
|
123
|
+
|
|
124
|
+
### Stage 3 — connectivity refinement (the keystone NEW stage)
|
|
125
|
+
|
|
126
|
+
**Goal:** for every pair of regions a real acoustic path connects, guarantee a chain of mutually-visible probes
|
|
127
|
+
spans it — so `bakeVisibility` (straight-LoS Delaunay + bridge) actually links them. The cover can leave two
|
|
128
|
+
gaps: (a) a corridor thinner than `clearanceFloor` gets *no* candidate voxels → no probes; (b) a sharp bend
|
|
129
|
+
where two cover probes are close but **occluded** by the corner.
|
|
130
|
+
|
|
131
|
+
**Detection.** Run a *provisional* `bakeVisibility` on the Stage-2 probes, then look for **near-but-unconnected**
|
|
132
|
+
probe pairs: pairs within a corridor-scale radius (a few × the local probe spacing) that are in **different
|
|
133
|
+
graph components** (or whose graph distance ≫ their Euclidean distance) yet are **not** straight-visible. Each
|
|
134
|
+
such pair brackets a bend/throat that needs an intermediate probe.
|
|
135
|
+
|
|
136
|
+
**Repair — "ray bounces between probes."** For an unconnected near pair `(A, B)`:
|
|
137
|
+
1. Cast `A → B`; it hits a wall at `H` (the bend/corner). The open path bends around `H`.
|
|
138
|
+
2. Find an **open waypoint** `W` past the corner: search the air around `H` (slide along the SDF ridge — the
|
|
139
|
+
medial axis where clearance is locally maximal — toward `B`, or sample directions off `H.normal`) for a
|
|
140
|
+
point that is visible from `A`. Insert a probe at the local SDF maximum near `W`.
|
|
141
|
+
3. Recurse on `(A, W)` and `(W, B)` until each segment is straight-visible or a depth/budget cap is hit.
|
|
142
|
+
|
|
143
|
+
This populates exactly the bends and throats the cover missed, with the *minimum* probes needed for a visible
|
|
144
|
+
chain — it's a visibility-guided binary subdivision along the medial axis, seeded by the ray-hit corner. After
|
|
145
|
+
insertion, re-bake visibility (the final `bakeVisibility` pass). Bound it: only refine pairs within a max
|
|
146
|
+
corridor radius and cap inserted probes per pair, so a genuinely sealed wall (no open detour) is left
|
|
147
|
+
disconnected (correct — `bakeVisibility` Stage B already leaves sealed vaults split).
|
|
148
|
+
|
|
149
|
+
> Note the synergy with `bakeVisibility` Stage B (island bridging): Stage B adds an **edge** when a visible
|
|
150
|
+
> cross-component probe pair already exists; Stage 3 here adds the **probes** when none exists in the connecting
|
|
151
|
+
> region. Together they guarantee connectivity wherever an acoustic path physically exists.
|
|
152
|
+
|
|
153
|
+
### Stage 4 — integration
|
|
154
|
+
|
|
155
|
+
`bakeProbeField` becomes: `Stage 0–3 → final positions → existing per-probe bakeReverbBands loop → bakeVisibility`.
|
|
156
|
+
The `AcousticProbeField` write API is unchanged (`setProbePosition` append, `setProbeReverbDecay/Directions`); only the
|
|
157
|
+
*source* of positions changes from the lattice to the cover. `maxSpacing` → `frequency` (voxel/feature size);
|
|
158
|
+
keep a back-compat shim or migrate callers. Serialization (positions-only) is unaffected.
|
|
159
|
+
|
|
160
|
+
## Decisions to confirm before building
|
|
161
|
+
|
|
162
|
+
1. **SDF source:** add `AcousticOccluderIndex.signedDistanceAt` (per-body closed-form, BVH-pruned) — vs. a
|
|
163
|
+
voxelize-then-distance-transform pass. Recommendation: the per-body query (exact, reuses existing shape SDFs,
|
|
164
|
+
no second index).
|
|
165
|
+
2. **Coverage scope:** probe the *whole* air volume in `bounds`, or restrict to a floor-relative / reachable
|
|
166
|
+
band (skip unreachable voids)? Recommendation: whole air volume for v1; reachability is a separate policy
|
|
167
|
+
layer (ties into navmesh — `project_navmesh_cleanup`).
|
|
168
|
+
3. **Connectivity-refinement waypoint search:** SDF-ridge (medial-axis) march vs. ray-bounce-off-corner
|
|
169
|
+
sampling for finding `W`. Recommendation: ray-to-corner to *seed*, then SDF-gradient slide to the local
|
|
170
|
+
max — cheapest that's robust.
|
|
171
|
+
4. **Density knob + caps:** `frequency` (voxel size), `clearanceFloor`, max probes, connectivity max-corridor
|
|
172
|
+
radius + per-pair insert budget. All bake-time constants with JSDoc rationale.
|
|
173
|
+
|
|
174
|
+
## Test plan
|
|
175
|
+
|
|
176
|
+
- `signedDistanceAt`: sign + magnitude against a box/sphere occluder (inside negative, outside positive, exact
|
|
177
|
+
distance); gradient points outward.
|
|
178
|
+
- SDF cover: a hall + a corridor scene → few large-radius probes in the hall, a chain of small-radius probes
|
|
179
|
+
in the corridor; **every** probe has `signedDistanceAt > 0` (in air); no probe inside a wall.
|
|
180
|
+
- Connectivity: an **L-bend / S-bend corridor** where the cover leaves the two ends unconnected → after Stage 3
|
|
181
|
+
the ends are one component and `findAcousticPath` returns a route that stays in air; a **sealed** variant
|
|
182
|
+
stays disconnected (no false bridge).
|
|
183
|
+
- Sparseness: a big empty room yields far fewer probes than the old uniform grid at the same `frequency`
|
|
184
|
+
(assert ratio); coverage: `nearestIndex` for sampled listener points is always within ~probe radius.
|
|
185
|
+
- Determinism: same seed → identical positions.
|
|
186
|
+
|
|
187
|
+
## As-built (landed)
|
|
188
|
+
|
|
189
|
+
All four stages shipped; `bakeProbeField(index, minSpacing, rayCount, random, options)` now runs
|
|
190
|
+
**SDF grid → portal discovery → cover (portals pre-seeded) → connectivity refinement → reverb** instead of the
|
|
191
|
+
blind grid. The bake REGION is derived from the scene — the occluder hull
|
|
192
|
+
(`AcousticOccluderIndex.computeWorldBounds`) inflated by `2 × minSpacing` on every side — not a caller
|
|
193
|
+
parameter; a caller wanting a hand-picked region drops to `build_sdf_grid` + `probe_place_sdf_cover` directly.
|
|
194
|
+
|
|
195
|
+
- **Stage 0** `AcousticOccluderIndex.signedDistanceAt(x,y,z,maxDistance)` — union SDF via the body-AABB BVH +
|
|
196
|
+
per-body `shape.signed_distance_at_point` (negative inside, clamped to `+maxDistance`).
|
|
197
|
+
- **Grid** `build_sdf_grid(index, bounds, minSpacing, sparsenessRatio)` (`probe_sdf_grid.js`) — the SDF voxel
|
|
198
|
+
grid (oversampled 2× below `minSpacing`, capped 256³) is built ONCE and shared by the cover and (implicitly,
|
|
199
|
+
via the same `signedDistanceAt`) portal detection, so the expensive up-to-256³ SDF sweep is paid once. The
|
|
200
|
+
trilinear sampler, gradient-ascent local-max, and claim-sphere helpers live here too.
|
|
201
|
+
- **Stage 1** `probe_place_sdf_cover(grid, {predefined})` — SDF maximal-empty-sphere greedy cover. Erase radius
|
|
202
|
+
`clamp(clearance, minSpacing, minSpacing·sparsenessRatio)`: the initial cover never packs closer than the
|
|
203
|
+
hint, halls sparser up to the ceiling (`sparsenessRatio`, default 4). `predefined` probes (the portal
|
|
204
|
+
throats) are emitted FIRST and carve their empty spheres, so the cover never drops a redundant probe on one,
|
|
205
|
+
and they lead the probe list (indices `[0, K)`).
|
|
206
|
+
- **Stage 2** (air-validity) is folded into Stage 1: candidates are `SDF > ½voxel`, so the cover never emits a
|
|
207
|
+
probe inside (or hugging) a solid — no separate pushout pass needed.
|
|
208
|
+
- **Stage 3** `probe_refine_connectivity(index, field, minSpacing, {maxRefineFactor, corridorReachFactor})` —
|
|
209
|
+
for each pair of nearby components, a **bounded greedy best-first walk through open air** inserts waypoints
|
|
210
|
+
until a chain of mutually-visible probes spans the gap; floored at `minSpacing/maxRefineFactor` (default 4).
|
|
211
|
+
**Decision changed from the plan:** the midpoint-SDF-ascend sketched in §Stage 3 was rejected — it fails on
|
|
212
|
+
baffle/divider geometry where the gap is *perpendicular* to the SDF gradient. The directed open-air search
|
|
213
|
+
(sample around the segment, keep points visible from the current side, step to the nearest-to-target) handles
|
|
214
|
+
it. The provisional/final `bakeVisibility` re-bakes between rounds (default ≤3).
|
|
215
|
+
- **Portals** (`probe_detect_portals.js` + `probe_densify_portals.js`, `detectPortals` default on) — fixes
|
|
216
|
+
*symmetry*, not connectivity. A provisional cover discovers the openings (door frames / windows / arches),
|
|
217
|
+
then the bake re-covers with their throats pre-seeded:
|
|
218
|
+
- **Detect** — over every nearby MUTUALLY-VISIBLE probe pair (BVH gather within `maxSpacing`, NOT just baked
|
|
219
|
+
edges, so an opening is found regardless of where the sparse cover dropped edges), keep the ones whose line
|
|
220
|
+
threads a CONSTRICTION (narrowest point, by the *exact* `signedDistanceAt` — the cover grid is far too
|
|
221
|
+
coarse to resolve a doorway) **that is a genuine APERTURE** — bounded by solid on opposing sides
|
|
222
|
+
perpendicular to the passage (a doorway's jambs). The aperture gate is the real selectivity (it rejected a
|
|
223
|
+
one-sided pillar graze and the open region boundary; on the demo house: 77 raw constrictions → the 2 real
|
|
224
|
+
openings); dedup to one throat per opening (widest crossing).
|
|
225
|
+
- **Carve** — the throats feed `probe_place_sdf_cover` `predefined` (Stage 1), so a probe sits IN each opening.
|
|
226
|
+
- **Densify** — `bakeVisibility` stage D fans extra cross-opening CHORDS around each portal: the mutually-
|
|
227
|
+
visible pairs among its nearest neighbours whose line passes PAST the throat (point-to-segment bias). A fan
|
|
228
|
+
of chords gives Dijkstra direct, mirror-symmetric routes through the opening instead of funnelling every
|
|
229
|
+
cross-door path through the one off-centre probe the cover happened to place (which gave a listener on the
|
|
230
|
+
left and one on the right very different routed lengths). Purely a bake-time concept — adds only edges; no
|
|
231
|
+
runtime object, nothing serialized.
|
|
232
|
+
- **`minSpacing` semantics (per owner):** the hint sizes the initial cover/fit; only connectivity refinement
|
|
233
|
+
may go finer (down to `minSpacing/maxRefineFactor`). Open regions are *sparser* than the hint (up to the
|
|
234
|
+
ceiling) — the cover's adaptive sparseness.
|
|
235
|
+
- **The grid jitter** added to the old `bakeProbeField` is now moot (no grid) and was removed in the rewrite;
|
|
236
|
+
the cover's gradient-ascended points are already general-position for the Delaunay base.
|
|
237
|
+
|
|
238
|
+
Knobs (all in `options`, JSDoc'd): `sparsenessRatio`, `maxRefineFactor`, `corridorReachFactor`,
|
|
239
|
+
`maxRefineRounds`, `detectPortals` (default true), `constrictionFactor`, `portalFloorRatio`. Tests:
|
|
240
|
+
`core/signedDistanceAt.spec.js`, `probe/probe_place_sdf_cover.spec.js`, `probe/probe_refine_connectivity.spec.js`,
|
|
241
|
+
`probe/probe_detect_portals.spec.js`, `probe/probe_densify_portals.spec.js`, the end-to-end
|
|
242
|
+
`probe/bakeProbeField_pipeline.spec.js` (divider-with-gap → air-only, connected over the top, reverb tails), and
|
|
243
|
+
`probe/bakeProbeField_portals.spec.js` (a doorway → a centred portal + mirror-symmetric routing).
|
|
244
|
+
|
|
245
|
+
## Out of scope (follow-ups)
|
|
246
|
+
|
|
247
|
+
- Floor-relative / navmesh-restricted coverage policy.
|
|
248
|
+
- Surface-triangle BVH to make mesh `signedDistanceAt` sub-linear (only matters for high-poly occluders).
|
|
249
|
+
- Probe-reuse/dedup across separately-baked regions (brick4-style), if we ever stream/tile the bake.
|
|
250
|
+
- Perf at scale: the SDF voxel build is O(res³ · nearby-bodies); a bench + the grid fast-path are unmeasured.
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
# Probe directional transfer — analysis & research (v2)
|
|
2
|
+
|
|
3
|
+
**Problem (Alex):** the probe pathing connects a source on a pillar cap to a listener at the base because a
|
|
4
|
+
visible probe chain runs up the side — but physically that leak should be ~0. More generally: **sound
|
|
5
|
+
travels straight unless something reflects it; a *directional change* at a probe is only physical if a
|
|
6
|
+
reflector is near that probe.** A scalar (distance-only) edge can't express that. The fix is to bake a
|
|
7
|
+
**bidirectional, source-agnostic medium transfer** `T(ω_in, ω_out)` into the probes and gate the path with
|
|
8
|
+
it. A colleague (Gemini) proposed a 4×4 SH transfer matrix.
|
|
9
|
+
|
|
10
|
+
> **v1 of this note was wrong** and is superseded. It proposed a *unidirectional departure-direction gate*
|
|
11
|
+
> and cited Raghuvanshi/Project Acoustics. Both are wrong here: a single lobe can't express "this in→out
|
|
12
|
+
> turn needs a reflector" (it fails Alex's one-probe-above-the-pillar case — visibility passes, endpoint
|
|
13
|
+
> lobes pass, but the *turn through* the probe must be 0), and the parametric per-(source,listener) encoding
|
|
14
|
+
> is **source-bound** (static sources, dense grid, ~100 MB, hours) — unusable when sources move. The model
|
|
15
|
+
> below is bidirectional and source-agnostic.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 1. Current encoding (carried from v1)
|
|
20
|
+
|
|
21
|
+
Per probe (`AcousticProbeField`, `STRIDE = 15`): position (3) · per-band RT60 (3) · per-band **arrival**
|
|
22
|
+
direction (9, L1 FOA, reverb-decoder only). Plus the **visibility graph** (`CSRGraph`: mutual-LoS edges,
|
|
23
|
+
weight = distance). The leak gain is `occlusion · attenuation(routed_distance) · (1−transmission)` — the
|
|
24
|
+
edge transfer is **scalar distance**. Nothing knows a bend needs a reflector.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 2. The model: Acoustic Radiance Transfer, relocated onto air probes
|
|
29
|
+
|
|
30
|
+
The published prior art for a **source-agnostic, bidirectional medium operator** is **Acoustic Radiance
|
|
31
|
+
Transfer** (Siltanen, Lokki, Kiminki, Savioja — *The room acoustic rendering equation*, JASA 2007), the
|
|
32
|
+
acoustic analog of the rendering equation. Its medium operator is `R = V · ρ · g`: a binary visibility `V`,
|
|
33
|
+
a 6-D acoustic **BRDF** `ρ` that owns the in→out directional behavior, and a geometry/delay term `g`. **`ρ`
|
|
34
|
+
depends on surface + medium only — never on source or listener.** The source only sets the initial energy
|
|
35
|
+
vector; a moving listener is a few-ms *final gather*. Antani et al. (*Direct-to-Indirect Acoustic Radiance
|
|
36
|
+
Transfer*, TVCG 2011; *Compact Acoustic Transfer Operators*, TOG 2012) push this into the **moving
|
|
37
|
+
source + listener** regime explicitly, decoupling the transfer operator from source position. ART discretizes
|
|
38
|
+
direction into **solid-angle bins** (e.g. 30°×30° = 36 bins), *not* SH.
|
|
39
|
+
|
|
40
|
+
**The relocation + the key collapse.** Put the scattering vertices on the **air probes** instead of surface
|
|
41
|
+
patches, and use the **visibility graph edges as the discrete directions**. Then the only directions that
|
|
42
|
+
ever matter at a probe are its incident edges — so the full operator `T(ω_in, ω_out)` **collapses to one
|
|
43
|
+
scalar per ordered `(in-edge, out-edge)` pair per band**:
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
turn[v][in][out][band] = −10·log10( max( forward(in,out), maxₗ ρ_band · reflect_lobeₗ(in,out) ) )
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
That scalar is a **turn cost** on the graph. A directional change `in→out` that no local reflector supports
|
|
50
|
+
gets `T≈0` → cost `+∞` → *forbidden*. This is exactly the **road-routing-with-turn-costs** formalism
|
|
51
|
+
(Geisberger & Vetter), so routing stays a near-Dijkstra graph search — **no directional distribution is ever
|
|
52
|
+
propagated at runtime.** Source-/listener-agnostic by construction (the turn table is pure medium); moving
|
|
53
|
+
emitters attach to their nearest visible probe exactly as today.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 3. Representation: structured forward + reflector lobes — **not** an SH matrix
|
|
58
|
+
|
|
59
|
+
Reject the dense SH×SH transfer matrix, on quantitative grounds. The "forward/passthrough" term is a sharp
|
|
60
|
+
delta (`ω_out ≈ ω_in`); a low-order SH reproducing kernel is broad, so a *free-space* probe would let sound
|
|
61
|
+
turn:
|
|
62
|
+
|
|
63
|
+
| SH order L | forward-kernel half-width | matrix size (floats/band/probe) |
|
|
64
|
+
|---|---|---|
|
|
65
|
+
| 1 (the 4×4 proposal) | **70.5°** | 16 |
|
|
66
|
+
| 4 | 25.8° | 625 |
|
|
67
|
+
| 8 (≈±15° bend) | 14.2° | **6561** |
|
|
68
|
+
|
|
69
|
+
So you'd need L≈8 (6561 floats/band) *and* SH still **rings negative** (non-physical oscillating transfer),
|
|
70
|
+
and chaining probes is a ringing matrix multiply. Wrong tool for a delta.
|
|
71
|
+
|
|
72
|
+
Instead, the **canonical** per-probe bake form is structured and sharp by construction:
|
|
73
|
+
- **Forward term** — 0 stored params. Analytic specular passthrough (`out` aligned with `in`); implied at
|
|
74
|
+
every probe.
|
|
75
|
+
- **Reflector lobes — SGs in HALF-VECTOR space** (the form that makes reciprocity automatic). SG kernel
|
|
76
|
+
`G(c;λ)=e^{λ(c−1)}` on a cosine `c` (non-negative, no ringing; products/integrals closed-form — the
|
|
77
|
+
"convolution" you get *analytically*). The recovery, per band, for in/out **propagation** directions:
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
ĥ = normalize(ω_out − ω_in)
|
|
81
|
+
f(ω_in,ω_out) = min( 1, max( Φ(ω_in·ω_out), // forward / passthrough plateau
|
|
82
|
+
max_L ρ_L[band] · G( ĥ·n_L ; λ_L ) ) ) // best reflection lobe
|
|
83
|
+
```
|
|
84
|
+
**`max` (not sum), clamped to ≤1** so straight-through is always full regardless of nearby reflectors and
|
|
85
|
+
a probe can never amplify; it also makes the `ĥ`-undefined point at `ω_out≈ω_in` a non-issue (`max` takes
|
|
86
|
+
`Φ=1` there).
|
|
87
|
+
|
|
88
|
+
**Straight-through invariant (load-bearing).** `Φ(ω_in·ω_out)→1` as `ω_in·ω_out→1`, so the turn cost
|
|
89
|
+
`−10·log10 f → 0`: a probe does NOT impede a straight pass (a straight corridor pays distance + air only —
|
|
90
|
+
the model stays a strict superset of today). But `Φ` must be a **PLATEAU** (≈1 up to the graph's typical
|
|
91
|
+
edge-to-edge angle `θ_graph`, then fall off), **not a sharp Gaussian** — because a straight corridor sampled
|
|
92
|
+
by a *jittered* probe graph has consecutive edges that zigzag by ~`θ_graph`, and a sharp forward term would
|
|
93
|
+
bleed loss at *every* hop (e.g. 15° at `λ_fwd=5` ≈ −1.3 dB/hop → ~−5 dB over a 10-hop straight run — spurious
|
|
94
|
+
attenuation of a lossless corridor). `θ_graph` is a **discretization** parameter (probe spacing/jitter), not
|
|
95
|
+
physics; only a *real* bend (beyond the plateau, which must then be carried by a reflector lobe or it dies)
|
|
96
|
+
costs anything. Test from day one: a straight corridor's per-hop turn cost is 0 with no accumulation over
|
|
97
|
+
length.
|
|
98
|
+
|
|
99
|
+
**NOTE — `θ_graph` is a single global magic constant today, and that's the weak point.** The implementation
|
|
100
|
+
uses one `FORWARD_PLATEAU_COS = cos 40°` + `FORWARD_FALLOFF = 4` for ALL probes — a hand-tuned stand-in for
|
|
101
|
+
`θ_graph` (picked above a Delaunay-ish graph's incidental per-hop zigzag ~15–25°, below a real corner ~90°;
|
|
102
|
+
`FALLOFF=4` chosen so a 90° open-air bend → `Φ≈0.05`). It is **not measured**, so it's only right at the
|
|
103
|
+
density it was tuned at — and the SDF cover is *adaptive* (sparse halls, dense detail), so the true `θ_graph`
|
|
104
|
+
varies across one scene.
|
|
105
|
+
- **Improvement (A) — bake the plateau PER PROBE (deferred; accuracy + de-magic only).** Derive each probe's
|
|
106
|
+
aperture + falloff from its own local graph geometry (e.g. the straightest incident through-pair's turn
|
|
107
|
+
angle, with margin), so the plateau tracks local density instead of one compromise constant. Two floats/
|
|
108
|
+
probe; trivial next to the lobes. Low priority: it only fires at the two endpoint probes until interior
|
|
109
|
+
turns are gated (Phase 0b is what makes a per-hop plateau matter along the corridor). Goal is purely to
|
|
110
|
+
drive out the magic constant and improve accuracy — NOT to change behaviour.
|
|
111
|
+
- **Rejected (B) — a per-probe ABSOLUTE forward axis/cone for "aperture directivity."** Pinning a probe's
|
|
112
|
+
forward to a single world direction is wrong: a probe samples a propagation VOLUME, not a surface, and it
|
|
113
|
+
has no privileged axis. And the forward term gates the BEND (in·out), not absolute direction, so it cannot
|
|
114
|
+
express aperture directivity regardless — the graph routes a *smooth* corridor that diffuses an opening's
|
|
115
|
+
off-axis spread across many sub-plateau hops, each locally straight, so no per-hop bend gate (any plateau,
|
|
116
|
+
per-probe or not) can catch it. If aperture/source directivity is ever wanted it belongs in a separate
|
|
117
|
+
mechanism, never the forward term.
|
|
118
|
+
|
|
119
|
+
Stored per lobe: the reflector's air-side normal `n` (the SG **axis**, 3f), sharpness `λ` (1f; sharp=flat
|
|
120
|
+
mirror, broad=rough/curved), per-band reflectivity `ρ[3]` (3f) = **7 floats/lobe**. `λ_fwd` is a global
|
|
121
|
+
constant. A **sum of K** SGs approximates any non-negative transfer.
|
|
122
|
+
- **Reciprocity is BUILT IN.** Under `(ω_in,ω_out)→(−ω_out,−ω_in)`: `ω_in·ω_out` is invariant, and the
|
|
123
|
+
half-vector `ĥ` is invariant (`normalize(−ω_in+ω_out)=ĥ`). So `f(ω_in,ω_out)=f(−ω_out,−ω_in)` for any
|
|
124
|
+
lobes — no symmetrization pass. (This replaces the earlier non-reciprocal `SG(reflect(p_in),p_out)`.)
|
|
125
|
+
- **Front-face gate is FREE.** `ĥ·n` can reach `+1` only when `ω_in·n<0` (the in-ray enters the front
|
|
126
|
+
face) — `ĥ=+n ⇒ ω_out=ω_in+c·n, c>0` has no unit solution unless `ω_in·n<0`. So the lobe cannot fire for
|
|
127
|
+
a ray hitting the *back* of a surface; no separate reachability gate is needed. Pillar: cap below
|
|
128
|
+
(`n=+Y`), bad turn `up→down` has `ĥ=−Y`, `ĥ·n=−1`→0 (refused); a dome above (`n=−Y`) gives `ĥ·n=+1`
|
|
129
|
+
(admitted) — the sign flips with the normal. Numerical edge: weight lobes by the bend `(1−ω_in·ω_out)/2`
|
|
130
|
+
so the `ĥ`-undefined forward region is the forward term's alone.
|
|
131
|
+
|
|
132
|
+
**Messy / curved / concave geometry** (a sphere-capped pillar, a dome above the probe — §6). A curved
|
|
133
|
+
reflector *spreads* (a convex sphere is a fish-eye mirror → a broad lobe, not a spike), and a concave pocket
|
|
134
|
+
between two surfaces is a *multi-bounce cavity*. So (a) the bake must trace the **local multi-bounce within
|
|
135
|
+
`r`**, not just first-bounce, to get the true transfer; and (b) that transfer is multi-lobe/smeared →
|
|
136
|
+
represent it as a **sum of K SGs**, *or* — since memory is cheap on a sparse field — non-parametrically as a
|
|
137
|
+
**discretized solid-angle bin table** per probe (≈36×36 in/out bins, ART's actual choice; robust, no
|
|
138
|
+
lobe-fitting failure modes). SGs are the *compression* of the bin table for clean scenes, not the foundation.
|
|
139
|
+
|
|
140
|
+
The **materialized** form on the graph is the scalar `turn[v][in][out][band]` table for the **interior**
|
|
141
|
+
turns only (graph-edge pairs are fixed → precompute), parallel to the CSR half-edge arrays
|
|
142
|
+
(`turn_addresses[v]` row offsets, a `d²·3` float block per probe; ~192 floats/probe at degree 8 — trivial).
|
|
143
|
+
**The two ENDPOINT turns are NOT precomputable** — the source→its-probe and listener→its-probe attachment
|
|
144
|
+
legs are *runtime* directions (the emitters move), so those two probes' transfer (SG mixture / bin table)
|
|
145
|
+
**must survive to runtime** and be evaluated against the attachment-leg directions. That's two `T`
|
|
146
|
+
evaluations per source (tiny), and the directions are already in hand (`#applyPath` uses source→first-hop for
|
|
147
|
+
directivity and exit→listener for spatialization). [Correction: my earlier "never evaluate the transfer at
|
|
148
|
+
runtime" was wrong — it holds for interior turns, not the endpoints; the one-probe case in §6 is what forces
|
|
149
|
+
this.]
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## 4. Bake (reuse the existing ray machinery)
|
|
154
|
+
|
|
155
|
+
`bakeReverbBands` already shoots a per-probe Fibonacci ray sphere, and `acoustic_trace_energy` already does
|
|
156
|
+
`closestHit` + mirror-`reflect` off the surface normal. Add a **reflector harvest** in the same loop:
|
|
157
|
+
|
|
158
|
+
1. Per probe, the first-bounce `closestHit` (already paid) bounded to a **probe-local radius `r`** (e.g.
|
|
159
|
+
`k·minSpacing`, or from `signedDistanceAt` clearance) — this radius *is* the "reflector is near the probe"
|
|
160
|
+
gate that makes a bend local.
|
|
161
|
+
2. For clean (flat) reflectors, cluster hits by normal into patches → one SG lobe each (`μ`=normal, `λ` from
|
|
162
|
+
angular spread, `ρ[3]` from per-band `1−absorption`). For curved/concave geometry, **continue the trace a
|
|
163
|
+
few bounces within `r`** (the energy trace already reflects off `HIT.normal`) and accumulate the escaping
|
|
164
|
+
`(p_in, p_out, energy)` distribution into the probe's transfer (SG-fit or bin table) — this is what
|
|
165
|
+
captures a sphere's spread and a cavity's multi-bounce that first-bounce-only misses.
|
|
166
|
+
3. **Materialize the turn table** (interior turns): for each probe, over each ordered pair of incident graph
|
|
167
|
+
edges `(ω_in, ω_out)`, evaluate `T = f(ω_in, ω_out)` (the §3 form — `min(1, max(forward plateau, best
|
|
168
|
+
reflection lobe at ĥ·n))`) per band → `−10·log10`. A straight edge pair gives `T=1` → turn cost 0.
|
|
169
|
+
Reciprocity is automatic (the half-vector is swap-invariant), so no symmetrize pass is needed. (Endpoint
|
|
170
|
+
turns stay as the runtime-evaluable transfer — §3.)
|
|
171
|
+
|
|
172
|
+
Same rays, same seed, offline, deterministic. The visibility graph is already baked *before* reverb in
|
|
173
|
+
`bakeProbeField`, so the incident-edge set per probe is known at materialize time. Ship the turn table via
|
|
174
|
+
the existing `AcousticProbeFieldSerializationAdapter` (the lobe list is a transient bake artifact, not
|
|
175
|
+
shipped).
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## 5. Propagation: turn-augmented (edge-based) Dijkstra
|
|
180
|
+
|
|
181
|
+
`computeExitField` today runs one scalar Dijkstra (`csr_graph_build_distance_field`) from the listener.
|
|
182
|
+
Extend the search state from `node` to `(node, incoming-edge)`; when relaxing edge `k` out of `u` reached via
|
|
183
|
+
incoming local edge `in`, the tentative cost is `dist[u] + edge_weight[k] (distance, dB) + turn[u][in][k][band]`;
|
|
184
|
+
`+∞` turns never relax. Geisberger & Vetter report edge-based query time **"almost the same"** as node-based;
|
|
185
|
+
the state space widens ~degree (~8×) but most turns prune to `+∞`, so live states are far fewer. The
|
|
186
|
+
`dist/next/exit` arrays widen per-`(node,in-edge)` but `#applyPath`'s polyline walk is unchanged in shape.
|
|
187
|
+
|
|
188
|
+
- **Moving sources + listeners: unchanged.** Listener snaps via `nearestVisibleIndex` and seeds one
|
|
189
|
+
exit-field pass/frame; each source snaps and reads `dist/next/exit` by index. **Reciprocity** (`T` symmetric,
|
|
190
|
+
medium at rest) keeps the solve listener-rooted as it is now.
|
|
191
|
+
- **Option A (recommended):** in-node turn-table relaxation (smallest blast radius). **Option B:** materialize
|
|
192
|
+
the line graph at bake and run the *unmodified* Dijkstra (zero algorithm change, heavier bake).
|
|
193
|
+
- **Band:** drive routing on one representative band (mid, or min-over-bands = most conservative) to keep the
|
|
194
|
+
per-frame pass flat; the per-band turn costs then tilt the leak send like `pathAirLoss` already does.
|
|
195
|
+
- **Endpoint turns are evaluated at RUNTIME** (not from the interior table): the source→first-hop bend (at
|
|
196
|
+
the source's probe) and last-hop→listener bend (at the listener's probe) use the runtime attachment-leg
|
|
197
|
+
directions, evaluated against those two probes' retained transfer (SG mixture / bin table). In the
|
|
198
|
+
degenerate ONE-probe case both endpoints are the *same* probe and the whole route is that single bend (§6).
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## 6. The three cases (all correct, source-agnostically)
|
|
203
|
+
|
|
204
|
+
- **Pillar / ONE probe above the cap — the canonical test (it forced the two corrections above).** Source on
|
|
205
|
+
the cap `(0,10,0)`, listener set back at the base `(10,0,0)`, the lone probe at `(0,12,0)`; both can see the
|
|
206
|
+
probe, direct is occluded. Both endpoints snap to the *same* probe, so the route is two attachment legs and
|
|
207
|
+
a single bend *at the probe*: energy arrives travelling **up** (source→probe) and must leave **down**
|
|
208
|
+
(probe→listener). `forward(up,down)=0` (opposite). The only nearby reflector is the cap **below** the probe
|
|
209
|
+
(normal `+Y`); with the **reachability gate** it acts only on energy heading toward it (down) → it supports
|
|
210
|
+
`down→up`, never `up→down`. Nothing is above the probe (open sky) → `T(up,down)=0` → bend refused, *even
|
|
211
|
+
though both see the probe*. This case forces: **(1)** the gate fires at the **endpoint** probe on the
|
|
212
|
+
**runtime attachment-leg** directions (there is no interior graph edge here), and **(2)** the **reachability
|
|
213
|
+
gate** is essential — without it `reflect(up,+Y)=down` would pass the leak.
|
|
214
|
+
- **Sphere-capped pillar + a sphere/dome ABOVE the probe (concave).** Now a reflector *exists* above → the
|
|
215
|
+
`up→down` turn becomes physical and the model **admits a faint leak** (correct — a dome bounces a little
|
|
216
|
+
back down; a cutoff-plane or normal-gate would wrongly hard-refuse). The convex spheres reflect
|
|
217
|
+
*divergently* (broad lobes) and the pocket between them is a multi-bounce cavity, so the *magnitude* needs
|
|
218
|
+
the **multi-bounce-within-`r` bake + a multi-lobe (SG-mixture or bin) transfer** (§3–§4); first-bounce + one
|
|
219
|
+
specular lobe under-energizes it but is correct in sign. This is the case that says "don't assume forward +
|
|
220
|
+
one clean specular lobe — trace the true local transfer."
|
|
221
|
+
- **Two boxes sandwiching a probe.** Two reflector faces → two lobes + forward. Straight-through passes
|
|
222
|
+
(forward); a bend off either box passes (its lobe); an out-edge into the **open gap** between them hits
|
|
223
|
+
neither → `+∞`.
|
|
224
|
+
- **Open door, listener at the back.** Open-air detour probes where the route must *bend* have no reflector →
|
|
225
|
+
forward-only → those bends are `+∞` → the search rejects the open-air detour and routes through the doorway.
|
|
226
|
+
(Reflection alone *rejects* the impossible route; *admitting* the doorway bend with correct attenuation
|
|
227
|
+
needs diffraction lobes — §8 Phase 4.)
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## 7. Cost & reuse
|
|
232
|
+
- **Storage:** `degree²·3` f32/probe → ~192 floats (~768 B) at degree 8; trivial. No compression needed.
|
|
233
|
+
- **Runtime:** one per-frame exit-field pass, edge-based (≤~8× worst-case states, typically far less);
|
|
234
|
+
per-source `#applyPath` unchanged. Same order as today's single Dijkstra.
|
|
235
|
+
- **Bake:** one extra first-bounce clustering pass (the `closestHit` is already paid) + a `degree²` SG
|
|
236
|
+
materialize per probe (offline, cheap).
|
|
237
|
+
- **Reuses:** `acoustic_trace_energy` (closestHit + reflect), `bakeReverbBands` (ray sphere + the
|
|
238
|
+
`DIRECTION_ACCUM` reciprocity logic seeds/validates lobe axes), `AcousticOccluderIndex.closestHit/signedDistanceAt`,
|
|
239
|
+
`bakeVisibility`/`CSRGraph` (turn table parallel to the half-edge arrays; float edge weights are already
|
|
240
|
+
first-class), `computeExitField`/`csr_graph_build_distance_field` (extend state), `AcousticSimulator.apply`
|
|
241
|
+
(the `nearestVisibleIndex` snap + exit-field split is exactly the moving-emitter model). Almost no new
|
|
242
|
+
infrastructure.
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## 8. Phased plan
|
|
247
|
+
- **Phase 0 — zero the pillar with the correct (bidirectional, medium) model.** Bake per-probe reflector
|
|
248
|
+
lobes (forward + 0..N mirror lobes from `closestHit` within radius `r`) — the §3 half-vector form makes
|
|
249
|
+
the front-face / refuse-wrong-side behavior intrinsic (`ĥ·n` only fires for a real bounce; no separate
|
|
250
|
+
reachability gate). Single band, binary-ish gate (scalar band-mean), no SG amplitudes yet. **Strict superset
|
|
251
|
+
of today** (no reflector lobes anywhere = current behavior).
|
|
252
|
+
- **Phase 0a — DONE.** The locked transfer (`acoustic_probe_transfer.js` + 8 specs), the bake/harvest
|
|
253
|
+
(`bakeProbeReflectors.js` + specs), CSR lobe storage on `AcousticProbeField` (`setLobes`/`probeTransfer`/
|
|
254
|
+
`hasTransfer`), `bakeProbeField` step 4 wiring, and **the two ENDPOINT-bend gates evaluated at runtime** in
|
|
255
|
+
`AcousticSimulator.#applyPath` (`#turnGain`: source→sourceProbe→firstHop and lastHop→listenerProbe→listener,
|
|
256
|
+
gated by the source-/listener-probe lobes, `hasTransfer`-guarded). The endpoint eval is what carries the
|
|
257
|
+
lone-probe pillar — there is no interior edge there, so an interior-only turn table would NOT zero it.
|
|
258
|
+
Integration spec (`acoustic_transfer_pathing.spec.js`): source-on-cap + listener-at-base ⇒ leak refused
|
|
259
|
+
(1.0 → 0.0017); a dome lobe above the probe ⇒ leak admitted but attenuated (→ 0.41); no lobes ⇒ unchanged.
|
|
260
|
+
- **Phase 0b — TODO.** Materialize a binary admissible/forbidden INTERIOR turn per `(in,out)` on the graph
|
|
261
|
+
and extend `computeExitField` relaxation to state `(node, in-edge)` (edge-based Dijkstra), so a bend at an
|
|
262
|
+
intermediate probe is gated too (not only the endpoints). Spec: a vertical-corner interior leak unchanged;
|
|
263
|
+
a straight jittered corridor accrues no per-hop loss.
|
|
264
|
+
- **Phase 1 — graded transfer.** Replace the binary gate with per-band `turn = −10·log10(T)` from SG lobe
|
|
265
|
+
amplitudes; fold into the dB edge metric so distance+turn shortest path = max-energy route. Specs: two-box
|
|
266
|
+
(open gaps forbidden), open-door (open-air bend rejected, doorway route survives).
|
|
267
|
+
- **Phase 2 — reciprocity + render.** Symmetrize the turn table at bake (+ a reciprocity spec); wire the
|
|
268
|
+
per-band turn cost into the leak-send tilt alongside `pathAirLoss`.
|
|
269
|
+
- **Phase 3 — k-best + ASG.** Eppstein top-2..4 routes, energy-summed (the "slightly-occluded straight vs
|
|
270
|
+
clean single bounce" case); anisotropic SG lobes for long walls/edges.
|
|
271
|
+
- **Phase 4 — diffraction (optional but needed to fully *admit* doorways).** Diffraction lobes at
|
|
272
|
+
aperture/corner probes (UTD / BEDRF `D(φ_in,φ_out,n)`, per band) so a doorway bend is *admitted* with
|
|
273
|
+
correct attenuation, not only *rejected* if it's the wrong route.
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## 9. Open questions
|
|
278
|
+
- Edge-based Dijkstra: in-node turn-table relaxation (**A**) vs materialized line graph (**B**).
|
|
279
|
+
- Routing band: mid / min-over-bands / per-band (3× the pass).
|
|
280
|
+
- Probe-local reflector radius `r` (tie to `minSpacing` vs `signedDistanceAt`) — scene sweep.
|
|
281
|
+
- Lobe clustering thresholds (one flat wall → one lobe, not many).
|
|
282
|
+
- Forward-delta **aliasing** when two out-edges straddle the in-direction on a coarse graph (ART's SH-smooth
|
|
283
|
+
fallback is the escape hatch).
|
|
284
|
+
- **Transfer representation default:** SG-mixture (compact; clean scenes) vs discretized solid-angle **bin
|
|
285
|
+
table** (robust to curved/concave geometry; no lobe-fitting; memory cheap on a sparse field). Lean to the
|
|
286
|
+
bin table as the default and treat SGs as a clean-scene compression — confirm on a messy scene.
|
|
287
|
+
- **Bake bounce depth within `r`:** first-bounce (cheap, under-energizes concave cavities) vs few-bounce
|
|
288
|
+
(captures the sphere-cap/dome cavity, more bake cost) — how many bounces before the energy threshold, and
|
|
289
|
+
whether to gate it on local concavity (only trace deeper where `signedDistanceAt` shows an enclosing pocket).
|
|
290
|
+
- Diffraction (Phase 4) is what *admits* the doorway bend; until then v1 only *rejects* the impossible route.
|
|
291
|
+
- Dynamic geometry: the existing `ProbeVisibilityRecheck` disables edge weights; a turn that flips when a door
|
|
292
|
+
opens needs the turn table rechecked too.
|
|
293
|
+
|
|
294
|
+
## 10. Risks
|
|
295
|
+
- Edge-based state widening (~degree×) could regress the per-frame pass — re-run the `computeExitField`
|
|
296
|
+
benchmark (10k nodes, degree 8) with turns on; note most turns prune.
|
|
297
|
+
- First-bounce-only harvest may miss/over-detect reflectors — `r` + clustering are the sensitive knobs.
|
|
298
|
+
- Forward-delta aliasing on a coarse graph could starve straight-through energy.
|
|
299
|
+
- Per-band routing 3× cost if done naively — pick one gate band up front.
|
|
300
|
+
- Reciprocity assumes a medium at rest (breaks under wind/moving volumes — document the precondition).
|
|
301
|
+
- **Diffraction deferral:** until Phase 4 the open-door case *rejects* the open-air detour but does not yet
|
|
302
|
+
*admit* the doorway with correct attenuation — call this out so it isn't mistaken for a finished door model.
|
|
303
|
+
- Serialization: bake-vs-load turn-block size assertion (degree mismatch would corrupt addressing; asserts
|
|
304
|
+
are free in prod).
|
|
305
|
+
|
|
306
|
+
## 11. Sources
|
|
307
|
+
- Siltanen, Lokki, Kiminki, Savioja — *The room acoustic rendering equation* (JASA 122(3):1624–1635, 2007) — https://pubs.aip.org/asa/jasa/article-abstract/122/3/1624/852994 (open PDF: https://aaltodoc.aalto.fi/items/e19246eb-3f21-4d63-89d2-a8fb9f49eea4)
|
|
308
|
+
- Antani, Chandak, Taylor, Manocha — *Direct-to-Indirect Acoustic Radiance Transfer* (IEEE TVCG 18(2), 2011) — https://pubmed.ncbi.nlm.nih.gov/21519103/ (project: http://gamma.cs.unc.edu/Sound/diffuse/)
|
|
309
|
+
- Antani, Chandak, Savioja, Manocha — *Interactive Sound Propagation Using Compact Acoustic Transfer Operators* (ACM TOG 31(1):7, 2012) — https://dl.acm.org/doi/10.1145/2077341.2077348
|
|
310
|
+
- Geisberger, Vetter — *Efficient Routing in Road Networks with Turn Costs* (edge-based contraction hierarchies) — https://ae.iti.kit.edu/download/turn_ch.pdf
|
|
311
|
+
- Eppstein — *Finding the k Shortest Paths* (SIAM J. Comput. 1998) — https://ics.uci.edu/~eppstein/pubs/Epp-SJC-98.pdf
|
|
312
|
+
- *BEDRF: Bidirectional Edge Diffraction Response Function* (diffraction lobes, 2023) — https://arxiv.org/abs/2306.01974
|
|
313
|
+
- MJP — *Spherical Gaussians (SG series)* — https://therealmjp.github.io/posts/sg-series-part-5-approximating-radiance-and-irradiance-with-sgs/
|
|
314
|
+
- (graphics analogs) Radiance Cascades / DDGI directional visibility / light-field probes — directional-radiance-with-distance and depth-gated leakage.
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
### One-line verdict
|
|
319
|
+
Don't bake a per-probe SH transfer **matrix**; bake a per-probe **reflector-lobe set**, materialize it to a
|
|
320
|
+
scalar **`(in-edge,out-edge)` turn cost** on the visibility graph, and route with **turn-augmented Dijkstra**.
|
|
321
|
+
It's Acoustic Radiance Transfer collapsed onto the sparse probe graph — bidirectional, source-agnostic,
|
|
322
|
+
moving-emitter-friendly, and ~today's runtime cost.
|