@xeokit/xeokit-sdk 2.6.92 → 2.6.93
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/dist/xeokit-sdk.cjs.js +13074 -44661
- package/dist/xeokit-sdk.es.js +13075 -44660
- package/dist/xeokit-sdk.es5.js +1403 -3501
- package/dist/xeokit-sdk.min.cjs.js +8 -8
- package/dist/xeokit-sdk.min.es.js +8 -8
- package/dist/xeokit-sdk.min.es5.js +7 -7
- package/package.json +1 -1
- package/src/viewer/Viewer.js +55 -103
- package/src/viewer/scene/canvas/Canvas.js +3 -43
- package/src/viewer/scene/geometry/ReadableGeometry.js +0 -25
- package/src/viewer/scene/lights/CubeTexture.js +0 -13
- package/src/viewer/scene/lights/DirLight.js +2 -1
- package/src/viewer/scene/lights/PointLight.js +2 -1
- package/src/viewer/scene/materials/Texture.js +0 -9
- package/src/viewer/scene/math/rtcCoords.js +1 -38
- package/src/viewer/scene/mesh/Mesh.js +454 -212
- package/src/viewer/scene/mesh/draw/DrawShaderSource.js +305 -1504
- package/src/viewer/scene/mesh/draw/LambertShaderSource.js +35 -0
- package/src/viewer/scene/mesh/emphasis/EmphasisShaderSource.js +34 -0
- package/src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js +9 -158
- package/src/viewer/scene/mesh/pick/PickMeshShaderSource.js +21 -151
- package/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js +12 -124
- package/src/viewer/scene/mesh/shadow/ShadowShaderSource.js +22 -97
- package/src/viewer/scene/model/SceneModel.js +248 -852
- package/src/viewer/scene/model/SceneModelEntity.js +4 -4
- package/src/viewer/scene/model/SceneModelMesh.js +3 -3
- package/src/viewer/scene/model/layer/DTXLayer.js +940 -0
- package/src/viewer/scene/model/layer/Layer.js +788 -0
- package/src/viewer/scene/model/layer/VBOLayer.js +1019 -0
- package/src/viewer/scene/model/layer/programs/ColorProgram.js +35 -0
- package/src/viewer/scene/model/layer/programs/ColorTextureProgram.js +46 -0
- package/src/viewer/scene/model/layer/programs/DepthProgram.js +11 -0
- package/src/viewer/scene/model/layer/programs/EdgesProgram.js +12 -0
- package/src/viewer/scene/model/layer/programs/FlatColorProgram.js +24 -0
- package/src/viewer/scene/model/layer/programs/OcclusionProgram.js +12 -0
- package/src/viewer/scene/model/layer/programs/PBRProgram.js +180 -0
- package/src/viewer/scene/model/layer/programs/PickDepthProgram.js +30 -0
- package/src/viewer/scene/model/layer/programs/PickMeshProgram.js +12 -0
- package/src/viewer/scene/model/layer/programs/PickNormalsProgram.js +18 -0
- package/src/viewer/scene/model/layer/programs/ShadowProgram.js +23 -0
- package/src/viewer/scene/model/layer/programs/SilhouetteProgram.js +15 -0
- package/src/viewer/scene/model/layer/programs/SnapProgram.js +29 -0
- package/src/viewer/scene/scene/Scene.js +21 -38
- package/src/viewer/scene/webgl/ArrayBuf.js +5 -20
- package/src/viewer/scene/webgl/FrameContext.js +14 -86
- package/src/viewer/scene/webgl/RenderBuffer.js +62 -262
- package/src/viewer/scene/webgl/Renderer.js +880 -843
- package/src/viewer/scene/webgl/WebGLRenderer.js +612 -0
- package/src/viewer/scene/webgl/occlusion/OcclusionLayer.js +60 -132
- package/src/viewer/scene/webgl/occlusion/OcclusionTester.js +167 -328
- package/src/viewer/scene/mesh/draw/DrawRenderer.js +0 -998
- package/src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js +0 -259
- package/src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js +0 -160
- package/src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js +0 -286
- package/src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js +0 -263
- package/src/viewer/scene/mesh/occlusion/OcclusionRenderer.js +0 -221
- package/src/viewer/scene/mesh/pick/PickMeshRenderer.js +0 -223
- package/src/viewer/scene/mesh/pick/PickTriangleRenderer.js +0 -200
- package/src/viewer/scene/mesh/shadow/ShadowRenderer.js +0 -214
- package/src/viewer/scene/model/RENDER_PASSES.js +0 -34
- package/src/viewer/scene/model/dtx/BindableDataTexture.js +0 -31
- package/src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js +0 -27
- package/src/viewer/scene/model/dtx/lines/DTXLinesLayer.js +0 -897
- package/src/viewer/scene/model/dtx/lines/DTXLinesState.js +0 -46
- package/src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js +0 -411
- package/src/viewer/scene/model/dtx/lines/dataTextureRamStats.js +0 -49
- package/src/viewer/scene/model/dtx/lines/rebucketPositions.js +0 -208
- package/src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js +0 -389
- package/src/viewer/scene/model/dtx/lines/renderers/DTXLinesRenderers.js +0 -65
- package/src/viewer/scene/model/dtx/triangles/DTXTrianglesLayer.js +0 -1399
- package/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js +0 -46
- package/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js +0 -250
- package/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js +0 -518
- package/src/viewer/scene/model/dtx/triangles/lib/dataTextureRamStats.js +0 -54
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js +0 -639
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js +0 -464
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js +0 -423
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js +0 -431
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js +0 -345
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js +0 -436
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js +0 -466
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js +0 -437
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js +0 -460
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js +0 -437
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js +0 -307
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js +0 -472
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js +0 -474
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js +0 -435
- package/src/viewer/scene/model/vbo/ScratchMemory.js +0 -63
- package/src/viewer/scene/model/vbo/VBORenderer.js +0 -664
- package/src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js +0 -704
- package/src/viewer/scene/model/vbo/batching/lines/lib/VBOBatchingLinesBuffer.js +0 -19
- package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js +0 -318
- package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesColorRenderer.js +0 -114
- package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js +0 -99
- package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSilhouetteRenderer.js +0 -124
- package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js +0 -313
- package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js +0 -311
- package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOSceneModelLineBatchingRenderer.js +0 -24
- package/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js +0 -688
- package/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsRenderer.js +0 -24
- package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsColorRenderer.js +0 -168
- package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsOcclusionRenderer.js +0 -136
- package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickDepthRenderer.js +0 -156
- package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickMeshRenderer.js +0 -148
- package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js +0 -144
- package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsShadowRenderer.js +0 -107
- package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSilhouetteRenderer.js +0 -146
- package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js +0 -315
- package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js +0 -305
- package/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js +0 -24
- package/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js +0 -1346
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesColorRenderer.js +0 -131
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesEmphasisRenderer.js +0 -135
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesRenderer.js +0 -12
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js +0 -403
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesBatchingRenderer.js +0 -35
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorRenderer.js +0 -252
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js +0 -294
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesDepthRenderer.js +0 -115
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesFlatColorRenderer.js +0 -246
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesNormalsRenderer.js +0 -139
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesOcclusionRenderer.js +0 -125
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPBRRenderer.js +0 -561
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickDepthRenderer.js +0 -144
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickMeshRenderer.js +0 -130
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsFlatRenderer.js +0 -121
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsRenderer.js +0 -131
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesShadowRenderer.js +0 -107
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSilhouetteRenderer.js +0 -144
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js +0 -313
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js +0 -312
- package/src/viewer/scene/model/vbo/float16.js +0 -760
- package/src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js +0 -711
- package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesColorRenderer.js +0 -148
- package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderer.js +0 -26
- package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js +0 -139
- package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSilhouetteRenderer.js +0 -127
- package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js +0 -308
- package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js +0 -299
- package/src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js +0 -733
- package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsColorRenderer.js +0 -174
- package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsDepthRenderer.js +0 -156
- package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsOcclusionRenderer.js +0 -149
- package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickDepthRenderer.js +0 -170
- package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickMeshRenderer.js +0 -152
- package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderer.js +0 -26
- package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js +0 -174
- package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsShadowRenderer.js +0 -119
- package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSilhouetteRenderer.js +0 -154
- package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js +0 -307
- package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js +0 -293
- package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingTrianglesRenderer.js +0 -150
- package/src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js +0 -1289
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesColorRenderer.js +0 -135
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesEmphasisRenderer.js +0 -137
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesRenderer.js +0 -12
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js +0 -403
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorRenderer.js +0 -267
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js +0 -299
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesDepthRenderer.js +0 -126
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatColorRenderer.js +0 -255
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatNormalsRenderer.js +0 -130
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js +0 -32
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesNormalsRenderer.js +0 -138
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesOcclusionRenderer.js +0 -128
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPBRRenderer.js +0 -561
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickDepthRenderer.js +0 -149
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickMeshRenderer.js +0 -136
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsFlatRenderer.js +0 -130
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsRenderer.js +0 -145
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesShadowRenderer.js +0 -113
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSilhouetteRenderer.js +0 -148
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js +0 -319
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js +0 -310
- package/src/viewer/scene/webgl/Attribute.js +0 -23
- package/src/viewer/scene/webgl/Program.js +0 -181
- package/src/viewer/scene/webgl/RenderBufferManager.js +0 -34
- package/src/viewer/scene/webgl/Sampler.js +0 -18
- package/src/viewer/scene/webgl/Shader.js +0 -49
- package/src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js +0 -324
- package/src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js +0 -384
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xeokit/xeokit-sdk",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.93",
|
|
4
4
|
"description": "3D BIM IFC Viewer SDK for AEC engineering applications. Open Source JavaScript Toolkit based on pure WebGL for top performance, real-world coordinates and full double precision",
|
|
5
5
|
"module": "./dist/xeokit-sdk.es.js",
|
|
6
6
|
"main": "./dist/xeokit-sdk.cjs.js",
|
package/src/viewer/Viewer.js
CHANGED
|
@@ -311,11 +311,55 @@ class Viewer {
|
|
|
311
311
|
* Exit snapshot mode using {@link Viewer#endSnapshot}.
|
|
312
312
|
*/
|
|
313
313
|
beginSnapshot() {
|
|
314
|
-
if (this._snapshotBegun) {
|
|
315
|
-
|
|
314
|
+
if (! this._snapshotBegun) {
|
|
315
|
+
this.scene._renderer.snapshot.beginSnapshot();
|
|
316
|
+
this._snapshotBegun = true;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
_renderSnapshotToCanvas(params) {
|
|
321
|
+
const resize = (params.width !== undefined && params.height !== undefined);
|
|
322
|
+
const canvas = this.scene.canvas.canvas;
|
|
323
|
+
const saveWidth = canvas.clientWidth;
|
|
324
|
+
const saveHeight = canvas.clientHeight;
|
|
325
|
+
const excludeGizmos = !params.includeGizmos;
|
|
326
|
+
|
|
327
|
+
if (resize) {
|
|
328
|
+
canvas.width = params.width ? Math.floor(params.width) : canvas.width;
|
|
329
|
+
canvas.height = params.height ? Math.floor(params.height) : canvas.height;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
this.beginSnapshot();
|
|
333
|
+
|
|
334
|
+
if (excludeGizmos) {
|
|
335
|
+
this.sendToPlugins("snapshotStarting"); // Tells plugins to hide things that shouldn't be in snapshot
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
const snapshotCanvas = this.scene._renderer.snapshot.renderSnapshotToCanvas();
|
|
339
|
+
|
|
340
|
+
if (resize) {
|
|
341
|
+
canvas.width = saveWidth;
|
|
342
|
+
canvas.height = saveHeight;
|
|
343
|
+
this.scene.glRedraw();
|
|
316
344
|
}
|
|
317
|
-
|
|
318
|
-
|
|
345
|
+
|
|
346
|
+
return {
|
|
347
|
+
canvas: snapshotCanvas,
|
|
348
|
+
toDataURL: () => {
|
|
349
|
+
if (excludeGizmos) {
|
|
350
|
+
this.sendToPlugins("snapshotFinished");
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
this.endSnapshot();
|
|
354
|
+
|
|
355
|
+
let format = params.format || "png";
|
|
356
|
+
if (format !== "jpeg" && format !== "png" && format !== "bmp") {
|
|
357
|
+
console.error("Unsupported image format: '" + format + "' - supported types are 'jpeg', 'bmp' and 'png' - defaulting to 'png'");
|
|
358
|
+
format = "png";
|
|
359
|
+
}
|
|
360
|
+
return snapshotCanvas.toDataURL(`image/${format}`);
|
|
361
|
+
}
|
|
362
|
+
};
|
|
319
363
|
}
|
|
320
364
|
|
|
321
365
|
/**
|
|
@@ -338,54 +382,9 @@ class Viewer {
|
|
|
338
382
|
* @returns {String} String-encoded image data URI.
|
|
339
383
|
*/
|
|
340
384
|
getSnapshot(params = {}) {
|
|
341
|
-
|
|
342
|
-
const needFinishSnapshot = (!this._snapshotBegun);
|
|
343
|
-
const resize = (params.width !== undefined && params.height !== undefined);
|
|
344
|
-
const canvas = this.scene.canvas.canvas;
|
|
345
|
-
const saveWidth = canvas.clientWidth;
|
|
346
|
-
const saveHeight = canvas.clientHeight;
|
|
347
|
-
const width = params.width ? Math.floor(params.width) : canvas.width;
|
|
348
|
-
const height = params.height ? Math.floor(params.height) : canvas.height;
|
|
349
|
-
|
|
350
|
-
if (resize) {
|
|
351
|
-
canvas.width = width;
|
|
352
|
-
canvas.height = height;
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
if (!this._snapshotBegun) {
|
|
356
|
-
this.beginSnapshot({
|
|
357
|
-
width,
|
|
358
|
-
height
|
|
359
|
-
});
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
if (!params.includeGizmos) {
|
|
363
|
-
this.sendToPlugins("snapshotStarting"); // Tells plugins to hide things that shouldn't be in snapshot
|
|
364
|
-
}
|
|
365
|
-
|
|
366
385
|
// firing "rendering" is necessary to trigger DTX{Lines,Triangles}Layer::_uploadDeferredFlags
|
|
367
386
|
this.scene.fire("rendering", { }, true);
|
|
368
|
-
|
|
369
|
-
this.scene._renderer.renderSnapshot();
|
|
370
|
-
|
|
371
|
-
const imageDataURI = this.scene._renderer.readSnapshot(params);
|
|
372
|
-
|
|
373
|
-
if (resize) {
|
|
374
|
-
canvas.width = saveWidth;
|
|
375
|
-
canvas.height = saveHeight;
|
|
376
|
-
|
|
377
|
-
this.scene.glRedraw();
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
if (!params.includeGizmos) {
|
|
381
|
-
this.sendToPlugins("snapshotFinished");
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
if (needFinishSnapshot) {
|
|
385
|
-
this.endSnapshot();
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
return imageDataURI;
|
|
387
|
+
return this._renderSnapshotToCanvas(params).toDataURL();
|
|
389
388
|
}
|
|
390
389
|
|
|
391
390
|
/**
|
|
@@ -428,36 +427,7 @@ class Viewer {
|
|
|
428
427
|
// right amount of pixels, for a sharper image.
|
|
429
428
|
|
|
430
429
|
|
|
431
|
-
const
|
|
432
|
-
const resize = (params.width !== undefined && params.height !== undefined);
|
|
433
|
-
const canvas = this.scene.canvas.canvas;
|
|
434
|
-
const saveWidth = canvas.clientWidth;
|
|
435
|
-
const saveHeight = canvas.clientHeight;
|
|
436
|
-
const snapshotWidth = params.width ? Math.floor(params.width) : canvas.width;
|
|
437
|
-
const snapshotHeight = params.height ? Math.floor(params.height) : canvas.height;
|
|
438
|
-
|
|
439
|
-
if (resize) {
|
|
440
|
-
canvas.width = snapshotWidth;
|
|
441
|
-
canvas.height = snapshotHeight;
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
if (!this._snapshotBegun) {
|
|
445
|
-
this.beginSnapshot();
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
if (!params.includeGizmos) {
|
|
449
|
-
this.sendToPlugins("snapshotStarting"); // Tells plugins to hide things that shouldn't be in snapshot
|
|
450
|
-
}
|
|
451
|
-
|
|
452
|
-
this.scene._renderer.renderSnapshot();
|
|
453
|
-
|
|
454
|
-
const snapshotCanvas = this.scene._renderer.readSnapshotAsCanvas();
|
|
455
|
-
|
|
456
|
-
if (resize) {
|
|
457
|
-
canvas.width = saveWidth;
|
|
458
|
-
canvas.height = saveHeight;
|
|
459
|
-
this.scene.glRedraw();
|
|
460
|
-
}
|
|
430
|
+
const snapshotResult = this._renderSnapshotToCanvas(params);
|
|
461
431
|
|
|
462
432
|
const pluginToCapture = {};
|
|
463
433
|
const pluginContainerElements = [];
|
|
@@ -481,6 +451,7 @@ class Viewer {
|
|
|
481
451
|
document.head.appendChild(style);
|
|
482
452
|
style.sheet?.insertRule('body > div:last-child img { display: inline-block; }');
|
|
483
453
|
|
|
454
|
+
const snapshotCanvas = snapshotResult.canvas;
|
|
484
455
|
for (let i = 0, len = pluginContainerElements.length; i < len; i++) {
|
|
485
456
|
const containerElement = pluginContainerElements[i];
|
|
486
457
|
await html2canvas(containerElement, {
|
|
@@ -496,24 +467,7 @@ class Viewer {
|
|
|
496
467
|
|
|
497
468
|
style.remove();
|
|
498
469
|
|
|
499
|
-
|
|
500
|
-
this.sendToPlugins("snapshotFinished");
|
|
501
|
-
}
|
|
502
|
-
if (needFinishSnapshot) {
|
|
503
|
-
this.endSnapshot();
|
|
504
|
-
}
|
|
505
|
-
let format = params.format || "png";
|
|
506
|
-
if (format !== "jpeg" && format !== "png" && format !== "bmp") {
|
|
507
|
-
console.error("Unsupported image format: '" + format + "' - supported types are 'jpeg', 'bmp' and 'png' - defaulting to 'png'");
|
|
508
|
-
format = "png";
|
|
509
|
-
}
|
|
510
|
-
if (!params.includeGizmos) {
|
|
511
|
-
this.sendToPlugins("snapshotFinished");
|
|
512
|
-
}
|
|
513
|
-
if (needFinishSnapshot) {
|
|
514
|
-
this.endSnapshot();
|
|
515
|
-
}
|
|
516
|
-
return snapshotCanvas.toDataURL(`image/${format}`);
|
|
470
|
+
return snapshotResult.toDataURL();
|
|
517
471
|
}
|
|
518
472
|
|
|
519
473
|
/**
|
|
@@ -523,12 +477,10 @@ class Viewer {
|
|
|
523
477
|
*
|
|
524
478
|
*/
|
|
525
479
|
endSnapshot() {
|
|
526
|
-
if (
|
|
527
|
-
|
|
480
|
+
if (this._snapshotBegun) {
|
|
481
|
+
this.scene._renderer.snapshot.endSnapshot();
|
|
482
|
+
this._snapshotBegun = false;
|
|
528
483
|
}
|
|
529
|
-
this.scene._renderer.endSnapshot();
|
|
530
|
-
this.scene._renderer.render({force: true});
|
|
531
|
-
this._snapshotBegun = false;
|
|
532
484
|
}
|
|
533
485
|
|
|
534
486
|
/** Destroys this Viewer.
|
|
@@ -118,38 +118,8 @@ class Canvas extends Component {
|
|
|
118
118
|
|
|
119
119
|
this._initWebGL(cfg);
|
|
120
120
|
|
|
121
|
-
// Bind context loss and recovery handlers
|
|
122
|
-
|
|
123
121
|
const self = this;
|
|
124
122
|
|
|
125
|
-
this.canvas.addEventListener("webglcontextlost", this._webglcontextlostListener = function (event) {
|
|
126
|
-
console.time("webglcontextrestored");
|
|
127
|
-
self.scene._webglContextLost();
|
|
128
|
-
/**
|
|
129
|
-
* Fired whenever the WebGL context has been lost
|
|
130
|
-
* @event webglcontextlost
|
|
131
|
-
*/
|
|
132
|
-
self.fire("webglcontextlost");
|
|
133
|
-
event.preventDefault();
|
|
134
|
-
},
|
|
135
|
-
false);
|
|
136
|
-
|
|
137
|
-
this.canvas.addEventListener("webglcontextrestored", this._webglcontextrestoredListener = function (event) {
|
|
138
|
-
self._initWebGL();
|
|
139
|
-
if (self.gl) {
|
|
140
|
-
self.scene._webglContextRestored(self.gl);
|
|
141
|
-
/**
|
|
142
|
-
* Fired whenever the WebGL context has been restored again after having previously being lost
|
|
143
|
-
* @event webglContextRestored
|
|
144
|
-
* @param value The WebGL context object
|
|
145
|
-
*/
|
|
146
|
-
self.fire("webglcontextrestored", self.gl);
|
|
147
|
-
event.preventDefault();
|
|
148
|
-
}
|
|
149
|
-
console.timeEnd("webglcontextrestored");
|
|
150
|
-
},
|
|
151
|
-
false);
|
|
152
|
-
|
|
153
123
|
// Attach to resize events on the canvas
|
|
154
124
|
let dirtyBoundary = true; // make sure we publish the 1st boundary event
|
|
155
125
|
|
|
@@ -448,12 +418,9 @@ class Canvas extends Component {
|
|
|
448
418
|
*
|
|
449
419
|
* ````JavaScript
|
|
450
420
|
*
|
|
451
|
-
* // Ignore transparent pixels (default is false)
|
|
452
|
-
* var opaqueOnly = true;
|
|
453
|
-
*
|
|
454
421
|
* var colors = new Float32Array(8);
|
|
455
422
|
*
|
|
456
|
-
* viewer.scene.canvas.readPixels([ 100, 22, 12, 33 ], colors, 2
|
|
423
|
+
* viewer.scene.canvas.readPixels([ 100, 22, 12, 33 ], colors, 2);
|
|
457
424
|
* ````
|
|
458
425
|
*
|
|
459
426
|
* Then the r,g,b components of the colors will be set to the colors at those pixels.
|
|
@@ -461,10 +428,9 @@ class Canvas extends Component {
|
|
|
461
428
|
* @param {Number[]} pixels
|
|
462
429
|
* @param {Number[]} colors
|
|
463
430
|
* @param {Number} size
|
|
464
|
-
* @param {Boolean} opaqueOnly
|
|
465
431
|
*/
|
|
466
|
-
readPixels(pixels, colors, size
|
|
467
|
-
return this.scene._renderer.readPixels(pixels, colors, size
|
|
432
|
+
readPixels(pixels, colors, size) {
|
|
433
|
+
return this.scene._renderer.snapshot.readPixels(pixels, colors, size);
|
|
468
434
|
}
|
|
469
435
|
|
|
470
436
|
/**
|
|
@@ -479,13 +445,7 @@ class Canvas extends Component {
|
|
|
479
445
|
destroy() {
|
|
480
446
|
this.scene.off(this._tick);
|
|
481
447
|
this._spinner._destroy();
|
|
482
|
-
// Memory leak avoidance
|
|
483
|
-
this.canvas.removeEventListener("webglcontextlost", this._webglcontextlostListener);
|
|
484
|
-
this.canvas.removeEventListener("webglcontextrestored", this._webglcontextrestoredListener);
|
|
485
|
-
|
|
486
|
-
// this.gl.getExtension("WEBGL_lose_context").loseContext(); // disabled because of XCD-306 and XEOK-295
|
|
487
448
|
this.gl = null;
|
|
488
|
-
|
|
489
449
|
super.destroy();
|
|
490
450
|
}
|
|
491
451
|
}
|
|
@@ -224,12 +224,6 @@ class ReadableGeometry extends Geometry {
|
|
|
224
224
|
|
|
225
225
|
memoryStats.meshes++;
|
|
226
226
|
|
|
227
|
-
this._buildVBOs();
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
_buildVBOs() {
|
|
231
|
-
const state = this._state;
|
|
232
|
-
const gl = this.scene.canvas.gl;
|
|
233
227
|
if (state.indices) {
|
|
234
228
|
state.indicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, state.indices, state.indices.length, 1, gl.STATIC_DRAW);
|
|
235
229
|
memoryStats.indices += state.indicesBuf.numItems;
|
|
@@ -338,25 +332,6 @@ class ReadableGeometry extends Geometry {
|
|
|
338
332
|
// memoryStats.colors += this._pickVertexColorsBuf.numItems;
|
|
339
333
|
}
|
|
340
334
|
|
|
341
|
-
_webglContextLost() {
|
|
342
|
-
if (this._sceneVertexBufs) {
|
|
343
|
-
this._sceneVertexBufs.webglContextLost();
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
_webglContextRestored() {
|
|
348
|
-
if (this._sceneVertexBufs) {
|
|
349
|
-
this._sceneVertexBufs.webglContextRestored();
|
|
350
|
-
}
|
|
351
|
-
this._buildVBOs();
|
|
352
|
-
this._edgeIndicesBuf = null;
|
|
353
|
-
this._pickVertexPositionsBuf = null;
|
|
354
|
-
this._pickTrianglePositionsBuf = null;
|
|
355
|
-
this._pickTriangleColorsBuf = null;
|
|
356
|
-
this._pickVertexPositionsBuf = null;
|
|
357
|
-
this._pickVertexColorsBuf = null;
|
|
358
|
-
}
|
|
359
|
-
|
|
360
335
|
/**
|
|
361
336
|
* Gets the Geometry's primitive type.
|
|
362
337
|
|
|
@@ -89,19 +89,6 @@ class CubeTexture extends Component {
|
|
|
89
89
|
return value;
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
-
_webglContextRestored() {
|
|
93
|
-
const gl = this.scene.canvas.gl;
|
|
94
|
-
this._state.texture = null;
|
|
95
|
-
// if (this._images.length > 0) {
|
|
96
|
-
// this._state.texture = new xeokit.renderer.Texture2D(gl, gl.TEXTURE_CUBE_MAP);
|
|
97
|
-
// this._state.texture.setImage(this._images, this._state);
|
|
98
|
-
// this._state.texture.setProps(this._state);
|
|
99
|
-
// } else
|
|
100
|
-
if (this._src) {
|
|
101
|
-
this._loadSrc(this._src);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
92
|
_loadSrc(src) {
|
|
106
93
|
const self = this;
|
|
107
94
|
const gl = this.scene.canvas.gl;
|
|
@@ -177,7 +177,8 @@ class DirLight extends Light {
|
|
|
177
177
|
|
|
178
178
|
getShadowRenderBuf: () => {
|
|
179
179
|
if (!this._shadowRenderBuf) {
|
|
180
|
-
this._shadowRenderBuf = new RenderBuffer(this.scene.canvas.
|
|
180
|
+
this._shadowRenderBuf = new RenderBuffer(this.scene.canvas.gl); // Super old mobile devices have a limit of 1024x1024 textures
|
|
181
|
+
this._shadowRenderBuf.setSize([1024, 1024]);
|
|
181
182
|
}
|
|
182
183
|
return this._shadowRenderBuf;
|
|
183
184
|
}
|
|
@@ -181,7 +181,8 @@ class PointLight extends Light {
|
|
|
181
181
|
|
|
182
182
|
getShadowRenderBuf: () => {
|
|
183
183
|
if (!self._shadowRenderBuf) {
|
|
184
|
-
self._shadowRenderBuf = new RenderBuffer(self.scene.canvas.
|
|
184
|
+
self._shadowRenderBuf = new RenderBuffer(self.scene.canvas.gl); // Super old mobile devices have a limit of 1024x1024 textures
|
|
185
|
+
self._shadowRenderBuf.setSize([1024, 1024]);
|
|
185
186
|
}
|
|
186
187
|
return self._shadowRenderBuf;
|
|
187
188
|
}
|
|
@@ -212,15 +212,6 @@ class Texture extends Component {
|
|
|
212
212
|
return value;
|
|
213
213
|
}
|
|
214
214
|
|
|
215
|
-
_webglContextRestored() {
|
|
216
|
-
this._state.texture = new Texture2D({gl: this.scene.canvas.gl});
|
|
217
|
-
if (this._image) {
|
|
218
|
-
this.image = this._image;
|
|
219
|
-
} else if (this._src) {
|
|
220
|
-
this.src = this._src;
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
|
|
224
215
|
_update() {
|
|
225
216
|
const state = this._state;
|
|
226
217
|
if (this._matrixDirty) {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import {math} from './math.js';
|
|
2
2
|
|
|
3
3
|
const tempVec3a = math.vec3();
|
|
4
|
-
const tempVec4 = math.vec4();
|
|
5
4
|
|
|
6
5
|
/**
|
|
7
6
|
* Given a view matrix and a relative-to-center (RTC) coordinate origin, returns a view matrix
|
|
@@ -104,40 +103,4 @@ function worldToRTCPositions(worldPositions, rtcPositions, rtcCenter, cellSize =
|
|
|
104
103
|
return rtcNeeded;
|
|
105
104
|
}
|
|
106
105
|
|
|
107
|
-
|
|
108
|
-
* Converts an RTC 3D position to World-space.
|
|
109
|
-
*
|
|
110
|
-
* @private
|
|
111
|
-
* @param {Float64Array} rtcCenter Double-precision relative-to-center (RTC) center pos.
|
|
112
|
-
* @param {Float32Array} rtcPos Single-precision offset fom that center.
|
|
113
|
-
* @param {Float64Array} worldPos The World-space position.
|
|
114
|
-
*/
|
|
115
|
-
function rtcToWorldPos(rtcCenter, rtcPos, worldPos) {
|
|
116
|
-
worldPos[0] = rtcCenter[0] + rtcPos[0];
|
|
117
|
-
worldPos[1] = rtcCenter[1] + rtcPos[1];
|
|
118
|
-
worldPos[2] = rtcCenter[2] + rtcPos[2];
|
|
119
|
-
return worldPos;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Given a 3D plane defined by distance from origin and direction, and an RTC center position,
|
|
124
|
-
* return a plane position that is relative to the RTC center.
|
|
125
|
-
*
|
|
126
|
-
* @private
|
|
127
|
-
* @param dist
|
|
128
|
-
* @param dir
|
|
129
|
-
* @param rtcCenter
|
|
130
|
-
* @param rtcPlanePos
|
|
131
|
-
* @returns {*}
|
|
132
|
-
*/
|
|
133
|
-
function getPlaneRTCPos(dist, dir, rtcOrigin, rtcPlanePos, originMatrix) {
|
|
134
|
-
const rtcCenter = (originMatrix
|
|
135
|
-
? (tempVec4.set(rtcOrigin, 0), tempVec4[3] = 1, math.mulMat4v4(originMatrix, tempVec4, tempVec4))
|
|
136
|
-
: rtcOrigin);
|
|
137
|
-
const rtcCenterToPlaneDist = math.dotVec3(dir, rtcCenter) + dist;
|
|
138
|
-
const dirNormalized = math.normalizeVec3(dir, tempVec3a);
|
|
139
|
-
math.mulVec3Scalar(dirNormalized, -rtcCenterToPlaneDist, rtcPlanePos);
|
|
140
|
-
return rtcPlanePos;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
export {createRTCViewMat, worldToRTCPos, worldToRTCPositions, rtcToWorldPos, getPlaneRTCPos};
|
|
106
|
+
export {createRTCViewMat, worldToRTCPos, worldToRTCPositions};
|