@combeenation/3d-viewer 15.1.0-beta1 → 16.0.0-alpha1
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/helper/decals-helper.d.ts +45 -0
- package/dist/lib-cjs/helper/decals-helper.js +49 -0
- package/dist/lib-cjs/helper/decals-helper.js.map +1 -0
- package/dist/lib-cjs/index.d.ts +1 -0
- package/dist/lib-cjs/index.js +1 -0
- package/dist/lib-cjs/index.js.map +1 -1
- package/dist/lib-cjs/internal/cbn-custom-babylon-loader-plugin.d.ts +22 -4
- package/dist/lib-cjs/internal/cbn-custom-babylon-loader-plugin.js +84 -21
- package/dist/lib-cjs/internal/cbn-custom-babylon-loader-plugin.js.map +1 -1
- package/dist/lib-cjs/internal/metadata-helper.d.ts +1 -1
- package/dist/lib-cjs/manager/model-manager.d.ts +10 -1
- package/dist/lib-cjs/manager/model-manager.js +40 -1
- package/dist/lib-cjs/manager/model-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/package.json +1 -1
- package/src/helper/decals-helper.ts +95 -0
- package/src/index.ts +1 -0
- package/src/internal/cbn-custom-babylon-loader-plugin.ts +106 -34
- package/src/internal/metadata-helper.ts +1 -1
- package/src/manager/model-manager.ts +56 -1
- package/src/viewer-error.ts +1 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { IAssetContainer, Mesh, Tuple } from '..';
|
|
2
|
+
export declare type DecalConfiguration = {
|
|
3
|
+
name: string;
|
|
4
|
+
sourceMeshName: string;
|
|
5
|
+
position: Tuple<number, 3>;
|
|
6
|
+
normal: Tuple<number, 3>;
|
|
7
|
+
size: Tuple<number, 3>;
|
|
8
|
+
angle: number;
|
|
9
|
+
/** Shifts decals away from source mesh in direction of "normal" vector */
|
|
10
|
+
offset: number;
|
|
11
|
+
/**
|
|
12
|
+
* `true`: Use UV mapping from source mesh\
|
|
13
|
+
* `false`: Use default box mapping from the decal
|
|
14
|
+
*
|
|
15
|
+
* Default `false`
|
|
16
|
+
*/
|
|
17
|
+
captureUVS?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Create decal only on front side if set to `true`
|
|
20
|
+
*
|
|
21
|
+
* Default `true`
|
|
22
|
+
*/
|
|
23
|
+
cullBackFaces?: boolean;
|
|
24
|
+
/** `true`: Sets created decal as child of source mesh
|
|
25
|
+
*
|
|
26
|
+
* Default `true`
|
|
27
|
+
*/
|
|
28
|
+
localMode?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* The Babylon.js default for mesh side orientation value is `Material.CounterClockWiseSideOrientation`.\
|
|
31
|
+
* However if the mesh (in this case the created decal mesh) is located under a glTF root node, it has to be flipped,
|
|
32
|
+
* using `Material.ClockWiseSideOrientation`.
|
|
33
|
+
*
|
|
34
|
+
* Default `Material.ClockWiseSideOrientation`
|
|
35
|
+
*/
|
|
36
|
+
sideOrientation?: number;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Creates mesh from a decal configuration.\
|
|
40
|
+
* This is basically calling `MeshBuilder.CreateDecal`, with some extra steps:
|
|
41
|
+
* - add created decal mesh to source mesh asset container
|
|
42
|
+
* - overwrite decal mesh side orientation (important for glTF models)
|
|
43
|
+
* - move decal along the "normal" to avoid clipping
|
|
44
|
+
*/
|
|
45
|
+
export declare function createDecalMesh(config: DecalConfiguration, assetContainer: IAssetContainer, addToScene?: boolean): Mesh;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createDecalMesh = void 0;
|
|
4
|
+
const __1 = require("..");
|
|
5
|
+
/**
|
|
6
|
+
* Creates mesh from a decal configuration.\
|
|
7
|
+
* This is basically calling `MeshBuilder.CreateDecal`, with some extra steps:
|
|
8
|
+
* - add created decal mesh to source mesh asset container
|
|
9
|
+
* - overwrite decal mesh side orientation (important for glTF models)
|
|
10
|
+
* - move decal along the "normal" to avoid clipping
|
|
11
|
+
*/
|
|
12
|
+
function createDecalMesh(config, assetContainer, addToScene = true) {
|
|
13
|
+
var _a, _b, _c, _d, _e;
|
|
14
|
+
const sourceMesh = assetContainer.meshes.find(mesh => mesh.name === config.sourceMeshName);
|
|
15
|
+
if (!sourceMesh) {
|
|
16
|
+
throw new __1.ViewerError({
|
|
17
|
+
id: __1.ViewerErrorIds.InvalidDecalConfiguration,
|
|
18
|
+
message: `Source mesh for decal "${config.name}" couldn't be found`,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
const position = __1.Vector3.FromArray(config.position);
|
|
22
|
+
const normal = __1.Vector3.FromArray(config.normal).normalizeToNew();
|
|
23
|
+
const localMode = (_a = config.localMode) !== null && _a !== void 0 ? _a : true;
|
|
24
|
+
const worldNormal = localMode ? __1.Vector3.TransformNormal(normal, sourceMesh.getWorldMatrix()) : normal;
|
|
25
|
+
const decalMesh = __1.MeshBuilder.CreateDecal(config.name, sourceMesh, {
|
|
26
|
+
position: position,
|
|
27
|
+
normal: normal,
|
|
28
|
+
size: __1.Vector3.FromArray(config.size),
|
|
29
|
+
angle: config.angle,
|
|
30
|
+
captureUVS: (_b = config.captureUVS) !== null && _b !== void 0 ? _b : false,
|
|
31
|
+
cullBackFaces: (_c = config.cullBackFaces) !== null && _c !== void 0 ? _c : true,
|
|
32
|
+
localMode: (_d = config.localMode) !== null && _d !== void 0 ? _d : true,
|
|
33
|
+
});
|
|
34
|
+
if (!addToScene) {
|
|
35
|
+
const scene = sourceMesh.getScene();
|
|
36
|
+
scene.removeMesh(decalMesh);
|
|
37
|
+
}
|
|
38
|
+
// make sure that the decal is part of the source mesh asset container
|
|
39
|
+
decalMesh._parentContainer = assetContainer;
|
|
40
|
+
assetContainer.meshes.push(decalMesh);
|
|
41
|
+
decalMesh.sideOrientation = (_e = config.sideOrientation) !== null && _e !== void 0 ? _e : __1.Material.ClockWiseSideOrientation;
|
|
42
|
+
// move decal away from mesh to avoid clipping
|
|
43
|
+
// NOTE: zOffset of material can't be used, since it's not supported in glTF and therefore not usable in AR
|
|
44
|
+
const offsetVector = worldNormal.scale(config.offset);
|
|
45
|
+
decalMesh.position.addInPlace(offsetVector);
|
|
46
|
+
return decalMesh;
|
|
47
|
+
}
|
|
48
|
+
exports.createDecalMesh = createDecalMesh;
|
|
49
|
+
//# sourceMappingURL=decals-helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decals-helper.js","sourceRoot":"","sources":["../../../src/helper/decals-helper.ts"],"names":[],"mappings":";;;AAAA,0BAA+G;AA6C/G;;;;;;GAMG;AACH,SAAgB,eAAe,CAAC,MAA0B,EAAE,cAA+B,EAAE,UAAU,GAAG,IAAI;;IAC5G,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,cAAc,CAAC,CAAC;IAC3F,IAAI,CAAC,UAAU,EAAE;QACf,MAAM,IAAI,eAAW,CAAC;YACpB,EAAE,EAAE,kBAAc,CAAC,yBAAyB;YAC5C,OAAO,EAAE,0BAA0B,MAAM,CAAC,IAAI,qBAAqB;SACpE,CAAC,CAAC;KACJ;IAED,MAAM,QAAQ,GAAG,WAAO,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,WAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,CAAC;IAEjE,MAAM,SAAS,GAAG,MAAA,MAAM,CAAC,SAAS,mCAAI,IAAI,CAAC;IAC3C,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,WAAO,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAEtG,MAAM,SAAS,GAAG,eAAW,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE;QACjE,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,WAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QACpC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,UAAU,EAAE,MAAA,MAAM,CAAC,UAAU,mCAAI,KAAK;QACtC,aAAa,EAAE,MAAA,MAAM,CAAC,aAAa,mCAAI,IAAI;QAC3C,SAAS,EAAE,MAAA,MAAM,CAAC,SAAS,mCAAI,IAAI;KACpC,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,EAAE;QACf,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;QACpC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;KAC7B;IAED,sEAAsE;IACtE,SAAS,CAAC,gBAAgB,GAAG,cAAc,CAAC;IAC5C,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEtC,SAAS,CAAC,eAAe,GAAG,MAAA,MAAM,CAAC,eAAe,mCAAI,YAAQ,CAAC,wBAAwB,CAAC;IAExF,8CAA8C;IAC9C,2GAA2G;IAC3G,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtD,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAE5C,OAAO,SAAS,CAAC;AACnB,CAAC;AA1CD,0CA0CC"}
|
package/dist/lib-cjs/index.d.ts
CHANGED
package/dist/lib-cjs/index.js
CHANGED
|
@@ -82,4 +82,5 @@ __exportStar(require("./manager/model-manager"), exports);
|
|
|
82
82
|
__exportStar(require("./manager/parameter-manager"), exports);
|
|
83
83
|
__exportStar(require("./manager/scene-manager"), exports);
|
|
84
84
|
__exportStar(require("./manager/texture-manager"), exports);
|
|
85
|
+
__exportStar(require("./helper/decals-helper"), exports);
|
|
85
86
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAA0C;AAC1C,wBAAwB;AACxB,qDAAqD;AACrD,kDAAgD;AAChD,sDAAoD;AAEpD,qBAAqB;AACrB,2DAA2D;AAC3D,wHAAwH;AACxH,+CAA+C;AAC/C,yGAAyG;AACzG,iEAAiE;AACjE,6DAA2C;AAC3C,iEAA+C;AAC/C,kEAAgD;AAChD,0DAAwC;AACxC,0EAAwD;AACxD,iEAA+C;AAC/C,0DAAwC;AACxC,mEAAiD;AACjD,mEAAiD;AACjD,iEAA+C;AAC/C,qEAAmD;AACnD,yDAAuC;AACvC,0DAAwC;AACxC,qEAAmD;AACnD,gEAA8C;AAC9C,6EAA2D;AAC3D,qEAAmD;AACnD,wDAAsC;AACtC,sEAAoD;AACpD,kEAAgD;AAChD,uEAAqD;AACrD,8DAA4C;AAC5C,qEAAmD;AACnD,uEAAqD;AACrD,iFAA+D;AAC/D,uEAAqD;AACrD,wDAAsC;AACtC,uDAAqC;AACrC,iFAA+D;AAC/D,wDAAsC;AACtC,wDAAsC;AACtC,yEAAuD;AACvD,iFAA+D;AAE/D,gCAAgC;AAChC,sHAAsH;AACtH,UAAU;AACV,2DAA2D;AAC3D,6DAA2C;AAC3C,qCAAqC;AACrC,uEAAqD;AACrD,sDAAsD;AACtD,uEAAqD;AACrD,gDAAgD;AAChD,iEAA+C;AAE/C,iBAAiB;AACjB,qFAAqF;AACrF,2CAAyB;AACzB,iDAA+B;AAC/B,2DAAyC;AACzC,0DAAwC;AACxC,0DAAwC;AACxC,gEAA8C;AAC9C,6DAA2C;AAC3C,0DAAwC;AACxC,8DAA4C;AAC5C,0DAAwC;AACxC,4DAA0C"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAA0C;AAC1C,wBAAwB;AACxB,qDAAqD;AACrD,kDAAgD;AAChD,sDAAoD;AAEpD,qBAAqB;AACrB,2DAA2D;AAC3D,wHAAwH;AACxH,+CAA+C;AAC/C,yGAAyG;AACzG,iEAAiE;AACjE,6DAA2C;AAC3C,iEAA+C;AAC/C,kEAAgD;AAChD,0DAAwC;AACxC,0EAAwD;AACxD,iEAA+C;AAC/C,0DAAwC;AACxC,mEAAiD;AACjD,mEAAiD;AACjD,iEAA+C;AAC/C,qEAAmD;AACnD,yDAAuC;AACvC,0DAAwC;AACxC,qEAAmD;AACnD,gEAA8C;AAC9C,6EAA2D;AAC3D,qEAAmD;AACnD,wDAAsC;AACtC,sEAAoD;AACpD,kEAAgD;AAChD,uEAAqD;AACrD,8DAA4C;AAC5C,qEAAmD;AACnD,uEAAqD;AACrD,iFAA+D;AAC/D,uEAAqD;AACrD,wDAAsC;AACtC,uDAAqC;AACrC,iFAA+D;AAC/D,wDAAsC;AACtC,wDAAsC;AACtC,yEAAuD;AACvD,iFAA+D;AAE/D,gCAAgC;AAChC,sHAAsH;AACtH,UAAU;AACV,2DAA2D;AAC3D,6DAA2C;AAC3C,qCAAqC;AACrC,uEAAqD;AACrD,sDAAsD;AACtD,uEAAqD;AACrD,gDAAgD;AAChD,iEAA+C;AAE/C,iBAAiB;AACjB,qFAAqF;AACrF,2CAAyB;AACzB,iDAA+B;AAC/B,2DAAyC;AACzC,0DAAwC;AACxC,0DAAwC;AACxC,gEAA8C;AAC9C,6DAA2C;AAC3C,0DAAwC;AACxC,8DAA4C;AAC5C,0DAAwC;AACxC,4DAA0C;AAC1C,yDAAuC"}
|
|
@@ -1,10 +1,28 @@
|
|
|
1
|
+
import { AssetContainer, DecalConfiguration } from '../index';
|
|
2
|
+
/**
|
|
3
|
+
* Contains cbn custom data, like decals.
|
|
4
|
+
* This is just a temporary type, as the `loadAssetContainer` function only returns an asset container, which can be
|
|
5
|
+
* altered by our file loader plugin.
|
|
6
|
+
* After loading the model, `cbnData` is cropped and a pure asset container is available for further processing.
|
|
7
|
+
*/
|
|
8
|
+
export declare class ExtendedAssetContainer extends AssetContainer {
|
|
9
|
+
cbnData?: CbnBabylonFileData;
|
|
10
|
+
}
|
|
11
|
+
export declare type CbnBabylonFileData = {
|
|
12
|
+
decals?: ParsedDecalConfiguration[];
|
|
13
|
+
};
|
|
14
|
+
export declare type ParsedDecalConfiguration = DecalConfiguration & {
|
|
15
|
+
materialId?: string;
|
|
16
|
+
};
|
|
1
17
|
/**
|
|
2
18
|
* Create and return a custom loader plugin to be registered with SceneLoader, that allows
|
|
3
19
|
* us to run our own code against the input data before using the standard procedure to
|
|
4
20
|
* import.
|
|
5
|
-
* The main use
|
|
6
|
-
* dedicated mesh gets
|
|
7
|
-
* This is the case if the babylon file is a Combeenation "3d asset" which comes without materials, as the
|
|
8
|
-
* are defined as "material assets".
|
|
21
|
+
* The main use cases are:
|
|
22
|
+
* - Marking missing material in meshes, which will get loaded on demand at the first time the dedicated mesh gets
|
|
23
|
+
* visible. This is the case if the babylon file is a Combeenation "3d asset" which comes without materials, as the
|
|
24
|
+
* materials are defined as "material assets".
|
|
25
|
+
* - Interpreting custom cbn data that have been injected in the babylon file, e.g. by the "decals editor" in the asset
|
|
26
|
+
* editor area
|
|
9
27
|
*/
|
|
10
28
|
export declare function registerCustomCbnBabylonLoaderPlugin(): void;
|
|
@@ -1,18 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
2
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.registerCustomCbnBabylonLoaderPlugin = void 0;
|
|
14
|
+
exports.registerCustomCbnBabylonLoaderPlugin = exports.ExtendedAssetContainer = void 0;
|
|
4
15
|
const index_1 = require("../index");
|
|
5
16
|
const metadata_helper_1 = require("./metadata-helper");
|
|
6
17
|
const tags_helper_1 = require("./tags-helper");
|
|
7
18
|
const lodash_es_1 = require("lodash-es");
|
|
19
|
+
/**
|
|
20
|
+
* Contains cbn custom data, like decals.
|
|
21
|
+
* This is just a temporary type, as the `loadAssetContainer` function only returns an asset container, which can be
|
|
22
|
+
* altered by our file loader plugin.
|
|
23
|
+
* After loading the model, `cbnData` is cropped and a pure asset container is available for further processing.
|
|
24
|
+
*/
|
|
25
|
+
class ExtendedAssetContainer extends index_1.AssetContainer {
|
|
26
|
+
}
|
|
27
|
+
exports.ExtendedAssetContainer = ExtendedAssetContainer;
|
|
8
28
|
/**
|
|
9
29
|
* Create and return a custom loader plugin to be registered with SceneLoader, that allows
|
|
10
30
|
* us to run our own code against the input data before using the standard procedure to
|
|
11
31
|
* import.
|
|
12
|
-
* The main use
|
|
13
|
-
* dedicated mesh gets
|
|
14
|
-
* This is the case if the babylon file is a Combeenation "3d asset" which comes without materials, as the
|
|
15
|
-
* are defined as "material assets".
|
|
32
|
+
* The main use cases are:
|
|
33
|
+
* - Marking missing material in meshes, which will get loaded on demand at the first time the dedicated mesh gets
|
|
34
|
+
* visible. This is the case if the babylon file is a Combeenation "3d asset" which comes without materials, as the
|
|
35
|
+
* materials are defined as "material assets".
|
|
36
|
+
* - Interpreting custom cbn data that have been injected in the babylon file, e.g. by the "decals editor" in the asset
|
|
37
|
+
* editor area
|
|
16
38
|
*/
|
|
17
39
|
function registerCustomCbnBabylonLoaderPlugin() {
|
|
18
40
|
// get original plugin for babylon files
|
|
@@ -24,37 +46,53 @@ function registerCustomCbnBabylonLoaderPlugin() {
|
|
|
24
46
|
extensions: '.babylon',
|
|
25
47
|
importMesh: previousLoaderPlugin.importMesh,
|
|
26
48
|
load: previousLoaderPlugin.load,
|
|
27
|
-
loadAssetContainer:
|
|
28
|
-
// temporarily remove all morph target managers from scene before loading the model to avoid clashes with existing
|
|
29
|
-
// unique ids => see CB-9928
|
|
30
|
-
// NOTE: morph target managers still exist on the dedicated mesh when getting removed from the scene, only
|
|
31
|
-
// `scene.getMorphTargetManagerById` is affected, which is used internally in the `loadAssetContainer` function
|
|
32
|
-
const curMorphTargetManagers = scene.morphTargetManagers;
|
|
33
|
-
scene.morphTargetManagers = [];
|
|
49
|
+
loadAssetContainer: (scene, data, rootUrl, onError) => {
|
|
34
50
|
const dataParsed = JSON.parse(data);
|
|
35
51
|
const importedContainer = previousLoaderPlugin.loadAssetContainer(scene, data, rootUrl);
|
|
36
52
|
_addMissingMaterialMetadata(dataParsed, importedContainer);
|
|
37
53
|
_reconstructTagsForInstancedMeshes(dataParsed, importedContainer);
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
54
|
+
_createDecals(dataParsed, importedContainer);
|
|
55
|
+
// add `cbnData` to output asset container, so that this information can be store as metadata for the model
|
|
56
|
+
const extendedContainer = importedContainer;
|
|
57
|
+
extendedContainer.cbnData = dataParsed.cbnData;
|
|
58
|
+
return extendedContainer;
|
|
41
59
|
},
|
|
42
60
|
};
|
|
43
61
|
index_1.SceneLoader.RegisterPlugin(customLoader);
|
|
44
62
|
}
|
|
45
63
|
exports.registerCustomCbnBabylonLoaderPlugin = registerCustomCbnBabylonLoaderPlugin;
|
|
46
|
-
function
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
64
|
+
function _isDataWithMeshes(data) {
|
|
65
|
+
return (0, lodash_es_1.isArray)(data === null || data === void 0 ? void 0 : data.meshes);
|
|
66
|
+
}
|
|
67
|
+
function _isDataWithDecalConfigurations(data) {
|
|
68
|
+
var _a;
|
|
69
|
+
return (0, lodash_es_1.isArray)((_a = data === null || data === void 0 ? void 0 : data.cbnData) === null || _a === void 0 ? void 0 : _a.decals);
|
|
50
70
|
}
|
|
51
71
|
function _isMeshData(data) {
|
|
52
72
|
const hasName = (0, lodash_es_1.isString)(data.name);
|
|
53
73
|
const hasValidMaterialId = !data.materialId || (0, lodash_es_1.isString)(data.materialId);
|
|
54
74
|
return hasName && hasValidMaterialId;
|
|
55
75
|
}
|
|
56
|
-
function
|
|
57
|
-
|
|
76
|
+
function _isMeshInstanceData(data) {
|
|
77
|
+
const hasName = (0, lodash_es_1.isString)(data.name);
|
|
78
|
+
const hasValidTags = !data.tags || (0, lodash_es_1.isString)(data.tags);
|
|
79
|
+
return hasName && hasValidTags;
|
|
80
|
+
}
|
|
81
|
+
function _isDecalConfiguration(data) {
|
|
82
|
+
const hasValidProps = (0, lodash_es_1.isString)(data.name) &&
|
|
83
|
+
(0, lodash_es_1.isString)(data.sourceMeshName) &&
|
|
84
|
+
(0, lodash_es_1.isArray)(data.position) &&
|
|
85
|
+
(0, lodash_es_1.isArray)(data.normal) &&
|
|
86
|
+
(0, lodash_es_1.isArray)(data.size) &&
|
|
87
|
+
(0, lodash_es_1.isNumber)(data.angle) &&
|
|
88
|
+
(0, lodash_es_1.isNumber)(data.offset);
|
|
89
|
+
if (!hasValidProps) {
|
|
90
|
+
throw new index_1.ViewerError({
|
|
91
|
+
id: index_1.ViewerErrorIds.InvalidDecalConfiguration,
|
|
92
|
+
message: `Configuration for decal "${data.name}" invalid`,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
return hasValidProps;
|
|
58
96
|
}
|
|
59
97
|
/**
|
|
60
98
|
* Internal function that compares the original meshes on a .babylon file with what was loaded,
|
|
@@ -113,4 +151,29 @@ function _reconstructTagsForInstancedMeshes(dataParsed, container) {
|
|
|
113
151
|
}
|
|
114
152
|
});
|
|
115
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* This function interprets the decal configuration, that is stored top level in the babylon file (`dataParsed`) and
|
|
156
|
+
* creates decal meshes in the given `container`.
|
|
157
|
+
*
|
|
158
|
+
* Having the decal information stored in that way is required for the "decals editor" in the asset manager, as meshes
|
|
159
|
+
* created from decals have to be updateable.
|
|
160
|
+
*
|
|
161
|
+
* @param container This is being manipulated, by adding decal meshes to it based on the decal configuration read from
|
|
162
|
+
* `dataParsed`.
|
|
163
|
+
*/
|
|
164
|
+
function _createDecals(dataParsed, container) {
|
|
165
|
+
if (!_isDataWithDecalConfigurations(dataParsed))
|
|
166
|
+
return;
|
|
167
|
+
const validatedDecals = dataParsed.cbnData.decals.filter(_isDecalConfiguration);
|
|
168
|
+
validatedDecals.forEach(decalConfig => {
|
|
169
|
+
var _a;
|
|
170
|
+
const { materialId } = decalConfig, decalMeshConfig = __rest(decalConfig, ["materialId"]);
|
|
171
|
+
const decalMesh = (0, index_1.createDecalMesh)(decalMeshConfig, container, false);
|
|
172
|
+
// optionally set material directly
|
|
173
|
+
if (materialId) {
|
|
174
|
+
(_a = window.Cbn) === null || _a === void 0 ? void 0 : _a.Assets.assertMaterialExists(materialId);
|
|
175
|
+
(0, metadata_helper_1.setInternalMetadataValue)(decalMesh, 'deferredMaterial', materialId);
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
}
|
|
116
179
|
//# sourceMappingURL=cbn-custom-babylon-loader-plugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cbn-custom-babylon-loader-plugin.js","sourceRoot":"","sources":["../../../src/internal/cbn-custom-babylon-loader-plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cbn-custom-babylon-loader-plugin.js","sourceRoot":"","sources":["../../../src/internal/cbn-custom-babylon-loader-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseTexture, Material, Node } from '../index';
|
|
2
|
-
declare type MetadataValue = string | number | boolean | undefined;
|
|
2
|
+
declare type MetadataValue = string | number | boolean | object | undefined;
|
|
3
3
|
declare type MetadataTarget = Node | Material | BaseTexture;
|
|
4
4
|
declare type MetadataKeys = 'deferredMaterial' | 'materialToBeSet' | 'exportNode' | 'deleteAfterExport' | 'exchangeMaterialWith' | 'cloneSource' | 'cloneTarget';
|
|
5
5
|
/**
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { AssetContainer, TransformNode, Viewer } from '../index';
|
|
1
|
+
import { AssetContainer, DecalConfiguration, TransformNode, Viewer } from '../index';
|
|
2
|
+
import { CbnBabylonFileData } from '../internal/cbn-custom-babylon-loader-plugin';
|
|
2
3
|
export declare type ModelAssetDefinition = {
|
|
3
4
|
name: string;
|
|
4
5
|
url: string;
|
|
@@ -24,6 +25,7 @@ declare type Model = {
|
|
|
24
25
|
url: string;
|
|
25
26
|
state: ModelAssetState;
|
|
26
27
|
assetContainer: AssetContainer;
|
|
28
|
+
cbnBabylonFileData?: CbnBabylonFileData;
|
|
27
29
|
isClone: boolean;
|
|
28
30
|
visibilityCallId?: number;
|
|
29
31
|
};
|
|
@@ -112,6 +114,13 @@ export declare class ModelManager {
|
|
|
112
114
|
* A typical use case is to clone or instantiate a node from a "library" model.
|
|
113
115
|
*/
|
|
114
116
|
getAssetContainerOfModel(name: string): Promise<AssetContainer>;
|
|
117
|
+
/**
|
|
118
|
+
* Returns the decals configuration of a certain model.\
|
|
119
|
+
* The model will be loaded before being able to access this configuration.\
|
|
120
|
+
* Decals are already converted to "normal" meshes when loading a model, still the original decals configuration can
|
|
121
|
+
* be useful e.g. for alterning decals.
|
|
122
|
+
*/
|
|
123
|
+
getDecalsConfigurationOfModel(name: string): Promise<DecalConfiguration[]>;
|
|
115
124
|
/**
|
|
116
125
|
* Get model by name
|
|
117
126
|
*/
|
|
@@ -282,6 +282,40 @@ class ModelManager {
|
|
|
282
282
|
return model.assetContainer;
|
|
283
283
|
});
|
|
284
284
|
}
|
|
285
|
+
/**
|
|
286
|
+
* Returns the decals configuration of a certain model.\
|
|
287
|
+
* The model will be loaded before being able to access this configuration.\
|
|
288
|
+
* Decals are already converted to "normal" meshes when loading a model, still the original decals configuration can
|
|
289
|
+
* be useful e.g. for alterning decals.
|
|
290
|
+
*/
|
|
291
|
+
getDecalsConfigurationOfModel(name) {
|
|
292
|
+
var _a, _b;
|
|
293
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
294
|
+
const model = this._getModel(name);
|
|
295
|
+
if (!model) {
|
|
296
|
+
throw new index_1.ViewerError({
|
|
297
|
+
id: index_1.ViewerErrorIds.ModelNotRegistered,
|
|
298
|
+
message: `Can't get decals configuration of model "${name}" as model is not registered`,
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
if (model.state === 'notLoaded') {
|
|
302
|
+
yield this._loadModel(model);
|
|
303
|
+
}
|
|
304
|
+
else if (model.state === 'loading') {
|
|
305
|
+
yield this._loadModelPromises[model.name];
|
|
306
|
+
}
|
|
307
|
+
if (model.state !== 'inScene') {
|
|
308
|
+
yield this._prepareModelForScene(model);
|
|
309
|
+
}
|
|
310
|
+
// crop materialId as this is not part of `DecalConfiguration`
|
|
311
|
+
const decals = ((_b = (_a = model.cbnBabylonFileData) === null || _a === void 0 ? void 0 : _a.decals) !== null && _b !== void 0 ? _b : []).map(parsedDecal => {
|
|
312
|
+
const croppedDecal = parsedDecal;
|
|
313
|
+
delete croppedDecal.materialId;
|
|
314
|
+
return croppedDecal;
|
|
315
|
+
});
|
|
316
|
+
return decals;
|
|
317
|
+
});
|
|
318
|
+
}
|
|
285
319
|
/**
|
|
286
320
|
* Get model by name
|
|
287
321
|
*/
|
|
@@ -304,7 +338,12 @@ class ModelManager {
|
|
|
304
338
|
const curEnvIntensity = this.viewer.scene.environmentIntensity;
|
|
305
339
|
let assetContainer;
|
|
306
340
|
try {
|
|
307
|
-
|
|
341
|
+
const fullContainer = (yield index_1.SceneLoader.LoadAssetContainerAsync('', model.url, this.viewer.scene));
|
|
342
|
+
// crop and store custom cbn data from .babylon file
|
|
343
|
+
model.cbnBabylonFileData = fullContainer.cbnData;
|
|
344
|
+
delete fullContainer.cbnData;
|
|
345
|
+
// from here it's a basic asset container again
|
|
346
|
+
assetContainer = fullContainer;
|
|
308
347
|
}
|
|
309
348
|
catch (e) {
|
|
310
349
|
throw new index_1.ViewerError({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-manager.js","sourceRoot":"","sources":["../../../src/manager/model-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"model-manager.js","sourceRoot":"","sources":["../../../src/manager/model-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,7 @@ exports.ViewerErrorIds = {
|
|
|
25
25
|
TextureCouldNotBeParsed: 'TextureCouldNotBeParsed',
|
|
26
26
|
MaterialAlreadyExists: 'MaterialAlreadyExists',
|
|
27
27
|
NotAClonedMaterial: 'NotAClonedMaterial',
|
|
28
|
+
InvalidDecalConfiguration: 'InvalidDecalConfiguration',
|
|
28
29
|
};
|
|
29
30
|
/** @internal */
|
|
30
31
|
class ViewerError extends Error {
|
|
@@ -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,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,gBAAgB,EAAE,kBAAkB;IACpC,kBAAkB,EAAE,oBAAoB;IACxC,wBAAwB,EAAE,0BAA0B;IACpD,uBAAuB,EAAE,yBAAyB;IAClD,qBAAqB,EAAE,uBAAuB;IAC9C,kBAAkB,EAAE,oBAAoB;
|
|
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,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,gBAAgB,EAAE,kBAAkB;IACpC,kBAAkB,EAAE,oBAAoB;IACxC,wBAAwB,EAAE,0BAA0B;IACpD,uBAAuB,EAAE,yBAAyB;IAClD,qBAAqB,EAAE,uBAAuB;IAC9C,kBAAkB,EAAE,oBAAoB;IACxC,yBAAyB,EAAE,2BAA2B;CACvD,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/package.json
CHANGED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { IAssetContainer, Material, Mesh, MeshBuilder, Tuple, Vector3, ViewerError, ViewerErrorIds } from '..';
|
|
2
|
+
|
|
3
|
+
export type DecalConfiguration = {
|
|
4
|
+
// basic settings for decal creation
|
|
5
|
+
name: string;
|
|
6
|
+
sourceMeshName: string;
|
|
7
|
+
position: Tuple<number, 3>;
|
|
8
|
+
normal: Tuple<number, 3>;
|
|
9
|
+
size: Tuple<number, 3>;
|
|
10
|
+
angle: number;
|
|
11
|
+
|
|
12
|
+
/** Shifts decals away from source mesh in direction of "normal" vector */
|
|
13
|
+
offset: number;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* `true`: Use UV mapping from source mesh\
|
|
17
|
+
* `false`: Use default box mapping from the decal
|
|
18
|
+
*
|
|
19
|
+
* Default `false`
|
|
20
|
+
*/
|
|
21
|
+
captureUVS?: boolean;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Create decal only on front side if set to `true`
|
|
25
|
+
*
|
|
26
|
+
* Default `true`
|
|
27
|
+
*/
|
|
28
|
+
cullBackFaces?: boolean;
|
|
29
|
+
|
|
30
|
+
/** `true`: Sets created decal as child of source mesh
|
|
31
|
+
*
|
|
32
|
+
* Default `true`
|
|
33
|
+
*/
|
|
34
|
+
localMode?: boolean;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* The Babylon.js default for mesh side orientation value is `Material.CounterClockWiseSideOrientation`.\
|
|
38
|
+
* However if the mesh (in this case the created decal mesh) is located under a glTF root node, it has to be flipped,
|
|
39
|
+
* using `Material.ClockWiseSideOrientation`.
|
|
40
|
+
*
|
|
41
|
+
* Default `Material.ClockWiseSideOrientation`
|
|
42
|
+
*/
|
|
43
|
+
sideOrientation?: number;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Creates mesh from a decal configuration.\
|
|
48
|
+
* This is basically calling `MeshBuilder.CreateDecal`, with some extra steps:
|
|
49
|
+
* - add created decal mesh to source mesh asset container
|
|
50
|
+
* - overwrite decal mesh side orientation (important for glTF models)
|
|
51
|
+
* - move decal along the "normal" to avoid clipping
|
|
52
|
+
*/
|
|
53
|
+
export function createDecalMesh(config: DecalConfiguration, assetContainer: IAssetContainer, addToScene = true): Mesh {
|
|
54
|
+
const sourceMesh = assetContainer.meshes.find(mesh => mesh.name === config.sourceMeshName);
|
|
55
|
+
if (!sourceMesh) {
|
|
56
|
+
throw new ViewerError({
|
|
57
|
+
id: ViewerErrorIds.InvalidDecalConfiguration,
|
|
58
|
+
message: `Source mesh for decal "${config.name}" couldn't be found`,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const position = Vector3.FromArray(config.position);
|
|
63
|
+
const normal = Vector3.FromArray(config.normal).normalizeToNew();
|
|
64
|
+
|
|
65
|
+
const localMode = config.localMode ?? true;
|
|
66
|
+
const worldNormal = localMode ? Vector3.TransformNormal(normal, sourceMesh.getWorldMatrix()) : normal;
|
|
67
|
+
|
|
68
|
+
const decalMesh = MeshBuilder.CreateDecal(config.name, sourceMesh, {
|
|
69
|
+
position: position,
|
|
70
|
+
normal: normal,
|
|
71
|
+
size: Vector3.FromArray(config.size),
|
|
72
|
+
angle: config.angle,
|
|
73
|
+
captureUVS: config.captureUVS ?? false,
|
|
74
|
+
cullBackFaces: config.cullBackFaces ?? true,
|
|
75
|
+
localMode: config.localMode ?? true,
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
if (!addToScene) {
|
|
79
|
+
const scene = sourceMesh.getScene();
|
|
80
|
+
scene.removeMesh(decalMesh);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// make sure that the decal is part of the source mesh asset container
|
|
84
|
+
decalMesh._parentContainer = assetContainer;
|
|
85
|
+
assetContainer.meshes.push(decalMesh);
|
|
86
|
+
|
|
87
|
+
decalMesh.sideOrientation = config.sideOrientation ?? Material.ClockWiseSideOrientation;
|
|
88
|
+
|
|
89
|
+
// move decal away from mesh to avoid clipping
|
|
90
|
+
// NOTE: zOffset of material can't be used, since it's not supported in glTF and therefore not usable in AR
|
|
91
|
+
const offsetVector = worldNormal.scale(config.offset);
|
|
92
|
+
decalMesh.position.addInPlace(offsetVector);
|
|
93
|
+
|
|
94
|
+
return decalMesh;
|
|
95
|
+
}
|
package/src/index.ts
CHANGED