@combeenation/3d-viewer 16.0.0-alpha1 → 16.0.0-alpha2

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.
@@ -1,13 +1,36 @@
1
1
  import { IAssetContainer, Mesh, Tuple } from '..';
2
+ export declare const DEFAULT_DECAL_CONFIG: {
3
+ normal: number[];
4
+ angle: number;
5
+ offset: number;
6
+ scaling: number[];
7
+ captureUVS: boolean;
8
+ cullBackFaces: boolean;
9
+ localMode: boolean;
10
+ sideOrientation: number;
11
+ };
2
12
  export declare type DecalConfiguration = {
3
13
  name: string;
4
14
  sourceMeshName: string;
5
15
  position: Tuple<number, 3>;
6
- normal: Tuple<number, 3>;
7
16
  size: Tuple<number, 3>;
8
- angle: number;
9
- /** Shifts decals away from source mesh in direction of "normal" vector */
10
- offset: number;
17
+ /** Default `[0, 0, 1]` (forward direction) */
18
+ normal?: Tuple<number, 3>;
19
+ /** Default `0` */
20
+ angle?: number;
21
+ /**
22
+ * Shifts decals away from source mesh in direction of "normal" vector
23
+ *
24
+ * Default `0.001` (1mm)
25
+ */
26
+ offset?: number;
27
+ /**
28
+ * Can be used for shifting the decal away from the source mesh as alternative to `offset`.\
29
+ * Use this setting when the offset should be applied in radial direction (e.g. cylinders)
30
+ *
31
+ * Default `[1, 1, 1]` (no offset through scaling)
32
+ */
33
+ scaling?: Tuple<number, 3>;
11
34
  /**
12
35
  * `true`: Use UV mapping from source mesh\
13
36
  * `false`: Use default box mapping from the decal
@@ -1,7 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createDecalMesh = void 0;
3
+ exports.createDecalMesh = exports.DEFAULT_DECAL_CONFIG = void 0;
4
4
  const __1 = require("..");
5
+ exports.DEFAULT_DECAL_CONFIG = {
6
+ normal: [0, 0, 1],
7
+ angle: 0,
8
+ offset: 0.001,
9
+ scaling: [1, 1, 1],
10
+ captureUVS: false,
11
+ cullBackFaces: true,
12
+ localMode: true,
13
+ sideOrientation: __1.Material.ClockWiseSideOrientation,
14
+ };
5
15
  /**
6
16
  * Creates mesh from a decal configuration.\
7
17
  * This is basically calling `MeshBuilder.CreateDecal`, with some extra steps:
@@ -10,7 +20,7 @@ const __1 = require("..");
10
20
  * - move decal along the "normal" to avoid clipping
11
21
  */
12
22
  function createDecalMesh(config, assetContainer, addToScene = true) {
13
- var _a, _b, _c, _d, _e;
23
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
14
24
  const sourceMesh = assetContainer.meshes.find(mesh => mesh.name === config.sourceMeshName);
15
25
  if (!sourceMesh) {
16
26
  throw new __1.ViewerError({
@@ -19,17 +29,17 @@ function createDecalMesh(config, assetContainer, addToScene = true) {
19
29
  });
20
30
  }
21
31
  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;
32
+ const normal = __1.Vector3.FromArray((_a = config.normal) !== null && _a !== void 0 ? _a : exports.DEFAULT_DECAL_CONFIG.normal).normalizeToNew();
33
+ const localMode = (_b = config.localMode) !== null && _b !== void 0 ? _b : exports.DEFAULT_DECAL_CONFIG.localMode;
24
34
  const worldNormal = localMode ? __1.Vector3.TransformNormal(normal, sourceMesh.getWorldMatrix()) : normal;
25
35
  const decalMesh = __1.MeshBuilder.CreateDecal(config.name, sourceMesh, {
26
36
  position: position,
27
37
  normal: normal,
28
38
  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,
39
+ angle: (_c = config.angle) !== null && _c !== void 0 ? _c : exports.DEFAULT_DECAL_CONFIG.angle,
40
+ captureUVS: (_d = config.captureUVS) !== null && _d !== void 0 ? _d : exports.DEFAULT_DECAL_CONFIG.captureUVS,
41
+ cullBackFaces: (_e = config.cullBackFaces) !== null && _e !== void 0 ? _e : exports.DEFAULT_DECAL_CONFIG.cullBackFaces,
42
+ localMode: (_f = config.localMode) !== null && _f !== void 0 ? _f : exports.DEFAULT_DECAL_CONFIG.localMode,
33
43
  });
34
44
  if (!addToScene) {
35
45
  const scene = sourceMesh.getScene();
@@ -38,11 +48,13 @@ function createDecalMesh(config, assetContainer, addToScene = true) {
38
48
  // make sure that the decal is part of the source mesh asset container
39
49
  decalMesh._parentContainer = assetContainer;
40
50
  assetContainer.meshes.push(decalMesh);
41
- decalMesh.sideOrientation = (_e = config.sideOrientation) !== null && _e !== void 0 ? _e : __1.Material.ClockWiseSideOrientation;
51
+ decalMesh.sideOrientation = (_g = config.sideOrientation) !== null && _g !== void 0 ? _g : exports.DEFAULT_DECAL_CONFIG.sideOrientation;
42
52
  // move decal away from mesh to avoid clipping
43
53
  // 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);
54
+ const offsetVector = worldNormal.scale((_h = config.offset) !== null && _h !== void 0 ? _h : exports.DEFAULT_DECAL_CONFIG.offset);
45
55
  decalMesh.position.addInPlace(offsetVector);
56
+ // apply scaling, this is an alternative approach for creating an offset, which is preferred for round surfaces
57
+ decalMesh.scaling = __1.Vector3.FromArray((_j = config.scaling) !== null && _j !== void 0 ? _j : exports.DEFAULT_DECAL_CONFIG.scaling);
46
58
  return decalMesh;
47
59
  }
48
60
  exports.createDecalMesh = createDecalMesh;
@@ -1 +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"}
1
+ {"version":3,"file":"decals-helper.js","sourceRoot":"","sources":["../../../src/helper/decals-helper.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,3 @@
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
- };
17
1
  /**
18
2
  * Create and return a custom loader plugin to be registered with SceneLoader, that allows
19
3
  * us to run our own code against the input data before using the standard procedure to
@@ -11,20 +11,12 @@ var __rest = (this && this.__rest) || function (s, e) {
11
11
  return t;
12
12
  };
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.registerCustomCbnBabylonLoaderPlugin = exports.ExtendedAssetContainer = void 0;
14
+ exports.registerCustomCbnBabylonLoaderPlugin = void 0;
15
15
  const index_1 = require("../index");
16
16
  const metadata_helper_1 = require("./metadata-helper");
17
17
  const tags_helper_1 = require("./tags-helper");
18
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;
19
+ let customLoader;
28
20
  /**
29
21
  * Create and return a custom loader plugin to be registered with SceneLoader, that allows
30
22
  * us to run our own code against the input data before using the standard procedure to
@@ -37,11 +29,16 @@ exports.ExtendedAssetContainer = ExtendedAssetContainer;
37
29
  * editor area
38
30
  */
39
31
  function registerCustomCbnBabylonLoaderPlugin() {
32
+ if (customLoader) {
33
+ // create the custom loader only once, otherwise receiving the current .babylon plugin would return the custom
34
+ // loader, resulting in multiple calls of the plugin (e.g. decals will be created multiple times)
35
+ return;
36
+ }
40
37
  // get original plugin for babylon files
41
38
  // we only want to manipulate Combeenation 3d assets, which are represented as babylon files
42
39
  // the plugin is not used for GLB files, "local" babylon are also not really affected by this plugin
43
40
  const previousLoaderPlugin = index_1.SceneLoader.GetPluginForExtension('.babylon');
44
- const customLoader = {
41
+ customLoader = {
45
42
  name: 'cbnCustomBabylonLoader',
46
43
  extensions: '.babylon',
47
44
  importMesh: previousLoaderPlugin.importMesh,
@@ -79,13 +76,7 @@ function _isMeshInstanceData(data) {
79
76
  return hasName && hasValidTags;
80
77
  }
81
78
  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);
79
+ const hasValidProps = (0, lodash_es_1.isString)(data.name) && (0, lodash_es_1.isString)(data.sourceMeshName) && (0, lodash_es_1.isArray)(data.position) && (0, lodash_es_1.isArray)(data.size);
89
80
  if (!hasValidProps) {
90
81
  throw new index_1.ViewerError({
91
82
  id: index_1.ViewerErrorIds.InvalidDecalConfiguration,
@@ -167,13 +158,16 @@ function _createDecals(dataParsed, container) {
167
158
  const validatedDecals = dataParsed.cbnData.decals.filter(_isDecalConfiguration);
168
159
  validatedDecals.forEach(decalConfig => {
169
160
  var _a;
170
- const { materialId } = decalConfig, decalMeshConfig = __rest(decalConfig, ["materialId"]);
161
+ const { materialId, tags } = decalConfig, decalMeshConfig = __rest(decalConfig, ["materialId", "tags"]);
171
162
  const decalMesh = (0, index_1.createDecalMesh)(decalMeshConfig, container, false);
172
- // optionally set material directly
163
+ // optionally set material and tags directly
173
164
  if (materialId) {
174
165
  (_a = window.Cbn) === null || _a === void 0 ? void 0 : _a.Assets.assertMaterialExists(materialId);
175
166
  (0, metadata_helper_1.setInternalMetadataValue)(decalMesh, 'deferredMaterial', materialId);
176
167
  }
168
+ if (tags) {
169
+ (0, tags_helper_1.setTagsAsString)(decalMesh, tags);
170
+ }
177
171
  });
178
172
  }
179
173
  //# 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":"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"}
1
+ {"version":3,"file":"cbn-custom-babylon-loader-plugin.js","sourceRoot":"","sources":["../../../src/internal/cbn-custom-babylon-loader-plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,oCAUkB;AAClB,uDAA6D;AAC7D,+CAAwE;AACxE,yCAA8C;AAgB9C,IAAI,YAAgC,CAAC;AAErC;;;;;;;;;;GAUG;AACH,SAAgB,oCAAoC;IAClD,IAAI,YAAY,EAAE;QAChB,8GAA8G;QAC9G,iGAAiG;QACjG,OAAO;KACR;IAED,wCAAwC;IACxC,4FAA4F;IAC5F,oGAAoG;IACpG,MAAM,oBAAoB,GAAG,mBAAW,CAAC,qBAAqB,CAAC,UAAU,CAAuB,CAAC;IAEjG,YAAY,GAAG;QACb,IAAI,EAAE,wBAAwB;QAC9B,UAAU,EAAE,UAAU;QACtB,UAAU,EAAE,oBAAoB,CAAC,UAAU;QAC3C,IAAI,EAAE,oBAAoB,CAAC,IAAI;QAC/B,kBAAkB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAA0B,EAAE;YAC5E,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAc,CAAC,CAAC;YAC9C,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAExF,2BAA2B,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;YAC3D,kCAAkC,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;YAClE,aAAa,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;YAE7C,2GAA2G;YAC3G,MAAM,iBAAiB,GAAG,iBAA2C,CAAC;YACtE,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;YAE/C,OAAO,iBAAiB,CAAC;QAC3B,CAAC;KACF,CAAC;IAEF,mBAAW,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;AAC3C,CAAC;AAlCD,oFAkCC;AAED,SAAS,iBAAiB,CAAC,IAAS;IAClC,OAAO,IAAA,mBAAO,EAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,8BAA8B,CAAC,IAAS;;IAC/C,OAAO,IAAA,mBAAO,EAAC,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,0CAAE,MAAM,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,WAAW,CAAC,IAAS;IAC5B,MAAM,OAAO,GAAG,IAAA,oBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,kBAAkB,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,IAAA,oBAAQ,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEzE,OAAO,OAAO,IAAI,kBAAkB,CAAC;AACvC,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAS;IACpC,MAAM,OAAO,GAAG,IAAA,oBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAA,oBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEvD,OAAO,OAAO,IAAI,YAAY,CAAC;AACjC,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAS;IACtC,MAAM,aAAa,GACjB,IAAA,oBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAA,oBAAQ,EAAC,IAAI,CAAC,cAAc,CAAC,IAAI,IAAA,mBAAO,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAA,mBAAO,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEvG,IAAI,CAAC,aAAa,EAAE;QAClB,MAAM,IAAI,mBAAW,CAAC;YACpB,EAAE,EAAE,sBAAc,CAAC,yBAAyB;YAC5C,OAAO,EAAE,4BAA4B,IAAI,CAAC,IAAI,WAAW;SAC1D,CAAC,CAAC;KACJ;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;;GAKG;AACH,SAAS,2BAA2B,CAAC,UAAmB,EAAE,SAAyB;IACjF,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;QAAE,OAAO;IAE3C,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAE9D,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;;QACtC,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;QAEjF,MAAM,sBAAsB,GAAG,MAAA,YAAY,CAAC,QAAQ,0CAAE,EAAE,CAAC;QACzD,MAAM,sBAAsB,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,UAAU,CAAC;QAEtD,IAAI,sBAAsB,IAAI,sBAAsB,KAAK,sBAAsB,EAAE;YAC/E,MAAA,MAAM,CAAC,GAAG,0CAAE,MAAM,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;YAChE,IAAA,0CAAwB,EAAC,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,CAAC,CAAC;SACpF;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,kCAAkC,CAAC,UAAmB,EAAE,SAAyB;IACxF,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;QAAE,OAAO;IAE3C,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAE9D,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;;QACtC,IAAI,YAAY,YAAY,qBAAa,EAAE;YACzC,0GAA0G;YAC1G,gFAAgF;YAChF,MAAM,OAAO,GAAG,IAAA,qBAAO,EAAC,YAAY,CAAC,CAAC;YACtC,IAAI,OAAO,EAAE;gBACX,IAAA,2BAAa,EAAC,YAAY,CAAC,CAAC;gBAE5B,gFAAgF;gBAChF,MAAM,gBAAgB,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAClG,MAAM,4BAA4B,GAAG,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,SAAS,0CAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBAC9F,MAAM,mBAAmB,GAAG,4BAA4B,aAA5B,4BAA4B,uBAA5B,4BAA4B,CAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;gBACxG,MAAM,UAAU,GAAG,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,IAAI,CAAC;gBAC7C,IAAI,UAAU,EAAE;oBACd,IAAA,6BAAe,EAAC,YAAY,EAAE,UAAU,CAAC,CAAC;iBAC3C;aACF;SACF;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,aAAa,CAAC,UAAmB,EAAE,SAAyB;IACnE,IAAI,CAAC,8BAA8B,CAAC,UAAU,CAAC;QAAE,OAAO;IAExD,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAEhF,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;;QACpC,MAAM,EAAE,UAAU,EAAE,IAAI,KAAyB,WAAW,EAA/B,eAAe,UAAK,WAAW,EAAtD,sBAAwC,CAAc,CAAC;QAC7D,MAAM,SAAS,GAAG,IAAA,uBAAe,EAAC,eAAe,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAErE,4CAA4C;QAC5C,IAAI,UAAU,EAAE;YACd,MAAA,MAAM,CAAC,GAAG,0CAAE,MAAM,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;YACpD,IAAA,0CAAwB,EAAC,SAAS,EAAE,kBAAkB,EAAE,UAAU,CAAC,CAAC;SACrE;QAED,IAAI,IAAI,EAAE;YACR,IAAA,6BAAe,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC;SAClC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,5 +1,22 @@
1
1
  import { AssetContainer, DecalConfiguration, TransformNode, Viewer } from '../index';
2
- import { CbnBabylonFileData } from '../internal/cbn-custom-babylon-loader-plugin';
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
+ * @internal
9
+ */
10
+ export declare class ExtendedAssetContainer extends AssetContainer {
11
+ cbnData?: CbnBabylonFileData;
12
+ }
13
+ declare type CbnBabylonFileData = {
14
+ decals?: ParsedDecalConfiguration[];
15
+ };
16
+ export declare type ParsedDecalConfiguration = DecalConfiguration & {
17
+ materialId?: string;
18
+ tags?: string;
19
+ };
3
20
  export declare type ModelAssetDefinition = {
4
21
  name: string;
5
22
  url: string;
@@ -120,7 +137,7 @@ export declare class ModelManager {
120
137
  * Decals are already converted to "normal" meshes when loading a model, still the original decals configuration can
121
138
  * be useful e.g. for alterning decals.
122
139
  */
123
- getDecalsConfigurationOfModel(name: string): Promise<DecalConfiguration[]>;
140
+ getDecalsConfigurationOfModel(name: string): Promise<ParsedDecalConfiguration[]>;
124
141
  /**
125
142
  * Get model by name
126
143
  */
@@ -9,11 +9,22 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.ModelManager = void 0;
12
+ exports.ModelManager = exports.ExtendedAssetContainer = void 0;
13
13
  const index_1 = require("../index");
14
14
  const cloning_helper_1 = require("../internal/cloning-helper");
15
15
  const metadata_helper_1 = require("../internal/metadata-helper");
16
16
  const lodash_es_1 = require("lodash-es");
17
+ /**
18
+ * Contains cbn custom data, like decals.
19
+ * This is just a temporary type, as the `loadAssetContainer` function only returns an asset container, which can be
20
+ * altered by our file loader plugin.
21
+ * After loading the model, `cbnData` is cropped and a pure asset container is available for further processing.
22
+ *
23
+ * @internal
24
+ */
25
+ class ExtendedAssetContainer extends index_1.AssetContainer {
26
+ }
27
+ exports.ExtendedAssetContainer = ExtendedAssetContainer;
17
28
  /**
18
29
  * Manager for handling 3d models.\
19
30
  * Responsible for loading models and handling their visibility.\
@@ -307,13 +318,7 @@ class ModelManager {
307
318
  if (model.state !== 'inScene') {
308
319
  yield this._prepareModelForScene(model);
309
320
  }
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;
321
+ return (_b = (_a = model.cbnBabylonFileData) === null || _a === void 0 ? void 0 : _a.decals) !== null && _b !== void 0 ? _b : [];
317
322
  });
318
323
  }
319
324
  /**
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@combeenation/3d-viewer",
3
- "version": "16.0.0-alpha1",
3
+ "version": "16.0.0-alpha2",
4
4
  "description": "Combeenation 3D Viewer",
5
5
  "homepage": "https://github.com/Combeenation/3d-viewer#readme",
6
6
  "bugs": {
@@ -1,16 +1,43 @@
1
1
  import { IAssetContainer, Material, Mesh, MeshBuilder, Tuple, Vector3, ViewerError, ViewerErrorIds } from '..';
2
2
 
3
+ export const DEFAULT_DECAL_CONFIG = {
4
+ normal: [0, 0, 1],
5
+ angle: 0,
6
+ offset: 0.001,
7
+ scaling: [1, 1, 1],
8
+ captureUVS: false,
9
+ cullBackFaces: true,
10
+ localMode: true,
11
+ sideOrientation: Material.ClockWiseSideOrientation,
12
+ };
13
+
3
14
  export type DecalConfiguration = {
4
15
  // basic settings for decal creation
5
16
  name: string;
6
17
  sourceMeshName: string;
7
18
  position: Tuple<number, 3>;
8
- normal: Tuple<number, 3>;
9
19
  size: Tuple<number, 3>;
10
- angle: number;
11
20
 
12
- /** Shifts decals away from source mesh in direction of "normal" vector */
13
- offset: number;
21
+ /** Default `[0, 0, 1]` (forward direction) */
22
+ normal?: Tuple<number, 3>;
23
+
24
+ /** Default `0` */
25
+ angle?: number;
26
+
27
+ /**
28
+ * Shifts decals away from source mesh in direction of "normal" vector
29
+ *
30
+ * Default `0.001` (1mm)
31
+ */
32
+ offset?: number;
33
+
34
+ /**
35
+ * Can be used for shifting the decal away from the source mesh as alternative to `offset`.\
36
+ * Use this setting when the offset should be applied in radial direction (e.g. cylinders)
37
+ *
38
+ * Default `[1, 1, 1]` (no offset through scaling)
39
+ */
40
+ scaling?: Tuple<number, 3>;
14
41
 
15
42
  /**
16
43
  * `true`: Use UV mapping from source mesh\
@@ -60,19 +87,19 @@ export function createDecalMesh(config: DecalConfiguration, assetContainer: IAss
60
87
  }
61
88
 
62
89
  const position = Vector3.FromArray(config.position);
63
- const normal = Vector3.FromArray(config.normal).normalizeToNew();
90
+ const normal = Vector3.FromArray(config.normal ?? DEFAULT_DECAL_CONFIG.normal).normalizeToNew();
64
91
 
65
- const localMode = config.localMode ?? true;
92
+ const localMode = config.localMode ?? DEFAULT_DECAL_CONFIG.localMode;
66
93
  const worldNormal = localMode ? Vector3.TransformNormal(normal, sourceMesh.getWorldMatrix()) : normal;
67
94
 
68
95
  const decalMesh = MeshBuilder.CreateDecal(config.name, sourceMesh, {
69
96
  position: position,
70
97
  normal: normal,
71
98
  size: Vector3.FromArray(config.size),
72
- angle: config.angle,
73
- captureUVS: config.captureUVS ?? false,
74
- cullBackFaces: config.cullBackFaces ?? true,
75
- localMode: config.localMode ?? true,
99
+ angle: config.angle ?? DEFAULT_DECAL_CONFIG.angle,
100
+ captureUVS: config.captureUVS ?? DEFAULT_DECAL_CONFIG.captureUVS,
101
+ cullBackFaces: config.cullBackFaces ?? DEFAULT_DECAL_CONFIG.cullBackFaces,
102
+ localMode: config.localMode ?? DEFAULT_DECAL_CONFIG.localMode,
76
103
  });
77
104
 
78
105
  if (!addToScene) {
@@ -84,12 +111,15 @@ export function createDecalMesh(config: DecalConfiguration, assetContainer: IAss
84
111
  decalMesh._parentContainer = assetContainer;
85
112
  assetContainer.meshes.push(decalMesh);
86
113
 
87
- decalMesh.sideOrientation = config.sideOrientation ?? Material.ClockWiseSideOrientation;
114
+ decalMesh.sideOrientation = config.sideOrientation ?? DEFAULT_DECAL_CONFIG.sideOrientation;
88
115
 
89
116
  // move decal away from mesh to avoid clipping
90
117
  // 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);
118
+ const offsetVector = worldNormal.scale(config.offset ?? DEFAULT_DECAL_CONFIG.offset);
92
119
  decalMesh.position.addInPlace(offsetVector);
93
120
 
121
+ // apply scaling, this is an alternative approach for creating an offset, which is preferred for round surfaces
122
+ decalMesh.scaling = Vector3.FromArray(config.scaling ?? DEFAULT_DECAL_CONFIG.scaling);
123
+
94
124
  return decalMesh;
95
125
  }
@@ -1,8 +1,9 @@
1
1
  import {
2
2
  AssetContainer,
3
- DecalConfiguration,
3
+ ExtendedAssetContainer,
4
4
  ISceneLoaderPlugin,
5
5
  InstancedMesh,
6
+ ParsedDecalConfiguration,
6
7
  SceneLoader,
7
8
  ViewerError,
8
9
  ViewerErrorIds,
@@ -10,20 +11,7 @@ import {
10
11
  } from '../index';
11
12
  import { setInternalMetadataValue } from './metadata-helper';
12
13
  import { deleteAllTags, getTags, setTagsAsString } from './tags-helper';
13
- import { isArray, isNumber, isString } from 'lodash-es';
14
-
15
- /**
16
- * Contains cbn custom data, like decals.
17
- * This is just a temporary type, as the `loadAssetContainer` function only returns an asset container, which can be
18
- * altered by our file loader plugin.
19
- * After loading the model, `cbnData` is cropped and a pure asset container is available for further processing.
20
- */
21
- export class ExtendedAssetContainer extends AssetContainer {
22
- cbnData?: CbnBabylonFileData;
23
- }
24
-
25
- export type CbnBabylonFileData = { decals?: ParsedDecalConfiguration[] };
26
- export type ParsedDecalConfiguration = DecalConfiguration & { materialId?: string };
14
+ import { isArray, isString } from 'lodash-es';
27
15
 
28
16
  type DataWithMeshes = { meshes: unknown[] };
29
17
  type DataWithDecalConfigurations = { cbnData: { decals: unknown[] } };
@@ -39,6 +27,8 @@ type InstanceData = {
39
27
  tags?: string;
40
28
  };
41
29
 
30
+ let customLoader: ISceneLoaderPlugin;
31
+
42
32
  /**
43
33
  * Create and return a custom loader plugin to be registered with SceneLoader, that allows
44
34
  * us to run our own code against the input data before using the standard procedure to
@@ -51,12 +41,18 @@ type InstanceData = {
51
41
  * editor area
52
42
  */
53
43
  export function registerCustomCbnBabylonLoaderPlugin(): void {
44
+ if (customLoader) {
45
+ // create the custom loader only once, otherwise receiving the current .babylon plugin would return the custom
46
+ // loader, resulting in multiple calls of the plugin (e.g. decals will be created multiple times)
47
+ return;
48
+ }
49
+
54
50
  // get original plugin for babylon files
55
51
  // we only want to manipulate Combeenation 3d assets, which are represented as babylon files
56
52
  // the plugin is not used for GLB files, "local" babylon are also not really affected by this plugin
57
53
  const previousLoaderPlugin = SceneLoader.GetPluginForExtension('.babylon') as ISceneLoaderPlugin;
58
54
 
59
- const customLoader: ISceneLoaderPlugin = {
55
+ customLoader = {
60
56
  name: 'cbnCustomBabylonLoader',
61
57
  extensions: '.babylon',
62
58
  importMesh: previousLoaderPlugin.importMesh,
@@ -104,13 +100,7 @@ function _isMeshInstanceData(data: any): data is InstanceData {
104
100
 
105
101
  function _isDecalConfiguration(data: any): data is ParsedDecalConfiguration {
106
102
  const hasValidProps =
107
- isString(data.name) &&
108
- isString(data.sourceMeshName) &&
109
- isArray(data.position) &&
110
- isArray(data.normal) &&
111
- isArray(data.size) &&
112
- isNumber(data.angle) &&
113
- isNumber(data.offset);
103
+ isString(data.name) && isString(data.sourceMeshName) && isArray(data.position) && isArray(data.size);
114
104
 
115
105
  if (!hasValidProps) {
116
106
  throw new ViewerError({
@@ -200,13 +190,17 @@ function _createDecals(dataParsed: unknown, container: AssetContainer): void {
200
190
  const validatedDecals = dataParsed.cbnData.decals.filter(_isDecalConfiguration);
201
191
 
202
192
  validatedDecals.forEach(decalConfig => {
203
- const { materialId, ...decalMeshConfig } = decalConfig;
193
+ const { materialId, tags, ...decalMeshConfig } = decalConfig;
204
194
  const decalMesh = createDecalMesh(decalMeshConfig, container, false);
205
195
 
206
- // optionally set material directly
196
+ // optionally set material and tags directly
207
197
  if (materialId) {
208
198
  window.Cbn?.Assets.assertMaterialExists(materialId);
209
199
  setInternalMetadataValue(decalMesh, 'deferredMaterial', materialId);
210
200
  }
201
+
202
+ if (tags) {
203
+ setTagsAsString(decalMesh, tags);
204
+ }
211
205
  });
212
206
  }
@@ -11,15 +11,25 @@ import {
11
11
  ViewerError,
12
12
  ViewerErrorIds,
13
13
  } from '../index';
14
- import {
15
- CbnBabylonFileData,
16
- ExtendedAssetContainer,
17
- ParsedDecalConfiguration,
18
- } from '../internal/cbn-custom-babylon-loader-plugin';
19
14
  import { cloneModelAssetContainer } from '../internal/cloning-helper';
20
15
  import { getInternalMetadataValue } from '../internal/metadata-helper';
21
16
  import { isArray } from 'lodash-es';
22
17
 
18
+ /**
19
+ * Contains cbn custom data, like decals.
20
+ * This is just a temporary type, as the `loadAssetContainer` function only returns an asset container, which can be
21
+ * altered by our file loader plugin.
22
+ * After loading the model, `cbnData` is cropped and a pure asset container is available for further processing.
23
+ *
24
+ * @internal
25
+ */
26
+ export class ExtendedAssetContainer extends AssetContainer {
27
+ cbnData?: CbnBabylonFileData;
28
+ }
29
+
30
+ type CbnBabylonFileData = { decals?: ParsedDecalConfiguration[] };
31
+ export type ParsedDecalConfiguration = DecalConfiguration & { materialId?: string; tags?: string };
32
+
23
33
  export type ModelAssetDefinition = {
24
34
  name: string;
25
35
  url: string;
@@ -372,7 +382,7 @@ export class ModelManager {
372
382
  * Decals are already converted to "normal" meshes when loading a model, still the original decals configuration can
373
383
  * be useful e.g. for alterning decals.
374
384
  */
375
- public async getDecalsConfigurationOfModel(name: string): Promise<DecalConfiguration[]> {
385
+ public async getDecalsConfigurationOfModel(name: string): Promise<ParsedDecalConfiguration[]> {
376
386
  const model = this._getModel(name);
377
387
  if (!model) {
378
388
  throw new ViewerError({
@@ -391,16 +401,7 @@ export class ModelManager {
391
401
  await this._prepareModelForScene(model);
392
402
  }
393
403
 
394
- // crop materialId as this is not part of `DecalConfiguration`
395
- const decals = ((model.cbnBabylonFileData?.decals ?? []) as ParsedDecalConfiguration[]).map<DecalConfiguration>(
396
- parsedDecal => {
397
- const croppedDecal = parsedDecal;
398
- delete croppedDecal.materialId;
399
- return croppedDecal;
400
- }
401
- );
402
-
403
- return decals;
404
+ return model.cbnBabylonFileData?.decals ?? [];
404
405
  }
405
406
 
406
407
  /**