copper3d 1.15.0
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 +201 -0
- package/README.md +105 -0
- package/dist/Controls/Copper3dTrackballControls.d.ts +45 -0
- package/dist/Controls/Copper3dTrackballControls.js +543 -0
- package/dist/Controls/Copper3dTrackballControls.js.map +1 -0
- package/dist/Controls/copperControls.d.ts +17 -0
- package/dist/Controls/copperControls.js +36 -0
- package/dist/Controls/copperControls.js.map +1 -0
- package/dist/Loader/convet.d.ts +1 -0
- package/dist/Loader/convet.js +80 -0
- package/dist/Loader/convet.js.map +1 -0
- package/dist/Loader/copperDicomLoader.d.ts +7 -0
- package/dist/Loader/copperDicomLoader.js +113 -0
- package/dist/Loader/copperDicomLoader.js.map +1 -0
- package/dist/Loader/copperGltfLoader.d.ts +3 -0
- package/dist/Loader/copperGltfLoader.js +16 -0
- package/dist/Loader/copperGltfLoader.js.map +1 -0
- package/dist/Loader/copperNrrdLoader.d.ts +13 -0
- package/dist/Loader/copperNrrdLoader.js +424 -0
- package/dist/Loader/copperNrrdLoader.js.map +1 -0
- package/dist/Loader/copperOBJLoader.d.ts +3 -0
- package/dist/Loader/copperOBJLoader.js +4 -0
- package/dist/Loader/copperOBJLoader.js.map +1 -0
- package/dist/Loader/copperVtkLoader.d.ts +8 -0
- package/dist/Loader/copperVtkLoader.js +44 -0
- package/dist/Loader/copperVtkLoader.js.map +1 -0
- package/dist/Renderer/baseRenderer.d.ts +30 -0
- package/dist/Renderer/baseRenderer.js +223 -0
- package/dist/Renderer/baseRenderer.js.map +1 -0
- package/dist/Renderer/copperMSceneRenderer.d.ts +21 -0
- package/dist/Renderer/copperMSceneRenderer.js +115 -0
- package/dist/Renderer/copperMSceneRenderer.js.map +1 -0
- package/dist/Renderer/copperRenderer.d.ts +15 -0
- package/dist/Renderer/copperRenderer.js +52 -0
- package/dist/Renderer/copperRenderer.js.map +1 -0
- package/dist/Renderer/copperRendererOnDemond.d.ts +13 -0
- package/dist/Renderer/copperRendererOnDemond.js +44 -0
- package/dist/Renderer/copperRendererOnDemond.js.map +1 -0
- package/dist/Scene/baseScene.d.ts +38 -0
- package/dist/Scene/baseScene.js +180 -0
- package/dist/Scene/baseScene.js.map +1 -0
- package/dist/Scene/commonSceneMethod.d.ts +45 -0
- package/dist/Scene/commonSceneMethod.js +258 -0
- package/dist/Scene/commonSceneMethod.js.map +1 -0
- package/dist/Scene/copperMScene.d.ts +42 -0
- package/dist/Scene/copperMScene.js +325 -0
- package/dist/Scene/copperMScene.js.map +1 -0
- package/dist/Scene/copperScene.d.ts +34 -0
- package/dist/Scene/copperScene.js +303 -0
- package/dist/Scene/copperScene.js.map +1 -0
- package/dist/Scene/copperSceneOnDemond.d.ts +13 -0
- package/dist/Scene/copperSceneOnDemond.js +60 -0
- package/dist/Scene/copperSceneOnDemond.js.map +1 -0
- package/dist/Utils/add3DLabel.d.ts +18 -0
- package/dist/Utils/add3DLabel.js +66 -0
- package/dist/Utils/add3DLabel.js.map +1 -0
- package/dist/Utils/download.d.ts +1 -0
- package/dist/Utils/download.js +21 -0
- package/dist/Utils/download.js.map +1 -0
- package/dist/Utils/getVOILUT.d.ts +13 -0
- package/dist/Utils/getVOILUT.js +78 -0
- package/dist/Utils/getVOILUT.js.map +1 -0
- package/dist/Utils/kiwrious/configKiwrious.d.ts +4 -0
- package/dist/Utils/kiwrious/configKiwrious.js +59 -0
- package/dist/Utils/kiwrious/configKiwrious.js.map +1 -0
- package/dist/Utils/nrrd_tool.d.ts +187 -0
- package/dist/Utils/nrrd_tool.js +2173 -0
- package/dist/Utils/nrrd_tool.js.map +1 -0
- package/dist/Utils/raycaster.d.ts +9 -0
- package/dist/Utils/raycaster.js +75 -0
- package/dist/Utils/raycaster.js.map +1 -0
- package/dist/Utils/texture2d.d.ts +10 -0
- package/dist/Utils/texture2d.js +111 -0
- package/dist/Utils/texture2d.js.map +1 -0
- package/dist/Utils/utils.d.ts +8 -0
- package/dist/Utils/utils.js +141 -0
- package/dist/Utils/utils.js.map +1 -0
- package/dist/Utils/workers/reformatSaveDataWorker.d.ts +13 -0
- package/dist/Utils/workers/reformatSaveDataWorker.js +107 -0
- package/dist/Utils/workers/reformatSaveDataWorker.js.map +1 -0
- package/dist/bundle.esm.js +68951 -0
- package/dist/bundle.umd.js +68982 -0
- package/dist/css/style.css +168 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/dicom_pharser_dictionary.d.ts +1 -0
- package/dist/lib/dicom_pharser_dictionary.js +28116 -0
- package/dist/lib/dicom_pharser_dictionary.js.map +1 -0
- package/dist/lib/environment/index.d.ts +8 -0
- package/dist/lib/environment/index.js +28 -0
- package/dist/lib/environment/index.js.map +1 -0
- package/dist/lib/three-vignette.d.ts +11 -0
- package/dist/lib/three-vignette.js +93 -0
- package/dist/lib/three-vignette.js.map +1 -0
- package/dist/types/Controls/Copper3dTrackballControls.d.ts +45 -0
- package/dist/types/Controls/copperControls.d.ts +17 -0
- package/dist/types/Loader/convet.d.ts +1 -0
- package/dist/types/Loader/copperDicomLoader.d.ts +7 -0
- package/dist/types/Loader/copperGltfLoader.d.ts +3 -0
- package/dist/types/Loader/copperNrrdLoader.d.ts +13 -0
- package/dist/types/Loader/copperOBJLoader.d.ts +3 -0
- package/dist/types/Loader/copperVtkLoader.d.ts +8 -0
- package/dist/types/Renderer/baseRenderer.d.ts +30 -0
- package/dist/types/Renderer/copperMSceneRenderer.d.ts +21 -0
- package/dist/types/Renderer/copperRenderer.d.ts +15 -0
- package/dist/types/Renderer/copperRendererOnDemond.d.ts +13 -0
- package/dist/types/Scene/baseScene.d.ts +38 -0
- package/dist/types/Scene/commonSceneMethod.d.ts +45 -0
- package/dist/types/Scene/copperMScene.d.ts +42 -0
- package/dist/types/Scene/copperScene.d.ts +34 -0
- package/dist/types/Scene/copperSceneOnDemond.d.ts +13 -0
- package/dist/types/Utils/add3DLabel.d.ts +18 -0
- package/dist/types/Utils/download.d.ts +1 -0
- package/dist/types/Utils/getVOILUT.d.ts +13 -0
- package/dist/types/Utils/kiwrious/configKiwrious.d.ts +4 -0
- package/dist/types/Utils/nrrd_tool.d.ts +187 -0
- package/dist/types/Utils/raycaster.d.ts +9 -0
- package/dist/types/Utils/texture2d.d.ts +10 -0
- package/dist/types/Utils/utils.d.ts +8 -0
- package/dist/types/Utils/workers/reformatSaveDataWorker.d.ts +13 -0
- package/dist/types/index.d.ts +21 -0
- package/dist/types/lib/dicom_pharser_dictionary.d.ts +1 -0
- package/dist/types/lib/environment/index.d.ts +8 -0
- package/dist/types/lib/three-vignette.d.ts +11 -0
- package/dist/types/types/types.d.ts +198 -0
- package/dist/types/types.d.ts +198 -0
- package/dist/types/types.js +2 -0
- package/dist/types/types.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export function resize3dnrrd(pixels, dimOrigin, dimTarget) {
|
|
2
|
+
// Original dimensions
|
|
3
|
+
const width = dimOrigin[0];
|
|
4
|
+
const height = dimOrigin[1];
|
|
5
|
+
const depth = dimOrigin[2];
|
|
6
|
+
// New dimensions
|
|
7
|
+
const newWidth = dimTarget[0];
|
|
8
|
+
const newHeight = dimTarget[1];
|
|
9
|
+
const newDepth = dimTarget[2];
|
|
10
|
+
// Resampling factors
|
|
11
|
+
const scaleX = newWidth / width;
|
|
12
|
+
const scaleY = newHeight / height;
|
|
13
|
+
const scaleZ = newDepth / depth;
|
|
14
|
+
// Create new pixel array
|
|
15
|
+
const newPixels = new Float32Array(newWidth * newHeight * newDepth);
|
|
16
|
+
// Interpolate and resample pixel data
|
|
17
|
+
for (let z = 0; z < newDepth; z++) {
|
|
18
|
+
for (let y = 0; y < newHeight; y++) {
|
|
19
|
+
for (let x = 0; x < newWidth; x++) {
|
|
20
|
+
const srcX = x / scaleX;
|
|
21
|
+
const srcY = y / scaleY;
|
|
22
|
+
const srcZ = z / scaleZ;
|
|
23
|
+
const srcIdx = Math.floor(srcZ) * width * height +
|
|
24
|
+
Math.floor(srcY) * width +
|
|
25
|
+
Math.floor(srcX);
|
|
26
|
+
const x2 = Math.ceil(srcX);
|
|
27
|
+
const y2 = Math.ceil(srcY);
|
|
28
|
+
const z2 = Math.ceil(srcZ);
|
|
29
|
+
const muX = srcX - Math.floor(srcX);
|
|
30
|
+
const muY = srcY - Math.floor(srcY);
|
|
31
|
+
const muZ = srcZ - Math.floor(srcZ);
|
|
32
|
+
const srcVal000 = pixels[srcIdx];
|
|
33
|
+
const srcVal001 = z2 >= depth || y2 >= height || x2 >= width
|
|
34
|
+
? 0
|
|
35
|
+
: pixels[Math.floor(srcZ) * width * height + y2 * width + x2];
|
|
36
|
+
const srcVal010 = z2 >= depth || y2 >= height
|
|
37
|
+
? 0
|
|
38
|
+
: pixels[Math.floor(srcZ) * width * height +
|
|
39
|
+
y2 * width +
|
|
40
|
+
Math.floor(srcX)];
|
|
41
|
+
const srcVal011 = z2 >= depth || y2 >= height || x2 >= width
|
|
42
|
+
? 0
|
|
43
|
+
: pixels[Math.floor(srcZ) * width * height + y2 * width + x2];
|
|
44
|
+
const srcVal100 = z2 >= depth || x2 >= width
|
|
45
|
+
? 0
|
|
46
|
+
: pixels[Math.floor(srcZ) * width * height +
|
|
47
|
+
Math.floor(srcY) * width +
|
|
48
|
+
x2];
|
|
49
|
+
const srcVal101 = z2 >= depth || x2 >= width
|
|
50
|
+
? 0
|
|
51
|
+
: pixels[Math.floor(srcZ) * width * height +
|
|
52
|
+
Math.floor(srcY) * width +
|
|
53
|
+
Math.ceil(srcX)];
|
|
54
|
+
const srcVal110 = z2 >= depth
|
|
55
|
+
? 0
|
|
56
|
+
: pixels[Math.floor(srcZ) * width * height +
|
|
57
|
+
Math.floor(srcY) * width +
|
|
58
|
+
Math.floor(srcX)];
|
|
59
|
+
const srcVal111 = z2 >= depth || x2 >= width
|
|
60
|
+
? 0
|
|
61
|
+
: pixels[Math.floor(srcZ) * width * height +
|
|
62
|
+
Math.floor(srcY) * width +
|
|
63
|
+
x2];
|
|
64
|
+
const val = (1 - muX) * (1 - muY) * (1 - muZ) * srcVal000 +
|
|
65
|
+
(1 - muX) * (1 - muY) * muZ * srcVal001 +
|
|
66
|
+
(1 - muX) * muY * (1 - muZ) * srcVal010 +
|
|
67
|
+
(1 - muX) * muY * muZ * srcVal011 +
|
|
68
|
+
muX * (1 - muY) * (1 - muZ) * srcVal100 +
|
|
69
|
+
muX * (1 - muY) * muZ * srcVal101 +
|
|
70
|
+
muX * muY * (1 - muZ) * srcVal110 +
|
|
71
|
+
muX * muY * muZ * srcVal111;
|
|
72
|
+
const dstIdx = z * newWidth * newHeight + y * newWidth + x;
|
|
73
|
+
newPixels[dstIdx] = val;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// Use the newPixels array for your calculations
|
|
78
|
+
return newPixels;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=convet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convet.js","sourceRoot":"","sources":["../../src/Loader/convet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { copperVolumeType } from "../types/types";
|
|
2
|
+
export declare function copperDicomLoader(url: string, callback?: (copperVolume: copperVolumeType) => void): void;
|
|
3
|
+
export declare function getLut(data: Uint16Array, windowWidth: number, windowCenter: number, invert: boolean, voiLUT: any): {
|
|
4
|
+
minPixelValue: number;
|
|
5
|
+
maxPixelValue: number;
|
|
6
|
+
lutArray: Uint8ClampedArray;
|
|
7
|
+
};
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import getVOILUT from "../Utils/getVOILUT";
|
|
3
|
+
import dicomParser from "dicom-parser";
|
|
4
|
+
// import { TAG_DICT } from "../lib/dicom_pharser_dictionary";
|
|
5
|
+
const loader = new THREE.FileLoader().setResponseType("arraybuffer");
|
|
6
|
+
export function copperDicomLoader(url, callback) {
|
|
7
|
+
loader.load(url, (arrayBuffer) => {
|
|
8
|
+
var dicomFileAsBuffer = new Uint8Array(arrayBuffer);
|
|
9
|
+
const dataSet = dicomParser.parseDicom(dicomFileAsBuffer);
|
|
10
|
+
// console.log(dataSet1);
|
|
11
|
+
// const dataSet = dicomParser.parseDicom(dicomFileAsBuffer, {
|
|
12
|
+
// vrCallback(tag) {
|
|
13
|
+
// const formatted = `(${tag.substring(1, 5)},${tag.substring(5, 9)})`;
|
|
14
|
+
// // console.log(!!TAG_DICT[formatted] ? TAG_DICT[formatted].vr : undefined);
|
|
15
|
+
// return !!TAG_DICT[formatted] ? TAG_DICT[formatted].vr : undefined;
|
|
16
|
+
// },
|
|
17
|
+
// });
|
|
18
|
+
let tags = null;
|
|
19
|
+
let w;
|
|
20
|
+
let h;
|
|
21
|
+
let invert;
|
|
22
|
+
let windowCenter;
|
|
23
|
+
let windowWidth;
|
|
24
|
+
let order = 0;
|
|
25
|
+
try {
|
|
26
|
+
tags = dicomParser.explicitDataSetToJS(dataSet);
|
|
27
|
+
if (dataSet.elements.x00181060) {
|
|
28
|
+
order = parseInt(tags["x00181060"]);
|
|
29
|
+
}
|
|
30
|
+
else if (dataSet.elements.x00201041) {
|
|
31
|
+
order = parseInt(tags["x00201041"]);
|
|
32
|
+
}
|
|
33
|
+
w = parseInt(tags["x00280011"]); //width
|
|
34
|
+
h = parseInt(tags["x00280010"]); //height
|
|
35
|
+
invert = tags["x00280004"] === "MONOCHROME1" ? true : false; //is invert?
|
|
36
|
+
windowCenter = parseInt(tags["x00281050"]); //window center
|
|
37
|
+
windowWidth = parseInt(tags["x00281051"]); //window width
|
|
38
|
+
}
|
|
39
|
+
catch (_a) {
|
|
40
|
+
w = dataSet.uint16("x00280011");
|
|
41
|
+
h = dataSet.uint16("x00280010");
|
|
42
|
+
invert = dataSet.string("x00280004") === "MONOCHROME1" ? true : false;
|
|
43
|
+
windowCenter = parseInt(dataSet.string("x00281050"));
|
|
44
|
+
windowWidth = parseInt(dataSet.string("x00281051"));
|
|
45
|
+
if (dataSet.elements.x00181060) {
|
|
46
|
+
order = parseInt(dataSet.string("x00181060"));
|
|
47
|
+
}
|
|
48
|
+
else if (dataSet.elements.x00201041) {
|
|
49
|
+
order = parseInt(dataSet.string("x00201041"));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (windowCenter == 0 || windowWidth == 0) {
|
|
53
|
+
windowCenter = 226;
|
|
54
|
+
windowWidth = 537;
|
|
55
|
+
}
|
|
56
|
+
let pixelData = dataSet.elements.x7fe00010;
|
|
57
|
+
let uint16 = convertImplicitElement(pixelData, dicomFileAsBuffer);
|
|
58
|
+
let voiLUT;
|
|
59
|
+
let lut = getLut(uint16, windowWidth, windowCenter, invert, voiLUT);
|
|
60
|
+
let uint8 = new Uint8ClampedArray(uint16.length);
|
|
61
|
+
for (let i = 0, len = uint16.length; i < len; i++) {
|
|
62
|
+
uint8[i] = lut.lutArray[uint16[i]];
|
|
63
|
+
}
|
|
64
|
+
const copperVolume = {
|
|
65
|
+
tags,
|
|
66
|
+
width: w,
|
|
67
|
+
height: h,
|
|
68
|
+
windowCenter,
|
|
69
|
+
windowWidth,
|
|
70
|
+
invert,
|
|
71
|
+
uint16,
|
|
72
|
+
uint8,
|
|
73
|
+
order,
|
|
74
|
+
};
|
|
75
|
+
callback && callback(copperVolume);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
function convertImplicitElement(elementData, dicomFileAsBuffer) {
|
|
79
|
+
let w1Buffer = dicomParser.sharedCopy(dicomFileAsBuffer, elementData.dataOffset, elementData.length);
|
|
80
|
+
let unit16 = new Uint16Array(w1Buffer.buffer, w1Buffer.byteOffset, w1Buffer.byteLength / Uint16Array.BYTES_PER_ELEMENT);
|
|
81
|
+
return unit16;
|
|
82
|
+
}
|
|
83
|
+
export function getLut(data, windowWidth, windowCenter, invert, voiLUT) {
|
|
84
|
+
let minPixelValue = 0;
|
|
85
|
+
let maxPixelValue = 0;
|
|
86
|
+
for (let i = 0, len = data.length; i < len; i++) {
|
|
87
|
+
if (minPixelValue > data[i]) {
|
|
88
|
+
minPixelValue = data[i];
|
|
89
|
+
}
|
|
90
|
+
if (maxPixelValue < data[i]) {
|
|
91
|
+
maxPixelValue = data[i];
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
let offset = Math.min(minPixelValue, 0);
|
|
95
|
+
let lutArray = new Uint8ClampedArray(maxPixelValue - offset + 1);
|
|
96
|
+
const vlutfn = getVOILUT(windowWidth, windowCenter, voiLUT, true);
|
|
97
|
+
if (invert === true) {
|
|
98
|
+
for (let storedValue = minPixelValue; storedValue <= maxPixelValue; storedValue++) {
|
|
99
|
+
lutArray[storedValue + -offset] = 255 - vlutfn(storedValue);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
for (let storedValue = minPixelValue; storedValue <= maxPixelValue; storedValue++) {
|
|
104
|
+
lutArray[storedValue + -offset] = vlutfn(storedValue);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
minPixelValue: minPixelValue,
|
|
109
|
+
maxPixelValue: maxPixelValue,
|
|
110
|
+
lutArray: lutArray,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=copperDicomLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copperDicomLoader.js","sourceRoot":"","sources":["../../src/Loader/copperDicomLoader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader";
|
|
3
|
+
import { KTX2Loader } from "three/examples/jsm/loaders/KTX2Loader.js";
|
|
4
|
+
import { DRACOLoader } from "three/examples/jsm/loaders/DRACOLoader.js";
|
|
5
|
+
const THREE_PATH = `https://unpkg.com/three@0.${THREE.REVISION}.x`;
|
|
6
|
+
const MANAGER = new THREE.LoadingManager();
|
|
7
|
+
const DRACO_LOADER = new DRACOLoader(MANAGER).setDecoderPath(`${THREE_PATH}/examples/js/libs/draco/gltf/`);
|
|
8
|
+
const KTX2_LOADER = new KTX2Loader(MANAGER).setTranscoderPath(`${THREE_PATH}/examples/js/libs/basis`);
|
|
9
|
+
export function copperGltfLoader(renderer) {
|
|
10
|
+
const loader = new GLTFLoader(MANAGER)
|
|
11
|
+
.setCrossOrigin("anonymous")
|
|
12
|
+
.setDRACOLoader(DRACO_LOADER)
|
|
13
|
+
.setKTX2Loader(KTX2_LOADER.detectSupport(renderer));
|
|
14
|
+
return loader;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=copperGltfLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copperGltfLoader.js","sourceRoot":"","sources":["../../src/Loader/copperGltfLoader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAQ,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAExE,MAAM,UAAU,GAAG,6BAA6B,KAAK,CAAC,QAAQ,IAAI,CAAC;AACnE,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;AAC3C,MAAM,YAAY,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,cAAc,CAC1D,GAAG,UAAU,+BAA+B,CAC7C,CAAC;AACF,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAC3D,GAAG,UAAU,yBAAyB,CACvC,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,QAA6B;IAC5D,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC;SACnC,cAAc,CAAC,WAAW,CAAC;SAC3B,cAAc,CAAC,YAAY,CAAC;SAC5B,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import copperScene from "../Scene/copperScene";
|
|
3
|
+
import { GUI } from "dat.gui";
|
|
4
|
+
import { nrrdMeshesType, nrrdSliceType, loadingBarType } from "../types/types";
|
|
5
|
+
import { Copper3dTrackballControls } from "../Controls/Copper3dTrackballControls";
|
|
6
|
+
export interface optsType {
|
|
7
|
+
openGui: boolean;
|
|
8
|
+
container?: HTMLDivElement;
|
|
9
|
+
}
|
|
10
|
+
export declare function copperNrrdLoader(url: string, loadingBar: loadingBarType, segmentation: boolean, callback?: (volume: any, nrrdMeshes: nrrdMeshesType, nrrdSlices: nrrdSliceType, gui?: GUI) => void, opts?: optsType): void;
|
|
11
|
+
export declare function copperNrrdTexture3dLoader(url: string, scene: THREE.Scene, container: HTMLDivElement, callback?: (volume: any, gui?: GUI) => void): void;
|
|
12
|
+
export declare function getWholeSlices(nrrdSlices: nrrdSliceType, scene: THREE.Scene, gui: GUI, controls: Copper3dTrackballControls): void;
|
|
13
|
+
export declare function addBoxHelper(scene: copperScene, volume: any, boxCube?: THREE.Object3D<THREE.Event>): void;
|