@combeenation/3d-viewer 5.0.3 → 5.1.0-rc2
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/api/classes/element.d.ts +10 -0
- package/dist/lib-cjs/api/classes/element.js +43 -0
- package/dist/lib-cjs/api/classes/element.js.map +1 -1
- package/dist/lib-cjs/api/classes/variant.js +73 -37
- package/dist/lib-cjs/api/classes/variant.js.map +1 -1
- package/dist/lib-cjs/api/classes/viewer.d.ts +7 -0
- package/dist/lib-cjs/api/classes/viewer.js +14 -0
- package/dist/lib-cjs/api/classes/viewer.js.map +1 -1
- package/dist/lib-cjs/api/util/babylonHelper.js +20 -6
- package/dist/lib-cjs/api/util/babylonHelper.js.map +1 -1
- package/dist/lib-cjs/api/util/sceneLoaderHelper.d.ts +16 -6
- package/dist/lib-cjs/api/util/sceneLoaderHelper.js +48 -44
- package/dist/lib-cjs/api/util/sceneLoaderHelper.js.map +1 -1
- package/dist/lib-cjs/buildinfo.json +1 -1
- package/package.json +1 -1
- package/src/api/classes/element.ts +45 -0
- package/src/api/classes/variant.ts +47 -8
- package/src/api/classes/viewer.ts +18 -0
- package/src/api/util/babylonHelper.ts +19 -4
- package/src/api/util/sceneLoaderHelper.ts +101 -0
- package/src/dev.ts +23 -1
- package/src/tsconfig.json +1 -0
- package/src/types.d.ts +25 -0
|
@@ -80,6 +80,12 @@ var cloneTransformNode = function (node, predicate, deep) {
|
|
|
80
80
|
var clone = node.clone(node.name, node.parent, true);
|
|
81
81
|
if (clone) {
|
|
82
82
|
clone.metadata = lodash_es_1.cloneDeep(node.metadata);
|
|
83
|
+
// if the cloned node is of type InstancedMesh, due to a bug(?),
|
|
84
|
+
// the InstancedMesh.isEnabled state may have changed after cloning.
|
|
85
|
+
// in that case, set the clone's enabled state to the original's state
|
|
86
|
+
if (node.constructor.name === 'InstancedMesh') {
|
|
87
|
+
clone.setEnabled(node.isEnabled(false));
|
|
88
|
+
}
|
|
83
89
|
}
|
|
84
90
|
if (deep) {
|
|
85
91
|
var children = node.getChildTransformNodes(true);
|
|
@@ -257,7 +263,7 @@ exports.transformTransformNode = transformTransformNode;
|
|
|
257
263
|
*/
|
|
258
264
|
var changeEnvironment = function (scene, envDef) {
|
|
259
265
|
var _a;
|
|
260
|
-
var _b;
|
|
266
|
+
var _b, _c;
|
|
261
267
|
// issue warning if both background texture and usedefault are set
|
|
262
268
|
if (envDef.environmentUseDefault && envDef.environmentBackground) {
|
|
263
269
|
console.warn("!!! Warning !!! Spec parameter 'environment.usedefault' is being overruled by 'environment.background'.");
|
|
@@ -271,15 +277,23 @@ var changeEnvironment = function (scene, envDef) {
|
|
|
271
277
|
? sceneSetup_1.defaultEnvHelperColor
|
|
272
278
|
: sceneSetup_1.defaultSceneClearColor;
|
|
273
279
|
var clearColorChanged = clearColorBefore !== scene.clearColor.toString();
|
|
280
|
+
// Remove all URI params from given env URL as `CubeTexture.CreateFromPrefilteredData` does not work correctly with
|
|
281
|
+
// URLs which contain URI params.
|
|
282
|
+
// E.g. `https://some.url/.../studio.env?name=defaultEnv` throws an exception whilst `https://some.url/.../studio.env`
|
|
283
|
+
// works as expected.
|
|
284
|
+
//
|
|
285
|
+
// See BJS forum for more details:
|
|
286
|
+
// https://forum.babylonjs.com/t/cubetexture-createfromprefiltereddata-does-not-work-with-url-that-contains-uri-params/34097
|
|
287
|
+
var newEnvUrl = (_b = envDef.environment) === null || _b === void 0 ? void 0 : _b.split('?')[0];
|
|
274
288
|
// 2) dispose existing & set new ENVIRONMENT (==texture)
|
|
275
289
|
var curEnvTexture = scene.environmentTexture;
|
|
276
|
-
var envTextureChanged =
|
|
277
|
-
if (curEnvTexture && (!
|
|
290
|
+
var envTextureChanged = newEnvUrl !== (curEnvTexture === null || curEnvTexture === void 0 ? void 0 : curEnvTexture.url);
|
|
291
|
+
if (curEnvTexture && (!newEnvUrl || envTextureChanged)) {
|
|
278
292
|
curEnvTexture.dispose();
|
|
279
293
|
}
|
|
280
294
|
var rotation = envDef.environmentRotation !== undefined ? tools_1.Tools.ToRadians(envDef.environmentRotation) : 0;
|
|
281
|
-
if (
|
|
282
|
-
var envTexture = cubeTexture_1.CubeTexture.CreateFromPrefilteredData(
|
|
295
|
+
if (newEnvUrl && envTextureChanged) {
|
|
296
|
+
var envTexture = cubeTexture_1.CubeTexture.CreateFromPrefilteredData(newEnvUrl, scene);
|
|
283
297
|
envTexture.rotationY = rotation;
|
|
284
298
|
scene.environmentTexture = envTexture;
|
|
285
299
|
}
|
|
@@ -304,7 +318,7 @@ var changeEnvironment = function (scene, envDef) {
|
|
|
304
318
|
curDome.rotation.y = rotationPhotoDome;
|
|
305
319
|
}
|
|
306
320
|
// 4) dispose existing & set new ENVIRONMENT_USEDEFAULT (only if no background is set)
|
|
307
|
-
var curEnvHelper = (
|
|
321
|
+
var curEnvHelper = (_c = scene.metadata) === null || _c === void 0 ? void 0 : _c[envHelperMetadataName];
|
|
308
322
|
if (curEnvHelper && !useDefaultEnv) {
|
|
309
323
|
curEnvHelper.dispose();
|
|
310
324
|
delete scene.metadata[envHelperMetadataName];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"babylonHelper.js","sourceRoot":"","sources":["../../../../src/api/util/babylonHelper.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"babylonHelper.js","sourceRoot":"","sources":["../../../../src/api/util/babylonHelper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import { Scene } from '@babylonjs/core/scene';
|
|
1
2
|
import { ISceneLoaderPlugin } from '@babylonjs/core/Loading/sceneLoader';
|
|
3
|
+
import { Material } from '@babylonjs/core/Materials/material';
|
|
4
|
+
declare const missingMaterialMetadataName = "missingMaterial";
|
|
2
5
|
/**
|
|
3
6
|
* Create and return a custom loader plugin to be registered with SceneLoader, that allows
|
|
4
7
|
* us to run our own code against the input data before using the standard procedure to
|
|
@@ -6,13 +9,20 @@ import { ISceneLoaderPlugin } from '@babylonjs/core/Loading/sceneLoader';
|
|
|
6
9
|
* @param previousLoaderPlugin the actual loader that's executed after manipulating the input data
|
|
7
10
|
* @returns Custom loader plugin to be registered with SceneLoader.RegisterPlugin()
|
|
8
11
|
*/
|
|
9
|
-
declare const
|
|
12
|
+
declare const getCustomCbnBabylonLoaderPlugin: (previousLoaderPlugin: ISceneLoaderPlugin) => ISceneLoaderPlugin;
|
|
10
13
|
/**
|
|
11
|
-
* Return an observer to be applied to meshes
|
|
12
|
-
* upon set
|
|
13
|
-
* @param targetMeshOrInstance
|
|
14
|
-
* @param
|
|
14
|
+
* Return an observer to be applied to meshes in order to post-load missing materials
|
|
15
|
+
* upon set enabled/visible.
|
|
16
|
+
* @param targetMeshOrInstance AbstractMesh the observer will be applied to
|
|
17
|
+
* @param concerningMesh Mesh to look for missing materials on, and create/apply to (when found).
|
|
15
18
|
* @returns observer
|
|
16
19
|
*/
|
|
17
20
|
declare const getMaterialPostLoadObserver: (targetMeshOrInstance: AbstractMesh, concerningMesh: Mesh) => (_eventData: any, _eventState: any) => void;
|
|
18
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Look up the provided materials (see library import) and create and return one if found.
|
|
23
|
+
* @param materialId BabylonJs material-id. E.g. 'concrete".
|
|
24
|
+
* @param scene BabylonJs scene
|
|
25
|
+
* @returns PBRMaterial | null
|
|
26
|
+
*/
|
|
27
|
+
export declare const getMaterialFromCbnAssets: (materialId: string, scene: Scene) => Material | null;
|
|
28
|
+
export { getCustomCbnBabylonLoaderPlugin, getMaterialPostLoadObserver, missingMaterialMetadataName };
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getMaterialPostLoadObserver = exports.
|
|
4
|
-
var pbrMaterial_1 = require("@babylonjs/core/Materials/PBR/pbrMaterial");
|
|
3
|
+
exports.missingMaterialMetadataName = exports.getMaterialPostLoadObserver = exports.getCustomCbnBabylonLoaderPlugin = exports.getMaterialFromCbnAssets = void 0;
|
|
5
4
|
var babylonHelper_1 = require("./babylonHelper");
|
|
6
5
|
var has_1 = require("lodash-es/has");
|
|
6
|
+
var material_1 = require("@babylonjs/core/Materials/material");
|
|
7
|
+
var missingMaterialMetadataName = 'missingMaterial';
|
|
8
|
+
exports.missingMaterialMetadataName = missingMaterialMetadataName;
|
|
7
9
|
/**
|
|
8
10
|
* Create and return a custom loader plugin to be registered with SceneLoader, that allows
|
|
9
11
|
* us to run our own code against the input data before using the standard procedure to
|
|
@@ -11,52 +13,47 @@ var has_1 = require("lodash-es/has");
|
|
|
11
13
|
* @param previousLoaderPlugin the actual loader that's executed after manipulating the input data
|
|
12
14
|
* @returns Custom loader plugin to be registered with SceneLoader.RegisterPlugin()
|
|
13
15
|
*/
|
|
14
|
-
var
|
|
16
|
+
var getCustomCbnBabylonLoaderPlugin = function (previousLoaderPlugin) {
|
|
15
17
|
var customLoader = {
|
|
16
|
-
name: '
|
|
18
|
+
name: 'cbnCustomBabylonLoader',
|
|
17
19
|
extensions: '.babylon',
|
|
18
|
-
importMesh:
|
|
19
|
-
|
|
20
|
-
},
|
|
21
|
-
load: function (scene, data, rootUrl) {
|
|
22
|
-
return true;
|
|
23
|
-
},
|
|
20
|
+
importMesh: previousLoaderPlugin.importMesh,
|
|
21
|
+
load: previousLoaderPlugin.load,
|
|
24
22
|
loadAssetContainer: function (scene, data, rootUrl, onError) {
|
|
25
23
|
//* 1) --- manipulate ORIGINAL data
|
|
26
24
|
var dataParsed = JSON.parse(data);
|
|
27
25
|
//* 2) --- call default (non-custom) loading method
|
|
28
26
|
var importedContainer = previousLoaderPlugin.loadAssetContainer(scene, data, rootUrl);
|
|
29
27
|
//* 3) --- manipulate IMPORTED data
|
|
30
|
-
|
|
28
|
+
addMissingMaterialMetadata(dataParsed, importedContainer);
|
|
31
29
|
//* 4) --- return imported data
|
|
32
30
|
return importedContainer;
|
|
33
31
|
},
|
|
34
32
|
};
|
|
35
33
|
return customLoader;
|
|
36
34
|
};
|
|
37
|
-
exports.
|
|
35
|
+
exports.getCustomCbnBabylonLoaderPlugin = getCustomCbnBabylonLoaderPlugin;
|
|
38
36
|
/**
|
|
39
|
-
* Return an observer to be applied to meshes
|
|
40
|
-
* upon set
|
|
41
|
-
* @param targetMeshOrInstance
|
|
42
|
-
* @param
|
|
37
|
+
* Return an observer to be applied to meshes in order to post-load missing materials
|
|
38
|
+
* upon set enabled/visible.
|
|
39
|
+
* @param targetMeshOrInstance AbstractMesh the observer will be applied to
|
|
40
|
+
* @param concerningMesh Mesh to look for missing materials on, and create/apply to (when found).
|
|
43
41
|
* @returns observer
|
|
44
42
|
*/
|
|
45
|
-
//* targetMeshOrInstance .. AbstractMesh to apply the observer to. can be a parent of the concerning mesh
|
|
46
|
-
//* concerningMesh .. actual Mesh with missingMaterial metadata.
|
|
47
43
|
var getMaterialPostLoadObserver = function (targetMeshOrInstance, concerningMesh) {
|
|
48
44
|
return function (_eventData, _eventState) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
if (
|
|
52
|
-
return;
|
|
53
|
-
// gatekeeper clause - if concerning mesh has no missing material: exit
|
|
54
|
-
if (!has_1.default(concerningMesh.metadata, 'missingMaterial'))
|
|
45
|
+
var hasBeenEnabled = targetMeshOrInstance.isEnabled(true);
|
|
46
|
+
var materialMissing = has_1.default(concerningMesh.metadata, missingMaterialMetadataName);
|
|
47
|
+
if (!hasBeenEnabled || !materialMissing)
|
|
55
48
|
return;
|
|
56
|
-
|
|
57
|
-
var
|
|
58
|
-
|
|
59
|
-
|
|
49
|
+
// get id of missing material
|
|
50
|
+
var missingMatId = concerningMesh.metadata[missingMaterialMetadataName];
|
|
51
|
+
// try to find material on the scene
|
|
52
|
+
var existingMat = concerningMesh.getScene().getMaterialById(missingMatId);
|
|
53
|
+
// assign either existing material or freshly created one
|
|
54
|
+
concerningMesh.material = existingMat || exports.getMaterialFromCbnAssets(missingMatId, concerningMesh.getScene());
|
|
55
|
+
// since the material is there now, we do not need the related metadata tag anymore
|
|
56
|
+
delete concerningMesh.metadata[missingMaterialMetadataName];
|
|
60
57
|
};
|
|
61
58
|
};
|
|
62
59
|
exports.getMaterialPostLoadObserver = getMaterialPostLoadObserver;
|
|
@@ -66,22 +63,25 @@ exports.getMaterialPostLoadObserver = getMaterialPostLoadObserver;
|
|
|
66
63
|
* @param dataParsed original data
|
|
67
64
|
* @param container loaded data
|
|
68
65
|
*/
|
|
69
|
-
var
|
|
70
|
-
container.meshes.forEach(function (
|
|
66
|
+
var addMissingMaterialMetadata = function (dataParsed, container) {
|
|
67
|
+
container.meshes.forEach(function (currMeshImported) {
|
|
71
68
|
var _a;
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
69
|
+
var _b, _c;
|
|
70
|
+
for (var _i = 0, _d = dataParsed.meshes; _i < _d.length; _i++) {
|
|
71
|
+
var currMeshOriginal = _d[_i];
|
|
72
|
+
if (currMeshOriginal.name !== currMeshImported.name)
|
|
73
|
+
continue;
|
|
74
|
+
// we're dealing with the original version of the current imported mesh now
|
|
75
|
+
var materialOnImportedMesh = (_b = currMeshImported.material) === null || _b === void 0 ? void 0 : _b.id;
|
|
76
|
+
var materialOnOriginalMesh = currMeshOriginal.materialId;
|
|
77
|
+
if (!materialOnOriginalMesh || materialOnImportedMesh === materialOnOriginalMesh)
|
|
78
|
+
continue;
|
|
79
|
+
// TODO: Just for easier debugging. Remove before publishment...
|
|
80
|
+
console.info("Adding \"" + missingMaterialMetadataName + "\" info on mesh \"" + currMeshOriginal.name + "\" with material \"" + currMeshOriginal.materialId + "\"");
|
|
81
|
+
// if we're here, the imported mesh has different material than original one
|
|
82
|
+
(_c = window.Cbn) === null || _c === void 0 ? void 0 : _c.Assets.assertMaterialExists(materialOnOriginalMesh);
|
|
83
|
+
babylonHelper_1.injectNodeMetadata(currMeshImported, (_a = {}, _a[missingMaterialMetadataName] = materialOnOriginalMesh, _a), false);
|
|
84
|
+
break;
|
|
85
85
|
}
|
|
86
86
|
});
|
|
87
87
|
};
|
|
@@ -94,7 +94,11 @@ var processImportedData = function (dataParsed, container) {
|
|
|
94
94
|
var getMaterialFromCbnAssets = function (materialId, scene) {
|
|
95
95
|
var _a;
|
|
96
96
|
var materialDefinition = (_a = window.Cbn) === null || _a === void 0 ? void 0 : _a.Assets.getMaterial(materialId);
|
|
97
|
-
|
|
97
|
+
// The generic `Material.Parse` actually returns a more specific material like `BABYLON.StandardMaterial`,
|
|
98
|
+
// `BABYLON.PBRMaterial` or stuff like `BABYLON.PBRMetallicRoughnessMaterial` etc. based on the given `customType`
|
|
99
|
+
// within the material JSON definition
|
|
100
|
+
var material = materialDefinition && material_1.Material.Parse(materialDefinition, scene, '');
|
|
98
101
|
return material || null;
|
|
99
102
|
};
|
|
103
|
+
exports.getMaterialFromCbnAssets = getMaterialFromCbnAssets;
|
|
100
104
|
//# sourceMappingURL=sceneLoaderHelper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sceneLoaderHelper.js","sourceRoot":"","sources":["../../../../src/api/util/sceneLoaderHelper.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"sceneLoaderHelper.js","sourceRoot":"","sources":["../../../../src/api/util/sceneLoaderHelper.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -36,6 +36,9 @@ import { VariantParameterizable } from './../classes/variantParameterizable';
|
|
|
36
36
|
import { DottedPath } from './dottedPath';
|
|
37
37
|
import { Parameter } from './parameter';
|
|
38
38
|
import { Variant } from './variant';
|
|
39
|
+
import { getMaterialPostLoadObserver, missingMaterialMetadataName } from '../util/sceneLoaderHelper';
|
|
40
|
+
import { Nullable } from '@babylonjs/core/types';
|
|
41
|
+
import { Node as BjsNode } from '@babylonjs/core/node'; //! overload DOM API Node due to name-clash with BJS
|
|
39
42
|
|
|
40
43
|
/**
|
|
41
44
|
* An {@link Element} of a {@link Variant}. Acts as a container for diverse definitions. Lives only in the context of a
|
|
@@ -62,6 +65,7 @@ export class Element extends VariantParameterizable {
|
|
|
62
65
|
const nodes = this.variant.inheritedNodes.map(node => cloneTransformNode(node, this.filterNode.bind(this)));
|
|
63
66
|
this.nodes = nodes.filter(node => !!node) as TransformNode[];
|
|
64
67
|
this._dottedNodes = mapToDottedNodes<TransformNode>(this.nodes, node => node instanceof TransformNode);
|
|
68
|
+
this.addMissingMaterialObservers();
|
|
65
69
|
this.addParameterObservers();
|
|
66
70
|
}
|
|
67
71
|
|
|
@@ -145,6 +149,21 @@ export class Element extends VariantParameterizable {
|
|
|
145
149
|
return flatMeshes;
|
|
146
150
|
}
|
|
147
151
|
|
|
152
|
+
/**
|
|
153
|
+
* The actual {@link AbstractMesh}es that make up this {@link Element}.
|
|
154
|
+
* I.e. (real) Meshes as well as InstancedMeshes.
|
|
155
|
+
*/
|
|
156
|
+
get abstractMeshesFlat(): AbstractMesh[] {
|
|
157
|
+
const allAbstractMeshes = this.nodes.reduce((acc, currNode) => {
|
|
158
|
+
const currAbstractMeshes = currNode.getChildMeshes(false, n => n instanceof AbstractMesh);
|
|
159
|
+
if (currNode instanceof AbstractMesh) {
|
|
160
|
+
currAbstractMeshes.unshift(currNode);
|
|
161
|
+
}
|
|
162
|
+
return [...acc, ...currAbstractMeshes];
|
|
163
|
+
}, [] as AbstractMesh[]); // initial accumulator value
|
|
164
|
+
return allAbstractMeshes;
|
|
165
|
+
}
|
|
166
|
+
|
|
148
167
|
/**
|
|
149
168
|
* The meshes of this {@link Element}.
|
|
150
169
|
*/
|
|
@@ -350,6 +369,32 @@ export class Element extends VariantParameterizable {
|
|
|
350
369
|
return this.drawPaintable(paintable, image);
|
|
351
370
|
}
|
|
352
371
|
|
|
372
|
+
/**
|
|
373
|
+
* Adds observers for loading missing materials where needed
|
|
374
|
+
*/
|
|
375
|
+
protected addMissingMaterialObservers() {
|
|
376
|
+
for (const abstractMesh of this.abstractMeshesFlat) {
|
|
377
|
+
// set the concerning mesh, i.e. the mesh the observer should check for missing material.
|
|
378
|
+
// for instances, we want the sourcemesh here.
|
|
379
|
+
const concerningMesh = abstractMesh instanceof InstancedMesh ? abstractMesh.sourceMesh : (abstractMesh as Mesh);
|
|
380
|
+
|
|
381
|
+
// observer is pointless if concerning mesh has no missing material
|
|
382
|
+
if (!has(concerningMesh.metadata, missingMaterialMetadataName)) continue;
|
|
383
|
+
|
|
384
|
+
// for each of our AbstractMeshes, set an observer on the AbstractMesh itself,
|
|
385
|
+
// but also on all of its parents.
|
|
386
|
+
let currNode: Nullable<BjsNode> = abstractMesh as BjsNode;
|
|
387
|
+
while (currNode) {
|
|
388
|
+
// add observer. needed only once per node, hence addOnce()
|
|
389
|
+
abstractMesh.onEnabledStateChangedObservable.addOnce(
|
|
390
|
+
getMaterialPostLoadObserver(currNode as AbstractMesh, concerningMesh)
|
|
391
|
+
);
|
|
392
|
+
// console.log('## observer set on: ' + meshOrInstance.name);
|
|
393
|
+
currNode = currNode.parent;
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
|
|
353
398
|
/**
|
|
354
399
|
* Adds the default {@link ParameterObserver}s which are called every time {@link commitParameters} is called.
|
|
355
400
|
*/
|
|
@@ -8,7 +8,7 @@ import { TransformNode } from '@babylonjs/core/Meshes/transformNode';
|
|
|
8
8
|
import '@babylonjs/loaders/glTF/2.0/Extensions/KHR_draco_mesh_compression';
|
|
9
9
|
import '@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_transform';
|
|
10
10
|
import '@babylonjs/loaders/glTF/2.0/glTFLoader';
|
|
11
|
-
import { cloneDeep, concat, get, isEmpty, isEqual, isString, merge, set } from 'lodash-es';
|
|
11
|
+
import { cloneDeep, concat, get, has, isElement, isEmpty, isEqual, isString, merge, reject, set } from 'lodash-es';
|
|
12
12
|
import { deactivateTransformNode, getDottedPathForNode, injectNodeMetadata } from '../util/babylonHelper';
|
|
13
13
|
import { loadJson, mergeMaps } from '../util/resourceHelper';
|
|
14
14
|
import { DottedPath } from './dottedPath';
|
|
@@ -20,6 +20,7 @@ import { ParameterObservable } from './parameterObservable';
|
|
|
20
20
|
import { VariantParameterizable } from './variantParameterizable';
|
|
21
21
|
import { Viewer } from './viewer';
|
|
22
22
|
import { ViewerLight } from './viewerLight';
|
|
23
|
+
import { getMaterialFromCbnAssets } from '../util/sceneLoaderHelper';
|
|
23
24
|
|
|
24
25
|
import '@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_basisu';
|
|
25
26
|
import '@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_clearcoat';
|
|
@@ -425,17 +426,24 @@ export class Variant extends Parameterizable {
|
|
|
425
426
|
* Gets the Material defined in one of the variants glTFs by its id.
|
|
426
427
|
*/
|
|
427
428
|
public getMaterial(id: string): Material {
|
|
429
|
+
const scene = this.viewer.scene;
|
|
430
|
+
|
|
428
431
|
for (const material of this.inheritedMaterials) {
|
|
429
432
|
if (material.id === id) {
|
|
430
433
|
return material;
|
|
431
434
|
}
|
|
432
435
|
}
|
|
433
436
|
// fallback to dynamically created materials on scene
|
|
434
|
-
for (const material of
|
|
437
|
+
for (const material of scene.materials) {
|
|
435
438
|
if (material.id === id) {
|
|
436
439
|
return material;
|
|
437
440
|
}
|
|
438
441
|
}
|
|
442
|
+
const cbnAssetMaterial = getMaterialFromCbnAssets(id, scene);
|
|
443
|
+
if (cbnAssetMaterial) {
|
|
444
|
+
return cbnAssetMaterial;
|
|
445
|
+
}
|
|
446
|
+
|
|
439
447
|
throw new Error(`Material with id "${id}" does not exist for variant "${this.id}".`);
|
|
440
448
|
}
|
|
441
449
|
|
|
@@ -608,7 +616,8 @@ export class Variant extends Parameterizable {
|
|
|
608
616
|
*/
|
|
609
617
|
protected async loadAssets(): Promise<Variant> {
|
|
610
618
|
this.broadcastEvent(Event.ASSET_LOADING_START, this);
|
|
611
|
-
|
|
619
|
+
|
|
620
|
+
const promisifiedLoader = new Promise<Variant>((resolve, reject) => {
|
|
612
621
|
if (!this.structureJson) {
|
|
613
622
|
this.broadcastEvent(Event.ASSET_LOADING_END, this);
|
|
614
623
|
return resolve(this);
|
|
@@ -617,8 +626,12 @@ export class Variant extends Parameterizable {
|
|
|
617
626
|
this.broadcastEvent(Event.ASSET_LOADING_END, this);
|
|
618
627
|
return resolve(this);
|
|
619
628
|
}
|
|
620
|
-
SceneLoader.
|
|
621
|
-
.
|
|
629
|
+
SceneLoader.LoadAssetContainer(
|
|
630
|
+
this.glTF.rootUrl,
|
|
631
|
+
this.glTF.fileName,
|
|
632
|
+
this.viewer.scene,
|
|
633
|
+
// on success
|
|
634
|
+
container => {
|
|
622
635
|
this.assetContainer = container;
|
|
623
636
|
const nodes = this.assetContainer.getNodes().filter(n => n instanceof TransformNode) as TransformNode[];
|
|
624
637
|
nodes.forEach(node => {
|
|
@@ -638,12 +651,17 @@ export class Variant extends Parameterizable {
|
|
|
638
651
|
this.assetContainer.materials.forEach(material => this.viewer.scene.materials.push(material));
|
|
639
652
|
this.broadcastEvent(Event.ASSET_LOADING_END, this);
|
|
640
653
|
resolve(this);
|
|
641
|
-
}
|
|
642
|
-
|
|
654
|
+
},
|
|
655
|
+
// on progress
|
|
656
|
+
undefined,
|
|
657
|
+
// on error
|
|
658
|
+
reason => {
|
|
643
659
|
this.broadcastEvent(Event.ASSET_LOADING_END, this);
|
|
644
660
|
throw new Error(`Error loading assets for variant "${this.id}": ${reason}.`);
|
|
645
|
-
}
|
|
661
|
+
}
|
|
662
|
+
);
|
|
646
663
|
});
|
|
664
|
+
return await promisifiedLoader;
|
|
647
665
|
}
|
|
648
666
|
|
|
649
667
|
/**
|
|
@@ -710,6 +728,27 @@ export class Variant extends Parameterizable {
|
|
|
710
728
|
protected async commitParameterToElements(parameter: string, value: ParameterValue): Promise<Variant> {
|
|
711
729
|
const promises = [];
|
|
712
730
|
for (const element of this.elements) {
|
|
731
|
+
const elementVisibleParamPath = DottedPath.create([element.name, Parameter.VISIBLE]).toString();
|
|
732
|
+
const elementIsHiddenViaParams = this.inheritedParameters[elementVisibleParamPath] === false;
|
|
733
|
+
|
|
734
|
+
// Don't enable/show the variants element if it is explicitly hidden via its element parameters.
|
|
735
|
+
// E.g. via spec:
|
|
736
|
+
// ```
|
|
737
|
+
// variants: {
|
|
738
|
+
// theVariant: {
|
|
739
|
+
// elements: {
|
|
740
|
+
// Main: ['root.main'],
|
|
741
|
+
// Secondary: ['root.secondary'],
|
|
742
|
+
// },
|
|
743
|
+
// parameters: {
|
|
744
|
+
// // !!! The element `Secondary` should **not** be enabled when its containing variant is enabled !!!
|
|
745
|
+
// 'Secondary.visible': false,
|
|
746
|
+
// }
|
|
747
|
+
// }
|
|
748
|
+
// }
|
|
749
|
+
// ```
|
|
750
|
+
if (Parameter.VISIBLE === parameter && value && elementIsHiddenViaParams) continue;
|
|
751
|
+
|
|
713
752
|
promises.push(element.commitParameter(parameter, value));
|
|
714
753
|
}
|
|
715
754
|
await Promise.all(promises);
|
|
@@ -31,6 +31,8 @@ import { IPointerEvent } from '@babylonjs/core/Events/deviceInputEvents';
|
|
|
31
31
|
import { DebugLayer } from '@babylonjs/core/Debug/debugLayer';
|
|
32
32
|
import { PhotoDome } from '@babylonjs/core/Helpers/photoDome';
|
|
33
33
|
import { backgroundDomeName, envHelperMetadataName } from '../util/babylonHelper';
|
|
34
|
+
import { ISceneLoaderPlugin, SceneLoader } from '@babylonjs/core/Loading/sceneLoader';
|
|
35
|
+
import { getCustomCbnBabylonLoaderPlugin } from '../util/sceneLoaderHelper';
|
|
34
36
|
|
|
35
37
|
/**
|
|
36
38
|
* The main exposed object. This is the entry point into the application
|
|
@@ -157,6 +159,7 @@ export class Viewer extends EventBroadcaster {
|
|
|
157
159
|
*/
|
|
158
160
|
public async bootstrap(): Promise<Viewer> {
|
|
159
161
|
this.broadcastEvent(Event.BOOTSTRAP_START, this);
|
|
162
|
+
|
|
160
163
|
let indexJson;
|
|
161
164
|
if (isString(this.structureJson)) {
|
|
162
165
|
indexJson = await loadJson<StructureJson>(this.structureJson);
|
|
@@ -168,6 +171,9 @@ export class Viewer extends EventBroadcaster {
|
|
|
168
171
|
}
|
|
169
172
|
// fill spec store
|
|
170
173
|
SpecStorage.createFromSpec(indexJson);
|
|
174
|
+
|
|
175
|
+
this.initCbnBabylonLoaderPlugin();
|
|
176
|
+
|
|
171
177
|
// load scene
|
|
172
178
|
if (isString(indexJson.scene)) {
|
|
173
179
|
const sceneJson = await loadJson<SceneJson>(indexJson.scene);
|
|
@@ -553,6 +559,18 @@ export class Viewer extends EventBroadcaster {
|
|
|
553
559
|
return scene;
|
|
554
560
|
}
|
|
555
561
|
|
|
562
|
+
/**
|
|
563
|
+
* Register custom file loader for babylon files which adds "missing-material" metadata to meshes which reference
|
|
564
|
+
* materials that are not present in the `materials` section of the given babylon file.
|
|
565
|
+
*
|
|
566
|
+
* Required for babylon files & materials loaded from "Combeenation configurator assets".
|
|
567
|
+
*/
|
|
568
|
+
protected initCbnBabylonLoaderPlugin() {
|
|
569
|
+
const previousLoaderPlugin = SceneLoader.GetPluginForExtension('babylon') as ISceneLoaderPlugin;
|
|
570
|
+
const customLoaderPlugin = getCustomCbnBabylonLoaderPlugin(previousLoaderPlugin);
|
|
571
|
+
SceneLoader.RegisterPlugin(customLoaderPlugin);
|
|
572
|
+
}
|
|
573
|
+
|
|
556
574
|
/**
|
|
557
575
|
* Batch creation of multiple {@link VariantInstance} objects with a {@link SetupJson} object passed
|
|
558
576
|
*/
|
|
@@ -89,6 +89,12 @@ const cloneTransformNode = function (
|
|
|
89
89
|
const clone = node.clone(node.name, node.parent, true);
|
|
90
90
|
if (clone) {
|
|
91
91
|
clone.metadata = cloneDeep(node.metadata);
|
|
92
|
+
// if the cloned node is of type InstancedMesh, due to a bug(?),
|
|
93
|
+
// the InstancedMesh.isEnabled state may have changed after cloning.
|
|
94
|
+
// in that case, set the clone's enabled state to the original's state
|
|
95
|
+
if (node.constructor.name === 'InstancedMesh') {
|
|
96
|
+
clone.setEnabled(node.isEnabled(false));
|
|
97
|
+
}
|
|
92
98
|
}
|
|
93
99
|
if (deep) {
|
|
94
100
|
const children = node.getChildTransformNodes(true);
|
|
@@ -283,17 +289,26 @@ const changeEnvironment = function (scene: Scene, envDef: EnvironmentDefinition)
|
|
|
283
289
|
: defaultSceneClearColor;
|
|
284
290
|
const clearColorChanged = clearColorBefore !== scene.clearColor.toString();
|
|
285
291
|
|
|
292
|
+
// Remove all URI params from given env URL as `CubeTexture.CreateFromPrefilteredData` does not work correctly with
|
|
293
|
+
// URLs which contain URI params.
|
|
294
|
+
// E.g. `https://some.url/.../studio.env?name=defaultEnv` throws an exception whilst `https://some.url/.../studio.env`
|
|
295
|
+
// works as expected.
|
|
296
|
+
//
|
|
297
|
+
// See BJS forum for more details:
|
|
298
|
+
// https://forum.babylonjs.com/t/cubetexture-createfromprefiltereddata-does-not-work-with-url-that-contains-uri-params/34097
|
|
299
|
+
const newEnvUrl = envDef.environment?.split('?')[0];
|
|
300
|
+
|
|
286
301
|
// 2) dispose existing & set new ENVIRONMENT (==texture)
|
|
287
302
|
const curEnvTexture = scene.environmentTexture as Nullable<CubeTexture>;
|
|
288
|
-
const envTextureChanged =
|
|
303
|
+
const envTextureChanged = newEnvUrl !== curEnvTexture?.url;
|
|
289
304
|
|
|
290
|
-
if (curEnvTexture && (!
|
|
305
|
+
if (curEnvTexture && (!newEnvUrl || envTextureChanged)) {
|
|
291
306
|
curEnvTexture.dispose();
|
|
292
307
|
}
|
|
293
308
|
|
|
294
309
|
const rotation = envDef.environmentRotation !== undefined ? Tools.ToRadians(envDef.environmentRotation) : 0;
|
|
295
|
-
if (
|
|
296
|
-
const envTexture = CubeTexture.CreateFromPrefilteredData(
|
|
310
|
+
if (newEnvUrl && envTextureChanged) {
|
|
311
|
+
const envTexture = CubeTexture.CreateFromPrefilteredData(newEnvUrl, scene);
|
|
297
312
|
envTexture.rotationY = rotation;
|
|
298
313
|
scene.environmentTexture = envTexture;
|
|
299
314
|
} else if (curEnvTexture && curEnvTexture.rotationY !== rotation) {
|