viral-viewer-2 0.0.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/LICENSE ADDED
File without changes
package/README.md ADDED
Binary file
@@ -0,0 +1,2 @@
1
+ declare const __compact: (array: any[]) => any[];
2
+ export { __compact };
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.__compact = void 0;
4
+ const __compact = (array) => {
5
+ return array.filter((item) => !!item);
6
+ };
7
+ exports.__compact = __compact;
8
+ //# sourceMappingURL=compact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compact.js","sourceRoot":"","sources":["../../src/components/compact.ts"],"names":[],"mappings":";;;AAAA,MAAM,SAAS,GAAG,CAAC,KAAY,EAAS,EAAE;IACtC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC,CAAA;AACQ,8BAAS"}
@@ -0,0 +1,4 @@
1
+ import { ViralViewerRevitProject } from "../../types";
2
+ export declare class CompressProcessor {
3
+ decompressed(path: string): Promise<ViralViewerRevitProject>;
4
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CompressProcessor = void 0;
13
+ const lzstring = require("lz-string");
14
+ class CompressProcessor {
15
+ decompressed(path) {
16
+ return __awaiter(this, void 0, void 0, function* () {
17
+ let result = null;
18
+ let res = yield fetch(path);
19
+ if (res) {
20
+ let text = yield res.text();
21
+ let decompress = lzstring.decompressFromEncodedURIComponent(text);
22
+ result = JSON.parse(decompress);
23
+ }
24
+ return result;
25
+ });
26
+ }
27
+ }
28
+ exports.CompressProcessor = CompressProcessor;
29
+ //# sourceMappingURL=compress.processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compress.processor.js","sourceRoot":"","sources":["../../../src/components/compress/compress.processor.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,sCAAsC;AAEtC,MAAa,iBAAiB;IACb,YAAY,CAAC,IAAY;;YAClC,IAAI,MAAM,GAA4B,IAAI,CAAC;YAC3C,IAAI,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,GAAG,EAAE;gBACL,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC5B,IAAI,UAAU,GAAG,QAAQ,CAAC,iCAAiC,CAAC,IAAI,CAAC,CAAC;gBAElE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;aACnC;YACD,OAAO,MAAM,CAAC;QAClB,CAAC;KAAA;CACJ;AAZD,8CAYC"}
@@ -0,0 +1,17 @@
1
+ import { Potree, PointCloudOctree } from "potree-core-viral";
2
+ import { ViralViewerApi } from "../../viral-viewer-api";
3
+ export declare class ViralViewerPointCloudLoader {
4
+ potree: Potree;
5
+ pointClouds: PointCloudOctree[];
6
+ viralViewerApi: ViralViewerApi;
7
+ constructor(viralViewerApi: ViralViewerApi);
8
+ /**
9
+ *
10
+ * @param metadataUrl endpoint to download metadata.json
11
+ * @param urlOcbinTree endpoint to download octree.bin
12
+ * @param urlHierarchy endpoint to download hierarchy.bin
13
+ * @param pointBudget
14
+ */
15
+ load(metadataUrl: string, urlOcbinTree: string, urlHierarchy: string, pointBudget?: number): void;
16
+ anim(): void;
17
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ViralViewerPointCloudLoader = void 0;
4
+ const potree_core_viral_1 = require("potree-core-viral");
5
+ class ViralViewerPointCloudLoader {
6
+ constructor(viralViewerApi) {
7
+ this.pointClouds = [];
8
+ if (viralViewerApi) {
9
+ this.viralViewerApi = viralViewerApi;
10
+ }
11
+ this.potree = new potree_core_viral_1.Potree();
12
+ }
13
+ /**
14
+ *
15
+ * @param metadataUrl endpoint to download metadata.json
16
+ * @param urlOcbinTree endpoint to download octree.bin
17
+ * @param urlHierarchy endpoint to download hierarchy.bin
18
+ * @param pointBudget
19
+ */
20
+ load(metadataUrl, urlOcbinTree, urlHierarchy, pointBudget = 2000000) {
21
+ this.potree.pointBudget = pointBudget;
22
+ this.potree.loadPointCloudCustom(metadataUrl, urlOcbinTree, urlHierarchy).then((pco) => {
23
+ let material = pco.material;
24
+ material.size = 1;
25
+ material.pointSizeType = potree_core_viral_1.PointSizeType.ADAPTIVE;
26
+ material.shape = potree_core_viral_1.PointShape.CIRCLE;
27
+ material.pointColorType = potree_core_viral_1.PointColorType.RGB;
28
+ this.viralViewerApi.scene.add(pco);
29
+ this.pointClouds.push(pco);
30
+ });
31
+ }
32
+ anim() {
33
+ const delta = this.viralViewerApi.clock.getDelta();
34
+ const updated = this.viralViewerApi.cameraControls.update(delta);
35
+ this.potree.updatePointClouds(this.pointClouds, this.viralViewerApi.camera, this.viralViewerApi.renderer);
36
+ // if ( elapsed > 30 ) { return; }
37
+ requestAnimationFrame(() => { this.anim(); });
38
+ // console.log(updated)
39
+ if (updated) {
40
+ this.viralViewerApi.renderer.render(this.viralViewerApi.scene, this.viralViewerApi.camera);
41
+ }
42
+ }
43
+ }
44
+ exports.ViralViewerPointCloudLoader = ViralViewerPointCloudLoader;
45
+ //# sourceMappingURL=viral-viewer-point-cloud.loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viral-viewer-point-cloud.loader.js","sourceRoot":"","sources":["../../../src/components/loader/viral-viewer-point-cloud.loader.ts"],"names":[],"mappings":";;;AAAA,yDAAwG;AAGxG,MAAa,2BAA2B;IAIpC,YAAY,cAA8B;QAF1C,gBAAW,GAAuB,EAAE,CAAC;QAGjC,IAAI,cAAc,EAAE;YAChB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;SACxC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,0BAAM,EAAE,CAAC;IAC/B,CAAC;IACD;;;;;;OAMG;IACI,IAAI,CAAC,WAAmB,EAAE,YAAoB,EAAE,YAAoB,EAAE,cAAsB,OAAO;QACtG,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAC5B,WAAW,EACX,YAAY,EACZ,YAAY,CACf,CAAC,IAAI,CAAC,CAAC,GAAqB,EAAE,EAAE;YAC7B,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;YAC5B,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;YAClB,QAAQ,CAAC,aAAa,GAAG,iCAAa,CAAC,QAAQ,CAAC;YAChD,QAAQ,CAAC,KAAK,GAAG,8BAAU,CAAC,MAAM,CAAC;YACnC,QAAQ,CAAC,cAAc,GAAG,kCAAc,CAAC,GAAG,CAAC;YAE7C,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACP,CAAC;IACM,IAAI;QACP,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC1G,kCAAkC;QAElC,qBAAqB,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA,CAAC,CAAC,CAAC,CAAC;QAC7C,uBAAuB;QACvB,IAAI,OAAO,EAAE;YACT,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;SAC9F;IACL,CAAC;CACJ;AA9CD,kEA8CC"}
@@ -0,0 +1,13 @@
1
+ import * as THREE from "three";
2
+ import { ViralViewerRevitProject } from "../../types";
3
+ export declare class ViralViewerRevitLoader {
4
+ scene: THREE.Scene;
5
+ constructor(scene: THREE.Scene);
6
+ loadRevit(model: ViralViewerRevitProject): void;
7
+ private progressStructuralGeometries;
8
+ private progressNoneStructuralGeometries;
9
+ private addCustomMesh3;
10
+ private addCustomMesh4;
11
+ private rgbToHex;
12
+ private componentToHex;
13
+ }
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ViralViewerRevitLoader = void 0;
4
+ const THREE = require("three");
5
+ class ViralViewerRevitLoader {
6
+ constructor(scene) {
7
+ if (scene) {
8
+ this.scene = scene;
9
+ }
10
+ }
11
+ loadRevit(model) {
12
+ this.progressNoneStructuralGeometries(model);
13
+ this.progressStructuralGeometries(model);
14
+ }
15
+ progressStructuralGeometries(model) {
16
+ const modelMesh = new THREE.Mesh();
17
+ for (let index = 0; index < model.StructuralGeometries.length; index++) {
18
+ // if(index==0) continue;
19
+ const geometry = model.StructuralGeometries[index];
20
+ const material = model.Materials[geometry.MaterialIndex];
21
+ this.addCustomMesh3(modelMesh, geometry.Indices, geometry.Vertices, material);
22
+ }
23
+ modelMesh.castShadow = true;
24
+ modelMesh.receiveShadow = true;
25
+ this.scene.add(modelMesh);
26
+ }
27
+ progressNoneStructuralGeometries(model) {
28
+ const modelMesh = new THREE.Mesh();
29
+ modelMesh.castShadow = true;
30
+ modelMesh.receiveShadow = true;
31
+ for (let index = 0; index < model.NoneStructuralGeometries.length; index++) {
32
+ const geometry = model.NoneStructuralGeometries[index];
33
+ const material = model.Materials[geometry.MaterialIndex];
34
+ this.addCustomMesh4(modelMesh, geometry.Indices, geometry.Vertices, material, geometry.Instances);
35
+ }
36
+ this.scene.add(modelMesh);
37
+ }
38
+ addCustomMesh3(mesh, indices, vertices, material) {
39
+ const geometry = new THREE.BufferGeometry();
40
+ let verticePoints = [];
41
+ for (let i = 0; i < indices.length; i++) {
42
+ const index = indices[i];
43
+ const point = vertices[index];
44
+ verticePoints.push(-point.X);
45
+ verticePoints.push(point.Z);
46
+ verticePoints.push(point.Y);
47
+ }
48
+ const buffer = new Float32Array(verticePoints);
49
+ let colorString = this.rgbToHex(material.Red, material.Green, material.Blue);
50
+ geometry.setAttribute("position", new THREE.BufferAttribute(buffer, 3));
51
+ let newMaterial = new THREE.MeshPhongMaterial({
52
+ color: colorString,
53
+ opacity: material.Opacity,
54
+ transparent: true,
55
+ flatShading: true,
56
+ });
57
+ const edges = new THREE.EdgesGeometry(geometry, 90);
58
+ const line = new THREE.LineSegments(edges, new THREE.LineBasicMaterial({ color: "#202020" }));
59
+ const childMesh = new THREE.Mesh(geometry, newMaterial);
60
+ childMesh.castShadow = true;
61
+ childMesh.receiveShadow = true;
62
+ childMesh.add(line);
63
+ mesh.add(childMesh);
64
+ }
65
+ addCustomMesh4(mesh, indices, vertices, material, instances) {
66
+ const geometry = new THREE.BufferGeometry();
67
+ let verticePoints = [];
68
+ for (let i = 0; i < indices.length; i++) {
69
+ const index = indices[i];
70
+ const point = vertices[index];
71
+ verticePoints.push(-point.X);
72
+ verticePoints.push(point.Z);
73
+ verticePoints.push(point.Y);
74
+ }
75
+ const buffer = new Float32Array(verticePoints);
76
+ let colorString = this.rgbToHex(material.Red, material.Green, material.Blue);
77
+ geometry.setAttribute("position", new THREE.BufferAttribute(buffer, 3));
78
+ let newMaterial = new THREE.MeshPhongMaterial({
79
+ color: colorString,
80
+ opacity: material.Opacity,
81
+ transparent: true,
82
+ flatShading: true
83
+ });
84
+ for (let index = 0; index < instances.length; index++) {
85
+ const instance = instances[index];
86
+ let cloneGeometry = geometry.clone();
87
+ const childMesh = new THREE.Mesh(cloneGeometry, newMaterial);
88
+ childMesh.castShadow = true;
89
+ childMesh.receiveShadow = true;
90
+ let numbers = [
91
+ instance.BasisX.X,
92
+ -instance.BasisX.Z,
93
+ -instance.BasisX.Y,
94
+ 0,
95
+ -instance.BasisZ.X,
96
+ instance.BasisZ.Z,
97
+ instance.BasisZ.Y,
98
+ 0,
99
+ -instance.BasisY.X,
100
+ instance.BasisY.Z,
101
+ instance.BasisY.Y,
102
+ 0,
103
+ -instance.Offset.X,
104
+ instance.Offset.Z,
105
+ instance.Offset.Y,
106
+ 1,
107
+ ];
108
+ let matrix4 = new THREE.Matrix4();
109
+ matrix4.fromArray(numbers);
110
+ childMesh.applyMatrix4(matrix4);
111
+ const edges = new THREE.EdgesGeometry(childMesh.geometry);
112
+ const line = new THREE.LineSegments(edges, new THREE.LineBasicMaterial({ color: "#202020" }));
113
+ childMesh.add(line);
114
+ mesh.add(childMesh);
115
+ }
116
+ }
117
+ rgbToHex(r, g, b) {
118
+ return "#" + this.componentToHex(r) + this.componentToHex(g) + this.componentToHex(b);
119
+ }
120
+ componentToHex(c) {
121
+ var hex = c.toString(16);
122
+ return hex.length == 1 ? "0" + hex : hex;
123
+ }
124
+ }
125
+ exports.ViralViewerRevitLoader = ViralViewerRevitLoader;
126
+ //# sourceMappingURL=viral-viewer-revit.loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viral-viewer-revit.loader.js","sourceRoot":"","sources":["../../../src/components/loader/viral-viewer-revit.loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { ViralViewerApi } from "../../viral-viewer-api";
2
+ import { ViralViewerRevitProject } from "../../types";
3
+ export declare class ViralViewerWorker {
4
+ worker: Worker;
5
+ viralViewerApi: ViralViewerApi;
6
+ constructor(main: ViralViewerApi, scriptUrl: string);
7
+ loadModel(model: ViralViewerRevitProject, callbackOnSuccess?: () => void): void;
8
+ }
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ViralViewerWorker = void 0;
4
+ const THREE = require("three");
5
+ class ViralViewerWorker {
6
+ constructor(main, scriptUrl) {
7
+ this.worker = new Worker(scriptUrl, { type: "module" });
8
+ this.viralViewerApi = main;
9
+ }
10
+ loadModel(model, callbackOnSuccess = () => { }) {
11
+ const noneStructuralMesh = new THREE.Mesh();
12
+ noneStructuralMesh.name = "Viral Model";
13
+ this.viralViewerApi.scene.add(noneStructuralMesh);
14
+ this.worker.onmessage = (m) => {
15
+ switch (m.data.type) {
16
+ case 0:
17
+ this.worker.postMessage({
18
+ type: 1,
19
+ data: m.data.data,
20
+ });
21
+ break;
22
+ case 1:
23
+ let buffer = m.data.buffer;
24
+ const geometry = new THREE.BufferGeometry();
25
+ geometry.setAttribute("position", new THREE.BufferAttribute(buffer, 3));
26
+ let newMaterial = new THREE.MeshPhongMaterial({
27
+ color: m.data.materialColorString,
28
+ opacity: m.data.materialOpacity,
29
+ transparent: true,
30
+ flatShading: true,
31
+ });
32
+ const edges = new THREE.EdgesGeometry(geometry, 90);
33
+ const line = new THREE.LineSegments(edges, new THREE.LineBasicMaterial({ color: "#202020" }));
34
+ const childMesh = new THREE.Mesh(geometry, newMaterial);
35
+ childMesh.add(line);
36
+ noneStructuralMesh.add(childMesh);
37
+ this.viralViewerApi.rerender();
38
+ break;
39
+ case 2:
40
+ let buffer2 = m.data.buffer;
41
+ let instances = m.data.instances;
42
+ const geometry2 = new THREE.BufferGeometry();
43
+ geometry2.setAttribute("position", new THREE.BufferAttribute(buffer2, 3));
44
+ let newMaterial2 = new THREE.MeshPhongMaterial({
45
+ color: m.data.materialColorString,
46
+ opacity: m.data.materialOpacity,
47
+ transparent: true,
48
+ flatShading: true,
49
+ });
50
+ for (let index = 0; index < instances.length; index++) {
51
+ const instance = instances[index];
52
+ let cloneGeometry2 = geometry2.clone();
53
+ const childMesh2 = new THREE.Mesh(cloneGeometry2, newMaterial2);
54
+ let numbers = [
55
+ instance.BasisX.X,
56
+ -instance.BasisX.Z,
57
+ -instance.BasisX.Y,
58
+ 0,
59
+ -instance.BasisZ.X,
60
+ instance.BasisZ.Z,
61
+ instance.BasisZ.Y,
62
+ 0,
63
+ -instance.BasisY.X,
64
+ instance.BasisY.Z,
65
+ instance.BasisY.Y,
66
+ 0,
67
+ -instance.Offset.X,
68
+ instance.Offset.Z,
69
+ instance.Offset.Y,
70
+ 1,
71
+ ];
72
+ let matrix4 = new THREE.Matrix4();
73
+ matrix4.fromArray(numbers);
74
+ childMesh2.applyMatrix4(matrix4);
75
+ const edges = new THREE.EdgesGeometry(childMesh2.geometry);
76
+ const line = new THREE.LineSegments(edges, new THREE.LineBasicMaterial({ color: "#202020" }));
77
+ childMesh2.add(line);
78
+ noneStructuralMesh.add(childMesh2);
79
+ }
80
+ // viralViewerApi.rerender();
81
+ break;
82
+ case 3:
83
+ console.log('complete');
84
+ callbackOnSuccess();
85
+ break;
86
+ default:
87
+ break;
88
+ }
89
+ };
90
+ this.worker.postMessage({ type: 1, data: model });
91
+ }
92
+ }
93
+ exports.ViralViewerWorker = ViralViewerWorker;
94
+ //# sourceMappingURL=viral-viewer.worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viral-viewer.worker.js","sourceRoot":"","sources":["../../../src/components/worker/viral-viewer.worker.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAI/B,MAAa,iBAAiB;IAG1B,YAAY,IAAoB,EAAE,SAAiB;QAC/C,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC/B,CAAC;IACM,SAAS,CAAC,KAA8B,EAAE,iBAAiB,GAAG,GAAG,EAAE,GAAG,CAAC;QAC1E,MAAM,kBAAkB,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QAC5C,kBAAkB,CAAC,IAAI,GAAG,aAAa,CAAC;QACxC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,EAAE;YAC1B,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;gBACjB,KAAK,CAAC;oBACF,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;wBACpB,IAAI,EAAE,CAAC;wBACP,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;qBACpB,CAAC,CAAC;oBAEH,MAAM;gBACV,KAAK,CAAC;oBACF,IAAI,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;oBAC3B,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;oBAC5C,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;oBACxE,IAAI,WAAW,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC;wBAC1C,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB;wBACjC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe;wBAC/B,WAAW,EAAE,IAAI;wBACjB,WAAW,EAAE,IAAI;qBACpB,CAAC,CAAC;oBACH,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;oBACpD,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,YAAY,CAC/B,KAAK,EACL,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CACpD,CAAC;oBACF,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;oBACxD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACpB,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAClC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;oBAC/B,MAAM;gBACV,KAAK,CAAC;oBACF,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;oBAC5B,IAAI,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;oBACjC,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;oBAC7C,SAAS,CAAC,YAAY,CAClB,UAAU,EACV,IAAI,KAAK,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CACxC,CAAC;oBACF,IAAI,YAAY,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC;wBAC3C,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB;wBACjC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe;wBAC/B,WAAW,EAAE,IAAI;wBACjB,WAAW,EAAE,IAAI;qBACpB,CAAC,CAAC;oBACH,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;wBACnD,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;wBAClC,IAAI,cAAc,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;wBAEvC,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;wBAChE,IAAI,OAAO,GAAG;4BACV,QAAQ,CAAC,MAAM,CAAC,CAAC;4BACjB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;4BAClB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;4BAClB,CAAC;4BACD,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;4BAClB,QAAQ,CAAC,MAAM,CAAC,CAAC;4BACjB,QAAQ,CAAC,MAAM,CAAC,CAAC;4BACjB,CAAC;4BACD,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;4BAClB,QAAQ,CAAC,MAAM,CAAC,CAAC;4BACjB,QAAQ,CAAC,MAAM,CAAC,CAAC;4BACjB,CAAC;4BACD,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;4BAClB,QAAQ,CAAC,MAAM,CAAC,CAAC;4BACjB,QAAQ,CAAC,MAAM,CAAC,CAAC;4BACjB,CAAC;yBACJ,CAAC;wBACF,IAAI,OAAO,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;wBAClC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;wBAC3B,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;wBACjC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;wBAC3D,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,YAAY,CAC/B,KAAK,EACL,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CACpD,CAAC;wBACF,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBACrB,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;qBACtC;oBACD,6BAA6B;oBAC7B,MAAM;gBACV,KAAK,CAAC;oBACF,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBACxB,iBAAiB,EAAE,CAAC;oBACpB,MAAM;gBACV;oBACI,MAAM;aACb;QACL,CAAC,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;CACJ;AApGD,8CAoGC"}
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ export * from './viral-viewer-api';
package/dist/index.js ADDED
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types"), exports);
18
+ __exportStar(require("./viral-viewer-api"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,qDAAmC"}
@@ -0,0 +1,41 @@
1
+ export interface ViewerOptions {
2
+ container: HTMLElement;
3
+ cameraZUp: boolean;
4
+ }
5
+ export interface ViralViewerRevitProject {
6
+ Materials: RenderMaterial[];
7
+ StructuralGeometries: ViralViewerRevitStructuralGeometry[];
8
+ NoneStructuralGeometries: ViralViewerRevitNoneStructuralGeometry[];
9
+ }
10
+ export interface RenderMaterial {
11
+ Name: String;
12
+ Opacity: number;
13
+ Metalness: number;
14
+ Roughness: number;
15
+ Red: number;
16
+ Green: number;
17
+ Blue: number;
18
+ }
19
+ export interface ViralViewerRevitStructuralGeometry {
20
+ MaterialIndex: number;
21
+ Vertices: ViralPoint[];
22
+ Indices: number[];
23
+ }
24
+ export interface ViralViewerRevitNoneStructuralGeometry {
25
+ MaterialIndex: number;
26
+ Vertices: ViralPoint[];
27
+ Indices: number[];
28
+ Name: string;
29
+ Instances: RevitTransform[];
30
+ }
31
+ export interface ViralPoint {
32
+ X: number;
33
+ Y: number;
34
+ Z: number;
35
+ }
36
+ export interface RevitTransform {
37
+ BasisX: ViralPoint;
38
+ BasisY: ViralPoint;
39
+ BasisZ: ViralPoint;
40
+ Offset: ViralPoint;
41
+ }
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,41 @@
1
+ import CameraControls from "camera-controls";
2
+ import { ViewerOptions } from "./types";
3
+ import * as THREE from "three";
4
+ import { ViralViewerRevitLoader } from "./components/loader/viral-viewer-revit.loader";
5
+ import { CompressProcessor } from "./components/compress/compress.processor";
6
+ import { ViralViewerWorker } from "./components/worker/viral-viewer.worker";
7
+ import { ViralViewerPointCloudLoader } from "./components/loader/viral-viewer-point-cloud.loader";
8
+ export declare class ViralViewerApi {
9
+ options: ViewerOptions;
10
+ targetElement: HTMLElement;
11
+ scene: THREE.Scene;
12
+ clock: THREE.Clock;
13
+ renderer: THREE.WebGLRenderer;
14
+ camera: THREE.PerspectiveCamera;
15
+ cameraControls: CameraControls;
16
+ revitLoader: ViralViewerRevitLoader;
17
+ pointCloudLoader: ViralViewerPointCloudLoader;
18
+ compressProcessor: CompressProcessor;
19
+ worker: ViralViewerWorker;
20
+ cubeRenderer: THREE.WebGLRenderer;
21
+ cubeScene: THREE.Scene;
22
+ cubeCamera: THREE.PerspectiveCamera;
23
+ cubeCameraControls: CameraControls;
24
+ isUpdatingFromCube: boolean;
25
+ isUpdatingFromMain: boolean;
26
+ constructor(options: ViewerOptions);
27
+ initial(scriptUrl?: string): void;
28
+ setupScene(): void;
29
+ setupClock(): void;
30
+ setupRenderer(): void;
31
+ setupCamera(): void;
32
+ rerender(): void;
33
+ anim(): void;
34
+ setupLights(): void;
35
+ addCube(): void;
36
+ addAxes(): void;
37
+ injectCubeWrapperElement(): void;
38
+ initialCubeWrapper(): void;
39
+ private updateCube;
40
+ private updateMain;
41
+ }
@@ -0,0 +1,315 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ViralViewerApi = void 0;
4
+ const camera_controls_1 = require("camera-controls");
5
+ const THREE = require("three");
6
+ const viral_viewer_revit_loader_1 = require("./components/loader/viral-viewer-revit.loader");
7
+ const compress_processor_1 = require("./components/compress/compress.processor");
8
+ const viral_viewer_worker_1 = require("./components/worker/viral-viewer.worker");
9
+ const viral_viewer_point_cloud_loader_1 = require("./components/loader/viral-viewer-point-cloud.loader");
10
+ camera_controls_1.default.install({ THREE: THREE });
11
+ class ViralViewerApi {
12
+ constructor(options) {
13
+ this.isUpdatingFromCube = false;
14
+ this.isUpdatingFromMain = false;
15
+ this.options = options;
16
+ this.targetElement = options.container;
17
+ }
18
+ initial(scriptUrl) {
19
+ if (this.targetElement) {
20
+ // this.injectCubeWrapperElement();
21
+ // this.initialCubeWrapper();
22
+ this.setupScene();
23
+ this.setupClock();
24
+ this.setupRenderer();
25
+ this.setupCamera();
26
+ this.setupLights();
27
+ this.rerender();
28
+ this.revitLoader = new viral_viewer_revit_loader_1.ViralViewerRevitLoader(this.scene);
29
+ this.pointCloudLoader = new viral_viewer_point_cloud_loader_1.ViralViewerPointCloudLoader(this);
30
+ this.compressProcessor = new compress_processor_1.CompressProcessor();
31
+ if (scriptUrl)
32
+ this.worker = new viral_viewer_worker_1.ViralViewerWorker(this, scriptUrl);
33
+ }
34
+ }
35
+ setupScene() {
36
+ this.scene = new THREE.Scene();
37
+ }
38
+ setupClock() {
39
+ this.clock = new THREE.Clock();
40
+ }
41
+ setupRenderer() {
42
+ this.renderer = new THREE.WebGLRenderer({
43
+ alpha: true,
44
+ antialias: true,
45
+ logarithmicDepthBuffer: true,
46
+ powerPreference: "high-performance",
47
+ });
48
+ this.renderer.setClearColor(0x000000, 0);
49
+ this.renderer.setSize(this.targetElement.offsetWidth, this.targetElement.offsetHeight);
50
+ this.targetElement.appendChild(this.renderer.domElement);
51
+ // this.renderer.domElement.onmousemove = (evt) => {
52
+ // this.isUpdatingFromCube = false;
53
+ // this.isUpdatingFromMain = true;
54
+ // };
55
+ }
56
+ setupCamera() {
57
+ this.camera = new THREE.PerspectiveCamera(60, this.targetElement.offsetWidth / this.targetElement.offsetHeight, 0.01, 2000000);
58
+ if (this.options && this.options.cameraZUp) {
59
+ this.camera.up.set(0, 0, 1);
60
+ }
61
+ this.camera.position.set(0, 0, 2);
62
+ this.cameraControls = new camera_controls_1.default(this.camera, this.renderer.domElement);
63
+ // this.cameraControls.dollyToCursor = true;
64
+ this.cameraControls.infinityDolly = true;
65
+ this.cameraControls.setTarget(0, 0, 0);
66
+ this.cameraControls.mouseButtons.middle = camera_controls_1.default.ACTION.OFFSET;
67
+ // this.anim();
68
+ }
69
+ rerender() {
70
+ this.renderer.render(this.scene, this.camera);
71
+ }
72
+ anim() {
73
+ var _a;
74
+ const delta = this.clock.getDelta();
75
+ const elapsed = this.clock.getElapsedTime();
76
+ const updated = (_a = this.cameraControls) === null || _a === void 0 ? void 0 : _a.update(delta);
77
+ if (this.pointCloudLoader.potree) {
78
+ this.pointCloudLoader.potree.updatePointClouds(this.pointCloudLoader.pointClouds, this.camera, this.renderer);
79
+ }
80
+ // const updated2 = this.cubeCameraControls?.update(delta);
81
+ // if ( elapsed > 30 ) { return; }
82
+ requestAnimationFrame(() => { this.anim(); });
83
+ if (updated) {
84
+ this.renderer.render(this.scene, this.camera);
85
+ // if (!this.isUpdatingFromCube) this.updateCube();
86
+ }
87
+ // if (updated2) {
88
+ // this.cubeRenderer.render(this.cubeScene, this.cubeCamera);
89
+ // if (!this.isUpdatingFromMain) this.updateMain();
90
+ // }
91
+ }
92
+ setupLights() {
93
+ const light1 = new THREE.DirectionalLight(0xffeeff, 0.8);
94
+ light1.position.set(1, 1, 1).normalize();
95
+ this.scene.add(light1);
96
+ const light2 = new THREE.DirectionalLight(0xffffff, 0.8);
97
+ light2.position.set(-1, 0.5, -1).normalize();
98
+ this.scene.add(light2);
99
+ const ambientLight = new THREE.AmbientLight(0xffffee, 0.25);
100
+ ambientLight.position.set(0, 0, 0).normalize();
101
+ this.scene.add(ambientLight);
102
+ }
103
+ addCube() {
104
+ const mesh = new THREE.Mesh(new THREE.BoxGeometry(1, 1, 1), new THREE.MeshStandardMaterial({ color: 0xff0000, wireframe: true }));
105
+ this.scene.add(mesh);
106
+ }
107
+ addAxes() {
108
+ const axesHelper = new THREE.AxesHelper(5);
109
+ this.scene.add(axesHelper);
110
+ }
111
+ injectCubeWrapperElement() {
112
+ if (this.targetElement) {
113
+ this.targetElement.innerHTML += `<div style="position: absolute;
114
+ right: 10px;
115
+ top: 10px;
116
+ display: flex;">
117
+ <span class="material-symbols-outlined" style="color:white">
118
+ home
119
+ </span>
120
+ <div id="orientCubeWrapper" style="height:130px;width:130px"></div>
121
+ </div>`;
122
+ }
123
+ }
124
+ initialCubeWrapper() {
125
+ const cubeWrapper = document.getElementById("orientCubeWrapper");
126
+ const width = cubeWrapper.offsetWidth;
127
+ const height = cubeWrapper.offsetHeight;
128
+ this.cubeScene = new THREE.Scene();
129
+ this.cubeCamera = new THREE.PerspectiveCamera(60, width / height, 0.01, 100);
130
+ this.cubeCamera.position.set(0, 0, 2);
131
+ this.cubeRenderer = new THREE.WebGLRenderer({
132
+ alpha: true,
133
+ antialias: true,
134
+ logarithmicDepthBuffer: true,
135
+ });
136
+ this.cubeRenderer.setClearColor(0x000000, 0);
137
+ this.cubeRenderer.setSize(width, height);
138
+ cubeWrapper.appendChild(this.cubeRenderer.domElement);
139
+ this.cubeCameraControls = new camera_controls_1.default(this.cubeCamera, this.cubeRenderer.domElement);
140
+ this.cubeCameraControls.dollyToCursor = false;
141
+ this.cubeCameraControls.infinityDolly = false;
142
+ this.cubeCameraControls.setTarget(0, 0, 0);
143
+ this.cubeCameraControls.polarRotateSpeed = 0.15;
144
+ this.cubeCameraControls.azimuthRotateSpeed = 0.15;
145
+ this.cubeCameraControls.mouseButtons.middle = camera_controls_1.default.ACTION.NONE;
146
+ this.cubeCameraControls.mouseButtons.wheel = camera_controls_1.default.ACTION.NONE;
147
+ //#region Cube
148
+ let materials = [];
149
+ let texts = ["RIGHT", "LEFT", "TOP", "BOTTOM", "FRONT", "BACK"];
150
+ let textureLoader = new THREE.TextureLoader();
151
+ let canvas = document.createElement("canvas");
152
+ let ctx = canvas.getContext("2d");
153
+ let size = 64;
154
+ canvas.width = size;
155
+ canvas.height = size;
156
+ ctx.font = 'bolder 12px "Open sans", Arial';
157
+ ctx.textBaseline = "middle";
158
+ ctx.textAlign = "center";
159
+ let mainColor = "#fff";
160
+ let otherColor = "#ccc";
161
+ let bg = ctx.createLinearGradient(0, 0, 0, size);
162
+ bg.addColorStop(0, mainColor);
163
+ bg.addColorStop(1, otherColor);
164
+ for (let i = 0; i < 6; i++) {
165
+ if (texts[i] == "TOP") {
166
+ ctx.fillStyle = mainColor;
167
+ }
168
+ else if (texts[i] == "BOTTOM") {
169
+ ctx.fillStyle = otherColor;
170
+ }
171
+ else {
172
+ ctx.fillStyle = bg;
173
+ }
174
+ ctx.fillRect(0, 0, size, size);
175
+ ctx.strokeStyle = "#aaa";
176
+ ctx.setLineDash([8, 8]);
177
+ ctx.lineWidth = 4;
178
+ ctx.strokeRect(0, 0, size, size);
179
+ ctx.fillStyle = "#999";
180
+ ctx.fillText(texts[i], size / 2, size / 2);
181
+ materials[i] = new THREE.MeshBasicMaterial({
182
+ map: textureLoader.load(canvas.toDataURL()),
183
+ });
184
+ }
185
+ let cube = new THREE.Mesh(new THREE.BoxGeometry(1, 1, 1), materials);
186
+ this.cubeScene.add(cube);
187
+ //#endregion
188
+ //#region Planes
189
+ let planes = [];
190
+ let planeMaterial = new THREE.MeshBasicMaterial({
191
+ side: THREE.DoubleSide,
192
+ color: 0x00c0ff,
193
+ transparent: true,
194
+ opacity: 0,
195
+ depthTest: false,
196
+ });
197
+ let planeSize = 0.7;
198
+ let planeGeometry = new THREE.PlaneGeometry(planeSize, planeSize);
199
+ let a = 0.51;
200
+ let plane1 = new THREE.Mesh(planeGeometry, planeMaterial.clone());
201
+ plane1.position.z = a;
202
+ this.cubeScene.add(plane1);
203
+ planes.push(plane1);
204
+ let plane2 = new THREE.Mesh(planeGeometry, planeMaterial.clone());
205
+ plane2.position.z = -a;
206
+ this.cubeScene.add(plane2);
207
+ planes.push(plane2);
208
+ let plane3 = new THREE.Mesh(planeGeometry, planeMaterial.clone());
209
+ plane3.rotation.y = Math.PI / 2;
210
+ plane3.position.x = a;
211
+ this.cubeScene.add(plane3);
212
+ planes.push(plane3);
213
+ let plane4 = new THREE.Mesh(planeGeometry, planeMaterial.clone());
214
+ plane4.rotation.y = Math.PI / 2;
215
+ plane4.position.x = -a;
216
+ this.cubeScene.add(plane4);
217
+ planes.push(plane4);
218
+ let plane5 = new THREE.Mesh(planeGeometry, planeMaterial.clone());
219
+ plane5.rotation.x = Math.PI / 2;
220
+ plane5.position.y = a;
221
+ this.cubeScene.add(plane5);
222
+ planes.push(plane5);
223
+ let plane6 = new THREE.Mesh(planeGeometry, planeMaterial.clone());
224
+ plane6.rotation.x = Math.PI / 2;
225
+ plane6.position.y = -a;
226
+ this.cubeScene.add(plane6);
227
+ planes.push(plane6);
228
+ //#endregion
229
+ //#region Event Handler
230
+ let activePlane = null;
231
+ let hasMoved = false;
232
+ this.cubeRenderer.domElement.onmousemove = (evt) => {
233
+ this.isUpdatingFromMain = false;
234
+ this.isUpdatingFromCube = true;
235
+ if (activePlane) {
236
+ activePlane.material.opacity = 0;
237
+ activePlane.material.needsUpdate = true;
238
+ activePlane = null;
239
+ this.cubeRenderer.render(this.cubeScene, this.cubeCamera);
240
+ }
241
+ let x = evt.offsetX;
242
+ let y = evt.offsetY;
243
+ let size = this.cubeRenderer.getSize(new THREE.Vector2());
244
+ let mouse = new THREE.Vector2((x / size.width) * 2 - 1, (-y / size.height) * 2 + 1);
245
+ let raycaster = new THREE.Raycaster();
246
+ raycaster.setFromCamera(mouse, this.cubeCamera);
247
+ let intersects = raycaster.intersectObjects(planes.concat(cube));
248
+ if (intersects.length > 0 && intersects[0].object != cube) {
249
+ activePlane = intersects[0].object;
250
+ activePlane.material.opacity = 0.2;
251
+ activePlane.material.needsUpdate = true;
252
+ this.cubeRenderer.render(this.cubeScene, this.cubeCamera);
253
+ }
254
+ };
255
+ // let startTime = 0;
256
+ // let duration = 500;
257
+ let oldPosition = new THREE.Vector3();
258
+ let newPosition = new THREE.Vector3();
259
+ // let play = false;
260
+ this.cubeRenderer.domElement.onclick = (evt) => {
261
+ this.cubeRenderer.domElement.onmousemove(evt);
262
+ if (!activePlane || hasMoved) {
263
+ return false;
264
+ }
265
+ oldPosition.copy(this.cubeCamera.position);
266
+ let currentPoint = new THREE.Vector3();
267
+ this.cubeCameraControls.getTarget(currentPoint);
268
+ let distance = this.cubeCamera.position
269
+ .clone()
270
+ .sub(new THREE.Vector3(0, 0, 0))
271
+ .length();
272
+ // newPosition.copy(this.cubeCameraControls.getPosition());
273
+ if (activePlane.position.x !== 0) {
274
+ newPosition.x += activePlane.position.x < 0 ? -distance : distance;
275
+ }
276
+ else if (activePlane.position.y !== 0) {
277
+ newPosition.y += activePlane.position.y < 0 ? -distance : distance;
278
+ }
279
+ else if (activePlane.position.z !== 0) {
280
+ newPosition.z += activePlane.position.z < 0 ? -distance : distance;
281
+ }
282
+ this.cubeCameraControls.setPosition((activePlane.position.x / 0.51) * 2, (activePlane.position.y / 0.51) * 2, (activePlane.position.z / 0.51) * 2);
283
+ };
284
+ //#endregion
285
+ }
286
+ updateCube() {
287
+ this.cubeCamera.rotation.copy(this.camera.rotation);
288
+ let mainCameraTarget = new THREE.Vector3();
289
+ this.cameraControls.getTarget(mainCameraTarget);
290
+ let dir = this.camera.position
291
+ .clone()
292
+ .sub(mainCameraTarget)
293
+ .normalize();
294
+ this.cubeCamera.position.copy(dir.multiplyScalar(2));
295
+ this.cubeCameraControls.setPosition(this.cubeCamera.position.x, this.cubeCamera.position.y, this.cubeCamera.position.z);
296
+ // this.cubeRenderer.render(this.cubeScene, this.cubeCamera);
297
+ }
298
+ updateMain() {
299
+ this.camera.rotation.copy(this.cubeCamera.rotation);
300
+ let cubeCameraTarget = new THREE.Vector3();
301
+ this.cubeCameraControls.getTarget(cubeCameraTarget);
302
+ let dir = this.camera.position
303
+ .clone()
304
+ .sub(cubeCameraTarget)
305
+ .normalize();
306
+ let length = this.camera.position.distanceTo(cubeCameraTarget);
307
+ this.camera.position.copy(dir.multiplyScalar(length));
308
+ if (this.cameraControls) {
309
+ this.cameraControls.setPosition(this.camera.position.x, this.camera.position.y, this.camera.position.z);
310
+ }
311
+ this.renderer.render(this.scene, this.camera);
312
+ }
313
+ }
314
+ exports.ViralViewerApi = ViralViewerApi;
315
+ //# sourceMappingURL=viral-viewer-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viral-viewer-api.js","sourceRoot":"","sources":["../src/viral-viewer-api.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "viral-viewer-2",
3
+ "version": "0.0.1",
4
+ "description": "",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "LICENSE",
10
+ "README.md"
11
+ ],
12
+ "scripts": {
13
+ "test": "echo \"Error: no test specified\" && exit 1",
14
+ "build": "npx tsc"
15
+ },
16
+ "keywords": [],
17
+ "author": "",
18
+ "license": "ISC",
19
+ "devDependencies": {
20
+ "@types/three": "^0.152.1",
21
+ "typescript": "^5.0.4"
22
+ },
23
+ "dependencies": {
24
+ "camera-controls": "^2.3.7",
25
+ "lz-string": "^1.5.0",
26
+ "potree-core-viral": "^0.2.3",
27
+ "three": "^0.152.2"
28
+ }
29
+ }