copper3d 3.5.0 → 3.6.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/Scene/copperScene.d.ts +12 -0
- package/dist/Scene/copperScene.js +38 -44
- package/dist/Scene/copperScene.js.map +1 -1
- package/dist/Utils/surfaceAnnotation/MeshGraph.d.ts +40 -0
- package/dist/Utils/surfaceAnnotation/MeshGraph.js +198 -0
- package/dist/Utils/surfaceAnnotation/MeshGraph.js.map +1 -0
- package/dist/Utils/surfaceAnnotation/SurfaceAnnotator.d.ts +104 -0
- package/dist/Utils/surfaceAnnotation/SurfaceAnnotator.js +403 -0
- package/dist/Utils/surfaceAnnotation/SurfaceAnnotator.js.map +1 -0
- package/dist/Utils/surfaceAnnotation/annotationStore.d.ts +37 -0
- package/dist/Utils/surfaceAnnotation/annotationStore.js +105 -0
- package/dist/Utils/surfaceAnnotation/annotationStore.js.map +1 -0
- package/dist/Utils/surfaceAnnotation/contourRender.d.ts +7 -0
- package/dist/Utils/surfaceAnnotation/contourRender.js +57 -0
- package/dist/Utils/surfaceAnnotation/contourRender.js.map +1 -0
- package/dist/Utils/surfaceAnnotation/geodesicContour.d.ts +19 -0
- package/dist/Utils/surfaceAnnotation/geodesicContour.js +43 -0
- package/dist/Utils/surfaceAnnotation/geodesicContour.js.map +1 -0
- package/dist/Utils/surfaceAnnotation/index.d.ts +3 -0
- package/dist/Utils/surfaceAnnotation/index.js +2 -0
- package/dist/Utils/surfaceAnnotation/index.js.map +1 -0
- package/dist/Utils/surfaceAnnotation/pointMarkers.d.ts +7 -0
- package/dist/Utils/surfaceAnnotation/pointMarkers.js +16 -0
- package/dist/Utils/surfaceAnnotation/pointMarkers.js.map +1 -0
- package/dist/Utils/surfaceAnnotation/raycastSurface.d.ts +7 -0
- package/dist/Utils/surfaceAnnotation/raycastSurface.js +27 -0
- package/dist/Utils/surfaceAnnotation/raycastSurface.js.map +1 -0
- package/dist/Utils/surfaceAnnotation/strokeContour.d.ts +26 -0
- package/dist/Utils/surfaceAnnotation/strokeContour.js +50 -0
- package/dist/Utils/surfaceAnnotation/strokeContour.js.map +1 -0
- package/dist/Utils/surfaceAnnotation/types.d.ts +40 -0
- package/dist/Utils/surfaceAnnotation/types.js +26 -0
- package/dist/Utils/surfaceAnnotation/types.js.map +1 -0
- package/dist/bundle.esm.js +2883 -79
- package/dist/bundle.umd.js +2883 -78
- package/dist/index.d.ts +5 -3
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/types/Scene/copperScene.d.ts +12 -0
- package/dist/types/Utils/surfaceAnnotation/MeshGraph.d.ts +40 -0
- package/dist/types/Utils/surfaceAnnotation/SurfaceAnnotator.d.ts +104 -0
- package/dist/types/Utils/surfaceAnnotation/annotationStore.d.ts +37 -0
- package/dist/types/Utils/surfaceAnnotation/contourRender.d.ts +7 -0
- package/dist/types/Utils/surfaceAnnotation/geodesicContour.d.ts +19 -0
- package/dist/types/Utils/surfaceAnnotation/index.d.ts +3 -0
- package/dist/types/Utils/surfaceAnnotation/pointMarkers.d.ts +7 -0
- package/dist/types/Utils/surfaceAnnotation/raycastSurface.d.ts +7 -0
- package/dist/types/Utils/surfaceAnnotation/strokeContour.d.ts +26 -0
- package/dist/types/Utils/surfaceAnnotation/types.d.ts +40 -0
- package/dist/types/index.d.ts +5 -3
- package/package.json +1 -1
|
@@ -6,6 +6,8 @@ import { baseScene } from "./baseScene";
|
|
|
6
6
|
import { vtkModels } from "../types/types";
|
|
7
7
|
import { TrackballControls } from "three/examples/jsm/controls/TrackballControls";
|
|
8
8
|
import { ICopperSceneOpts, aligned4DOptsType, Aligned4DController } from "../types/types";
|
|
9
|
+
import { SurfaceAnnotator } from "../Utils/surfaceAnnotation";
|
|
10
|
+
import type { SurfaceAnnotatorOptions } from "../Utils/surfaceAnnotation";
|
|
9
11
|
export declare class copperScene extends baseScene {
|
|
10
12
|
clock: THREE.Clock;
|
|
11
13
|
controls: Copper3dTrackballControls | OrbitControls | TrackballControls;
|
|
@@ -13,6 +15,7 @@ export declare class copperScene extends baseScene {
|
|
|
13
15
|
private playRate;
|
|
14
16
|
private modelReady;
|
|
15
17
|
private clipAction;
|
|
18
|
+
private surfaceAnnotators;
|
|
16
19
|
constructor(container: HTMLDivElement, renderer: THREE.WebGLRenderer, opt?: ICopperSceneOpts);
|
|
17
20
|
loadGltf(url: string, callback?: (content: THREE.Group) => void): void;
|
|
18
21
|
loadPureGLB(url: string, callback?: (mesh: THREE.Group) => void, opts?: {
|
|
@@ -20,6 +23,15 @@ export declare class copperScene extends baseScene {
|
|
|
20
23
|
enhanceMaterial?: boolean;
|
|
21
24
|
}): void;
|
|
22
25
|
loadVtk(url: string): void;
|
|
26
|
+
/**
|
|
27
|
+
* 在给定模型表面创建标注器(画 contour / 放点 / 导出坐标)。
|
|
28
|
+
* target 可为单个 Mesh,或 Group/Object3D(自动选顶点数最多的 mesh)。
|
|
29
|
+
* 复用本 scene 的 camera / container / controls;几何非索引时内部自动焊接索引化。
|
|
30
|
+
*/
|
|
31
|
+
createSurfaceAnnotator(target: THREE.Mesh | THREE.Object3D, opts?: Omit<SurfaceAnnotatorOptions, "scene" | "camera" | "container" | "controls" | "mesh">): SurfaceAnnotator;
|
|
32
|
+
private pickAnnotatableMesh;
|
|
33
|
+
/** 释放本 scene 创建的所有标注器(移除事件监听与标注对象)。 */
|
|
34
|
+
disposeSurfaceAnnotators(): void;
|
|
23
35
|
loadVtks(models: Array<vtkModels>): void;
|
|
24
36
|
/**
|
|
25
37
|
* Load an aligned 4D scene: a cine MRI (one slice, N cardiac phases) rendered as a
|
|
@@ -8,6 +8,7 @@ import { copperDicomLoader } from "../Loader/copperDicomLoader";
|
|
|
8
8
|
import { VTKLoader } from "three/examples/jsm/loaders/VTKLoader.js";
|
|
9
9
|
import { baseScene } from "./baseScene";
|
|
10
10
|
import { TrackballControls } from "three/examples/jsm/controls/TrackballControls";
|
|
11
|
+
import { SurfaceAnnotator } from "../Utils/surfaceAnnotation";
|
|
11
12
|
export class copperScene extends baseScene {
|
|
12
13
|
// rayster pick
|
|
13
14
|
constructor(container, renderer, opt) {
|
|
@@ -17,6 +18,7 @@ export class copperScene extends baseScene {
|
|
|
17
18
|
this.mixer = null;
|
|
18
19
|
this.playRate = 1.0;
|
|
19
20
|
this.modelReady = false;
|
|
21
|
+
this.surfaceAnnotators = [];
|
|
20
22
|
if ((opt === null || opt === void 0 ? void 0 : opt.controls) === "trackball") {
|
|
21
23
|
this.controls = new TrackballControls(this.camera, this.renderer.domElement);
|
|
22
24
|
}
|
|
@@ -92,53 +94,45 @@ export class copperScene extends baseScene {
|
|
|
92
94
|
console.log("An error happened: ", error);
|
|
93
95
|
});
|
|
94
96
|
}
|
|
95
|
-
// loadOBJ(url: string, callback?: (mesh: THREE.Group) => void) {
|
|
96
|
-
// objLoader.load(
|
|
97
|
-
// url,
|
|
98
|
-
// (obj) => {
|
|
99
|
-
// obj.traverse((child) => {
|
|
100
|
-
// if ((child as THREE.Mesh).isMesh) {
|
|
101
|
-
// // (child as THREE.Mesh).material = new THREE.MeshStandardMaterial({
|
|
102
|
-
// // side: THREE.DoubleSide,
|
|
103
|
-
// // color: 0xffffff,
|
|
104
|
-
// // });
|
|
105
|
-
// // ((child as THREE.Mesh).material as THREE.MeshPhongMaterial).color =
|
|
106
|
-
// // new THREE.Color(0xffffff);
|
|
107
|
-
// }
|
|
108
|
-
// });
|
|
109
|
-
// const box = new THREE.Box3().setFromObject(obj);
|
|
110
|
-
// const size = box.getSize(new THREE.Vector3()).length();
|
|
111
|
-
// const center = box.getCenter(new THREE.Vector3());
|
|
112
|
-
// this.controls.maxDistance = size * 10;
|
|
113
|
-
// obj.position.x += obj.position.x - center.x;
|
|
114
|
-
// obj.position.y += obj.position.y - center.y;
|
|
115
|
-
// obj.position.z += obj.position.z - center.z;
|
|
116
|
-
// if (!this.cameraPositionFlag) {
|
|
117
|
-
// this.camera.position.copy(center);
|
|
118
|
-
// this.camera.position.x += size / 2.0;
|
|
119
|
-
// this.camera.position.y += size / 5.0;
|
|
120
|
-
// this.camera.position.z += size / 2.0;
|
|
121
|
-
// this.camera.lookAt(center);
|
|
122
|
-
// this.viewPoint = this.setViewPoint(
|
|
123
|
-
// this.camera as THREE.PerspectiveCamera,
|
|
124
|
-
// [center.x, center.y, center.z]
|
|
125
|
-
// );
|
|
126
|
-
// }
|
|
127
|
-
// this.scene.add(obj);
|
|
128
|
-
// !!callback && callback(obj);
|
|
129
|
-
// }, // called when loading is in progresses
|
|
130
|
-
// (xhr: any) => {
|
|
131
|
-
// console.log((xhr.loaded / xhr.total) * 100 + "% loaded");
|
|
132
|
-
// },
|
|
133
|
-
// // called when loading has errors
|
|
134
|
-
// (error: any) => {
|
|
135
|
-
// console.log("An error happened");
|
|
136
|
-
// }
|
|
137
|
-
// );
|
|
138
|
-
// }
|
|
139
97
|
loadVtk(url) {
|
|
140
98
|
copperVtkLoader(url, this.scene, this.content);
|
|
141
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* 在给定模型表面创建标注器(画 contour / 放点 / 导出坐标)。
|
|
102
|
+
* target 可为单个 Mesh,或 Group/Object3D(自动选顶点数最多的 mesh)。
|
|
103
|
+
* 复用本 scene 的 camera / container / controls;几何非索引时内部自动焊接索引化。
|
|
104
|
+
*/
|
|
105
|
+
createSurfaceAnnotator(target, opts) {
|
|
106
|
+
const mesh = this.pickAnnotatableMesh(target);
|
|
107
|
+
if (!mesh)
|
|
108
|
+
throw new Error("createSurfaceAnnotator: no mesh found in target");
|
|
109
|
+
const annotator = new SurfaceAnnotator(Object.assign({ scene: this.scene, camera: this.camera, container: this.container, controls: this.controls, mesh }, (opts !== null && opts !== void 0 ? opts : {})));
|
|
110
|
+
this.surfaceAnnotators.push(annotator);
|
|
111
|
+
return annotator;
|
|
112
|
+
}
|
|
113
|
+
pickAnnotatableMesh(target) {
|
|
114
|
+
if (target.isMesh)
|
|
115
|
+
return target;
|
|
116
|
+
let best = null;
|
|
117
|
+
let bestCount = -1;
|
|
118
|
+
target.traverse((c) => {
|
|
119
|
+
var _a, _b;
|
|
120
|
+
const m = c;
|
|
121
|
+
if (m.isMesh) {
|
|
122
|
+
const n = (_b = (_a = m.geometry.getAttribute("position")) === null || _a === void 0 ? void 0 : _a.count) !== null && _b !== void 0 ? _b : 0;
|
|
123
|
+
if (n > bestCount) {
|
|
124
|
+
bestCount = n;
|
|
125
|
+
best = m;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
return best;
|
|
130
|
+
}
|
|
131
|
+
/** 释放本 scene 创建的所有标注器(移除事件监听与标注对象)。 */
|
|
132
|
+
disposeSurfaceAnnotators() {
|
|
133
|
+
this.surfaceAnnotators.forEach((a) => a.dispose());
|
|
134
|
+
this.surfaceAnnotators = [];
|
|
135
|
+
}
|
|
142
136
|
loadVtks(models) {
|
|
143
137
|
let count = 0;
|
|
144
138
|
let { vtkLoader } = copperMultipleVtk();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copperScene.js","sourceRoot":"","sources":["../../src/Scene/copperScene.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"copperScene.js","sourceRoot":"","sources":["../../src/Scene/copperScene.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
/**
|
|
3
|
+
* 从 BufferGeometry 的索引构建顶点邻接图,用于模式 B(测地线)的最短路径。
|
|
4
|
+
* 顶点坐标按 local 存;传入的查询点需先转为 local(mesh.worldToLocal)。
|
|
5
|
+
*
|
|
6
|
+
* 说明:几何须为已索引(indexed)。modelLoader 用 mergeVertices 焊接重复顶点,
|
|
7
|
+
* 保证同一表面位置共享顶点,邻接图才连通。
|
|
8
|
+
*
|
|
9
|
+
* 性能:O(V²) Dijkstra + O(V) 最近顶点查找。对几万顶点单次点击可接受;
|
|
10
|
+
* 若过大可后续换二叉堆 + 空间网格加速(留作升级)。
|
|
11
|
+
*/
|
|
12
|
+
export declare class MeshGraph {
|
|
13
|
+
private positions;
|
|
14
|
+
private normals;
|
|
15
|
+
private adj;
|
|
16
|
+
readonly vertexCount: number;
|
|
17
|
+
constructor(geometry: THREE.BufferGeometry);
|
|
18
|
+
private px;
|
|
19
|
+
private py;
|
|
20
|
+
private pz;
|
|
21
|
+
/** 最近顶点(传入 local 坐标)。 */
|
|
22
|
+
nearestVertex(localPoint: THREE.Vector3): number;
|
|
23
|
+
/**
|
|
24
|
+
* 两顶点间最短路径(含端点的顶点索引序列)。二叉堆 Dijkstra,O(E log V)。
|
|
25
|
+
* 不连通时返回 [start,end] 兜底。
|
|
26
|
+
*/
|
|
27
|
+
shortestPath(startV: number, endV: number): number[];
|
|
28
|
+
vertexWorld(i: number, matrixWorld: THREE.Matrix4): THREE.Vector3;
|
|
29
|
+
vertexNormalWorld(i: number, mesh: THREE.Mesh): THREE.Vector3;
|
|
30
|
+
/** 顶点的 local 坐标 + local 法线(图几何即 local 空间)。 */
|
|
31
|
+
vertexLocal(i: number): {
|
|
32
|
+
x: number;
|
|
33
|
+
y: number;
|
|
34
|
+
z: number;
|
|
35
|
+
nx: number;
|
|
36
|
+
ny: number;
|
|
37
|
+
nz: number;
|
|
38
|
+
faceIndex: number;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
/**
|
|
3
|
+
* 从 BufferGeometry 的索引构建顶点邻接图,用于模式 B(测地线)的最短路径。
|
|
4
|
+
* 顶点坐标按 local 存;传入的查询点需先转为 local(mesh.worldToLocal)。
|
|
5
|
+
*
|
|
6
|
+
* 说明:几何须为已索引(indexed)。modelLoader 用 mergeVertices 焊接重复顶点,
|
|
7
|
+
* 保证同一表面位置共享顶点,邻接图才连通。
|
|
8
|
+
*
|
|
9
|
+
* 性能:O(V²) Dijkstra + O(V) 最近顶点查找。对几万顶点单次点击可接受;
|
|
10
|
+
* 若过大可后续换二叉堆 + 空间网格加速(留作升级)。
|
|
11
|
+
*/
|
|
12
|
+
export class MeshGraph {
|
|
13
|
+
constructor(geometry) {
|
|
14
|
+
this.adj = [];
|
|
15
|
+
const pos = geometry.getAttribute("position");
|
|
16
|
+
this.positions = pos.array;
|
|
17
|
+
const nrm = geometry.getAttribute("normal");
|
|
18
|
+
this.normals = nrm ? nrm.array : null;
|
|
19
|
+
this.vertexCount = pos.count;
|
|
20
|
+
for (let i = 0; i < this.vertexCount; i++)
|
|
21
|
+
this.adj.push(new Set());
|
|
22
|
+
const addEdge = (a, b) => {
|
|
23
|
+
this.adj[a].add(b);
|
|
24
|
+
this.adj[b].add(a);
|
|
25
|
+
};
|
|
26
|
+
const index = geometry.getIndex();
|
|
27
|
+
if (index) {
|
|
28
|
+
for (let i = 0; i < index.count; i += 3) {
|
|
29
|
+
const a = index.getX(i);
|
|
30
|
+
const b = index.getX(i + 1);
|
|
31
|
+
const c = index.getX(i + 2);
|
|
32
|
+
addEdge(a, b);
|
|
33
|
+
addEdge(b, c);
|
|
34
|
+
addEdge(c, a);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
// 非索引兜底(连通性差,仅避免崩溃)。
|
|
39
|
+
for (let i = 0; i + 2 < this.vertexCount; i += 3) {
|
|
40
|
+
addEdge(i, i + 1);
|
|
41
|
+
addEdge(i + 1, i + 2);
|
|
42
|
+
addEdge(i + 2, i);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
px(i) {
|
|
47
|
+
return this.positions[i * 3];
|
|
48
|
+
}
|
|
49
|
+
py(i) {
|
|
50
|
+
return this.positions[i * 3 + 1];
|
|
51
|
+
}
|
|
52
|
+
pz(i) {
|
|
53
|
+
return this.positions[i * 3 + 2];
|
|
54
|
+
}
|
|
55
|
+
/** 最近顶点(传入 local 坐标)。 */
|
|
56
|
+
nearestVertex(localPoint) {
|
|
57
|
+
let best = -1;
|
|
58
|
+
let bestD = Infinity;
|
|
59
|
+
for (let i = 0; i < this.vertexCount; i++) {
|
|
60
|
+
const dx = this.px(i) - localPoint.x;
|
|
61
|
+
const dy = this.py(i) - localPoint.y;
|
|
62
|
+
const dz = this.pz(i) - localPoint.z;
|
|
63
|
+
const d = dx * dx + dy * dy + dz * dz;
|
|
64
|
+
if (d < bestD) {
|
|
65
|
+
bestD = d;
|
|
66
|
+
best = i;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return best;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* 两顶点间最短路径(含端点的顶点索引序列)。二叉堆 Dijkstra,O(E log V)。
|
|
73
|
+
* 不连通时返回 [start,end] 兜底。
|
|
74
|
+
*/
|
|
75
|
+
shortestPath(startV, endV) {
|
|
76
|
+
if (startV === endV)
|
|
77
|
+
return [startV];
|
|
78
|
+
const dist = new Float64Array(this.vertexCount).fill(Infinity);
|
|
79
|
+
const prev = new Int32Array(this.vertexCount).fill(-1);
|
|
80
|
+
const done = new Uint8Array(this.vertexCount);
|
|
81
|
+
dist[startV] = 0;
|
|
82
|
+
const heap = new MinHeap();
|
|
83
|
+
heap.push(startV, 0);
|
|
84
|
+
while (heap.size > 0) {
|
|
85
|
+
const u = heap.pop();
|
|
86
|
+
if (done[u])
|
|
87
|
+
continue;
|
|
88
|
+
done[u] = 1;
|
|
89
|
+
if (u === endV)
|
|
90
|
+
break;
|
|
91
|
+
const ud = dist[u];
|
|
92
|
+
const ux = this.px(u);
|
|
93
|
+
const uy = this.py(u);
|
|
94
|
+
const uz = this.pz(u);
|
|
95
|
+
for (const w of this.adj[u]) {
|
|
96
|
+
if (done[w])
|
|
97
|
+
continue;
|
|
98
|
+
const dx = this.px(w) - ux;
|
|
99
|
+
const dy = this.py(w) - uy;
|
|
100
|
+
const dz = this.pz(w) - uz;
|
|
101
|
+
const nd = ud + Math.sqrt(dx * dx + dy * dy + dz * dz);
|
|
102
|
+
if (nd < dist[w]) {
|
|
103
|
+
dist[w] = nd;
|
|
104
|
+
prev[w] = u;
|
|
105
|
+
heap.push(w, nd);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (prev[endV] === -1 && startV !== endV)
|
|
110
|
+
return [startV, endV];
|
|
111
|
+
const path = [];
|
|
112
|
+
for (let c = endV; c !== -1; c = prev[c]) {
|
|
113
|
+
path.push(c);
|
|
114
|
+
if (c === startV)
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
return path.reverse();
|
|
118
|
+
}
|
|
119
|
+
vertexWorld(i, matrixWorld) {
|
|
120
|
+
return new THREE.Vector3(this.px(i), this.py(i), this.pz(i)).applyMatrix4(matrixWorld);
|
|
121
|
+
}
|
|
122
|
+
vertexNormalWorld(i, mesh) {
|
|
123
|
+
const n = new THREE.Vector3(0, 0, 1);
|
|
124
|
+
if (this.normals) {
|
|
125
|
+
n.set(this.normals[i * 3], this.normals[i * 3 + 1], this.normals[i * 3 + 2]);
|
|
126
|
+
}
|
|
127
|
+
const nm = new THREE.Matrix3().getNormalMatrix(mesh.matrixWorld);
|
|
128
|
+
return n.applyMatrix3(nm).normalize();
|
|
129
|
+
}
|
|
130
|
+
/** 顶点的 local 坐标 + local 法线(图几何即 local 空间)。 */
|
|
131
|
+
vertexLocal(i) {
|
|
132
|
+
return {
|
|
133
|
+
x: this.px(i),
|
|
134
|
+
y: this.py(i),
|
|
135
|
+
z: this.pz(i),
|
|
136
|
+
nx: this.normals ? this.normals[i * 3] : 0,
|
|
137
|
+
ny: this.normals ? this.normals[i * 3 + 1] : 0,
|
|
138
|
+
nz: this.normals ? this.normals[i * 3 + 2] : 1,
|
|
139
|
+
faceIndex: -1,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/** 极简二叉最小堆(按 priority 排序,存顶点索引)。用于 Dijkstra。 */
|
|
144
|
+
class MinHeap {
|
|
145
|
+
constructor() {
|
|
146
|
+
this.ids = [];
|
|
147
|
+
this.prio = [];
|
|
148
|
+
}
|
|
149
|
+
get size() {
|
|
150
|
+
return this.ids.length;
|
|
151
|
+
}
|
|
152
|
+
push(id, priority) {
|
|
153
|
+
this.ids.push(id);
|
|
154
|
+
this.prio.push(priority);
|
|
155
|
+
let i = this.ids.length - 1;
|
|
156
|
+
while (i > 0) {
|
|
157
|
+
const parent = (i - 1) >> 1;
|
|
158
|
+
if (this.prio[parent] <= this.prio[i])
|
|
159
|
+
break;
|
|
160
|
+
this.swap(i, parent);
|
|
161
|
+
i = parent;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
pop() {
|
|
165
|
+
const topId = this.ids[0];
|
|
166
|
+
const lastId = this.ids.pop();
|
|
167
|
+
const lastPrio = this.prio.pop();
|
|
168
|
+
if (this.ids.length > 0) {
|
|
169
|
+
this.ids[0] = lastId;
|
|
170
|
+
this.prio[0] = lastPrio;
|
|
171
|
+
let i = 0;
|
|
172
|
+
const n = this.ids.length;
|
|
173
|
+
for (;;) {
|
|
174
|
+
const l = 2 * i + 1;
|
|
175
|
+
const r = 2 * i + 2;
|
|
176
|
+
let smallest = i;
|
|
177
|
+
if (l < n && this.prio[l] < this.prio[smallest])
|
|
178
|
+
smallest = l;
|
|
179
|
+
if (r < n && this.prio[r] < this.prio[smallest])
|
|
180
|
+
smallest = r;
|
|
181
|
+
if (smallest === i)
|
|
182
|
+
break;
|
|
183
|
+
this.swap(i, smallest);
|
|
184
|
+
i = smallest;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return topId;
|
|
188
|
+
}
|
|
189
|
+
swap(a, b) {
|
|
190
|
+
const ti = this.ids[a];
|
|
191
|
+
this.ids[a] = this.ids[b];
|
|
192
|
+
this.ids[b] = ti;
|
|
193
|
+
const tp = this.prio[a];
|
|
194
|
+
this.prio[a] = this.prio[b];
|
|
195
|
+
this.prio[b] = tp;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=MeshGraph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MeshGraph.js","sourceRoot":"","sources":["../../../src/Utils/surfaceAnnotation/MeshGraph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import type { Annotation, AnnotationMode, ExportOptions } from "./types";
|
|
3
|
+
import { AnnotationStore } from "./annotationStore";
|
|
4
|
+
export interface SurfaceAnnotatorOptions {
|
|
5
|
+
scene: THREE.Scene;
|
|
6
|
+
camera: THREE.PerspectiveCamera;
|
|
7
|
+
container: HTMLElement;
|
|
8
|
+
controls: {
|
|
9
|
+
enabled: boolean;
|
|
10
|
+
};
|
|
11
|
+
mesh: THREE.Mesh;
|
|
12
|
+
/** 缺省时从 mesh 几何包围盒对角线自算。 */
|
|
13
|
+
bboxDiagonal?: number;
|
|
14
|
+
/** 自由手绘 contour 颜色,默认 #e5006e。 */
|
|
15
|
+
freehandColor?: string;
|
|
16
|
+
/** 测地线 contour 颜色,默认 #ffa24e。 */
|
|
17
|
+
geodesicColor?: string;
|
|
18
|
+
/** 放点标记颜色,默认 #ffd166。 */
|
|
19
|
+
pointColor?: string;
|
|
20
|
+
/** 线宽(像素),默认 3。 */
|
|
21
|
+
lineWidth?: number;
|
|
22
|
+
/** 标记小球半径,默认 bboxDiagonal*0.006。 */
|
|
23
|
+
markerRadius?: number;
|
|
24
|
+
onModeChange?: (m: AnnotationMode) => void;
|
|
25
|
+
/** 标注列表变化回调(增删/撤销/清空)。 */
|
|
26
|
+
onChange?: (annotations: Annotation[]) => void;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 表面标注主控制器(Phase 4):navigate / freehand / geodesic / point 四模式,
|
|
30
|
+
* Enter 闭合,数据交给 AnnotationStore 管理(多条带颜色标签、撤销/删除/清空、导出)。
|
|
31
|
+
* 渲染层据 store.list() 做场景对账(reconcile),撤销/删除自动加/移 three 对象。
|
|
32
|
+
*/
|
|
33
|
+
export declare class SurfaceAnnotator {
|
|
34
|
+
private o;
|
|
35
|
+
private mode;
|
|
36
|
+
private spaceHeld;
|
|
37
|
+
private pointerDown;
|
|
38
|
+
private readonly markerRadius;
|
|
39
|
+
private readonly epsilon;
|
|
40
|
+
private readonly minGap;
|
|
41
|
+
private readonly maxJump;
|
|
42
|
+
private graph;
|
|
43
|
+
private store;
|
|
44
|
+
private managed;
|
|
45
|
+
private seq;
|
|
46
|
+
private selectedId;
|
|
47
|
+
private activeStroke?;
|
|
48
|
+
private activeLine?;
|
|
49
|
+
private lastFreehand?;
|
|
50
|
+
private activeGeo?;
|
|
51
|
+
private activeGeoLine?;
|
|
52
|
+
constructor(opts: SurfaceAnnotatorOptions);
|
|
53
|
+
/** 窗口尺寸变化时更新所有 fat line 的像素分辨率,否则线宽会失真。 */
|
|
54
|
+
private onResize;
|
|
55
|
+
private get freehandColor();
|
|
56
|
+
private get geodesicColor();
|
|
57
|
+
private get pointColorVal();
|
|
58
|
+
getMode(): AnnotationMode;
|
|
59
|
+
setMode(m: AnnotationMode): void;
|
|
60
|
+
getStore(): AnnotationStore;
|
|
61
|
+
/** 当前标注列表快照。 */
|
|
62
|
+
getAnnotations(): Annotation[];
|
|
63
|
+
undo(): void;
|
|
64
|
+
clearAll(): void;
|
|
65
|
+
deleteAnnotation(id: string): void;
|
|
66
|
+
selectAnnotation(id: string | null): void;
|
|
67
|
+
/** 颜色变更后重画对应 three 对象。 */
|
|
68
|
+
refreshAnnotation(id: string): void;
|
|
69
|
+
exportJSON(modelName: string, opts?: ExportOptions): {
|
|
70
|
+
model: string;
|
|
71
|
+
exportedAt: string;
|
|
72
|
+
space: "local" | "world";
|
|
73
|
+
annotations: {
|
|
74
|
+
id: string;
|
|
75
|
+
type: "contour" | "points";
|
|
76
|
+
mode: "freehand" | "geodesic" | null;
|
|
77
|
+
label: string;
|
|
78
|
+
color: string;
|
|
79
|
+
closed: boolean;
|
|
80
|
+
points: number[][];
|
|
81
|
+
}[];
|
|
82
|
+
};
|
|
83
|
+
private applyCameraGating;
|
|
84
|
+
/** 据 store.list() 对账场景:补齐缺失对象、移除已删对象(不 dispose,留给撤销恢复)。 */
|
|
85
|
+
private reconcile;
|
|
86
|
+
private applySelection;
|
|
87
|
+
private disposeObject;
|
|
88
|
+
private nextId;
|
|
89
|
+
private hit;
|
|
90
|
+
/** 事件目标是否落在标注容器内(排除面板/页面其它区域的点击)。 */
|
|
91
|
+
private insideContainer;
|
|
92
|
+
private onPointerDown;
|
|
93
|
+
private onPointerMove;
|
|
94
|
+
private onPointerUp;
|
|
95
|
+
private closeLastContour;
|
|
96
|
+
/** 沿网格表面求 a→b 的测地路径(local 顶点),去掉与 a 重合的首点。a/b 已是 local。 */
|
|
97
|
+
private surfacePathBetween;
|
|
98
|
+
/** 结束当前测地线:闭合成环并落定为一条 contour。 */
|
|
99
|
+
private finishGeodesic;
|
|
100
|
+
private isTypingTarget;
|
|
101
|
+
private onKeyDown;
|
|
102
|
+
private onKeyUp;
|
|
103
|
+
dispose(): void;
|
|
104
|
+
}
|