@combeenation/3d-viewer 14.0.1-rc1 → 14.1.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.
Files changed (67) hide show
  1. package/README.md +9 -9
  2. package/dist/lib-cjs/buildinfo.json +3 -3
  3. package/dist/lib-cjs/commonjs.tsconfig.tsbuildinfo +1 -1
  4. package/dist/lib-cjs/index.d.ts +51 -62
  5. package/dist/lib-cjs/index.js +84 -94
  6. package/dist/lib-cjs/index.js.map +1 -1
  7. package/dist/lib-cjs/internal/cbn-custom-babylon-loader-plugin.d.ts +10 -10
  8. package/dist/lib-cjs/internal/cbn-custom-babylon-loader-plugin.js +131 -131
  9. package/dist/lib-cjs/internal/cloning-helper.d.ts +19 -19
  10. package/dist/lib-cjs/internal/cloning-helper.js +163 -163
  11. package/dist/lib-cjs/internal/device-helper.d.ts +9 -9
  12. package/dist/lib-cjs/internal/device-helper.js +24 -24
  13. package/dist/lib-cjs/internal/geometry-helper.d.ts +21 -21
  14. package/dist/lib-cjs/internal/geometry-helper.js +145 -145
  15. package/dist/lib-cjs/internal/metadata-helper.d.ts +26 -26
  16. package/dist/lib-cjs/internal/metadata-helper.js +50 -50
  17. package/dist/lib-cjs/internal/paintable-helper.d.ts +40 -40
  18. package/dist/lib-cjs/internal/paintable-helper.js +286 -286
  19. package/dist/lib-cjs/internal/tags-helper.d.ts +12 -12
  20. package/dist/lib-cjs/internal/tags-helper.js +37 -37
  21. package/dist/lib-cjs/manager/camera-manager.d.ts +110 -110
  22. package/dist/lib-cjs/manager/camera-manager.js +209 -206
  23. package/dist/lib-cjs/manager/camera-manager.js.map +1 -1
  24. package/dist/lib-cjs/manager/debug-manager.d.ts +60 -60
  25. package/dist/lib-cjs/manager/debug-manager.js +217 -217
  26. package/dist/lib-cjs/manager/event-manager.d.ts +52 -52
  27. package/dist/lib-cjs/manager/event-manager.js +71 -71
  28. package/dist/lib-cjs/manager/gltf-export-manager.d.ts +75 -84
  29. package/dist/lib-cjs/manager/gltf-export-manager.js +286 -290
  30. package/dist/lib-cjs/manager/gltf-export-manager.js.map +1 -1
  31. package/dist/lib-cjs/manager/material-manager.d.ts +35 -35
  32. package/dist/lib-cjs/manager/material-manager.js +125 -125
  33. package/dist/lib-cjs/manager/model-manager.d.ts +145 -145
  34. package/dist/lib-cjs/manager/model-manager.js +382 -382
  35. package/dist/lib-cjs/manager/parameter-manager.d.ts +210 -210
  36. package/dist/lib-cjs/manager/parameter-manager.js +514 -514
  37. package/dist/lib-cjs/manager/scene-manager.d.ts +45 -45
  38. package/dist/lib-cjs/manager/scene-manager.js +64 -64
  39. package/dist/lib-cjs/manager/texture-manager.d.ts +12 -12
  40. package/dist/lib-cjs/manager/texture-manager.js +43 -43
  41. package/dist/lib-cjs/viewer-error.d.ts +48 -48
  42. package/dist/lib-cjs/viewer-error.js +60 -60
  43. package/dist/lib-cjs/viewer.d.ts +115 -115
  44. package/dist/lib-cjs/viewer.js +217 -217
  45. package/package.json +91 -91
  46. package/src/buildinfo.json +3 -3
  47. package/src/dev.ts +47 -47
  48. package/src/global-types.d.ts +39 -39
  49. package/src/index.ts +71 -81
  50. package/src/internal/cbn-custom-babylon-loader-plugin.ts +159 -159
  51. package/src/internal/cloning-helper.ts +225 -225
  52. package/src/internal/device-helper.ts +25 -25
  53. package/src/internal/geometry-helper.ts +181 -181
  54. package/src/internal/metadata-helper.ts +63 -63
  55. package/src/internal/paintable-helper.ts +310 -310
  56. package/src/internal/tags-helper.ts +41 -41
  57. package/src/manager/camera-manager.ts +368 -365
  58. package/src/manager/debug-manager.ts +245 -245
  59. package/src/manager/event-manager.ts +72 -72
  60. package/src/manager/gltf-export-manager.ts +356 -357
  61. package/src/manager/material-manager.ts +135 -135
  62. package/src/manager/model-manager.ts +458 -458
  63. package/src/manager/parameter-manager.ts +652 -652
  64. package/src/manager/scene-manager.ts +101 -101
  65. package/src/manager/texture-manager.ts +32 -32
  66. package/src/viewer-error.ts +68 -68
  67. package/src/viewer.ts +290 -290
@@ -1,207 +1,210 @@
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.CameraManager = void 0;
13
- const index_1 = require("../index");
14
- const geometry_helper_1 = require("../internal/geometry-helper");
15
- /**
16
- * Manager for camera related tasks
17
- */
18
- class CameraManager {
19
- /** @internal */
20
- constructor(viewer) {
21
- this.viewer = viewer;
22
- }
23
- /**
24
- * Focuses the camera to see every visible mesh in scene and tries to optimize wheel precision and panning
25
- */
26
- autofocusActiveCamera(settings) {
27
- var _a, _b, _c;
28
- return __awaiter(this, void 0, void 0, function* () {
29
- const activeCamera = this.viewer.scene.activeCamera;
30
- if (!(activeCamera instanceof index_1.ArcRotateCamera)) {
31
- throw new Error(`Camera type "${activeCamera === null || activeCamera === void 0 ? void 0 : activeCamera.getClassName()}" is not implemented for "autofocusActiveCamera".`);
32
- }
33
- // get bounding box of all visible meshes, this is the base for the autofocus algorithm
34
- const boundingInfo = this.viewer.calculateBoundingInfo(settings === null || settings === void 0 ? void 0 : settings.exclude);
35
- // optionally show bounding sphere for debugging purpose
36
- this.viewer.eventManager.fireEvent(index_1.ViewerEvent.AutofocusStart, boundingInfo.boundingSphere);
37
- const distance = this._getAutofocusZoomingDistance(boundingInfo.boundingSphere, activeCamera);
38
- const radius = boundingInfo.boundingSphere.radius;
39
- const center = boundingInfo.boundingSphere.center;
40
- // set lower radius limit on edge of bounding sphere to make sure that we can't dive into the meshes
41
- activeCamera.lowerRadiusLimit = radius;
42
- // additional settings
43
- // constants for division are taken directly from Babylon.js repository
44
- activeCamera.minZ = Math.min(radius / CameraManager._AUTOFOCUS_CONSTANTS.minZ, 1);
45
- if ((settings === null || settings === void 0 ? void 0 : settings.adjustWheelPrecision) !== false) {
46
- activeCamera.wheelPrecision = CameraManager._AUTOFOCUS_CONSTANTS.wheelPrecision / radius;
47
- }
48
- if ((settings === null || settings === void 0 ? void 0 : settings.adjustPanningSensibility) !== false) {
49
- activeCamera.panningSensibility = CameraManager._AUTOFOCUS_CONSTANTS.panningSensibility / radius;
50
- }
51
- if ((settings === null || settings === void 0 ? void 0 : settings.adjustPinchPrecision) !== false) {
52
- activeCamera.pinchPrecision = CameraManager._AUTOFOCUS_CONSTANTS.pinchPrecision / radius;
53
- }
54
- const radiusFactor = (_a = settings === null || settings === void 0 ? void 0 : settings.radiusFactor) !== null && _a !== void 0 ? _a : CameraManager._DEFAULT_AUTOFOCUS_RADIUS_FACTOR;
55
- const alpha = (_b = settings === null || settings === void 0 ? void 0 : settings.alpha) !== null && _b !== void 0 ? _b : CameraManager.DEFAULT_CAMERA_POSITION.alpha;
56
- const beta = (_c = settings === null || settings === void 0 ? void 0 : settings.beta) !== null && _c !== void 0 ? _c : CameraManager.DEFAULT_CAMERA_POSITION.beta;
57
- const newCameraPosition = {
58
- alpha: alpha,
59
- beta: beta,
60
- radius: distance * radiusFactor,
61
- target: center,
62
- };
63
- yield this.moveActiveCameraTo(newCameraPosition, settings === null || settings === void 0 ? void 0 : settings.durationMs);
64
- });
65
- }
66
- /**
67
- * Moves the active camera smoothly to certain position
68
- *
69
- * @param durationMs defaults to 250ms if unset, use 0 for instant movement
70
- */
71
- moveActiveCameraTo(position, durationMs = CameraManager._DEFAULT_CAM_SPEED_MS) {
72
- var _a, _b, _c, _d;
73
- return __awaiter(this, void 0, void 0, function* () {
74
- const activeCamera = this.viewer.scene.activeCamera;
75
- if (!(activeCamera instanceof index_1.ArcRotateCamera)) {
76
- throw new Error(`Camera type "${activeCamera === null || activeCamera === void 0 ? void 0 : activeCamera.getClassName()}" is not implemented yet for "moveActiveCameraTo".`);
77
- }
78
- if (durationMs === 0) {
79
- // instant movement without animation
80
- activeCamera.alpha = (_a = position.alpha) !== null && _a !== void 0 ? _a : activeCamera.alpha;
81
- activeCamera.beta = (_b = position.beta) !== null && _b !== void 0 ? _b : activeCamera.beta;
82
- activeCamera.radius = (_c = position.radius) !== null && _c !== void 0 ? _c : activeCamera.radius;
83
- activeCamera.target = (_d = position.target) !== null && _d !== void 0 ? _d : activeCamera.target;
84
- }
85
- const framesPerSec = 100;
86
- const animationGroup = new index_1.AnimationGroup(CameraManager.CAMERA_ANIMATION_NAME, this.viewer.scene);
87
- if (position.alpha !== undefined) {
88
- // transform the target's alpha value into the same turn as the current camera position to avoid movements
89
- // > 360 degrees
90
- const alphaGap = activeCamera.alpha - position.alpha;
91
- const cntTurns = Math.round(alphaGap / (2 * Math.PI));
92
- const targetAlpha = position.alpha + 2 * Math.PI * cntTurns;
93
- CameraManager._addCameraAnimationToGroup('alpha', activeCamera.alpha, targetAlpha, framesPerSec, index_1.Animation.ANIMATIONTYPE_FLOAT, animationGroup, activeCamera);
94
- }
95
- if (position.beta !== undefined) {
96
- CameraManager._addCameraAnimationToGroup('beta', activeCamera.beta, position.beta, framesPerSec, index_1.Animation.ANIMATIONTYPE_FLOAT, animationGroup, activeCamera);
97
- }
98
- if (position.radius !== undefined) {
99
- CameraManager._addCameraAnimationToGroup('radius', activeCamera.radius, position.radius, framesPerSec, index_1.Animation.ANIMATIONTYPE_FLOAT, animationGroup, activeCamera);
100
- }
101
- if (position.target !== undefined) {
102
- CameraManager._addCameraAnimationToGroup('target', activeCamera.target, position.target, framesPerSec, index_1.Animation.ANIMATIONTYPE_VECTOR3, animationGroup, activeCamera);
103
- }
104
- // animation is created for 1 second (100 frames), adjust speed ratio according to desired movement time
105
- const speedRatio = 1000 / durationMs;
106
- return new Promise(resolve => {
107
- animationGroup.onAnimationGroupEndObservable.addOnce(() => {
108
- animationGroup.dispose();
109
- resolve();
110
- });
111
- animationGroup.start(false, speedRatio, 0, 100);
112
- });
113
- });
114
- }
115
- /**
116
- * Takes a sceenshot the the current scene.\
117
- * The result is a string containing a base64 encoded image.
118
- */
119
- createScreenshot(settings) {
120
- var _a, _b;
121
- return __awaiter(this, void 0, void 0, function* () {
122
- const screenshotCam = (_a = this.viewer.scene.activeCamera) === null || _a === void 0 ? void 0 : _a.clone(CameraManager._SCREENSHOT_CAMERA_NAME);
123
- const boundingInfo = (settings === null || settings === void 0 ? void 0 : settings.autofocusScene) ? this.viewer.calculateBoundingInfo(settings.exclude) : undefined;
124
- if ((settings === null || settings === void 0 ? void 0 : settings.alpha) !== undefined) {
125
- screenshotCam.alpha = settings.alpha;
126
- }
127
- if ((settings === null || settings === void 0 ? void 0 : settings.beta) !== undefined) {
128
- screenshotCam.beta = settings.beta;
129
- }
130
- if ((settings === null || settings === void 0 ? void 0 : settings.radius) !== undefined) {
131
- screenshotCam.radius = settings.radius;
132
- }
133
- else if (boundingInfo) {
134
- // zoom out to have full scene in view if requested by `autofocusScene` flag
135
- const distance = this._getAutofocusZoomingDistance(boundingInfo.boundingSphere, screenshotCam);
136
- const radiusFactor = (_b = settings === null || settings === void 0 ? void 0 : settings.radiusFactor) !== null && _b !== void 0 ? _b : 1;
137
- screenshotCam.radius = distance * radiusFactor;
138
- }
139
- // `cloneAlphaBetaRadius` has to be set to true, otherwise these values get adapted by setting the new target
140
- // this would also be the case when setting `screenshotCam.target` directly
141
- if ((settings === null || settings === void 0 ? void 0 : settings.target) !== undefined) {
142
- screenshotCam.setTarget(settings.target, undefined, undefined, true);
143
- }
144
- else if (boundingInfo) {
145
- screenshotCam.setTarget(boundingInfo.boundingSphere.center, undefined, undefined, true);
146
- }
147
- // don't expose internal props of `IScreenshotSize` in the API (yet), as it gets rather confusing and it shouldn't
148
- // be necessary in the first place
149
- // also let Babylon.js do all the fallback handling for missing properties
150
- const size = { width: settings === null || settings === void 0 ? void 0 : settings.width, height: settings === null || settings === void 0 ? void 0 : settings.height };
151
- // for some reason the `customizeTexture` property is not exposed in the async version of this function, therefore
152
- // we create the promise here manually
153
- const imageStr = yield new Promise(resolve => {
154
- index_1.ScreenshotTools.CreateScreenshotUsingRenderTarget(this.viewer.engine, screenshotCam, size, (data) => resolve(data), settings === null || settings === void 0 ? void 0 : settings.mimeType, settings === null || settings === void 0 ? void 0 : settings.samples, settings === null || settings === void 0 ? void 0 : settings.antialiasing, settings === null || settings === void 0 ? void 0 : settings.fileName, settings === null || settings === void 0 ? void 0 : settings.renderSprites, settings === null || settings === void 0 ? void 0 : settings.enableStencilBuffer, settings === null || settings === void 0 ? void 0 : settings.useLayerMask, settings === null || settings === void 0 ? void 0 : settings.quality, texture => {
155
- 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));
156
- });
157
- });
158
- screenshotCam.dispose();
159
- return imageStr;
160
- });
161
- }
162
- static _addCameraAnimationToGroup(targetProperty, from, to, framesPerSec, dataType, animationGroup, activeCamera) {
163
- const alphaAnimation = new index_1.Animation(targetProperty, targetProperty, framesPerSec, dataType, index_1.Animation.ANIMATIONLOOPMODE_CONSTANT);
164
- alphaAnimation.setKeys([
165
- {
166
- frame: 0,
167
- value: from,
168
- },
169
- {
170
- frame: 100,
171
- value: to,
172
- },
173
- ]);
174
- animationGroup.addTargetedAnimation(alphaAnimation, activeCamera);
175
- }
176
- _getAutofocusZoomingDistance(boundingSphere, camera) {
177
- // calculation is taken from Babylon.js repository, which on their side took it from this SO post:
178
- // http://stackoverflow.com/questions/2866350/move-camera-to-fit-3d-scene
179
- // there's a good sketch which explains the calculation quite a bit
180
- const aspectRatio = this.viewer.engine.getAspectRatio(camera);
181
- const frustumSlopeY = Math.tan(camera.fov / 2);
182
- const frustumSlopeX = frustumSlopeY * aspectRatio;
183
- const distanceForHorizontalFrustum = boundingSphere.radius * Math.sqrt(1 + 1 / (frustumSlopeX * frustumSlopeX));
184
- const distanceForVerticalFrustum = boundingSphere.radius * Math.sqrt(1 + 1 / (frustumSlopeY * frustumSlopeY));
185
- const distance = Math.max(distanceForHorizontalFrustum, distanceForVerticalFrustum);
186
- return distance;
187
- }
188
- }
189
- exports.CameraManager = CameraManager;
190
- CameraManager.CAMERA_ANIMATION_NAME = '__cameraAnimation__';
191
- /** @internal */
192
- CameraManager.DEFAULT_CAMERA_POSITION = {
193
- alpha: (45 * Math.PI) / 180,
194
- beta: (75 * Math.PI) / 180,
195
- radius: 1,
196
- target: new index_1.Vector3(0, 0, 0),
197
- };
198
- CameraManager._AUTOFOCUS_CONSTANTS = {
199
- minZ: 100,
200
- wheelPrecision: 100,
201
- panningSensibility: 2500,
202
- pinchPrecision: 200,
203
- };
204
- CameraManager._DEFAULT_AUTOFOCUS_RADIUS_FACTOR = 1;
205
- CameraManager._DEFAULT_CAM_SPEED_MS = 250;
206
- CameraManager._SCREENSHOT_CAMERA_NAME = '__screenshotCamera__';
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.CameraManager = void 0;
13
+ const index_1 = require("../index");
14
+ const geometry_helper_1 = require("../internal/geometry-helper");
15
+ /**
16
+ * Manager for camera related tasks
17
+ */
18
+ class CameraManager {
19
+ /** @internal */
20
+ constructor(viewer) {
21
+ this.viewer = viewer;
22
+ }
23
+ /**
24
+ * Focuses the camera to see every visible mesh in scene and tries to optimize wheel precision and panning
25
+ */
26
+ autofocusActiveCamera(settings) {
27
+ var _a, _b, _c;
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ const activeCamera = this.viewer.scene.activeCamera;
30
+ if (!(activeCamera instanceof index_1.ArcRotateCamera)) {
31
+ throw new Error(`Camera type "${activeCamera === null || activeCamera === void 0 ? void 0 : activeCamera.getClassName()}" is not implemented for "autofocusActiveCamera".`);
32
+ }
33
+ // get bounding box of all visible meshes, this is the base for the autofocus algorithm
34
+ const boundingInfo = this.viewer.calculateBoundingInfo(settings === null || settings === void 0 ? void 0 : settings.exclude);
35
+ // optionally show bounding sphere for debugging purpose
36
+ this.viewer.eventManager.fireEvent(index_1.ViewerEvent.AutofocusStart, boundingInfo.boundingSphere);
37
+ const distance = this._getAutofocusZoomingDistance(boundingInfo.boundingSphere, activeCamera);
38
+ const radius = boundingInfo.boundingSphere.radius;
39
+ const center = boundingInfo.boundingSphere.center;
40
+ // set lower radius limit on edge of bounding sphere to make sure that we can't dive into the meshes
41
+ activeCamera.lowerRadiusLimit = radius;
42
+ // additional settings
43
+ // constants for division are taken directly from Babylon.js repository
44
+ activeCamera.minZ = Math.min(radius / CameraManager._AUTOFOCUS_CONSTANTS.minZ, 1);
45
+ if ((settings === null || settings === void 0 ? void 0 : settings.adjustWheelPrecision) !== false) {
46
+ activeCamera.wheelPrecision = CameraManager._AUTOFOCUS_CONSTANTS.wheelPrecision / radius;
47
+ }
48
+ if ((settings === null || settings === void 0 ? void 0 : settings.adjustPanningSensibility) !== false) {
49
+ activeCamera.panningSensibility = CameraManager._AUTOFOCUS_CONSTANTS.panningSensibility / radius;
50
+ }
51
+ if ((settings === null || settings === void 0 ? void 0 : settings.adjustPinchPrecision) !== false) {
52
+ activeCamera.pinchPrecision = CameraManager._AUTOFOCUS_CONSTANTS.pinchPrecision / radius;
53
+ }
54
+ const radiusFactor = (_a = settings === null || settings === void 0 ? void 0 : settings.radiusFactor) !== null && _a !== void 0 ? _a : CameraManager._DEFAULT_AUTOFOCUS_RADIUS_FACTOR;
55
+ const alpha = (_b = settings === null || settings === void 0 ? void 0 : settings.alpha) !== null && _b !== void 0 ? _b : CameraManager.DEFAULT_CAMERA_POSITION.alpha;
56
+ const beta = (_c = settings === null || settings === void 0 ? void 0 : settings.beta) !== null && _c !== void 0 ? _c : CameraManager.DEFAULT_CAMERA_POSITION.beta;
57
+ const newCameraPosition = {
58
+ alpha: alpha,
59
+ beta: beta,
60
+ radius: distance * radiusFactor,
61
+ target: center,
62
+ };
63
+ yield this.moveActiveCameraTo(newCameraPosition, settings === null || settings === void 0 ? void 0 : settings.durationMs);
64
+ });
65
+ }
66
+ /**
67
+ * Moves the active camera smoothly to certain position
68
+ *
69
+ * @param durationMs defaults to 250ms if unset, use 0 for instant movement
70
+ */
71
+ moveActiveCameraTo(position, durationMs = CameraManager._DEFAULT_CAM_SPEED_MS) {
72
+ var _a, _b, _c, _d;
73
+ return __awaiter(this, void 0, void 0, function* () {
74
+ const activeCamera = this.viewer.scene.activeCamera;
75
+ if (!(activeCamera instanceof index_1.ArcRotateCamera)) {
76
+ throw new Error(`Camera type "${activeCamera === null || activeCamera === void 0 ? void 0 : activeCamera.getClassName()}" is not implemented yet for "moveActiveCameraTo".`);
77
+ }
78
+ if (durationMs === 0) {
79
+ // instant movement without animation
80
+ activeCamera.alpha = (_a = position.alpha) !== null && _a !== void 0 ? _a : activeCamera.alpha;
81
+ activeCamera.beta = (_b = position.beta) !== null && _b !== void 0 ? _b : activeCamera.beta;
82
+ activeCamera.radius = (_c = position.radius) !== null && _c !== void 0 ? _c : activeCamera.radius;
83
+ activeCamera.target = (_d = position.target) !== null && _d !== void 0 ? _d : activeCamera.target;
84
+ }
85
+ const framesPerSec = 100;
86
+ const animationGroup = new index_1.AnimationGroup(CameraManager.CAMERA_ANIMATION_NAME, this.viewer.scene);
87
+ // it's important to start with the target, as it internally overwrites alpha, beta and radius
88
+ // these values can then be overwritten afterwards if provided on the input of this function
89
+ // for further details see CB-10015
90
+ if (position.target !== undefined) {
91
+ CameraManager._addCameraAnimationToGroup('target', activeCamera.target, position.target, framesPerSec, index_1.Animation.ANIMATIONTYPE_VECTOR3, animationGroup, activeCamera);
92
+ }
93
+ if (position.alpha !== undefined) {
94
+ // transform the target's alpha value into the same turn as the current camera position to avoid movements
95
+ // > 360 degrees
96
+ const alphaGap = activeCamera.alpha - position.alpha;
97
+ const cntTurns = Math.round(alphaGap / (2 * Math.PI));
98
+ const targetAlpha = position.alpha + 2 * Math.PI * cntTurns;
99
+ CameraManager._addCameraAnimationToGroup('alpha', activeCamera.alpha, targetAlpha, framesPerSec, index_1.Animation.ANIMATIONTYPE_FLOAT, animationGroup, activeCamera);
100
+ }
101
+ if (position.beta !== undefined) {
102
+ CameraManager._addCameraAnimationToGroup('beta', activeCamera.beta, position.beta, framesPerSec, index_1.Animation.ANIMATIONTYPE_FLOAT, animationGroup, activeCamera);
103
+ }
104
+ if (position.radius !== undefined) {
105
+ CameraManager._addCameraAnimationToGroup('radius', activeCamera.radius, position.radius, framesPerSec, index_1.Animation.ANIMATIONTYPE_FLOAT, animationGroup, activeCamera);
106
+ }
107
+ // animation is created for 1 second (100 frames), adjust speed ratio according to desired movement time
108
+ const speedRatio = 1000 / durationMs;
109
+ return new Promise(resolve => {
110
+ animationGroup.onAnimationGroupEndObservable.addOnce(() => {
111
+ animationGroup.dispose();
112
+ resolve();
113
+ });
114
+ animationGroup.start(false, speedRatio, 0, 100);
115
+ });
116
+ });
117
+ }
118
+ /**
119
+ * Takes a sceenshot the the current scene.\
120
+ * The result is a string containing a base64 encoded image.
121
+ */
122
+ createScreenshot(settings) {
123
+ var _a, _b;
124
+ return __awaiter(this, void 0, void 0, function* () {
125
+ const screenshotCam = (_a = this.viewer.scene.activeCamera) === null || _a === void 0 ? void 0 : _a.clone(CameraManager._SCREENSHOT_CAMERA_NAME);
126
+ const boundingInfo = (settings === null || settings === void 0 ? void 0 : settings.autofocusScene) ? this.viewer.calculateBoundingInfo(settings.exclude) : undefined;
127
+ if ((settings === null || settings === void 0 ? void 0 : settings.alpha) !== undefined) {
128
+ screenshotCam.alpha = settings.alpha;
129
+ }
130
+ if ((settings === null || settings === void 0 ? void 0 : settings.beta) !== undefined) {
131
+ screenshotCam.beta = settings.beta;
132
+ }
133
+ if ((settings === null || settings === void 0 ? void 0 : settings.radius) !== undefined) {
134
+ screenshotCam.radius = settings.radius;
135
+ }
136
+ else if (boundingInfo) {
137
+ // zoom out to have full scene in view if requested by `autofocusScene` flag
138
+ const distance = this._getAutofocusZoomingDistance(boundingInfo.boundingSphere, screenshotCam);
139
+ const radiusFactor = (_b = settings === null || settings === void 0 ? void 0 : settings.radiusFactor) !== null && _b !== void 0 ? _b : 1;
140
+ screenshotCam.radius = distance * radiusFactor;
141
+ }
142
+ // `cloneAlphaBetaRadius` has to be set to true, otherwise these values get adapted by setting the new target
143
+ // this would also be the case when setting `screenshotCam.target` directly
144
+ if ((settings === null || settings === void 0 ? void 0 : settings.target) !== undefined) {
145
+ screenshotCam.setTarget(settings.target, undefined, undefined, true);
146
+ }
147
+ else if (boundingInfo) {
148
+ screenshotCam.setTarget(boundingInfo.boundingSphere.center, undefined, undefined, true);
149
+ }
150
+ // don't expose internal props of `IScreenshotSize` in the API (yet), as it gets rather confusing and it shouldn't
151
+ // be necessary in the first place
152
+ // also let Babylon.js do all the fallback handling for missing properties
153
+ const size = { width: settings === null || settings === void 0 ? void 0 : settings.width, height: settings === null || settings === void 0 ? void 0 : settings.height };
154
+ // for some reason the `customizeTexture` property is not exposed in the async version of this function, therefore
155
+ // we create the promise here manually
156
+ const imageStr = yield new Promise(resolve => {
157
+ index_1.ScreenshotTools.CreateScreenshotUsingRenderTarget(this.viewer.engine, screenshotCam, size, (data) => resolve(data), settings === null || settings === void 0 ? void 0 : settings.mimeType, settings === null || settings === void 0 ? void 0 : settings.samples, settings === null || settings === void 0 ? void 0 : settings.antialiasing, settings === null || settings === void 0 ? void 0 : settings.fileName, settings === null || settings === void 0 ? void 0 : settings.renderSprites, settings === null || settings === void 0 ? void 0 : settings.enableStencilBuffer, settings === null || settings === void 0 ? void 0 : settings.useLayerMask, settings === null || settings === void 0 ? void 0 : settings.quality, texture => {
158
+ 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));
159
+ });
160
+ });
161
+ screenshotCam.dispose();
162
+ return imageStr;
163
+ });
164
+ }
165
+ static _addCameraAnimationToGroup(targetProperty, from, to, framesPerSec, dataType, animationGroup, activeCamera) {
166
+ const alphaAnimation = new index_1.Animation(targetProperty, targetProperty, framesPerSec, dataType, index_1.Animation.ANIMATIONLOOPMODE_CONSTANT);
167
+ alphaAnimation.setKeys([
168
+ {
169
+ frame: 0,
170
+ value: from,
171
+ },
172
+ {
173
+ frame: 100,
174
+ value: to,
175
+ },
176
+ ]);
177
+ animationGroup.addTargetedAnimation(alphaAnimation, activeCamera);
178
+ }
179
+ _getAutofocusZoomingDistance(boundingSphere, camera) {
180
+ // calculation is taken from Babylon.js repository, which on their side took it from this SO post:
181
+ // http://stackoverflow.com/questions/2866350/move-camera-to-fit-3d-scene
182
+ // there's a good sketch which explains the calculation quite a bit
183
+ const aspectRatio = this.viewer.engine.getAspectRatio(camera);
184
+ const frustumSlopeY = Math.tan(camera.fov / 2);
185
+ const frustumSlopeX = frustumSlopeY * aspectRatio;
186
+ const distanceForHorizontalFrustum = boundingSphere.radius * Math.sqrt(1 + 1 / (frustumSlopeX * frustumSlopeX));
187
+ const distanceForVerticalFrustum = boundingSphere.radius * Math.sqrt(1 + 1 / (frustumSlopeY * frustumSlopeY));
188
+ const distance = Math.max(distanceForHorizontalFrustum, distanceForVerticalFrustum);
189
+ return distance;
190
+ }
191
+ }
192
+ exports.CameraManager = CameraManager;
193
+ CameraManager.CAMERA_ANIMATION_NAME = '__cameraAnimation__';
194
+ /** @internal */
195
+ CameraManager.DEFAULT_CAMERA_POSITION = {
196
+ alpha: (45 * Math.PI) / 180,
197
+ beta: (75 * Math.PI) / 180,
198
+ radius: 1,
199
+ target: new index_1.Vector3(0, 0, 0),
200
+ };
201
+ CameraManager._AUTOFOCUS_CONSTANTS = {
202
+ minZ: 100,
203
+ wheelPrecision: 100,
204
+ panningSensibility: 2500,
205
+ pinchPrecision: 200,
206
+ };
207
+ CameraManager._DEFAULT_AUTOFOCUS_RADIUS_FACTOR = 1;
208
+ CameraManager._DEFAULT_CAM_SPEED_MS = 250;
209
+ CameraManager._SCREENSHOT_CAMERA_NAME = '__screenshotCamera__';
207
210
  //# sourceMappingURL=camera-manager.js.map
@@ -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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"}
@@ -1,60 +1,60 @@
1
- import { AxesViewer, BoundingSphere, Color3, IInspectorOptions, Scene, TransformNode, Vector3, Viewer } from '../index';
2
- declare type DebugAxisKeys = 'X' | 'Y' | 'Z';
3
- declare type DebugAxisConfig = {
4
- color: Color3;
5
- position: Vector3;
6
- };
7
- /**
8
- * Manager for debugging functionalities
9
- */
10
- export declare class DebugManager {
11
- protected viewer: Viewer;
12
- protected static _DEBUG_AXIS_MAP: Record<DebugAxisKeys, DebugAxisConfig>;
13
- protected static _WORLD_COORD_ROOT_KEY: string;
14
- protected static _BOUNDING_SPHERE_KEY: string;
15
- protected _axesViewer: AxesViewer | null;
16
- protected _showBoundingSphereForAutofocus: boolean;
17
- /** @internal */
18
- constructor(viewer: Viewer);
19
- /**
20
- * Assign callback for drawing bounding sphere on autofocusing
21
- * @internal
22
- */
23
- registerAutofocusStartListener(): void;
24
- /**
25
- * Enables the Babylon.js [Inspector](https://doc.babylonjs.com/toolsAndResources/tools/inspector).\
26
- * Due to the additional size of the inspector, this function is only available in "development" builds!
27
- *
28
- * @returns Signalizes if inspector could be loaded
29
- */
30
- showInspector(options?: IInspectorOptions): Promise<boolean>;
31
- hideInspector(): void;
32
- /**
33
- * Show world coordinate system with given dimension.\
34
- * This is especially usefull when working on project with tricky positioning. (e.g. clones)
35
- */
36
- showWorldCoordinates(dimension: number): void;
37
- hideWorldCoordinates(): void;
38
- /**
39
- * Draws a wireframe bounding sphere on the next call of {@link CameraManager.autofocusActiveCamera}.\
40
- * This is usefull for checking which parts of the scene get centered.
41
- */
42
- showBoundingSphereForAutofocus(): void;
43
- hideBoundingSphereForAutofocus(): void;
44
- /**
45
- * Adjust and enhance coordinate axes to fulfill our needs.
46
- * - moves nodes into common root
47
- * - adds text node
48
- */
49
- protected static _prepareWorldCoordinateAxis(text: 'X' | 'Y' | 'Z', axis: TransformNode, root: TransformNode, dimension: number, utilityLayerScene: Scene): void;
50
- /**
51
- * Calculate factor for creating world coordinate axes with exactly one unit in length
52
- */
53
- protected static _getWorldCoordinatesAxesUnifyFactor(): number;
54
- /**
55
- * Visualize bounding sphere which is used to zoom in via `autofocusActiveCamera` function
56
- */
57
- protected _drawBoundingSphereForAutofocus(boundingSphere: BoundingSphere): void;
58
- protected _removeBoundingSphereForAutofocus(): void;
59
- }
60
- export {};
1
+ import { AxesViewer, BoundingSphere, Color3, IInspectorOptions, Scene, TransformNode, Vector3, Viewer } from '../index';
2
+ declare type DebugAxisKeys = 'X' | 'Y' | 'Z';
3
+ declare type DebugAxisConfig = {
4
+ color: Color3;
5
+ position: Vector3;
6
+ };
7
+ /**
8
+ * Manager for debugging functionalities
9
+ */
10
+ export declare class DebugManager {
11
+ protected viewer: Viewer;
12
+ protected static _DEBUG_AXIS_MAP: Record<DebugAxisKeys, DebugAxisConfig>;
13
+ protected static _WORLD_COORD_ROOT_KEY: string;
14
+ protected static _BOUNDING_SPHERE_KEY: string;
15
+ protected _axesViewer: AxesViewer | null;
16
+ protected _showBoundingSphereForAutofocus: boolean;
17
+ /** @internal */
18
+ constructor(viewer: Viewer);
19
+ /**
20
+ * Assign callback for drawing bounding sphere on autofocusing
21
+ * @internal
22
+ */
23
+ registerAutofocusStartListener(): void;
24
+ /**
25
+ * Enables the Babylon.js [Inspector](https://doc.babylonjs.com/toolsAndResources/tools/inspector).\
26
+ * Due to the additional size of the inspector, this function is only available in "development" builds!
27
+ *
28
+ * @returns Signalizes if inspector could be loaded
29
+ */
30
+ showInspector(options?: IInspectorOptions): Promise<boolean>;
31
+ hideInspector(): void;
32
+ /**
33
+ * Show world coordinate system with given dimension.\
34
+ * This is especially usefull when working on project with tricky positioning. (e.g. clones)
35
+ */
36
+ showWorldCoordinates(dimension: number): void;
37
+ hideWorldCoordinates(): void;
38
+ /**
39
+ * Draws a wireframe bounding sphere on the next call of {@link CameraManager.autofocusActiveCamera}.\
40
+ * This is usefull for checking which parts of the scene get centered.
41
+ */
42
+ showBoundingSphereForAutofocus(): void;
43
+ hideBoundingSphereForAutofocus(): void;
44
+ /**
45
+ * Adjust and enhance coordinate axes to fulfill our needs.
46
+ * - moves nodes into common root
47
+ * - adds text node
48
+ */
49
+ protected static _prepareWorldCoordinateAxis(text: 'X' | 'Y' | 'Z', axis: TransformNode, root: TransformNode, dimension: number, utilityLayerScene: Scene): void;
50
+ /**
51
+ * Calculate factor for creating world coordinate axes with exactly one unit in length
52
+ */
53
+ protected static _getWorldCoordinatesAxesUnifyFactor(): number;
54
+ /**
55
+ * Visualize bounding sphere which is used to zoom in via `autofocusActiveCamera` function
56
+ */
57
+ protected _drawBoundingSphereForAutofocus(boundingSphere: BoundingSphere): void;
58
+ protected _removeBoundingSphereForAutofocus(): void;
59
+ }
60
+ export {};