@woosh/meep-engine 2.43.3 → 2.43.4

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.
Files changed (48) hide show
  1. package/core/binary/BinaryBuffer.js +13 -1
  2. package/core/binary/BitSet.js +2 -2
  3. package/core/collection/array/array_range_equal_strict.js +22 -0
  4. package/core/color/sRGB_to_linear.js +9 -4
  5. package/core/geom/3d/plane/orient3d_fast.js +3 -0
  6. package/core/geom/3d/plane/orient3d_robust.js +41 -0
  7. package/core/geom/3d/sphere/harmonics/README.md +15 -0
  8. package/core/geom/3d/sphere/harmonics/sh3_add.js +21 -0
  9. package/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.js +618 -0
  10. package/core/geom/3d/sphere/harmonics/sh3_sample_by_direction.js +49 -0
  11. package/core/geom/3d/sphere/harmonics/sh3_sample_irradiance_by_direction.js +53 -0
  12. package/core/geom/3d/tetrahedra/TetrahedralMesh.js +251 -68
  13. package/core/geom/3d/tetrahedra/TetrahedralMesh.spec.js +80 -3
  14. package/core/geom/3d/tetrahedra/build_tetrahedral_mesh_buffer_geometry.js +75 -0
  15. package/core/geom/3d/tetrahedra/delaunay/Cavity.js +5 -1
  16. package/core/geom/3d/tetrahedra/delaunay/compute_delaunay_tetrahedral_mesh.js +30 -31
  17. package/core/geom/3d/tetrahedra/delaunay/fill_in_a_cavity.js +54 -18
  18. package/core/geom/3d/tetrahedra/delaunay/push_boundary_with_validation.js +27 -0
  19. package/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_compute_cavity.js +89 -0
  20. package/core/geom/3d/tetrahedra/delaunay/{tetrahedral_mesh_walk_toward_cavity.js → tetrahedral_mesh_walk_towards_containing_tetrahedron.js} +15 -12
  21. package/core/geom/3d/tetrahedra/delaunay/validate_cavity_boundary.js +60 -0
  22. package/core/geom/3d/tetrahedra/{point_in_tetrahedron_circumsphere.js → in_sphere_fast.js} +2 -4
  23. package/core/geom/3d/tetrahedra/in_sphere_robust.js +53 -0
  24. package/core/geom/3d/tetrahedra/prototypeTetrahedraBuilder.js +44 -35
  25. package/core/geom/3d/tetrahedra/validate_tetrahedral_mesh.js +85 -38
  26. package/core/geom/3d/util/make_justified_point_grid.js +31 -0
  27. package/core/process/delay.js +5 -0
  28. package/editor/Editor.js +3 -0
  29. package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.js +195 -11
  30. package/editor/ecs/component/editors/ecs/ParameterTrackSetEditor.js +16 -0
  31. package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.js +4 -0
  32. package/engine/EngineHarness.js +11 -5
  33. package/engine/ecs/terrain/ecs/TerrainSystem.js +7 -1
  34. package/engine/ecs/transform/copy_three_transform.js +15 -0
  35. package/engine/graphics/ecs/light/Light.js +6 -1
  36. package/engine/graphics/ecs/light/LightSystem.d.ts +1 -1
  37. package/engine/graphics/ecs/mesh-v2/three_object_to_entity_composition.js +2 -17
  38. package/engine/graphics/geometry/instancing/InstancedMeshGroup.js +2 -2
  39. package/engine/graphics/sh3/LightProbeVolume.js +595 -0
  40. package/engine/graphics/sh3/SH3VisualisationMaterial.js +79 -0
  41. package/engine/graphics/sh3/prototypeSH3Probe.js +427 -0
  42. package/engine/graphics/sh3/visualise_probe.js +40 -0
  43. package/engine/graphics/texture/atlas/TextureAtlas.js +15 -3
  44. package/engine/intelligence/blackboard/AbstractBlackboard.d.ts +1 -1
  45. package/package.json +2 -1
  46. package/samples/terrain/from_image_2.js +127 -82
  47. package/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_compute_cavity2.js +0 -224
  48. package/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_insert_point.js +0 -98
@@ -7,6 +7,7 @@ import { TerrainFlags } from "./TerrainFlags.js";
7
7
  import { ImageRGBADataLoader } from "../../../asset/loaders/image/ImageRGBADataLoader.js";
8
8
  import { Transform } from "../../transform/Transform.js";
9
9
  import { MATRIX_4_IDENTITY } from "../../../../core/geom/3d/matrix/MATRIX_4_IDENTITY.js";
10
+ import { BinaryNode } from "../../../../core/bvh2/BinaryNode.js";
10
11
 
11
12
  /**
12
13
  *
@@ -149,6 +150,11 @@ class TerrainSystem extends System {
149
150
  */
150
151
  unlink(component, entity) {
151
152
 
153
+ if (this.renderLayer.bvh === component.__tiles.bvh) {
154
+ // remove from render index
155
+ this.renderLayer.bvh = new BinaryNode();
156
+ }
157
+
152
158
  component.unlink();
153
159
  }
154
160
 
@@ -187,7 +193,7 @@ class TerrainSystem extends System {
187
193
  if (transform !== undefined) {
188
194
  // terrain has a transform
189
195
  terrain.transform = transform.matrix;
190
- }else{
196
+ } else {
191
197
  terrain.transform = MATRIX_4_IDENTITY;
192
198
  }
193
199
 
@@ -0,0 +1,15 @@
1
+ /**
2
+ *
3
+ * @param {Transform} transform
4
+ * @param {THREE.Object3D} three_object
5
+ */
6
+ export function copy_three_transform(transform, three_object) {
7
+
8
+ // copy object transform
9
+ transform.position.copy(three_object.position);
10
+ transform.scale.copy(three_object.scale);
11
+ transform.rotation.copy(three_object.quaternion);
12
+
13
+ //
14
+ transform.matrix.set(three_object.matrix.elements);
15
+ }
@@ -8,6 +8,9 @@ import { Color } from "../../../../core/color/Color.js";
8
8
  import ObservedBoolean from "../../../../core/model/ObservedBoolean.js";
9
9
  import { LightType } from "./LightType.js";
10
10
 
11
+
12
+ const DEFAULT_DISTANCE = 1;
13
+
11
14
  export class Light {
12
15
  /**
13
16
  *
@@ -48,7 +51,7 @@ export class Light {
48
51
  * Applicable for SPOT and POINT lights, controls maximum extents of influence of the light
49
52
  * @type {Vector1}
50
53
  */
51
- this.distance = new Vector1(10);
54
+ this.distance = new Vector1(DEFAULT_DISTANCE);
52
55
 
53
56
  /**
54
57
  *
@@ -127,6 +130,8 @@ export class Light {
127
130
 
128
131
  if (json.distance !== undefined) {
129
132
  this.distance.fromJSON(json.distance);
133
+ } else {
134
+ this.distance.set(DEFAULT_DISTANCE);
130
135
  }
131
136
  }
132
137
  this.__threeObject = null;
@@ -5,7 +5,7 @@ import {Light} from "./Light";
5
5
  export default class LightSystem extends System<Light> {
6
6
  constructor(engine: Engine, {
7
7
  shadowResolution
8
- }: {
8
+ }?: {
9
9
  shadowResolution: number
10
10
  })
11
11
  }
@@ -1,22 +1,7 @@
1
1
  import { EntityNode } from "../../../ecs/parent/EntityNode.js";
2
2
  import { Transform } from "../../../ecs/transform/Transform.js";
3
3
  import { ShadedGeometry } from "./ShadedGeometry.js";
4
-
5
- /**
6
- *
7
- * @param {Transform} transform
8
- * @param {THREE.Object3D} three_object
9
- */
10
- function copy_three_transform(transform, three_object) {
11
-
12
- // copy object transform
13
- transform.position.copy(three_object.position);
14
- transform.scale.copy(three_object.scale);
15
- transform.rotation.copy(three_object.quaternion);
16
-
17
- //
18
- transform.matrix.set(three_object.matrix.elements);
19
- }
4
+ import { copy_three_transform } from "../../../ecs/transform/copy_three_transform.js";
20
5
 
21
6
  /**
22
7
  *
@@ -41,7 +26,7 @@ export function three_object_to_entity_composition(root) {
41
26
 
42
27
  if (root.isMesh) {
43
28
  if (root.isSkinnedMesh) {
44
- throw new Error(`Skinned meshes are not supported`);
29
+ console.error(`Skinned meshes are not supported`);
45
30
  }
46
31
 
47
32
  const sg = ShadedGeometry.from(root.geometry, root.material);
@@ -54,12 +54,12 @@ export class InstancedMeshGroup {
54
54
  *
55
55
  * @type {number}
56
56
  */
57
- this.growFactor = 1.1;
57
+ this.growFactor = 1.2;
58
58
  /**
59
59
  * Minimum spare capacity increase during growing
60
60
  * @type {number}
61
61
  */
62
- this.growConstant = 4;
62
+ this.growConstant = 16;
63
63
 
64
64
  this.shrinkFactor = 0.5;
65
65
  /**