@combeenation/3d-viewer 18.0.0 → 18.1.0-beta2
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/lib-cjs/buildinfo.json +1 -1
- package/dist/lib-cjs/commonjs.tsconfig.tsbuildinfo +1 -1
- package/dist/lib-cjs/internal/screenshot-helper.d.ts +14 -0
- package/dist/lib-cjs/internal/screenshot-helper.js +100 -0
- package/dist/lib-cjs/internal/screenshot-helper.js.map +1 -0
- package/dist/lib-cjs/manager/camera-manager.d.ts +9 -1
- package/dist/lib-cjs/manager/camera-manager.js +18 -18
- package/dist/lib-cjs/manager/camera-manager.js.map +1 -1
- package/dist/lib-cjs/manager/html-anchor-manager.d.ts +1 -1
- package/dist/lib-cjs/manager/html-anchor-manager.js +36 -10
- package/dist/lib-cjs/manager/html-anchor-manager.js.map +1 -1
- package/package.json +11 -11
- package/src/internal/screenshot-helper.ts +102 -0
- package/src/manager/camera-manager.ts +26 -25
- package/src/manager/html-anchor-manager.ts +44 -8
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ScreenshotSize } from '../manager/camera-manager';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a new canvas element from a screenshot image string.\
|
|
4
|
+
* Optionally adds a secondary canvas element, which is coming from the HTML anchor screenshot in our case.
|
|
5
|
+
*
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export declare function createScreenshotCanvas(imageStr3d: string, screenshotSize: ScreenshotSize, screenshotHtmlCanvas?: HTMLCanvasElement): Promise<HTMLCanvasElement>;
|
|
9
|
+
/**
|
|
10
|
+
* Returns a new canvas element, which has all bounding transparent pixels removed.
|
|
11
|
+
*
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
export declare function trimCanvas(canvas: HTMLCanvasElement): HTMLCanvasElement;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.trimCanvas = exports.createScreenshotCanvas = void 0;
|
|
13
|
+
/**
|
|
14
|
+
* Creates a new canvas element from a screenshot image string.\
|
|
15
|
+
* Optionally adds a secondary canvas element, which is coming from the HTML anchor screenshot in our case.
|
|
16
|
+
*
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
function createScreenshotCanvas(imageStr3d, screenshotSize, screenshotHtmlCanvas) {
|
|
20
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
21
|
+
// convert the main screenshot into an image, so that it can be drawn onto a canvas as well
|
|
22
|
+
const screenshot3dImg = new Image();
|
|
23
|
+
screenshot3dImg.src = imageStr3d;
|
|
24
|
+
yield new Promise(resolve => {
|
|
25
|
+
screenshot3dImg.onload = resolve;
|
|
26
|
+
});
|
|
27
|
+
const screenshotCombinedCanvas = document.createElement('canvas');
|
|
28
|
+
screenshotCombinedCanvas.width = screenshotSize.imageWidth;
|
|
29
|
+
screenshotCombinedCanvas.height = screenshotSize.imageHeight;
|
|
30
|
+
// draw main and html screenshot on a new canvas and get the base64 string from it
|
|
31
|
+
const context = screenshotCombinedCanvas.getContext('2d');
|
|
32
|
+
context.drawImage(screenshot3dImg, 0, 0, screenshotSize.imageWidth, screenshotSize.imageHeight);
|
|
33
|
+
if (screenshotHtmlCanvas) {
|
|
34
|
+
context.drawImage(screenshotHtmlCanvas, 0, 0, screenshotSize.imageWidth, screenshotSize.imageHeight);
|
|
35
|
+
}
|
|
36
|
+
return screenshotCombinedCanvas;
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
exports.createScreenshotCanvas = createScreenshotCanvas;
|
|
40
|
+
/**
|
|
41
|
+
* Returns a new canvas element, which has all bounding transparent pixels removed.
|
|
42
|
+
*
|
|
43
|
+
* @internal
|
|
44
|
+
*/
|
|
45
|
+
function trimCanvas(canvas) {
|
|
46
|
+
const ctx = canvas.getContext('2d');
|
|
47
|
+
const copy = document.createElement('canvas').getContext('2d');
|
|
48
|
+
if (!ctx || !copy) {
|
|
49
|
+
console.warn(`Couldn't trim canvas as canvas context is not available`);
|
|
50
|
+
return canvas;
|
|
51
|
+
}
|
|
52
|
+
// `pixels` holds a one-dimensional array with RGBA data
|
|
53
|
+
// [r1, g1, b1, a1, r2, g2, ...]
|
|
54
|
+
const pixels = ctx.getImageData(0, 0, canvas.width, canvas.height);
|
|
55
|
+
const l = pixels.data.length;
|
|
56
|
+
if (!l) {
|
|
57
|
+
console.warn(`Couldn't trim canvas as no image data is available`);
|
|
58
|
+
return canvas;
|
|
59
|
+
}
|
|
60
|
+
const boundingBox = {
|
|
61
|
+
top: -1,
|
|
62
|
+
left: -1,
|
|
63
|
+
right: -1,
|
|
64
|
+
bottom: -1,
|
|
65
|
+
};
|
|
66
|
+
let i, x, y;
|
|
67
|
+
for (i = 0; i < l; i += 4) {
|
|
68
|
+
// if the "a" value is > 0 it means that the pixel is NOT transparent and therefore should be part of the final
|
|
69
|
+
// image
|
|
70
|
+
if (pixels.data[i + 3] !== 0) {
|
|
71
|
+
x = (i / 4) % canvas.width;
|
|
72
|
+
y = ~~(i / 4 / canvas.width);
|
|
73
|
+
// enlarge bounding box if required
|
|
74
|
+
if (boundingBox.left < 0 || x < boundingBox.left) {
|
|
75
|
+
boundingBox.left = x;
|
|
76
|
+
}
|
|
77
|
+
if (boundingBox.right < 0 || x > boundingBox.right) {
|
|
78
|
+
boundingBox.right = x;
|
|
79
|
+
}
|
|
80
|
+
// top starts from y=0
|
|
81
|
+
if (boundingBox.top < 0 || y < boundingBox.top) {
|
|
82
|
+
boundingBox.top = y;
|
|
83
|
+
}
|
|
84
|
+
if (boundingBox.bottom < 0 || y > boundingBox.bottom) {
|
|
85
|
+
boundingBox.bottom = y;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// calculate the height and width of the content
|
|
90
|
+
const trimHeight = boundingBox.bottom - boundingBox.top;
|
|
91
|
+
const trimWidth = boundingBox.right - boundingBox.left;
|
|
92
|
+
const trimmed = ctx.getImageData(boundingBox.left, boundingBox.top, trimWidth, trimHeight);
|
|
93
|
+
// apply trimmed data to canvas
|
|
94
|
+
copy.canvas.width = trimWidth;
|
|
95
|
+
copy.canvas.height = trimHeight;
|
|
96
|
+
copy.putImageData(trimmed, 0, 0);
|
|
97
|
+
return copy.canvas;
|
|
98
|
+
}
|
|
99
|
+
exports.trimCanvas = trimCanvas;
|
|
100
|
+
//# sourceMappingURL=screenshot-helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenshot-helper.js","sourceRoot":"","sources":["../../../src/internal/screenshot-helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,6 +52,11 @@ export declare type ScreenshotSettings = {
|
|
|
52
52
|
* Excludes ALL html anchor groups if set to `true`.
|
|
53
53
|
*/
|
|
54
54
|
excludeHtmlAnchorGroups?: string[] | true;
|
|
55
|
+
/**
|
|
56
|
+
* Removes all bounding transparent pixels, so that final image size exactly fits the scene content.\
|
|
57
|
+
* As a result the final image size might be smaller than the values defined on the `width` and `height` input.
|
|
58
|
+
*/
|
|
59
|
+
cropTransparentArea?: boolean;
|
|
55
60
|
/**
|
|
56
61
|
* "MIME type" of the returned screenshot image, defaults to `image/png`
|
|
57
62
|
*
|
|
@@ -63,7 +68,10 @@ export declare type ScreenshotSettings = {
|
|
|
63
68
|
mimeType?: string;
|
|
64
69
|
/** If file name is given, the screenshot image will be downloaded and the base64 string will NOT be returned! */
|
|
65
70
|
fileName?: string;
|
|
66
|
-
/**
|
|
71
|
+
/**
|
|
72
|
+
* Expert settings to tweak the screenshot image, see [Babylon.js](https://doc.babylonjs.com/typedoc/functions/BABYLON.CreateScreenshotUsingRenderTarget) docs for further information.\
|
|
73
|
+
* Defaults to `8` for improved screenshot quality.
|
|
74
|
+
*/
|
|
67
75
|
samples?: number;
|
|
68
76
|
/** Expert settings to tweak the screenshot image, see [Babylon.js](https://doc.babylonjs.com/typedoc/functions/BABYLON.CreateScreenshotUsingRenderTarget) docs for further information */
|
|
69
77
|
antialiasing?: boolean;
|
|
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.CameraManager = void 0;
|
|
13
13
|
const index_1 = require("../index");
|
|
14
14
|
const geometry_helper_1 = require("../internal/geometry-helper");
|
|
15
|
+
const screenshot_helper_1 = require("../internal/screenshot-helper");
|
|
15
16
|
/**
|
|
16
17
|
* Manager for camera related tasks
|
|
17
18
|
*/
|
|
@@ -128,7 +129,7 @@ class CameraManager {
|
|
|
128
129
|
createScreenshot(settings) {
|
|
129
130
|
var _a, _b, _c;
|
|
130
131
|
return __awaiter(this, void 0, void 0, function* () {
|
|
131
|
-
const { width, height, alpha, beta, radius, target, autofocusScene, exclude, excludeHtmlAnchorGroups, fileName, samples, antialiasing, renderSprites, enableStencilBuffer, useLayerMask, quality, } = settings !== null && settings !== void 0 ? settings : {};
|
|
132
|
+
const { width, height, alpha, beta, radius, target, autofocusScene, exclude, excludeHtmlAnchorGroups, cropTransparentArea, fileName, samples, antialiasing, renderSprites, enableStencilBuffer, useLayerMask, quality, } = settings !== null && settings !== void 0 ? settings : {};
|
|
132
133
|
const screenshotCam = (_a = this.viewer.scene.activeCamera) === null || _a === void 0 ? void 0 : _a.clone(CameraManager._SCREENSHOT_CAMERA_NAME);
|
|
133
134
|
const boundingInfo = autofocusScene ? this.viewer.sceneManager.calculateBoundingInfo(exclude) : undefined;
|
|
134
135
|
if (alpha !== undefined) {
|
|
@@ -157,7 +158,9 @@ class CameraManager {
|
|
|
157
158
|
// calculate screenshot size manually as it is used for html anchor screenshot as well
|
|
158
159
|
const screenshotSize = this._getScreenshotSize(width, height);
|
|
159
160
|
const mimeType = (_c = settings === null || settings === void 0 ? void 0 : settings.mimeType) !== null && _c !== void 0 ? _c : 'image/png';
|
|
160
|
-
const imageStr3d = yield index_1.ScreenshotTools.CreateScreenshotUsingRenderTargetAsync(this.viewer.engine, screenshotCam, { width: screenshotSize.imageWidth, height: screenshotSize.imageHeight }, mimeType,
|
|
161
|
+
const imageStr3d = yield index_1.ScreenshotTools.CreateScreenshotUsingRenderTargetAsync(this.viewer.engine, screenshotCam, { width: screenshotSize.imageWidth, height: screenshotSize.imageHeight }, mimeType,
|
|
162
|
+
// default to "8", since Babylon.js default "1" is really ugly
|
|
163
|
+
samples !== null && samples !== void 0 ? samples : 8, antialiasing, undefined, renderSprites, enableStencilBuffer, useLayerMask, quality, texture => {
|
|
161
164
|
// NOTE: this doesn't work ATM, see https://github.com/BabylonJS/Babylon.js/pull/16081#issuecomment-2652861176
|
|
162
165
|
// we'll have to wait for a fix or solve the visibility in a different way (e.g. camera layer mask)
|
|
163
166
|
texture.renderList = this.viewer.scene.meshes.filter(mesh => !(settings === null || settings === void 0 ? void 0 : settings.exclude) || !(0, geometry_helper_1.isNodeExcluded)(mesh, settings.exclude));
|
|
@@ -166,25 +169,22 @@ class CameraManager {
|
|
|
166
169
|
const htmlAnchorKeys = excludeHtmlAnchorGroups === true
|
|
167
170
|
? []
|
|
168
171
|
: this.viewer.htmlAnchorManager.getHtmlAnchorKeys(undefined, excludeHtmlAnchorGroups, true);
|
|
169
|
-
if (htmlAnchorKeys.length) {
|
|
172
|
+
if (htmlAnchorKeys.length || cropTransparentArea) {
|
|
170
173
|
// html anchors are not included in the main screenshot, as the html elements are located outside of the canvas
|
|
171
174
|
// the idea is to create a dedicated canvas for these elements and merge the result with the main screenshot into
|
|
172
175
|
// a combined canvas
|
|
173
|
-
const screenshotHtmlCanvas =
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
context.drawImage(screenshot3dImg, 0, 0, screenshotSize.imageWidth, screenshotSize.imageHeight);
|
|
186
|
-
context.drawImage(screenshotHtmlCanvas, 0, 0, screenshotSize.imageWidth, screenshotSize.imageHeight);
|
|
187
|
-
imageStr = screenshotCombinedCanvas.toDataURL(mimeType);
|
|
176
|
+
const screenshotHtmlCanvas = htmlAnchorKeys.length
|
|
177
|
+
? yield this.viewer.htmlAnchorManager.createScreenshotCanvas(screenshotSize, screenshotCam, htmlAnchorKeys)
|
|
178
|
+
: undefined;
|
|
179
|
+
const screenshotCombinedCanvas = yield (0, screenshot_helper_1.createScreenshotCanvas)(imageStr3d, screenshotSize, screenshotHtmlCanvas);
|
|
180
|
+
if (cropTransparentArea) {
|
|
181
|
+
const screenshotTrimmedCanvas = (0, screenshot_helper_1.trimCanvas)(screenshotCombinedCanvas);
|
|
182
|
+
imageStr = screenshotTrimmedCanvas.toDataURL(mimeType);
|
|
183
|
+
screenshotTrimmedCanvas.remove();
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
imageStr = screenshotCombinedCanvas.toDataURL(mimeType);
|
|
187
|
+
}
|
|
188
188
|
screenshotCombinedCanvas.remove();
|
|
189
189
|
}
|
|
190
190
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"camera-manager.js","sourceRoot":"","sources":["../../../src/manager/camera-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"camera-manager.js","sourceRoot":"","sources":["../../../src/manager/camera-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -88,6 +88,6 @@ export declare class HtmlAnchorManager {
|
|
|
88
88
|
* @internal
|
|
89
89
|
*/
|
|
90
90
|
isHtmlAnchorMesh(mesh: AbstractMesh): boolean;
|
|
91
|
-
protected _updateHtmlAnchor(parentHtmlElement: HTMLDivElement, anchorMesh: AbstractMesh, camera: Camera, width: number, height: number, baseScale: number, options?: HtmlAnchorOptions): void;
|
|
91
|
+
protected _updateHtmlAnchor(parentHtmlElement: HTMLDivElement, anchorMesh: AbstractMesh, camera: Camera, width: number, height: number, baseScale: number, useRayHitTestForOcclusionCheck: boolean, options?: HtmlAnchorOptions): void;
|
|
92
92
|
protected _getOrCreateAnchorMeshMaterial(): StandardMaterial;
|
|
93
93
|
}
|
|
@@ -37,7 +37,11 @@ class HtmlAnchorManager {
|
|
|
37
37
|
// html element positions need to be updated after each camera render call
|
|
38
38
|
viewer.scene.onAfterRenderCameraObservable.add(() => {
|
|
39
39
|
Object.values(this._htmlAnchors).forEach(({ parentHtmlElement, anchorMesh, options }) => {
|
|
40
|
-
this._updateHtmlAnchor(parentHtmlElement, anchorMesh, viewer.scene.activeCamera,
|
|
40
|
+
this._updateHtmlAnchor(parentHtmlElement, anchorMesh, viewer.scene.activeCamera,
|
|
41
|
+
// it's import to use `clientWidth` and `clientHeight` as it makes a difference on mobile devices that have
|
|
42
|
+
// hardware scaling activated
|
|
43
|
+
// => `width`/`height` return the upscaled values, but the basis html element for the anchors remains unscaled
|
|
44
|
+
canvas.clientWidth, canvas.clientHeight, 1, false, options);
|
|
41
45
|
});
|
|
42
46
|
});
|
|
43
47
|
}
|
|
@@ -47,10 +51,7 @@ class HtmlAnchorManager {
|
|
|
47
51
|
* mesh within the scene.
|
|
48
52
|
*/
|
|
49
53
|
addHtmlAnchor(name, htmlElement, position, options) {
|
|
50
|
-
|
|
51
|
-
const canvasParentHtmlElement = (_a = this.viewer.canvas) === null || _a === void 0 ? void 0 : _a.parentElement;
|
|
52
|
-
if (!canvasParentHtmlElement) {
|
|
53
|
-
console.warn(`No parent for desired html anchor available`);
|
|
54
|
+
if (!this.viewer.canvas) {
|
|
54
55
|
return;
|
|
55
56
|
}
|
|
56
57
|
if (this._htmlAnchors[name]) {
|
|
@@ -68,7 +69,10 @@ class HtmlAnchorManager {
|
|
|
68
69
|
if (!enablePointerEvents) {
|
|
69
70
|
parentHtmlElement.style.pointerEvents = 'none';
|
|
70
71
|
}
|
|
71
|
-
|
|
72
|
+
// it's important to insert the html anchor elements right after the viewer canvas
|
|
73
|
+
// otherwise the elements could be in front of other sibling nodes, like the viewer control loading mask
|
|
74
|
+
// => see CB-10496
|
|
75
|
+
this.viewer.canvas.insertAdjacentElement('afterend', parentHtmlElement);
|
|
72
76
|
// NOTE: creates a sphere with fixed size, which could be problematic in scene with "strange" dimensions
|
|
73
77
|
// add a property for the sphere size if required
|
|
74
78
|
const anchorMesh = __1.MeshBuilder.CreateSphere(`${HtmlAnchorManager._HTML_ANCHOR_KEY}_${name}`, { diameter: 0.01 });
|
|
@@ -136,8 +140,11 @@ class HtmlAnchorManager {
|
|
|
136
140
|
const clonedHtmlNode = parentHtmlElement.cloneNode(true);
|
|
137
141
|
htmlContainer.append(clonedHtmlNode);
|
|
138
142
|
// reposition that cloned html element, so that it fits to the desired camera position
|
|
139
|
-
|
|
140
|
-
|
|
143
|
+
// `clientHeight`: makes difference on mobile devices that have hardware scaling activated
|
|
144
|
+
// => `height` returns the upscaled value, but the basis html element for the anchors remains
|
|
145
|
+
// unscaled
|
|
146
|
+
const baseScale = size.canvasHeight / this.viewer.canvas.clientHeight;
|
|
147
|
+
this._updateHtmlAnchor(clonedHtmlNode, anchorMesh, camera, size.canvasWidth, size.canvasHeight, baseScale, true, options);
|
|
141
148
|
});
|
|
142
149
|
const screenshotHtmlCanvas = yield (0, html2canvas_1.default)(htmlContainer, {
|
|
143
150
|
width: size.imageWidth,
|
|
@@ -178,7 +185,7 @@ class HtmlAnchorManager {
|
|
|
178
185
|
isHtmlAnchorMesh(mesh) {
|
|
179
186
|
return mesh.material === this._anchorMeshMaterial;
|
|
180
187
|
}
|
|
181
|
-
_updateHtmlAnchor(parentHtmlElement, anchorMesh, camera, width, height, baseScale, options) {
|
|
188
|
+
_updateHtmlAnchor(parentHtmlElement, anchorMesh, camera, width, height, baseScale, useRayHitTestForOcclusionCheck, options) {
|
|
182
189
|
const { hideIfOccluded, scaleWithCameraDistance } = options !== null && options !== void 0 ? options : {};
|
|
183
190
|
const viewMatrix = camera.getViewMatrix();
|
|
184
191
|
const projectionMatrix = camera.getProjectionMatrix();
|
|
@@ -210,7 +217,26 @@ class HtmlAnchorManager {
|
|
|
210
217
|
vertexScreenCoords.x + elementXOffset < width &&
|
|
211
218
|
vertexScreenCoords.y - elementYOffset > 0 &&
|
|
212
219
|
vertexScreenCoords.y + elementYOffset < height;
|
|
213
|
-
|
|
220
|
+
let isOccluded = false;
|
|
221
|
+
if (hideIfOccluded) {
|
|
222
|
+
if (useRayHitTestForOcclusionCheck) {
|
|
223
|
+
// ray test has to be used for synchronous occlusion checks
|
|
224
|
+
// this is the case for screenshots, where the screenshot camera might be on a different position than the scene
|
|
225
|
+
// camera
|
|
226
|
+
// default occlusion query is too slow and there is no way to know when the occlusion check is finished, so we
|
|
227
|
+
// fall back to this alternative technology
|
|
228
|
+
// however, this tech has higher performance impact, so we don't use it for the cyclic occlusion check
|
|
229
|
+
const meshCenter = anchorMesh.getBoundingInfo().boundingBox.centerWorld;
|
|
230
|
+
const camDirection = meshCenter.subtract(camera.position);
|
|
231
|
+
const ray = new __1.Ray(camera.position, camDirection);
|
|
232
|
+
const hit = this.viewer.scene.pickWithRay(ray, mesh => !__1.Tags.MatchesQuery(mesh, __1.DimensionLineManager.DIMENSION_LINE_KEY), false);
|
|
233
|
+
isOccluded = (hit === null || hit === void 0 ? void 0 : hit.pickedMesh) !== anchorMesh;
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
// use default occlusion check from GPU
|
|
237
|
+
isOccluded = anchorMesh.isOccluded;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
214
240
|
parentHtmlElement.style.opacity = isInViewport && !isOccluded ? '1' : '0';
|
|
215
241
|
}
|
|
216
242
|
_getOrCreateAnchorMeshMaterial() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-anchor-manager.js","sourceRoot":"","sources":["../../../src/manager/html-anchor-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"html-anchor-manager.js","sourceRoot":"","sources":["../../../src/manager/html-anchor-manager.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@combeenation/3d-viewer",
|
|
3
|
-
"version": "18.
|
|
3
|
+
"version": "18.1.0-beta2",
|
|
4
4
|
"description": "Combeenation 3D Viewer",
|
|
5
5
|
"homepage": "https://github.com/Combeenation/3d-viewer#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -49,10 +49,10 @@
|
|
|
49
49
|
},
|
|
50
50
|
"prettier": "@combeenation/prettier-config",
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@babylonjs/core": "7.
|
|
53
|
-
"@babylonjs/gui": "7.
|
|
54
|
-
"@babylonjs/loaders": "7.
|
|
55
|
-
"@babylonjs/serializers": "7.
|
|
52
|
+
"@babylonjs/core": "7.50.0",
|
|
53
|
+
"@babylonjs/gui": "7.50.0",
|
|
54
|
+
"@babylonjs/loaders": "7.50.0",
|
|
55
|
+
"@babylonjs/serializers": "7.50.0",
|
|
56
56
|
"eventemitter3": "4.0.7",
|
|
57
57
|
"html2canvas": "1.4.1",
|
|
58
58
|
"is-svg": "^5.0.0",
|
|
@@ -85,14 +85,14 @@
|
|
|
85
85
|
"webpack-merge": "5.8.0"
|
|
86
86
|
},
|
|
87
87
|
"optionalDependencies": {
|
|
88
|
-
"@babylonjs/gui-editor": "7.
|
|
89
|
-
"@babylonjs/inspector": "7.
|
|
90
|
-
"@babylonjs/materials": "7.
|
|
91
|
-
"@babylonjs/node-editor": "7.
|
|
92
|
-
"@babylonjs/node-geometry-editor": "7.
|
|
88
|
+
"@babylonjs/gui-editor": "7.50.0",
|
|
89
|
+
"@babylonjs/inspector": "7.50.0",
|
|
90
|
+
"@babylonjs/materials": "7.50.0",
|
|
91
|
+
"@babylonjs/node-editor": "7.50.0",
|
|
92
|
+
"@babylonjs/node-geometry-editor": "7.50.0"
|
|
93
93
|
},
|
|
94
94
|
"dependenciesComments": {
|
|
95
|
-
"@babylonjs": "Latest version 7.
|
|
95
|
+
"@babylonjs": "Latest version 7.50.0 fixed mesh filter list for RTT screenshot, see (https://github.com/BabylonJS/Babylon.js/pull/16081#issuecomment-2658595455)"
|
|
96
96
|
},
|
|
97
97
|
"optionalDependenciesComments": {
|
|
98
98
|
"@babylonjs": "Defining the inspector package (and it's dependencies) as optional is required to omit these packages in the production build of the CBN react-app (see CB-9269)"
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { ScreenshotSize } from '../manager/camera-manager';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Creates a new canvas element from a screenshot image string.\
|
|
5
|
+
* Optionally adds a secondary canvas element, which is coming from the HTML anchor screenshot in our case.
|
|
6
|
+
*
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
export async function createScreenshotCanvas(
|
|
10
|
+
imageStr3d: string,
|
|
11
|
+
screenshotSize: ScreenshotSize,
|
|
12
|
+
screenshotHtmlCanvas?: HTMLCanvasElement
|
|
13
|
+
): Promise<HTMLCanvasElement> {
|
|
14
|
+
// convert the main screenshot into an image, so that it can be drawn onto a canvas as well
|
|
15
|
+
const screenshot3dImg = new Image();
|
|
16
|
+
screenshot3dImg.src = imageStr3d;
|
|
17
|
+
await new Promise(resolve => {
|
|
18
|
+
screenshot3dImg.onload = resolve;
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
const screenshotCombinedCanvas = document.createElement('canvas');
|
|
22
|
+
screenshotCombinedCanvas.width = screenshotSize.imageWidth;
|
|
23
|
+
screenshotCombinedCanvas.height = screenshotSize.imageHeight;
|
|
24
|
+
|
|
25
|
+
// draw main and html screenshot on a new canvas and get the base64 string from it
|
|
26
|
+
const context = screenshotCombinedCanvas.getContext('2d')!;
|
|
27
|
+
context.drawImage(screenshot3dImg, 0, 0, screenshotSize.imageWidth, screenshotSize.imageHeight);
|
|
28
|
+
|
|
29
|
+
if (screenshotHtmlCanvas) {
|
|
30
|
+
context.drawImage(screenshotHtmlCanvas, 0, 0, screenshotSize.imageWidth, screenshotSize.imageHeight);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return screenshotCombinedCanvas;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Returns a new canvas element, which has all bounding transparent pixels removed.
|
|
38
|
+
*
|
|
39
|
+
* @internal
|
|
40
|
+
*/
|
|
41
|
+
export function trimCanvas(canvas: HTMLCanvasElement): HTMLCanvasElement {
|
|
42
|
+
const ctx = canvas.getContext('2d');
|
|
43
|
+
const copy = document.createElement('canvas').getContext('2d');
|
|
44
|
+
if (!ctx || !copy) {
|
|
45
|
+
console.warn(`Couldn't trim canvas as canvas context is not available`);
|
|
46
|
+
return canvas;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// `pixels` holds a one-dimensional array with RGBA data
|
|
50
|
+
// [r1, g1, b1, a1, r2, g2, ...]
|
|
51
|
+
const pixels = ctx.getImageData(0, 0, canvas.width, canvas.height);
|
|
52
|
+
const l = pixels.data.length;
|
|
53
|
+
|
|
54
|
+
if (!l) {
|
|
55
|
+
console.warn(`Couldn't trim canvas as no image data is available`);
|
|
56
|
+
return canvas;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const boundingBox: { top: number; left: number; right: number; bottom: number } = {
|
|
60
|
+
top: -1,
|
|
61
|
+
left: -1,
|
|
62
|
+
right: -1,
|
|
63
|
+
bottom: -1,
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
let i, x, y;
|
|
67
|
+
for (i = 0; i < l; i += 4) {
|
|
68
|
+
// if the "a" value is > 0 it means that the pixel is NOT transparent and therefore should be part of the final
|
|
69
|
+
// image
|
|
70
|
+
if (pixels.data[i + 3] !== 0) {
|
|
71
|
+
x = (i / 4) % canvas.width;
|
|
72
|
+
y = ~~(i / 4 / canvas.width);
|
|
73
|
+
|
|
74
|
+
// enlarge bounding box if required
|
|
75
|
+
if (boundingBox.left < 0 || x < boundingBox.left) {
|
|
76
|
+
boundingBox.left = x;
|
|
77
|
+
}
|
|
78
|
+
if (boundingBox.right < 0 || x > boundingBox.right) {
|
|
79
|
+
boundingBox.right = x;
|
|
80
|
+
}
|
|
81
|
+
// top starts from y=0
|
|
82
|
+
if (boundingBox.top < 0 || y < boundingBox.top) {
|
|
83
|
+
boundingBox.top = y;
|
|
84
|
+
}
|
|
85
|
+
if (boundingBox.bottom < 0 || y > boundingBox.bottom) {
|
|
86
|
+
boundingBox.bottom = y;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// calculate the height and width of the content
|
|
92
|
+
const trimHeight = boundingBox.bottom - boundingBox.top;
|
|
93
|
+
const trimWidth = boundingBox.right - boundingBox.left;
|
|
94
|
+
const trimmed = ctx.getImageData(boundingBox.left, boundingBox.top, trimWidth, trimHeight);
|
|
95
|
+
|
|
96
|
+
// apply trimmed data to canvas
|
|
97
|
+
copy.canvas.width = trimWidth;
|
|
98
|
+
copy.canvas.height = trimHeight;
|
|
99
|
+
copy.putImageData(trimmed, 0, 0);
|
|
100
|
+
|
|
101
|
+
return copy.canvas;
|
|
102
|
+
}
|