@combeenation/3d-viewer 17.1.0 → 18.0.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/index.d.ts +8 -0
- package/dist/lib-cjs/index.js +8 -0
- package/dist/lib-cjs/index.js.map +1 -1
- package/dist/lib-cjs/internal/asset-helper.d.ts +32 -0
- package/dist/lib-cjs/internal/asset-helper.js +105 -0
- package/dist/lib-cjs/internal/asset-helper.js.map +1 -0
- package/dist/lib-cjs/internal/cbn-custom-babylon-loader-plugin.d.ts +18 -0
- package/dist/lib-cjs/internal/cbn-custom-babylon-loader-plugin.js +22 -3
- package/dist/lib-cjs/internal/cbn-custom-babylon-loader-plugin.js.map +1 -1
- package/dist/lib-cjs/internal/cloning-helper.js +1 -1
- package/dist/lib-cjs/internal/cloning-helper.js.map +1 -1
- package/dist/lib-cjs/internal/texture-parameter-helper.js +26 -7
- package/dist/lib-cjs/internal/texture-parameter-helper.js.map +1 -1
- package/dist/lib-cjs/manager/camera-manager.d.ts +23 -2
- package/dist/lib-cjs/manager/camera-manager.js +91 -24
- package/dist/lib-cjs/manager/camera-manager.js.map +1 -1
- package/dist/lib-cjs/manager/debug-manager.d.ts +1 -1
- package/dist/lib-cjs/manager/debug-manager.js +3 -3
- package/dist/lib-cjs/manager/debug-manager.js.map +1 -1
- package/dist/lib-cjs/manager/dimension-line-manager.d.ts +126 -0
- package/dist/lib-cjs/manager/dimension-line-manager.js +138 -0
- package/dist/lib-cjs/manager/dimension-line-manager.js.map +1 -0
- package/dist/lib-cjs/manager/html-anchor-manager.d.ts +93 -0
- package/dist/lib-cjs/manager/html-anchor-manager.js +228 -0
- package/dist/lib-cjs/manager/html-anchor-manager.js.map +1 -0
- package/dist/lib-cjs/manager/model-manager.d.ts +11 -34
- package/dist/lib-cjs/manager/model-manager.js +47 -107
- package/dist/lib-cjs/manager/model-manager.js.map +1 -1
- package/dist/lib-cjs/manager/parameter-manager.d.ts +17 -12
- package/dist/lib-cjs/manager/parameter-manager.js +78 -69
- package/dist/lib-cjs/manager/parameter-manager.js.map +1 -1
- package/dist/lib-cjs/manager/scene-manager.d.ts +111 -5
- package/dist/lib-cjs/manager/scene-manager.js +276 -10
- package/dist/lib-cjs/manager/scene-manager.js.map +1 -1
- package/dist/lib-cjs/viewer-error.d.ts +1 -0
- package/dist/lib-cjs/viewer-error.js +1 -0
- package/dist/lib-cjs/viewer-error.js.map +1 -1
- package/dist/lib-cjs/viewer.d.ts +9 -14
- package/dist/lib-cjs/viewer.js +16 -38
- package/dist/lib-cjs/viewer.js.map +1 -1
- package/package.json +22 -12
- package/src/index.ts +8 -0
- package/src/internal/asset-helper.ts +115 -0
- package/src/internal/cbn-custom-babylon-loader-plugin.ts +30 -3
- package/src/internal/cloning-helper.ts +1 -1
- package/src/internal/texture-parameter-helper.ts +25 -8
- package/src/manager/camera-manager.ts +153 -39
- package/src/manager/debug-manager.ts +3 -3
- package/src/manager/dimension-line-manager.ts +255 -0
- package/src/manager/html-anchor-manager.ts +332 -0
- package/src/manager/model-manager.ts +55 -138
- package/src/manager/parameter-manager.ts +94 -75
- package/src/manager/scene-manager.ts +375 -10
- package/src/viewer-error.ts +1 -0
- package/src/viewer.ts +30 -56
- package/src/dev.ts +0 -47
|
@@ -1,16 +1,25 @@
|
|
|
1
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
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
12
|
exports.SceneManager = void 0;
|
|
4
13
|
const index_1 = require("../index");
|
|
14
|
+
const asset_helper_1 = require("../internal/asset-helper");
|
|
15
|
+
const geometry_helper_1 = require("../internal/geometry-helper");
|
|
5
16
|
const lodash_es_1 = require("lodash-es");
|
|
6
17
|
/**
|
|
7
18
|
* Manager for tasks related to the Babylon.js scene.\
|
|
8
|
-
* This contains creating or loading
|
|
9
|
-
* appearance in genereal.
|
|
10
|
-
*
|
|
11
|
-
* @internal
|
|
19
|
+
* This contains creating or loading scenes with certain settings for lighting, cameras and appearance in genereal.
|
|
12
20
|
*/
|
|
13
21
|
class SceneManager {
|
|
22
|
+
/** @internal */
|
|
14
23
|
constructor(viewer, defaultSceneSettings) {
|
|
15
24
|
this.viewer = viewer;
|
|
16
25
|
// default scene settings
|
|
@@ -33,33 +42,290 @@ class SceneManager {
|
|
|
33
42
|
intensity: 1,
|
|
34
43
|
},
|
|
35
44
|
};
|
|
45
|
+
this._sceneAssets = {};
|
|
46
|
+
this._defaultSceneAsset = {
|
|
47
|
+
name: SceneManager._DEFAULT_SCENE_ASSET_NAME,
|
|
48
|
+
url: '',
|
|
49
|
+
state: 'loaded',
|
|
50
|
+
assetContainer: new index_1.AssetContainer(),
|
|
51
|
+
settings: {},
|
|
52
|
+
};
|
|
53
|
+
this._activeSceneAssetName = '';
|
|
54
|
+
this._loadSceneAssetPromises = {};
|
|
55
|
+
this._setSceneAssetCallId = 0;
|
|
36
56
|
(0, lodash_es_1.merge)(this._defaultSceneSettings, defaultSceneSettings);
|
|
37
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Register scene assets for 3d viewer, this is required for each scene asset before it can be loaded/shown.\
|
|
60
|
+
* The "viewer control" inside the Combeenation framework calls this function automatically with all assigned
|
|
61
|
+
* scene assets.
|
|
62
|
+
*/
|
|
63
|
+
registerSceneAssets(sceneAssets) {
|
|
64
|
+
for (const { name, url } of sceneAssets) {
|
|
65
|
+
const existingSceneAsset = this._sceneAssets[name];
|
|
66
|
+
if (existingSceneAsset) {
|
|
67
|
+
console.warn(`Scene asset "${name}" is already registered`);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const sceneAsset = {
|
|
71
|
+
name,
|
|
72
|
+
url,
|
|
73
|
+
state: 'notLoaded',
|
|
74
|
+
assetContainer: new index_1.AssetContainer(),
|
|
75
|
+
settings: {},
|
|
76
|
+
};
|
|
77
|
+
this._sceneAssets[name] = sceneAsset;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Set desired scene asset as active and loads the content of the associated asset container (e.g. ground mesh).\
|
|
82
|
+
* This also deactivates the currently active scene asset, as only one scene asset can be active at a time.
|
|
83
|
+
*/
|
|
84
|
+
setSceneAsset(name, skipPreparation) {
|
|
85
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
86
|
+
const sceneAsset = this._getSceneAsset(name);
|
|
87
|
+
if (!sceneAsset) {
|
|
88
|
+
throw new index_1.ViewerError({
|
|
89
|
+
id: index_1.ViewerErrorIds.SceneAssetNotRegistered,
|
|
90
|
+
message: `Can't set scene asset "${name}" as scene asset is not registered`,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
this._setSceneAssetCallId++;
|
|
94
|
+
const curSetSceneAssetCallId = this._setSceneAssetCallId;
|
|
95
|
+
if (sceneAsset.state === 'notLoaded') {
|
|
96
|
+
yield this._loadSceneAsset(sceneAsset);
|
|
97
|
+
}
|
|
98
|
+
else if (sceneAsset.state === 'loading') {
|
|
99
|
+
yield this._loadSceneAssetPromises[name];
|
|
100
|
+
}
|
|
101
|
+
else if (sceneAsset.state === 'inScene') {
|
|
102
|
+
console.warn(`Scene asset ${name} is already active`);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
// a new `setSceneAsset` call has been fired
|
|
106
|
+
if (curSetSceneAssetCallId !== this._setSceneAssetCallId) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (!skipPreparation) {
|
|
110
|
+
yield (0, asset_helper_1.prepareAssetForScene)(sceneAsset, this.viewer);
|
|
111
|
+
}
|
|
112
|
+
sceneAsset.assetContainer.addToScene();
|
|
113
|
+
const firstCam = sceneAsset.assetContainer.cameras[0];
|
|
114
|
+
if (firstCam) {
|
|
115
|
+
this.viewer.scene.activeCamera = firstCam;
|
|
116
|
+
this.viewer.scene.activeCamera.attachControl(undefined, true);
|
|
117
|
+
}
|
|
118
|
+
if (sceneAsset.assetContainer.environmentTexture) {
|
|
119
|
+
this.viewer.scene.environmentTexture = sceneAsset.assetContainer.environmentTexture;
|
|
120
|
+
}
|
|
121
|
+
if (sceneAsset.settings.clearColor) {
|
|
122
|
+
this.viewer.scene.clearColor = sceneAsset.settings.clearColor;
|
|
123
|
+
}
|
|
124
|
+
if (sceneAsset.settings.environmentIntensity !== undefined) {
|
|
125
|
+
this.viewer.scene.environmentIntensity = sceneAsset.settings.environmentIntensity;
|
|
126
|
+
}
|
|
127
|
+
sceneAsset.state = 'inScene';
|
|
128
|
+
// now hide old scene asset
|
|
129
|
+
// it's important that this is done after setting the new one to active, as there might be a render cycle with no
|
|
130
|
+
// cameras instead
|
|
131
|
+
const activeSceneAsset = this._getSceneAsset(this._activeSceneAssetName);
|
|
132
|
+
if (activeSceneAsset) {
|
|
133
|
+
this._hideSceneAsset(activeSceneAsset);
|
|
134
|
+
}
|
|
135
|
+
// finally set new scene asset as active
|
|
136
|
+
this._activeSceneAssetName = name;
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Activate default scene asset
|
|
141
|
+
*/
|
|
142
|
+
setDefaultSceneAsset() {
|
|
143
|
+
// NOTE: this function is not async because:
|
|
144
|
+
// - `setDefaultSceneAsset` is part of the viewers "bootstrapping" process which is synchronous
|
|
145
|
+
// - default scene asset only adjusts some setting but doesn't load anything
|
|
146
|
+
this.setSceneAsset(SceneManager._DEFAULT_SCENE_ASSET_NAME, true);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Loads and returns the asset container of a certain scene asset.\
|
|
150
|
+
* This can be used to access the scene asset content without having to add it to the scene.
|
|
151
|
+
*/
|
|
152
|
+
getAssetContainerOfSceneAsset(name) {
|
|
153
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
154
|
+
const sceneAsset = this._getSceneAsset(name);
|
|
155
|
+
if (!sceneAsset) {
|
|
156
|
+
throw new index_1.ViewerError({
|
|
157
|
+
id: index_1.ViewerErrorIds.SceneAssetNotRegistered,
|
|
158
|
+
message: `Can't get asset container of scene asset "${name}" as scene asset is not registered`,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
if (sceneAsset.state === 'notLoaded') {
|
|
162
|
+
yield this._loadSceneAsset(sceneAsset);
|
|
163
|
+
}
|
|
164
|
+
else if (sceneAsset.state === 'loading') {
|
|
165
|
+
yield this._loadSceneAssetPromises[sceneAsset.name];
|
|
166
|
+
}
|
|
167
|
+
if (sceneAsset.state !== 'inScene') {
|
|
168
|
+
yield (0, asset_helper_1.prepareAssetForScene)(sceneAsset, this.viewer);
|
|
169
|
+
}
|
|
170
|
+
return sceneAsset.assetContainer;
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Calculates size of the current scene.\
|
|
175
|
+
* Only takes meshes into considerations that:
|
|
176
|
+
* - are visible
|
|
177
|
+
* - are not excluded by "excludeGeometry" parameter
|
|
178
|
+
* - do not have a material of type "BackgroundMaterial"
|
|
179
|
+
* - do not have an infinite distance (like sky boxes)
|
|
180
|
+
*/
|
|
181
|
+
calculateBoundingInfo(excludeGeometry) {
|
|
182
|
+
// CB-6062: workaround for BoundingBox not respecting render loop
|
|
183
|
+
this.viewer.scene.render();
|
|
184
|
+
const { max, min } = this.viewer.scene.meshes
|
|
185
|
+
.filter(mesh => {
|
|
186
|
+
const isEnabled = mesh.isEnabled();
|
|
187
|
+
// ignore meshes with invalid bounding infos
|
|
188
|
+
const hasValidBBoxInfo = mesh.getBoundingInfo().boundingSphere.radius > 0;
|
|
189
|
+
// ignore meshes with infinite distance, typically these are sky boxes
|
|
190
|
+
const hasInfiniteDistance = mesh.infiniteDistance;
|
|
191
|
+
// ignore meshes with "BackgroundMaterial" - usually a ground or skybox
|
|
192
|
+
const hasBackgroundMaterial = mesh.material instanceof index_1.BackgroundMaterial;
|
|
193
|
+
// ignore dummy meshes for html anchor occlusion check
|
|
194
|
+
const isHtmlAnchorMesh = this.viewer.htmlAnchorManager.isHtmlAnchorMesh(mesh);
|
|
195
|
+
// ignore excluded meshes
|
|
196
|
+
const isExcluded = excludeGeometry ? (0, geometry_helper_1.isNodeExcluded)(mesh, excludeGeometry) : false;
|
|
197
|
+
return (isEnabled &&
|
|
198
|
+
hasValidBBoxInfo &&
|
|
199
|
+
!hasInfiniteDistance &&
|
|
200
|
+
!hasBackgroundMaterial &&
|
|
201
|
+
!isHtmlAnchorMesh &&
|
|
202
|
+
!isExcluded);
|
|
203
|
+
})
|
|
204
|
+
.reduce((accBBoxMinMax, curMesh, idx) => {
|
|
205
|
+
curMesh.refreshBoundingInfo(true, true);
|
|
206
|
+
const bBox = curMesh.getBoundingInfo().boundingBox;
|
|
207
|
+
// use the first entry in the array as default value and get the resulting maximum/minimum values
|
|
208
|
+
const max = idx === 0 ? bBox.maximumWorld : index_1.Vector3.Maximize(accBBoxMinMax.max, bBox.maximumWorld);
|
|
209
|
+
const min = idx === 0 ? bBox.minimumWorld : index_1.Vector3.Minimize(accBBoxMinMax.min, bBox.minimumWorld);
|
|
210
|
+
return { max, min };
|
|
211
|
+
}, { max: new index_1.Vector3(), min: new index_1.Vector3() });
|
|
212
|
+
const boundingInfo = new index_1.BoundingInfo(min, max);
|
|
213
|
+
return boundingInfo;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Adjusts position and scaling of a dedicated "ground" meshes according to the bounding sphere of the current scene
|
|
217
|
+
* content.\
|
|
218
|
+
* This function is designed to adjust the ground that is created via `scene.createDefaultEnvironment`, but any other
|
|
219
|
+
* plane mesh can be used as well.
|
|
220
|
+
*/
|
|
221
|
+
updateGround(settings) {
|
|
222
|
+
var _a, _b;
|
|
223
|
+
const bboxInfo = this.calculateBoundingInfo(settings === null || settings === void 0 ? void 0 : settings.excludeGeometry);
|
|
224
|
+
const groundMesh = (_a = settings === null || settings === void 0 ? void 0 : settings.groundMesh) !== null && _a !== void 0 ? _a : this.viewer.scene.getMeshByName(SceneManager._DEFAULT_GROUND_PLANE_NAME);
|
|
225
|
+
if (!groundMesh) {
|
|
226
|
+
console.warn("Can't update ground, as no ground mesh is available");
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
// 2: conversion from radius to diameter
|
|
230
|
+
const factor = bboxInfo.boundingSphere.radius * 2 * ((_b = settings === null || settings === void 0 ? void 0 : settings.factor) !== null && _b !== void 0 ? _b : SceneManager._DEFAULT_GROUND_SIZING_FACTOR);
|
|
231
|
+
const position = bboxInfo.boundingSphere.centerWorld;
|
|
232
|
+
groundMesh.scaling = new index_1.Vector3(factor, factor, 1);
|
|
233
|
+
groundMesh.position = new index_1.Vector3(position.x, 0, position.z);
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Assigns available meshes in scene as shadow receiver and shadow casters of dedicated shadow generators, as defined
|
|
237
|
+
* in settings
|
|
238
|
+
*/
|
|
239
|
+
updateShadows(settings) {
|
|
240
|
+
var _a;
|
|
241
|
+
const shadowGenerators = (_a = settings === null || settings === void 0 ? void 0 : settings.shadowGenerators) !== null && _a !== void 0 ? _a : this.viewer.scene.lights.map(light => light.getShadowGenerator()).filter(Boolean);
|
|
242
|
+
const shadowCasterMeshes = [];
|
|
243
|
+
this.viewer.scene.meshes.forEach(mesh => {
|
|
244
|
+
const isShadowReceiver = (settings === null || settings === void 0 ? void 0 : settings.excludeReceiver) ? !(0, geometry_helper_1.isNodeExcluded)(mesh, settings.excludeReceiver) : true;
|
|
245
|
+
if (isShadowReceiver) {
|
|
246
|
+
mesh.receiveShadows = true;
|
|
247
|
+
}
|
|
248
|
+
// excluding background meshes like ground or walls from shadow casters is benefitial to reduce the size of the
|
|
249
|
+
// poisson filters auto shadow plane calculation, which will result in better shadow resolution
|
|
250
|
+
const hasBackgroundMaterial = mesh.material instanceof index_1.BackgroundMaterial;
|
|
251
|
+
const isShadowCaster = (settings === null || settings === void 0 ? void 0 : settings.excludeCaster) ? !(0, geometry_helper_1.isNodeExcluded)(mesh, settings.excludeCaster) : true;
|
|
252
|
+
if (isShadowCaster && !hasBackgroundMaterial) {
|
|
253
|
+
shadowCasterMeshes.push(mesh);
|
|
254
|
+
}
|
|
255
|
+
});
|
|
256
|
+
shadowGenerators.forEach(shadowGen => {
|
|
257
|
+
const shadowMap = shadowGen.getShadowMap();
|
|
258
|
+
if (!shadowMap) {
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
shadowMap.renderList = [...shadowCasterMeshes];
|
|
262
|
+
shadowGen.recreateShadowMap();
|
|
263
|
+
});
|
|
264
|
+
}
|
|
38
265
|
/**
|
|
39
266
|
* Creates a camera and minimum lighting, so that the scene is set up good enough to show content.\
|
|
40
267
|
* Settings can be overwritten in the constructor.
|
|
268
|
+
*
|
|
269
|
+
* @internal
|
|
41
270
|
*/
|
|
42
271
|
applyDefaultSettingsToScene() {
|
|
43
272
|
const cameraSettings = this._defaultSceneSettings.camera;
|
|
44
273
|
const envSettings = this._defaultSceneSettings.environment;
|
|
45
|
-
|
|
274
|
+
// NOTE: default scene asset doesn't load anything, in this way the viewers "bootstrapping" process can remain
|
|
275
|
+
// synchronous
|
|
276
|
+
this._defaultSceneAsset = {
|
|
277
|
+
name: SceneManager._DEFAULT_SCENE_ASSET_NAME,
|
|
278
|
+
url: '',
|
|
279
|
+
state: 'loaded',
|
|
280
|
+
assetContainer: new index_1.AssetContainer(),
|
|
281
|
+
settings: {},
|
|
282
|
+
};
|
|
283
|
+
this._defaultSceneAsset.settings.clearColor = this._defaultSceneSettings.backgroundColor;
|
|
46
284
|
// camera
|
|
47
285
|
if (cameraSettings.create) {
|
|
48
|
-
const camera = new index_1.ArcRotateCamera(`${SceneManager.
|
|
49
|
-
camera.attachControl(this.viewer.engine._workingCanvas, true);
|
|
286
|
+
const camera = new index_1.ArcRotateCamera(`${SceneManager._DEFAULT_SCENE_ASSET_NAME}_camera`, cameraSettings.initialPosition.alpha, cameraSettings.initialPosition.beta, cameraSettings.initialPosition.radius, cameraSettings.initialPosition.target, this.viewer.scene);
|
|
50
287
|
camera.minZ = cameraSettings.settings.minZ;
|
|
51
288
|
camera.lowerRadiusLimit = cameraSettings.settings.lowerRadiusLimit;
|
|
52
289
|
camera.wheelPrecision = cameraSettings.settings.wheelPrecision;
|
|
53
290
|
camera.panningSensibility = cameraSettings.settings.panningSensibility;
|
|
291
|
+
camera.attachControl(undefined, true);
|
|
292
|
+
this._defaultSceneAsset.assetContainer.cameras.push(camera);
|
|
293
|
+
this.viewer.scene.removeCamera(camera);
|
|
54
294
|
}
|
|
55
295
|
// environment
|
|
56
296
|
if (envSettings.create) {
|
|
57
297
|
const envTexture = index_1.CubeTexture.CreateFromPrefilteredData(envSettings.url, this.viewer.scene);
|
|
58
|
-
this.
|
|
59
|
-
this.
|
|
298
|
+
this._defaultSceneAsset.assetContainer.environmentTexture = envTexture;
|
|
299
|
+
this._defaultSceneAsset.settings.environmentIntensity = envSettings.intensity;
|
|
60
300
|
}
|
|
301
|
+
this.setDefaultSceneAsset();
|
|
302
|
+
}
|
|
303
|
+
_getSceneAsset(name) {
|
|
304
|
+
if (name === SceneManager._DEFAULT_SCENE_ASSET_NAME) {
|
|
305
|
+
return this._defaultSceneAsset;
|
|
306
|
+
}
|
|
307
|
+
const sceneAsset = this._sceneAssets[name];
|
|
308
|
+
return sceneAsset;
|
|
309
|
+
}
|
|
310
|
+
_loadSceneAsset(sceneAsset) {
|
|
311
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
312
|
+
const loadSceneAssetPromise = () => __awaiter(this, void 0, void 0, function* () {
|
|
313
|
+
const { sceneSettingsData } = yield (0, asset_helper_1.loadAsset)(sceneAsset, this.viewer);
|
|
314
|
+
sceneAsset.settings = sceneSettingsData !== null && sceneSettingsData !== void 0 ? sceneSettingsData : {};
|
|
315
|
+
delete this._loadSceneAssetPromises[sceneAsset.name];
|
|
316
|
+
});
|
|
317
|
+
this._loadSceneAssetPromises[sceneAsset.name] = loadSceneAssetPromise();
|
|
318
|
+
return this._loadSceneAssetPromises[sceneAsset.name];
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
_hideSceneAsset(sceneAsset) {
|
|
322
|
+
sceneAsset.assetContainer.cameras.forEach(camera => camera.detachControl());
|
|
323
|
+
sceneAsset.assetContainer.removeFromScene();
|
|
324
|
+
sceneAsset.state = 'loaded';
|
|
61
325
|
}
|
|
62
326
|
}
|
|
63
327
|
exports.SceneManager = SceneManager;
|
|
64
|
-
SceneManager.
|
|
328
|
+
SceneManager._DEFAULT_SCENE_ASSET_NAME = '$default';
|
|
329
|
+
SceneManager._DEFAULT_GROUND_PLANE_NAME = 'BackgroundPlane';
|
|
330
|
+
SceneManager._DEFAULT_GROUND_SIZING_FACTOR = 5;
|
|
65
331
|
//# sourceMappingURL=scene-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene-manager.js","sourceRoot":"","sources":["../../../src/manager/scene-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scene-manager.js","sourceRoot":"","sources":["../../../src/manager/scene-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@ exports.ViewerErrorIds = {
|
|
|
21
21
|
ModelNotRegistered: 'ModelNotRegistered',
|
|
22
22
|
ModelAlreadyExists: 'ModelAlreadyExists',
|
|
23
23
|
ModelIsNotAClone: 'ModelIsNotAClone',
|
|
24
|
+
SceneAssetNotRegistered: 'SceneAssetNotRegistered',
|
|
24
25
|
AssetLoadingFailed: 'AssetLoadingFailed',
|
|
25
26
|
MaterialAlreadyExists: 'MaterialAlreadyExists',
|
|
26
27
|
NotAClonedMaterial: 'NotAClonedMaterial',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewer-error.js","sourceRoot":"","sources":["../../src/viewer-error.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAQH;;;;;;;;GAQG;AACU,QAAA,cAAc,GAAG;IAC5B,qBAAqB,EAAE,uBAAuB;IAC9C,uBAAuB,EAAE,yBAAyB;IAClD,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,gBAAgB,EAAE,kBAAkB;IACpC,kBAAkB,EAAE,oBAAoB;IACxC,qBAAqB,EAAE,uBAAuB;IAC9C,kBAAkB,EAAE,oBAAoB;IACxC,yBAAyB,EAAE,2BAA2B;IACtD,iBAAiB,EAAE,mBAAmB;CACvC,CAAC;AAEF,gBAAgB;AAChB,MAAa,WAAY,SAAQ,KAAK;IAGpC,YAAY,IAAqB;QAC/B,mHAAmH;QACnH,oDAAoD;QACpD,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAC,mBAAmB,CAAC,OAAe;;QACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEzD,SAAS;QACT,2CAA2C;QAC3C,uCAAuC;QACvC,kGAAkG;QAClG,wCAAwC;QACxC,2GAA2G;QAC3G,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,GAAG,QAAQ,GAAG,eAAe,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnF,MAAM,EAAE,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,0CAAE,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,0CAAE,GAAG,KAAI,OAAO,CAAC;QAE3C,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;IACrB,CAAC;CACF;AApCD,kCAoCC"}
|
|
1
|
+
{"version":3,"file":"viewer-error.js","sourceRoot":"","sources":["../../src/viewer-error.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAQH;;;;;;;;GAQG;AACU,QAAA,cAAc,GAAG;IAC5B,qBAAqB,EAAE,uBAAuB;IAC9C,uBAAuB,EAAE,yBAAyB;IAClD,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,gBAAgB,EAAE,kBAAkB;IACpC,uBAAuB,EAAE,yBAAyB;IAClD,kBAAkB,EAAE,oBAAoB;IACxC,qBAAqB,EAAE,uBAAuB;IAC9C,kBAAkB,EAAE,oBAAoB;IACxC,yBAAyB,EAAE,2BAA2B;IACtD,iBAAiB,EAAE,mBAAmB;CACvC,CAAC;AAEF,gBAAgB;AAChB,MAAa,WAAY,SAAQ,KAAK;IAGpC,YAAY,IAAqB;QAC/B,mHAAmH;QACnH,oDAAoD;QACpD,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAC,mBAAmB,CAAC,OAAe;;QACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEzD,SAAS;QACT,2CAA2C;QAC3C,uCAAuC;QACvC,kGAAkG;QAClG,wCAAwC;QACxC,2GAA2G;QAC3G,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,GAAG,QAAQ,GAAG,eAAe,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnF,MAAM,EAAE,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,0CAAE,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,0CAAE,GAAG,KAAI,OAAO,CAAC;QAE3C,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;IACrB,CAAC;CACF;AApCD,kCAoCC"}
|
package/dist/lib-cjs/viewer.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as Index from './index';
|
|
2
|
-
import {
|
|
2
|
+
import { AbstractEngine, CameraManager, DebugManager, DefaultSceneSettings, DimensionLineManager, EngineOptions, EventManager, GltfExportManager, HtmlAnchorManager, MaterialManager, ModelManager, ParameterManager, ParameterSubject, Scene, SceneManager, TextureManager, TransformNode } from './index';
|
|
3
3
|
/**
|
|
4
4
|
* Use this to define geometry to be excluded from autofocus, GLB export, etc.
|
|
5
5
|
*/
|
|
@@ -46,13 +46,15 @@ export declare type ViewerSettings = {
|
|
|
46
46
|
* (e.g. `modelManager` for loading models into the scene)
|
|
47
47
|
*/
|
|
48
48
|
export declare class Viewer {
|
|
49
|
-
readonly canvas
|
|
49
|
+
readonly canvas?: HTMLCanvasElement | undefined;
|
|
50
50
|
static readonly version: string;
|
|
51
51
|
protected _scene: Scene;
|
|
52
52
|
protected _cameraManager: CameraManager;
|
|
53
53
|
protected _debugManager: DebugManager;
|
|
54
|
+
protected _dimensionLineManager: DimensionLineManager;
|
|
54
55
|
protected _eventManager: EventManager;
|
|
55
56
|
protected _gltfExportManager: GltfExportManager;
|
|
57
|
+
protected _htmlAnchorManager: HtmlAnchorManager;
|
|
56
58
|
protected _materialManager: MaterialManager;
|
|
57
59
|
protected _modelManager: ModelManager;
|
|
58
60
|
protected _parameterManager: ParameterManager;
|
|
@@ -61,11 +63,13 @@ export declare class Viewer {
|
|
|
61
63
|
protected _viewerSettings: ViewerSettings;
|
|
62
64
|
protected _isRenderLoopPaused: boolean;
|
|
63
65
|
get scene(): Scene;
|
|
64
|
-
get engine():
|
|
66
|
+
get engine(): AbstractEngine;
|
|
65
67
|
get cameraManager(): CameraManager;
|
|
66
68
|
get debugManager(): DebugManager;
|
|
69
|
+
get dimensionLineManager(): DimensionLineManager;
|
|
67
70
|
get eventManager(): EventManager;
|
|
68
71
|
get gltfExportManager(): GltfExportManager;
|
|
72
|
+
get htmlAnchorManager(): HtmlAnchorManager;
|
|
69
73
|
get materialManager(): MaterialManager;
|
|
70
74
|
get modelManager(): ModelManager;
|
|
71
75
|
get parameterManager(): ParameterManager;
|
|
@@ -86,9 +90,9 @@ export declare class Viewer {
|
|
|
86
90
|
* @param defaultSceneSettings Can be overwritten to tweak settings for the automatically create Babylon.js scene.\
|
|
87
91
|
* This scene contains a camera and an environment per default.
|
|
88
92
|
*/
|
|
89
|
-
constructor(canvas
|
|
93
|
+
constructor(canvas?: HTMLCanvasElement | undefined, viewerSettings?: DeepPartial<ViewerSettings>, defaultSceneSettings?: DeepPartial<DefaultSceneSettings>);
|
|
90
94
|
/**
|
|
91
|
-
* Pause rendering can be
|
|
95
|
+
* Pause rendering can be useful when doing internal scene processings that should not be visible to the user,
|
|
92
96
|
* e.g. cloning meshes for gltf export
|
|
93
97
|
*/
|
|
94
98
|
pauseRendering(): void;
|
|
@@ -100,15 +104,6 @@ export declare class Viewer {
|
|
|
100
104
|
* Destroys this viewer instance and disposes Babylon.js engine and all scene content
|
|
101
105
|
*/
|
|
102
106
|
destroy(): void;
|
|
103
|
-
/**
|
|
104
|
-
* Calculates size of the current scene.\
|
|
105
|
-
* Only takes meshes into considerations that:
|
|
106
|
-
* - are visible
|
|
107
|
-
* - are not excluded by "excludeGeometry" parameter
|
|
108
|
-
* - do not have a material of type "BackgroundMaterial"
|
|
109
|
-
* - do not have an infinite distance (like sky boxes)
|
|
110
|
-
*/
|
|
111
|
-
calculateBoundingInfo(excludeGeometry?: ExcludedGeometryList): BoundingInfo;
|
|
112
107
|
/**
|
|
113
108
|
* Set up viewer (engine and scene) and initialize all managers
|
|
114
109
|
*/
|
package/dist/lib-cjs/viewer.js
CHANGED
|
@@ -32,7 +32,6 @@ const Index = __importStar(require("./index"));
|
|
|
32
32
|
const index_1 = require("./index");
|
|
33
33
|
const cbn_custom_babylon_loader_plugin_1 = require("./internal/cbn-custom-babylon-loader-plugin");
|
|
34
34
|
const device_helper_1 = require("./internal/device-helper");
|
|
35
|
-
const geometry_helper_1 = require("./internal/geometry-helper");
|
|
36
35
|
const lodash_es_1 = require("lodash-es");
|
|
37
36
|
/**
|
|
38
37
|
* This is the entry point into the application.\
|
|
@@ -85,12 +84,18 @@ class Viewer {
|
|
|
85
84
|
get debugManager() {
|
|
86
85
|
return this._debugManager;
|
|
87
86
|
}
|
|
87
|
+
get dimensionLineManager() {
|
|
88
|
+
return this._dimensionLineManager;
|
|
89
|
+
}
|
|
88
90
|
get eventManager() {
|
|
89
91
|
return this._eventManager;
|
|
90
92
|
}
|
|
91
93
|
get gltfExportManager() {
|
|
92
94
|
return this._gltfExportManager;
|
|
93
95
|
}
|
|
96
|
+
get htmlAnchorManager() {
|
|
97
|
+
return this._htmlAnchorManager;
|
|
98
|
+
}
|
|
94
99
|
get materialManager() {
|
|
95
100
|
return this._materialManager;
|
|
96
101
|
}
|
|
@@ -120,7 +125,7 @@ class Viewer {
|
|
|
120
125
|
return Index;
|
|
121
126
|
}
|
|
122
127
|
/**
|
|
123
|
-
* Pause rendering can be
|
|
128
|
+
* Pause rendering can be useful when doing internal scene processings that should not be visible to the user,
|
|
124
129
|
* e.g. cloning meshes for gltf export
|
|
125
130
|
*/
|
|
126
131
|
pauseRendering() {
|
|
@@ -139,41 +144,6 @@ class Viewer {
|
|
|
139
144
|
this.eventManager.removeAllListeners();
|
|
140
145
|
this.engine.dispose();
|
|
141
146
|
}
|
|
142
|
-
/**
|
|
143
|
-
* Calculates size of the current scene.\
|
|
144
|
-
* Only takes meshes into considerations that:
|
|
145
|
-
* - are visible
|
|
146
|
-
* - are not excluded by "excludeGeometry" parameter
|
|
147
|
-
* - do not have a material of type "BackgroundMaterial"
|
|
148
|
-
* - do not have an infinite distance (like sky boxes)
|
|
149
|
-
*/
|
|
150
|
-
calculateBoundingInfo(excludeGeometry) {
|
|
151
|
-
// CB-6062: workaround for BoundingBox not respecting render loop
|
|
152
|
-
this.scene.render();
|
|
153
|
-
const { max, min } = this.scene.meshes
|
|
154
|
-
.filter(mesh => {
|
|
155
|
-
const isEnabled = mesh.isEnabled();
|
|
156
|
-
// ignore meshes with invalid bounding infos
|
|
157
|
-
const hasValidBBoxInfo = mesh.getBoundingInfo().boundingSphere.radius > 0;
|
|
158
|
-
// ignore meshes with infinite distance, typically these are sky boxes
|
|
159
|
-
const hasInfiniteDistance = mesh.infiniteDistance;
|
|
160
|
-
// ignore meshes with "BackgroundMaterial" - usually a ground or skybox
|
|
161
|
-
const hasBackgroundMaterial = mesh.material instanceof index_1.BackgroundMaterial;
|
|
162
|
-
// ignore excluded meshes
|
|
163
|
-
const isExcluded = excludeGeometry ? (0, geometry_helper_1.isNodeExcluded)(mesh, excludeGeometry) : false;
|
|
164
|
-
return isEnabled && hasValidBBoxInfo && !hasInfiniteDistance && !hasBackgroundMaterial && !isExcluded;
|
|
165
|
-
})
|
|
166
|
-
.reduce((accBBoxMinMax, curMesh, idx) => {
|
|
167
|
-
curMesh.refreshBoundingInfo(true, true);
|
|
168
|
-
const bBox = curMesh.getBoundingInfo().boundingBox;
|
|
169
|
-
// use the first entry in the array as default value and get the resulting maximum/minimum values
|
|
170
|
-
const max = idx === 0 ? bBox.maximumWorld : index_1.Vector3.Maximize(accBBoxMinMax.max, bBox.maximumWorld);
|
|
171
|
-
const min = idx === 0 ? bBox.minimumWorld : index_1.Vector3.Minimize(accBBoxMinMax.min, bBox.minimumWorld);
|
|
172
|
-
return { max, min };
|
|
173
|
-
}, { max: new index_1.Vector3(), min: new index_1.Vector3() });
|
|
174
|
-
const boundingInfo = new index_1.BoundingInfo(min, max);
|
|
175
|
-
return boundingInfo;
|
|
176
|
-
}
|
|
177
147
|
/**
|
|
178
148
|
* Set up viewer (engine and scene) and initialize all managers
|
|
179
149
|
*/
|
|
@@ -187,7 +157,9 @@ class Viewer {
|
|
|
187
157
|
// - `DebugManager.showCoordinateSystem`
|
|
188
158
|
// - probably dimensions line handling (not implemented yet)
|
|
189
159
|
index_1.TransformNode.BillboardUseParentOrientation = true;
|
|
190
|
-
const engine =
|
|
160
|
+
const engine = this.canvas
|
|
161
|
+
? new index_1.Engine(this.canvas, this._viewerSettings.antialiasing, (0, lodash_es_1.cloneDeep)(this._viewerSettings.engineOptions), this._viewerSettings.adaptToDeviceRatio)
|
|
162
|
+
: new index_1.NullEngine();
|
|
191
163
|
const isScaledDownDevice = (0, device_helper_1.getIsScaledDownDevice)(this._viewerSettings.limitTextureSize);
|
|
192
164
|
if (this._viewerSettings.limitTextureSize && isScaledDownDevice) {
|
|
193
165
|
engine.getCaps().maxTextureSize = this._viewerSettings.limitTextureSize.size;
|
|
@@ -196,13 +168,19 @@ class Viewer {
|
|
|
196
168
|
engine.getCaps().parallelShaderCompile = undefined;
|
|
197
169
|
}
|
|
198
170
|
this._scene = new index_1.Scene(engine);
|
|
171
|
+
// NOTE: rendering group id "1" is reserved for occlusion helper sphere (see `HtmlAnchorManager`)
|
|
172
|
+
// rendering group id "1" has the same depth buffer as 0 in order to make this work
|
|
173
|
+
// => use rendering group id "2" or higher for keeping meshes in foreground
|
|
174
|
+
this._scene.setRenderingAutoClearDepthStencil(1, false, false, false);
|
|
199
175
|
// NOTE: order of manage seems to be a bit counter intuitive as it's sorted alphabetically
|
|
200
176
|
// semantically one would start with scene manager, etc...
|
|
201
177
|
// still this is a good test as the order of manager constructors should not matter
|
|
202
178
|
this._cameraManager = new index_1.CameraManager(this);
|
|
203
179
|
this._debugManager = new index_1.DebugManager(this);
|
|
180
|
+
this._dimensionLineManager = new index_1.DimensionLineManager(this);
|
|
204
181
|
this._eventManager = new index_1.EventManager(this);
|
|
205
182
|
this._gltfExportManager = new index_1.GltfExportManager(this);
|
|
183
|
+
this._htmlAnchorManager = new index_1.HtmlAnchorManager(this);
|
|
206
184
|
this._materialManager = new index_1.MaterialManager(this);
|
|
207
185
|
this._modelManager = new index_1.ModelManager(this);
|
|
208
186
|
this._parameterManager = new index_1.ParameterManager(this);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewer.js","sourceRoot":"","sources":["../../src/viewer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sEAAyC;AACzC,+CAAiC;AACjC,
|
|
1
|
+
{"version":3,"file":"viewer.js","sourceRoot":"","sources":["../../src/viewer.ts"],"names":[],"mappings":"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"}
|