viral-viewer-2 2.1.3 → 2.1.4
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/components/renderer/viral-renderer.js +2 -2
- package/dist/components/renderer/viral-renderer.js.map +1 -1
- package/dist/components/worker/viral-viewer-2.worker.d.ts +3 -1
- package/dist/components/worker/viral-viewer-2.worker.js +40 -26
- package/dist/components/worker/viral-viewer-2.worker.js.map +1 -1
- package/dist/models/dictionary.model.d.ts +10 -0
- package/dist/models/dictionary.model.js +42 -0
- package/dist/models/dictionary.model.js.map +1 -0
- package/package.json +1 -1
|
@@ -8,8 +8,8 @@ class ViralRenderer {
|
|
|
8
8
|
this.renderer = new three_1.WebGLRenderer({
|
|
9
9
|
alpha: true,
|
|
10
10
|
antialias: true,
|
|
11
|
-
logarithmicDepthBuffer: true,
|
|
12
|
-
powerPreference: "high-performance",
|
|
11
|
+
// logarithmicDepthBuffer: true,
|
|
12
|
+
// powerPreference: "high-performance",
|
|
13
13
|
});
|
|
14
14
|
this.setupRenderer();
|
|
15
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viral-renderer.js","sourceRoot":"","sources":["../../../src/components/renderer/viral-renderer.ts"],"names":[],"mappings":";;;AAAA,iCAGe;AAGf,MAAa,aAAa;IAOtB,YAAmB,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;QANjD,aAAQ,GAAkB,IAAI,qBAAa,CAAC;YACxC,KAAK,EAAE,IAAI;YACX,SAAS,EAAE,IAAI;YACf,
|
|
1
|
+
{"version":3,"file":"viral-renderer.js","sourceRoot":"","sources":["../../../src/components/renderer/viral-renderer.ts"],"names":[],"mappings":";;;AAAA,iCAGe;AAGf,MAAa,aAAa;IAOtB,YAAmB,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;QANjD,aAAQ,GAAkB,IAAI,qBAAa,CAAC;YACxC,KAAK,EAAE,IAAI;YACX,SAAS,EAAE,IAAI;YACf,gCAAgC;YAChC,uCAAuC;SAC1C,CAAC,CAAC;QAEC,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IACM,aAAa;QAChB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACrH,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5E,CAAC;IACM,MAAM;;QACT,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,EAC7E;YACI,0CAA0C;YAC1C,MAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,0CAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAChE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACnG,IAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAC9D;gBACI,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;gBAChC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAA;gBAC1B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACpI,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;aAElC;SACJ;IAEL,CAAC;CACJ;AAjCD,sCAiCC"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { ViralViewerApi } from "../../viral-viewer-api";
|
|
2
2
|
import { RenderMaterial, ViralViewerRevitNoneStructuralGeometry, ViralViewerRevitStructuralGeometry } from "../../types";
|
|
3
|
-
import { Mesh } from "three";
|
|
3
|
+
import { Mesh, MeshPhongMaterial } from "three";
|
|
4
|
+
import { Dictionary } from "../../models/dictionary.model";
|
|
4
5
|
export declare class ViralViewerWorker2 {
|
|
5
6
|
viralViewerApi: ViralViewerApi;
|
|
6
7
|
worker: Worker;
|
|
7
8
|
materials: RenderMaterial[];
|
|
8
9
|
mainModel: Mesh | null;
|
|
10
|
+
threejsMaterials: Dictionary<number, MeshPhongMaterial>;
|
|
9
11
|
constructor(viralViewerApi: ViralViewerApi, scriptUrl?: string);
|
|
10
12
|
initial(materials: RenderMaterial[]): void;
|
|
11
13
|
loadStructuralGeometry(model: ViralViewerRevitStructuralGeometry, callbackOnSuccess?: () => void): void;
|
|
@@ -3,11 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ViralViewerWorker2 = void 0;
|
|
4
4
|
const three_1 = require("three");
|
|
5
5
|
const load_model_worker_2_script_1 = require("../worker-script/load-model-worker-2.script");
|
|
6
|
+
const dictionary_model_1 = require("../../models/dictionary.model");
|
|
6
7
|
class ViralViewerWorker2 {
|
|
7
8
|
constructor(viralViewerApi, scriptUrl = "../worker-script/load-model-worker-2.script.js") {
|
|
8
9
|
this.viralViewerApi = viralViewerApi;
|
|
9
10
|
this.materials = [];
|
|
10
11
|
this.mainModel = null;
|
|
12
|
+
this.threejsMaterials = new dictionary_model_1.Dictionary();
|
|
11
13
|
// Create a new Blob containing the worker code
|
|
12
14
|
const blob = new Blob([`(${load_model_worker_2_script_1.workerCode})()`]);
|
|
13
15
|
const workerPath = URL.createObjectURL(blob);
|
|
@@ -27,20 +29,26 @@ class ViralViewerWorker2 {
|
|
|
27
29
|
let buffer = m.data.buffer;
|
|
28
30
|
const geometry = new three_1.BufferGeometry();
|
|
29
31
|
geometry.setAttribute("position", new three_1.BufferAttribute(buffer, 3));
|
|
30
|
-
let
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
let material = null;
|
|
33
|
+
let findedMaterial = this.threejsMaterials.get(model.MaterialIndex.toString());
|
|
34
|
+
if (findedMaterial) {
|
|
35
|
+
material = findedMaterial;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
material = new three_1.MeshPhongMaterial({
|
|
39
|
+
color: m.data.materialColorString,
|
|
40
|
+
opacity: m.data.materialOpacity,
|
|
41
|
+
transparent: true,
|
|
42
|
+
flatShading: true,
|
|
43
|
+
name: model.MaterialIndex.toString()
|
|
44
|
+
});
|
|
45
|
+
this.threejsMaterials.add(model.MaterialIndex.toString(), material);
|
|
46
|
+
}
|
|
36
47
|
geometry.computeVertexNormals();
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
// );
|
|
42
|
-
const childMesh = new three_1.Mesh(geometry, newMaterial);
|
|
43
|
-
// childMesh.add(line);
|
|
48
|
+
const edges = new three_1.EdgesGeometry(geometry, 90);
|
|
49
|
+
const line = new three_1.LineSegments(edges, new three_1.LineBasicMaterial({ color: "#202020" }));
|
|
50
|
+
const childMesh = new three_1.Mesh(geometry, material);
|
|
51
|
+
childMesh.add(line);
|
|
44
52
|
childMesh.castShadow = true;
|
|
45
53
|
childMesh.receiveShadow = true;
|
|
46
54
|
if (this.mainModel)
|
|
@@ -60,20 +68,26 @@ class ViralViewerWorker2 {
|
|
|
60
68
|
let buffer = m.data.buffer;
|
|
61
69
|
const geometry = new three_1.BufferGeometry();
|
|
62
70
|
geometry.setAttribute("position", new three_1.BufferAttribute(buffer, 3));
|
|
63
|
-
let
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
71
|
+
let material = null;
|
|
72
|
+
let findedMaterial = this.threejsMaterials.get(model.MaterialIndex.toString());
|
|
73
|
+
if (findedMaterial) {
|
|
74
|
+
material = findedMaterial;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
material = new three_1.MeshPhongMaterial({
|
|
78
|
+
color: m.data.materialColorString,
|
|
79
|
+
opacity: m.data.materialOpacity,
|
|
80
|
+
transparent: true,
|
|
81
|
+
flatShading: true,
|
|
82
|
+
name: model.MaterialIndex.toString()
|
|
83
|
+
});
|
|
84
|
+
this.threejsMaterials.add(model.MaterialIndex.toString(), material);
|
|
85
|
+
}
|
|
69
86
|
geometry.computeVertexNormals();
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
// );
|
|
75
|
-
const childMesh = new three_1.Mesh(geometry, newMaterial);
|
|
76
|
-
// childMesh.add(line);
|
|
87
|
+
const edges = new three_1.EdgesGeometry(geometry, 90);
|
|
88
|
+
const line = new three_1.LineSegments(edges, new three_1.LineBasicMaterial({ color: "#202020" }));
|
|
89
|
+
const childMesh = new three_1.Mesh(geometry, material);
|
|
90
|
+
childMesh.add(line);
|
|
77
91
|
childMesh.castShadow = true;
|
|
78
92
|
childMesh.receiveShadow = true;
|
|
79
93
|
if (this.mainModel)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viral-viewer-2.worker.js","sourceRoot":"","sources":["../../../src/components/worker/viral-viewer-2.worker.ts"],"names":[],"mappings":";;;AAEA,iCAA0I;AAC1I,4FAAyE;
|
|
1
|
+
{"version":3,"file":"viral-viewer-2.worker.js","sourceRoot":"","sources":["../../../src/components/worker/viral-viewer-2.worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class Dictionary<TKey, TValue> {
|
|
2
|
+
private items;
|
|
3
|
+
add(key: string, value: TValue): void;
|
|
4
|
+
get(key: string): TValue | undefined;
|
|
5
|
+
remove(key: string): void;
|
|
6
|
+
containsKey(key: string): boolean;
|
|
7
|
+
keys(): TKey[];
|
|
8
|
+
values(): TValue[];
|
|
9
|
+
count(): number;
|
|
10
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Dictionary = void 0;
|
|
4
|
+
class Dictionary {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.items = {};
|
|
7
|
+
}
|
|
8
|
+
// Add a key-value pair to the dictionary
|
|
9
|
+
add(key, value) {
|
|
10
|
+
const stringKey = key;
|
|
11
|
+
this.items[stringKey] = value;
|
|
12
|
+
}
|
|
13
|
+
// Retrieve a value from the dictionary by key
|
|
14
|
+
get(key) {
|
|
15
|
+
const stringKey = key;
|
|
16
|
+
return this.items[stringKey];
|
|
17
|
+
}
|
|
18
|
+
// Remove a key-value pair from the dictionary
|
|
19
|
+
remove(key) {
|
|
20
|
+
const stringKey = key;
|
|
21
|
+
delete this.items[stringKey];
|
|
22
|
+
}
|
|
23
|
+
// Check if the dictionary contains a key
|
|
24
|
+
containsKey(key) {
|
|
25
|
+
const stringKey = key;
|
|
26
|
+
return stringKey in this.items;
|
|
27
|
+
}
|
|
28
|
+
// Get all keys in the dictionary
|
|
29
|
+
keys() {
|
|
30
|
+
return Object.keys(this.items).map(key => key);
|
|
31
|
+
}
|
|
32
|
+
// Get all values in the dictionary
|
|
33
|
+
values() {
|
|
34
|
+
return Object.values(this.items);
|
|
35
|
+
}
|
|
36
|
+
// Get the number of key-value pairs in the dictionary
|
|
37
|
+
count() {
|
|
38
|
+
return Object.keys(this.items).length;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.Dictionary = Dictionary;
|
|
42
|
+
//# sourceMappingURL=dictionary.model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dictionary.model.js","sourceRoot":"","sources":["../../src/models/dictionary.model.ts"],"names":[],"mappings":";;;AAAA,MAAa,UAAU;IAAvB;QACY,UAAK,GAA8B,EAAE,CAAC;IAwChD,CAAC;IAtCC,yCAAyC;IACzC,GAAG,CAAC,GAAW,EAAE,KAAa;QAC5B,MAAM,SAAS,GAAG,GAAG,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;IAChC,CAAC;IAED,8CAA8C;IAC9C,GAAG,CAAC,GAAW;QACb,MAAM,SAAS,GAAG,GAAG,CAAC;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,8CAA8C;IAC9C,MAAM,CAAC,GAAW;QAChB,MAAM,SAAS,GAAG,GAAG,CAAC;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,yCAAyC;IACzC,WAAW,CAAC,GAAW;QACrB,MAAM,SAAS,GAAG,GAAG,CAAC;QACtB,OAAO,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC;IACjC,CAAC;IAED,iCAAiC;IACjC,IAAI;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAW,CAAC,CAAC;IACzD,CAAC;IAED,mCAAmC;IACnC,MAAM;QACJ,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,sDAAsD;IACtD,KAAK;QACH,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;IACxC,CAAC;CACF;AAzCH,gCAyCG"}
|