@shapediver/viewer.features.attribute-visualization 3.1.2 → 3.2.1
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/implementation/AttributeVisualizationEngine.d.ts +6 -5
- package/dist/implementation/AttributeVisualizationEngine.d.ts.map +1 -1
- package/dist/implementation/AttributeVisualizationEngine.js +20 -5
- package/dist/implementation/AttributeVisualizationEngine.js.map +1 -1
- package/package.json +5 -5
- package/src/implementation/AttributeVisualizationEngine.ts +38 -19
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { ILayer } from
|
|
2
|
-
import { IViewportApi } from
|
|
3
|
-
import { IAttribute } from
|
|
4
|
-
import { IAttributeVisualizationEngine } from
|
|
5
|
-
import { IMaterialAbstractData, ISDTFOverview } from
|
|
1
|
+
import { ILayer } from '../interfaces/ILayer';
|
|
2
|
+
import { IViewportApi } from '@shapediver/viewer';
|
|
3
|
+
import { IAttribute } from '../interfaces/IAttribute';
|
|
4
|
+
import { IAttributeVisualizationEngine } from '../interfaces/IAttributeVisualizationEngine';
|
|
5
|
+
import { IMaterialAbstractData, ISDTFOverview } from '@shapediver/viewer.shared.types';
|
|
6
6
|
export declare class AttributeVisualizationEngine implements IAttributeVisualizationEngine {
|
|
7
7
|
#private;
|
|
8
8
|
constructor(viewport: IViewportApi);
|
|
9
|
+
private gatherNodesWithAttributeData;
|
|
9
10
|
get defaultMaterial(): IMaterialAbstractData;
|
|
10
11
|
get defaultLayer(): ILayer;
|
|
11
12
|
get layers(): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttributeVisualizationEngine.d.ts","sourceRoot":"","sources":["../../src/implementation/AttributeVisualizationEngine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AttributeVisualizationEngine.d.ts","sourceRoot":"","sources":["../../src/implementation/AttributeVisualizationEngine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAA0B,YAAY,EAAa,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,UAAU,EAAyD,MAAM,0BAA0B,CAAC;AAG7G,OAAO,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAAiB,aAAa,EAAsJ,MAAM,iCAAiC,CAAC;AAG1P,qBAAa,4BAA6B,YAAW,6BAA6B;;gBA4BlE,QAAQ,EAAE,YAAY;IA+BlC,OAAO,CAAC,4BAA4B;IAUpC,IAAW,eAAe,IAAI,qBAAqB,CAElD;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED,IAAW,MAAM,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAE7C;IAED,IAAW,iBAAiB,IAAI,OAAO,GAAG,UAAU,CAEnD;IAED,IAAW,sBAAsB,IAAI,OAAO,GAAG,UAAU,CAExD;IAED,IAAW,QAAQ,IAAI,aAAa,CAEnC;IAMM,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE;IAKzC,kBAAkB,CAAC,KAAK,EAAE,MAAM;IAKhC,qBAAqB,CAAC,QAAQ,EAAE,qBAAqB;IAKrD,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU;IAMlD,4BAA4B,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU;IAMvD,YAAY,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE;IAK9C,WAAW,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM;IAMnC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAU7C,OAAO,CAAC,+BAA+B;IAkJvC,OAAO,CAAC,kBAAkB;IA0B1B,OAAO,CAAC,YAAY;CAiBvB"}
|
|
@@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
10
10
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
11
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
12
|
};
|
|
13
|
-
var _AttributeVisualizationEngine_uuidGenerator, _AttributeVisualizationEngine_viewport, _AttributeVisualizationEngine_attributes, _AttributeVisualizationEngine_defaultMaterial, _AttributeVisualizationEngine_defaultLayer, _AttributeVisualizationEngine_layers, _AttributeVisualizationEngine_overview, _AttributeVisualizationEngine_listeners, _AttributeVisualizationEngine_visualizedMaterialType, _AttributeVisualizationEngine_layerMaterialType;
|
|
13
|
+
var _AttributeVisualizationEngine_uuidGenerator, _AttributeVisualizationEngine_viewport, _AttributeVisualizationEngine_attributes, _AttributeVisualizationEngine_defaultMaterial, _AttributeVisualizationEngine_defaultLayer, _AttributeVisualizationEngine_layers, _AttributeVisualizationEngine_overview, _AttributeVisualizationEngine_listeners, _AttributeVisualizationEngine_visualizedMaterialType, _AttributeVisualizationEngine_layerMaterialType, _AttributeVisualizationEngine_nodesWithAttributeData;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.AttributeVisualizationEngine = void 0;
|
|
16
16
|
const viewer_1 = require("@shapediver/viewer");
|
|
@@ -37,25 +37,37 @@ class AttributeVisualizationEngine {
|
|
|
37
37
|
_AttributeVisualizationEngine_listeners.set(this, {});
|
|
38
38
|
_AttributeVisualizationEngine_visualizedMaterialType.set(this, 'unlit');
|
|
39
39
|
_AttributeVisualizationEngine_layerMaterialType.set(this, 'unlit');
|
|
40
|
+
_AttributeVisualizationEngine_nodesWithAttributeData.set(this, []);
|
|
40
41
|
__classPrivateFieldSet(this, _AttributeVisualizationEngine_viewport, viewport, "f");
|
|
41
42
|
__classPrivateFieldSet(this, _AttributeVisualizationEngine_overview, __classPrivateFieldGet(this, _AttributeVisualizationEngine_viewport, "f").createSDTFOverview(viewer_1.sceneTree.root), "f");
|
|
42
43
|
this.createLayers();
|
|
43
44
|
this.constructAttributeVisualization();
|
|
45
|
+
this.gatherNodesWithAttributeData();
|
|
46
|
+
__classPrivateFieldGet(this, _AttributeVisualizationEngine_nodesWithAttributeData, "f").forEach(n => __classPrivateFieldGet(this, _AttributeVisualizationEngine_viewport, "f").updateNode(n));
|
|
44
47
|
(0, viewer_1.addListener)(viewer_shared_services_1.EVENTTYPE.SESSION.SESSION_CUSTOMIZED, () => {
|
|
45
48
|
__classPrivateFieldSet(this, _AttributeVisualizationEngine_overview, __classPrivateFieldGet(this, _AttributeVisualizationEngine_viewport, "f").createSDTFOverview(viewer_1.sceneTree.root), "f");
|
|
46
49
|
const layers = __classPrivateFieldGet(this, _AttributeVisualizationEngine_layers, "f");
|
|
47
50
|
this.createLayers();
|
|
48
|
-
for (
|
|
51
|
+
for (const l in layers) {
|
|
49
52
|
if (__classPrivateFieldGet(this, _AttributeVisualizationEngine_layers, "f")[l])
|
|
50
53
|
__classPrivateFieldGet(this, _AttributeVisualizationEngine_layers, "f")[l] = layers[l];
|
|
51
54
|
}
|
|
52
55
|
this.constructAttributeVisualization();
|
|
53
|
-
|
|
56
|
+
this.gatherNodesWithAttributeData();
|
|
57
|
+
for (const l in __classPrivateFieldGet(this, _AttributeVisualizationEngine_listeners, "f"))
|
|
54
58
|
__classPrivateFieldGet(this, _AttributeVisualizationEngine_listeners, "f")[l]();
|
|
55
59
|
});
|
|
56
60
|
}
|
|
57
61
|
// #endregion Constructors (1)
|
|
58
62
|
// #region Public Accessors (3)
|
|
63
|
+
gatherNodesWithAttributeData() {
|
|
64
|
+
__classPrivateFieldSet(this, _AttributeVisualizationEngine_nodesWithAttributeData, [], "f");
|
|
65
|
+
viewer_1.sceneTree.root.traverse((node) => {
|
|
66
|
+
if (node.data.some(d => d instanceof viewer_shared_types_1.SDTFItemData)) {
|
|
67
|
+
__classPrivateFieldGet(this, _AttributeVisualizationEngine_nodesWithAttributeData, "f").push(node);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
59
71
|
get defaultMaterial() {
|
|
60
72
|
return __classPrivateFieldGet(this, _AttributeVisualizationEngine_defaultMaterial, "f");
|
|
61
73
|
}
|
|
@@ -205,7 +217,9 @@ class AttributeVisualizationEngine {
|
|
|
205
217
|
const itemDataAttributeOverview = overview[a.key].filter(o => o.typeHint === a.type)[0];
|
|
206
218
|
switch (true) {
|
|
207
219
|
case viewer_shared_types_1.SdtfPrimitiveTypeGuard.isColorType(a.type):
|
|
208
|
-
|
|
220
|
+
// multiply each color values with 255 to convert them to the range [0, 255]
|
|
221
|
+
const convertedValue = itemDataAttribute.value.map((v) => v * 255);
|
|
222
|
+
material.color = convertedValue;
|
|
209
223
|
material.opacity *= layer.opacity;
|
|
210
224
|
return {
|
|
211
225
|
matrix: gl_matrix_1.mat4.create(),
|
|
@@ -241,6 +255,7 @@ class AttributeVisualizationEngine {
|
|
|
241
255
|
};
|
|
242
256
|
}
|
|
243
257
|
};
|
|
258
|
+
__classPrivateFieldGet(this, _AttributeVisualizationEngine_nodesWithAttributeData, "f").forEach(n => __classPrivateFieldGet(this, _AttributeVisualizationEngine_viewport, "f").updateNode(n));
|
|
244
259
|
}
|
|
245
260
|
createMaterialCopy(material) {
|
|
246
261
|
if (material instanceof viewer_shared_types_1.MaterialGemData) {
|
|
@@ -289,5 +304,5 @@ class AttributeVisualizationEngine {
|
|
|
289
304
|
}
|
|
290
305
|
}
|
|
291
306
|
exports.AttributeVisualizationEngine = AttributeVisualizationEngine;
|
|
292
|
-
_AttributeVisualizationEngine_uuidGenerator = new WeakMap(), _AttributeVisualizationEngine_viewport = new WeakMap(), _AttributeVisualizationEngine_attributes = new WeakMap(), _AttributeVisualizationEngine_defaultMaterial = new WeakMap(), _AttributeVisualizationEngine_defaultLayer = new WeakMap(), _AttributeVisualizationEngine_layers = new WeakMap(), _AttributeVisualizationEngine_overview = new WeakMap(), _AttributeVisualizationEngine_listeners = new WeakMap(), _AttributeVisualizationEngine_visualizedMaterialType = new WeakMap(), _AttributeVisualizationEngine_layerMaterialType = new WeakMap();
|
|
307
|
+
_AttributeVisualizationEngine_uuidGenerator = new WeakMap(), _AttributeVisualizationEngine_viewport = new WeakMap(), _AttributeVisualizationEngine_attributes = new WeakMap(), _AttributeVisualizationEngine_defaultMaterial = new WeakMap(), _AttributeVisualizationEngine_defaultLayer = new WeakMap(), _AttributeVisualizationEngine_layers = new WeakMap(), _AttributeVisualizationEngine_overview = new WeakMap(), _AttributeVisualizationEngine_listeners = new WeakMap(), _AttributeVisualizationEngine_visualizedMaterialType = new WeakMap(), _AttributeVisualizationEngine_layerMaterialType = new WeakMap(), _AttributeVisualizationEngine_nodesWithAttributeData = new WeakMap();
|
|
293
308
|
//# sourceMappingURL=AttributeVisualizationEngine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttributeVisualizationEngine.js","sourceRoot":"","sources":["../../src/implementation/AttributeVisualizationEngine.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"AttributeVisualizationEngine.js","sourceRoot":"","sources":["../../src/implementation/AttributeVisualizationEngine.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shapediver/viewer.features.attribute-visualization",
|
|
3
|
-
"version": "3.1
|
|
3
|
+
"version": "3.2.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"author": "Michael Oppitz <michael@shapediver.com>",
|
|
@@ -41,13 +41,13 @@
|
|
|
41
41
|
"testEnvironment": "node"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@shapediver/viewer": "3.1
|
|
45
|
-
"@shapediver/viewer.shared.services": "3.1
|
|
46
|
-
"@shapediver/viewer.shared.types": "3.1
|
|
44
|
+
"@shapediver/viewer": "3.2.1",
|
|
45
|
+
"@shapediver/viewer.shared.services": "3.2.1",
|
|
46
|
+
"@shapediver/viewer.shared.types": "3.2.1"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
49
|
"detect-it": "4.0.1",
|
|
50
50
|
"gl-matrix": "3.3.0"
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "00f87aa21c3616bbabf0d06a93f94491324825c5"
|
|
53
53
|
}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
1
|
+
/* eslint-disable no-case-declarations */
|
|
2
|
+
import { ILayer } from '../interfaces/ILayer';
|
|
3
|
+
import { addListener, ITreeNode, IViewportApi, sceneTree } from '@shapediver/viewer';
|
|
4
|
+
import { IAttribute, IDefaultAttribute, INumberAttribute, IStringAttribute } from '../interfaces/IAttribute';
|
|
5
|
+
import { mat4 } from 'gl-matrix';
|
|
6
|
+
import { Converter, EVENTTYPE, UuidGenerator } from '@shapediver/viewer.shared.services';
|
|
7
|
+
import { IAttributeVisualizationEngine } from '../interfaces/IAttributeVisualizationEngine';
|
|
8
|
+
import { IMaterialAbstractData, ISDTFItemData, ISDTFOverview, MaterialGemData, MaterialShadowData, MaterialSpecularGlossinessData, MaterialStandardData, MaterialUnlitData, SDTFItemData, SdtfPrimitiveTypeGuard } from '@shapediver/viewer.shared.types';
|
|
9
|
+
import { AttributeVisualizationUtils } from './AttributeVisualizationUtils';
|
|
9
10
|
|
|
10
11
|
export class AttributeVisualizationEngine implements IAttributeVisualizationEngine {
|
|
11
12
|
// #region Properties (7)
|
|
@@ -29,6 +30,7 @@ export class AttributeVisualizationEngine implements IAttributeVisualizationEngi
|
|
|
29
30
|
} = {};
|
|
30
31
|
#visualizedMaterialType: 'unlit' | 'standard' = 'unlit';
|
|
31
32
|
#layerMaterialType: 'unlit' | 'standard' = 'unlit';
|
|
33
|
+
#nodesWithAttributeData: ITreeNode[] = [];
|
|
32
34
|
|
|
33
35
|
// #endregion Properties (7)
|
|
34
36
|
|
|
@@ -40,27 +42,41 @@ export class AttributeVisualizationEngine implements IAttributeVisualizationEngi
|
|
|
40
42
|
this.#overview = this.#viewport.createSDTFOverview(sceneTree.root);
|
|
41
43
|
this.createLayers();
|
|
42
44
|
this.constructAttributeVisualization();
|
|
45
|
+
this.gatherNodesWithAttributeData();
|
|
46
|
+
this.#nodesWithAttributeData.forEach(n => this.#viewport.updateNode(n));
|
|
47
|
+
|
|
43
48
|
addListener(EVENTTYPE.SESSION.SESSION_CUSTOMIZED, () => {
|
|
44
49
|
this.#overview = this.#viewport.createSDTFOverview(sceneTree.root);
|
|
45
50
|
|
|
46
51
|
const layers = this.#layers;
|
|
47
52
|
this.createLayers();
|
|
48
|
-
for (
|
|
53
|
+
for (const l in layers) {
|
|
49
54
|
if (this.#layers[l])
|
|
50
55
|
this.#layers[l] = layers[l];
|
|
51
56
|
}
|
|
52
57
|
|
|
53
58
|
this.constructAttributeVisualization();
|
|
59
|
+
this.gatherNodesWithAttributeData();
|
|
54
60
|
|
|
55
|
-
for (
|
|
61
|
+
for (const l in this.#listeners)
|
|
56
62
|
this.#listeners[l]();
|
|
57
|
-
})
|
|
63
|
+
});
|
|
58
64
|
}
|
|
59
65
|
|
|
60
66
|
// #endregion Constructors (1)
|
|
61
67
|
|
|
62
68
|
// #region Public Accessors (3)
|
|
63
69
|
|
|
70
|
+
private gatherNodesWithAttributeData() {
|
|
71
|
+
this.#nodesWithAttributeData = [];
|
|
72
|
+
|
|
73
|
+
sceneTree.root.traverse((node: ITreeNode) => {
|
|
74
|
+
if (node.data.some(d => d instanceof SDTFItemData)) {
|
|
75
|
+
this.#nodesWithAttributeData.push(node);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
|
|
64
80
|
public get defaultMaterial(): IMaterialAbstractData {
|
|
65
81
|
return this.#defaultMaterial;
|
|
66
82
|
}
|
|
@@ -158,7 +174,7 @@ export class AttributeVisualizationEngine implements IAttributeVisualizationEngi
|
|
|
158
174
|
return {
|
|
159
175
|
matrix: mat4.create(),
|
|
160
176
|
material
|
|
161
|
-
}
|
|
177
|
+
};
|
|
162
178
|
} else {
|
|
163
179
|
// return default layer material
|
|
164
180
|
let material;
|
|
@@ -176,7 +192,7 @@ export class AttributeVisualizationEngine implements IAttributeVisualizationEngi
|
|
|
176
192
|
return {
|
|
177
193
|
matrix: mat4.create(),
|
|
178
194
|
material
|
|
179
|
-
}
|
|
195
|
+
};
|
|
180
196
|
}
|
|
181
197
|
}
|
|
182
198
|
|
|
@@ -194,7 +210,7 @@ export class AttributeVisualizationEngine implements IAttributeVisualizationEngi
|
|
|
194
210
|
return {
|
|
195
211
|
matrix: mat4.create(),
|
|
196
212
|
material: mat
|
|
197
|
-
}
|
|
213
|
+
};
|
|
198
214
|
}
|
|
199
215
|
|
|
200
216
|
if (this.#attributes.length === 0) {
|
|
@@ -215,7 +231,7 @@ export class AttributeVisualizationEngine implements IAttributeVisualizationEngi
|
|
|
215
231
|
return {
|
|
216
232
|
matrix: mat4.create(),
|
|
217
233
|
material
|
|
218
|
-
}
|
|
234
|
+
};
|
|
219
235
|
} else {
|
|
220
236
|
// attributes are specified, we go into attribute visualization mode
|
|
221
237
|
const material = this.#visualizedMaterialType === 'unlit' ? new MaterialUnlitData() : new MaterialStandardData();
|
|
@@ -227,7 +243,9 @@ export class AttributeVisualizationEngine implements IAttributeVisualizationEngi
|
|
|
227
243
|
|
|
228
244
|
switch (true) {
|
|
229
245
|
case SdtfPrimitiveTypeGuard.isColorType(a.type):
|
|
230
|
-
|
|
246
|
+
// multiply each color values with 255 to convert them to the range [0, 255]
|
|
247
|
+
const convertedValue = itemDataAttribute.value.map((v: number) => v * 255);
|
|
248
|
+
material.color = convertedValue;
|
|
231
249
|
material.opacity *= layer.opacity;
|
|
232
250
|
return {
|
|
233
251
|
matrix: mat4.create(),
|
|
@@ -275,9 +293,10 @@ export class AttributeVisualizationEngine implements IAttributeVisualizationEngi
|
|
|
275
293
|
return {
|
|
276
294
|
matrix: mat4.create(),
|
|
277
295
|
material: mat
|
|
278
|
-
}
|
|
296
|
+
};
|
|
279
297
|
}
|
|
280
|
-
}
|
|
298
|
+
};
|
|
299
|
+
this.#nodesWithAttributeData.forEach(n => this.#viewport.updateNode(n));
|
|
281
300
|
}
|
|
282
301
|
|
|
283
302
|
private createMaterialCopy(material: IMaterialAbstractData): IMaterialAbstractData {
|
|
@@ -316,7 +335,7 @@ export class AttributeVisualizationEngine implements IAttributeVisualizationEngi
|
|
|
316
335
|
enabled: true,
|
|
317
336
|
opacity: 1,
|
|
318
337
|
color: this.defaultMaterial.color
|
|
319
|
-
}
|
|
338
|
+
};
|
|
320
339
|
}
|
|
321
340
|
}
|
|
322
341
|
}
|