viral-viewer-2 2.7.7 → 2.7.9
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.
|
@@ -7,6 +7,7 @@ const three_1 = require("three");
|
|
|
7
7
|
const threejs_types_1 = require("../worker-script/threejs.types");
|
|
8
8
|
const dictionary_model_1 = require("../../models/dictionary.model");
|
|
9
9
|
const worker_pool_1 = require("./base/worker-pool");
|
|
10
|
+
const simplify_modifier_1 = require("../../threejs-addon/simplify-modifier");
|
|
10
11
|
class ViralViewerWorker2 {
|
|
11
12
|
constructor(viralViewerApi, scriptUrl = "../worker-script/load-model-worker-2.script.js") {
|
|
12
13
|
this.viralViewerApi = viralViewerApi;
|
|
@@ -45,25 +46,20 @@ class ViralViewerWorker2 {
|
|
|
45
46
|
inputData.Indices = model.Indices;
|
|
46
47
|
inputData.Vertices = model.Vertices;
|
|
47
48
|
this.workerPool.Enqueue(inputData, (data) => {
|
|
48
|
-
|
|
49
|
-
let object = this.threejsLoader.parse(data.buffer.data);
|
|
50
|
-
console.log(object);
|
|
49
|
+
let geometry = this.threejsLoader.parse(data.data);
|
|
51
50
|
// let buffer = data.buffer;
|
|
52
51
|
// const geometry = new BufferGeometry();
|
|
53
52
|
// geometry.setAttribute("position", new BufferAttribute(buffer, 3));
|
|
54
53
|
// geometry.computeVertexNormals();
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
// if (this.mainModel)
|
|
65
|
-
// this.mainModel.add(childMesh);
|
|
66
|
-
// this.viralViewerApi.viralRenderer.render();
|
|
54
|
+
const edges = new three_1.EdgesGeometry(geometry, 90);
|
|
55
|
+
const line = new three_1.LineSegments(edges, new three_1.LineBasicMaterial({ color: "#202020", linewidth: 0.5 }));
|
|
56
|
+
const childMesh = new three_1.Mesh(geometry, this.threejsMaterials.get(model.MaterialIndex));
|
|
57
|
+
childMesh.add(line);
|
|
58
|
+
childMesh.castShadow = true;
|
|
59
|
+
childMesh.receiveShadow = true;
|
|
60
|
+
if (this.mainModel)
|
|
61
|
+
this.mainModel.add(childMesh);
|
|
62
|
+
this.viralViewerApi.viralRenderer.render();
|
|
67
63
|
callbackOnSuccess();
|
|
68
64
|
});
|
|
69
65
|
}
|
|
@@ -72,66 +68,61 @@ class ViralViewerWorker2 {
|
|
|
72
68
|
inputData.Indices = model.Indices;
|
|
73
69
|
inputData.Vertices = model.Vertices;
|
|
74
70
|
this.workerPool.Enqueue(inputData, (data) => {
|
|
75
|
-
|
|
76
|
-
let object = this.threejsLoader.parse(data.buffer.data.data);
|
|
77
|
-
console.log(object);
|
|
71
|
+
let dummyGeometry = this.threejsLoader.parse(data.data);
|
|
78
72
|
// let buffer = data.buffer;
|
|
79
|
-
|
|
73
|
+
let geometry = new three_1.BufferGeometry();
|
|
80
74
|
// const dummyGeometry = new BufferGeometry();
|
|
81
75
|
// dummyGeometry.setAttribute("position", new BufferAttribute(buffer, 3));
|
|
82
|
-
//
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
76
|
+
// In case number of polygon larger than expect, merge them to reduce polygon first, for optimize purpose
|
|
77
|
+
if (dummyGeometry.attributes.position.count > this.maxPolygonPerObject) {
|
|
78
|
+
const modifier = new simplify_modifier_1.SimplifyModifier();
|
|
79
|
+
const ratio = this.maxPolygonPerObject / dummyGeometry.attributes.position.count;
|
|
80
|
+
const count = Math.floor(dummyGeometry.attributes.position.count * ratio); // number of polygon to remove
|
|
81
|
+
geometry = modifier.modify(dummyGeometry, count);
|
|
82
|
+
console.log(model.Name, dummyGeometry.attributes.position.count, geometry.attributes.position.count);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
geometry = dummyGeometry;
|
|
86
|
+
}
|
|
93
87
|
// geometry.computeVertexNormals();
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
// if (this.mainModel) {
|
|
133
|
-
// this.mainModel.add(childMesh);
|
|
134
|
-
// }
|
|
88
|
+
const childMesh = new three_1.InstancedMesh(geometry, this.threejsMaterials.get(model.MaterialIndex), model.Instances.length);
|
|
89
|
+
childMesh.castShadow = true;
|
|
90
|
+
childMesh.receiveShadow = true;
|
|
91
|
+
for (let index = 0; index < model.Instances.length; index++) {
|
|
92
|
+
const transform = model.Instances[index];
|
|
93
|
+
let numbers = [
|
|
94
|
+
transform.BasisX.X,
|
|
95
|
+
-transform.BasisX.Z,
|
|
96
|
+
-transform.BasisX.Y,
|
|
97
|
+
0,
|
|
98
|
+
-transform.BasisZ.X,
|
|
99
|
+
transform.BasisZ.Z,
|
|
100
|
+
transform.BasisZ.Y,
|
|
101
|
+
0,
|
|
102
|
+
-transform.BasisY.X,
|
|
103
|
+
transform.BasisY.Z,
|
|
104
|
+
transform.BasisY.Y,
|
|
105
|
+
0,
|
|
106
|
+
-transform.Offset.X,
|
|
107
|
+
transform.Offset.Z,
|
|
108
|
+
transform.Offset.Y,
|
|
109
|
+
1,
|
|
110
|
+
];
|
|
111
|
+
//transform first
|
|
112
|
+
let matrix4 = new three_1.Matrix4();
|
|
113
|
+
matrix4.fromArray(numbers);
|
|
114
|
+
childMesh.setMatrixAt(index, matrix4);
|
|
115
|
+
//if number of polygon smaller than expect, generate edges
|
|
116
|
+
if (geometry.attributes.position.count < this.maxPolygonForEdge) {
|
|
117
|
+
const edges = new three_1.EdgesGeometry(geometry, 90);
|
|
118
|
+
const line = new three_1.LineSegments(edges, new three_1.LineBasicMaterial({ color: "#666", linewidth: 0.5 }));
|
|
119
|
+
line.applyMatrix4(matrix4);
|
|
120
|
+
childMesh.add(line);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (this.mainModel) {
|
|
124
|
+
this.mainModel.add(childMesh);
|
|
125
|
+
}
|
|
135
126
|
callbackOnSuccess();
|
|
136
127
|
});
|
|
137
128
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viral-viewer-2.worker.js","sourceRoot":"","sources":["../../../src/components/worker/viral-viewer-2.worker.ts"],"names":[],"mappings":";;;AACA,uCAA4K;AAC5K,iCAAsN;AACtN,4EAA4E;AAC5E,kEAA4D;AAC5D,oEAA2D;AAC3D,oDAAsD;
|
|
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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"}
|
|
@@ -75529,17 +75529,18 @@ function workerFunction() {
|
|
|
75529
75529
|
}
|
|
75530
75530
|
function progressGeometries(json, callback = (buffer) => { }) {
|
|
75531
75531
|
addMesh(json.Indices, json.Vertices, json.Transform, (buffer) => {
|
|
75532
|
-
|
|
75533
|
-
dummyGeometry.setAttribute("position", new BufferAttribute(buffer, 3));
|
|
75534
|
-
let jsonData = dummyGeometry.toJSON();
|
|
75535
|
-
console.log(jsonData);
|
|
75536
|
-
callback({ buffer: buffer, data: jsonData });
|
|
75532
|
+
callback(buffer);
|
|
75537
75533
|
});
|
|
75538
75534
|
}
|
|
75539
75535
|
self.addEventListener("message", (event) => {
|
|
75540
75536
|
progressGeometries(event.data, (buffer) => {
|
|
75537
|
+
const dummyGeometry = new BufferGeometry();
|
|
75538
|
+
dummyGeometry.setAttribute("position", new BufferAttribute(buffer, 3));
|
|
75539
|
+
dummyGeometry.computeVertexNormals();
|
|
75540
|
+
let jsonData = dummyGeometry.toJSON();
|
|
75541
75541
|
self.postMessage({
|
|
75542
75542
|
buffer: buffer,
|
|
75543
|
+
data: jsonData
|
|
75543
75544
|
});
|
|
75544
75545
|
});
|
|
75545
75546
|
}, false);
|