@xeokit/xeokit-sdk 2.6.29 → 2.6.31

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 (35) hide show
  1. package/dist/xeokit-sdk.cjs.js +635 -468
  2. package/dist/xeokit-sdk.es.js +635 -468
  3. package/dist/xeokit-sdk.es5.js +318 -330
  4. package/dist/xeokit-sdk.min.cjs.js +4 -4
  5. package/dist/xeokit-sdk.min.es.js +5 -5
  6. package/dist/xeokit-sdk.min.es5.js +3 -3
  7. package/package.json +1 -1
  8. package/src/plugins/DotBIMLoaderPlugin/DotBIMLoaderPlugin.js +110 -33
  9. package/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js +2 -110
  10. package/src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js +257 -222
  11. package/src/plugins/TreeViewPlugin/TreeViewPlugin.js +1 -1
  12. package/src/viewer/metadata/MetaScene.js +0 -2
  13. package/src/viewer/scene/model/SceneModel.js +9 -0
  14. package/src/viewer/scene/model/SceneModelTextureSet.js +5 -0
  15. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js +8 -0
  16. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js +8 -0
  17. package/src/viewer/scene/model/vbo/VBORenderer.js +10 -1
  18. package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js +1 -1
  19. package/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js +26 -6
  20. package/src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js +40 -12
  21. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesBatchingRenderer.js +2 -3
  22. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js +25 -7
  23. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js +1 -1
  24. package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js +1 -1
  25. package/src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js +17 -4
  26. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js +74 -47
  27. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js +29 -14
  28. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js +5 -4
  29. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js +1 -1
  30. package/src/viewer/scene/webgl/Renderer.js +6 -3
  31. package/src/viewer/scene/webgl/occlusion/OcclusionLayer.js +1 -1
  32. package/src/viewer/scene/webgl/occlusion/OcclusionTester.js +1 -4
  33. package/types/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.d.ts +5 -3
  34. package/types/plugins/LASLoaderPlugin/LASLoaderPlugin.d.ts +2 -2
  35. package/types/plugins/OBJLoaderPlugin/OBJLoaderPlugin.d.ts +3 -3
@@ -4,8 +4,8 @@ import {VBORenderer} from "./../../../VBORenderer.js";
4
4
  * @private
5
5
  */
6
6
  export class TrianglesInstancingRenderer extends VBORenderer {
7
- constructor(scene, withSAO, {edges = false} = {}) {
8
- super(scene, withSAO, {instancing: true, edges});
7
+ constructor(scene, withSAO, {edges = false, useAlphaCutoff = false} = {}) {
8
+ super(scene, withSAO, {instancing: true, edges, useAlphaCutoff});
9
9
  }
10
10
 
11
11
  _draw(drawCfg) {
@@ -14,16 +14,17 @@ export class TrianglesInstancingRenderer extends VBORenderer {
14
14
  const {
15
15
  state,
16
16
  frameCtx,
17
- incrementDrawState,
17
+ incrementDrawState
18
18
  } = drawCfg;
19
19
 
20
20
  if (this._edges) {
21
21
  gl.drawElementsInstanced(gl.LINES, state.edgeIndicesBuf.numItems, state.edgeIndicesBuf.itemType, 0, state.numInstances);
22
22
  } else {
23
23
  gl.drawElementsInstanced(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);
24
+
24
25
  if (incrementDrawState) {
25
26
  frameCtx.drawElements++;
26
27
  }
27
28
  }
28
29
  }
29
- }
30
+ }
@@ -230,7 +230,7 @@ export class TrianglesSnapRenderer extends VBORenderer {
230
230
  // renderPass = PICK
231
231
  src.push(`int pickFlag = int(flags) >> 12 & 0xF;`);
232
232
  src.push(`if (pickFlag != renderPass) {`);
233
- src.push(" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);"); // Cull vertex
233
+ src.push(" gl_Position = vec4(2.0, 0.0, 0.0, 0.0);"); // Cull vertex
234
234
  src.push("} else {");
235
235
  src.push(" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); ");
236
236
  src.push(" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);");
@@ -1539,13 +1539,16 @@ const Renderer = function (scene, options) {
1539
1539
  }
1540
1540
 
1541
1541
  const snappedEntity = (snappedPickable && snappedPickable.delegatePickedEntity) ? snappedPickable.delegatePickedEntity() : snappedPickable;
1542
+ if (!snappedEntity && pickable) {
1543
+ pickable = pickable.delegatePickedEntity ? pickable.delegatePickedEntity() : pickable;
1544
+ }
1542
1545
 
1543
1546
  pickResult.reset();
1544
1547
  pickResult.snappedToEdge = (snapType === "edge");
1545
1548
  pickResult.snappedToVertex = (snapType === "vertex");
1546
- pickResult.worldPos = snappedWorldPos;
1547
- pickResult.worldNormal = snappedWorldNormal;
1548
- pickResult.entity = snappedEntity;
1549
+ pickResult.worldPos = snappedWorldPos || worldPos;
1550
+ pickResult.worldNormal = snappedWorldNormal || worldNormal;
1551
+ pickResult.entity = snappedEntity || pickable;
1549
1552
  pickResult.canvasPos = canvasPos || scene.camera.projectWorldPos(worldPos || snappedWorldPos);
1550
1553
  pickResult.snappedCanvasPos = snappedCanvasPos || canvasPos;
1551
1554
 
@@ -99,7 +99,7 @@ class OcclusionLayer {
99
99
  for (let i = 0; i < this.numMarkers; i++) {
100
100
  if (this.markerList[i]) {
101
101
  const marker = this.markerList[i];
102
- const worldPos = marker.worldPos;
102
+ const worldPos = marker.rtcPos;
103
103
  this.positions[j++] = worldPos[0];
104
104
  this.positions[j++] = worldPos[1];
105
105
  this.positions[j++] = worldPos[2];
@@ -332,10 +332,7 @@ class OcclusionTester {
332
332
  continue;
333
333
  }
334
334
 
335
- // The `origin` has been changed from `occlusionLayer.origin` to `[ 0, 0, 0 ]`
336
- // because OcclusionLayer markers' transformation is being applied through the
337
- // OcclusionLayer::positions array. See XEOK-33
338
- const origin = [ 0, 0, 0 ];
335
+ const origin = occlusionLayer.origin;
339
336
 
340
337
  gl.uniformMatrix4fv(this._uViewMatrix, false, createRTCViewMat(camera.viewMatrix, origin));
341
338
 
@@ -1,4 +1,4 @@
1
- import { Plugin, Viewer, Entity, IFCObjectDefaults } from "../../viewer";
1
+ import { Entity, IFCObjectDefaults, Plugin, SceneModel, Viewer } from "../../viewer";
2
2
 
3
3
  export declare interface IGLTFDefaultDataSource {
4
4
  /**
@@ -77,6 +77,8 @@ export declare type LoadGLTFModel = {
77
77
  edgeThreshold?: number[]
78
78
  /** Set ````false```` to load all the materials and textures provided by the glTF file, otherwise leave ````true```` to load the default high-performance representation optimized for low memory usage and efficient rendering. */
79
79
  performance?: boolean;
80
+ /** When true, generate a single MetaObject that represents the entire glTF model, and a MetaObject for each entity within it. */
81
+ autoMetaModel?: boolean;
80
82
  };
81
83
 
82
84
  /**
@@ -134,7 +136,7 @@ export declare class GLTFLoaderPlugin extends Plugin {
134
136
  * Loads a glTF model from a file into this GLTFLoaderPlugin's {@link Viewer}.
135
137
  *
136
138
  * @param {LoadGLTFModel} params Loading parameters.
137
- * @returns {Entity} Entity representing the model, which will have {@link Entity.isModel} set ````true```` and will be registered by {@link Entity.id} in {@link Scene.models}
139
+ * @returns {SceneModel} SceneModel representing the model, which will have {@link Entity.isModel} set ````true```` and will be registered by {@link Entity.id} in {@link Scene.models}.
138
140
  */
139
- load(params: LoadGLTFModel): Entity;
141
+ load(params: LoadGLTFModel): SceneModel;
140
142
  }
@@ -1,4 +1,4 @@
1
- import { Entity, Plugin, Viewer } from "../../viewer";
1
+ import { Entity, Plugin, SceneModel, Viewer } from "../../viewer";
2
2
  import { ModelStats } from "../index";
3
3
 
4
4
  export declare interface ILASDefaultDataSource {
@@ -142,5 +142,5 @@ export declare class LASLoaderPlugin extends Plugin {
142
142
  * @param {LoadLASModel} params Loading parameters.
143
143
  * @returns {SceneModel} SceneModel representing the model, which will have {@link Entity.isModel} set ````true```` and will be registered by {@link Entity.id} in {@link Scene.models}.
144
144
  */
145
- load(params?: LoadLASModel): Entity;
145
+ load(params?: LoadLASModel): SceneModel;
146
146
  }
@@ -1,4 +1,4 @@
1
- import { Plugin, Viewer, Entity } from "../../viewer";
1
+ import { Entity, Node, Plugin, Viewer } from "../../viewer";
2
2
 
3
3
  export declare type LoadOBJModel = {
4
4
  /** ID to assign to the model's root {@link Entity}, unique among all components in the Viewer's {@link Scene}. */
@@ -38,7 +38,7 @@ export declare class OBJLoaderPlugin extends Plugin {
38
38
  * Loads an OBJ model from a file into this OBJLoader's {@link Viewer}.
39
39
  *
40
40
  * @param {LoadOBJModel} params Loading parameters.
41
- * @returns {Entity} Entity representing the model, which will have {@link Entity.isModel} set ````true```` and will be registered by {@link Entity.id} in {@link Scene.models}
41
+ * @returns {Node} An {@link Entity} that is a scene graph node that can have child Nodes and {@link Mesh}es.
42
42
  */
43
- load(params: LoadOBJModel): Entity;
43
+ load(params: LoadOBJModel): Node;
44
44
  }