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.
Files changed (130) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +105 -0
  3. package/dist/Controls/Copper3dTrackballControls.d.ts +45 -0
  4. package/dist/Controls/Copper3dTrackballControls.js +543 -0
  5. package/dist/Controls/Copper3dTrackballControls.js.map +1 -0
  6. package/dist/Controls/copperControls.d.ts +17 -0
  7. package/dist/Controls/copperControls.js +36 -0
  8. package/dist/Controls/copperControls.js.map +1 -0
  9. package/dist/Loader/convet.d.ts +1 -0
  10. package/dist/Loader/convet.js +80 -0
  11. package/dist/Loader/convet.js.map +1 -0
  12. package/dist/Loader/copperDicomLoader.d.ts +7 -0
  13. package/dist/Loader/copperDicomLoader.js +113 -0
  14. package/dist/Loader/copperDicomLoader.js.map +1 -0
  15. package/dist/Loader/copperGltfLoader.d.ts +3 -0
  16. package/dist/Loader/copperGltfLoader.js +16 -0
  17. package/dist/Loader/copperGltfLoader.js.map +1 -0
  18. package/dist/Loader/copperNrrdLoader.d.ts +13 -0
  19. package/dist/Loader/copperNrrdLoader.js +424 -0
  20. package/dist/Loader/copperNrrdLoader.js.map +1 -0
  21. package/dist/Loader/copperOBJLoader.d.ts +3 -0
  22. package/dist/Loader/copperOBJLoader.js +4 -0
  23. package/dist/Loader/copperOBJLoader.js.map +1 -0
  24. package/dist/Loader/copperVtkLoader.d.ts +8 -0
  25. package/dist/Loader/copperVtkLoader.js +44 -0
  26. package/dist/Loader/copperVtkLoader.js.map +1 -0
  27. package/dist/Renderer/baseRenderer.d.ts +30 -0
  28. package/dist/Renderer/baseRenderer.js +223 -0
  29. package/dist/Renderer/baseRenderer.js.map +1 -0
  30. package/dist/Renderer/copperMSceneRenderer.d.ts +21 -0
  31. package/dist/Renderer/copperMSceneRenderer.js +115 -0
  32. package/dist/Renderer/copperMSceneRenderer.js.map +1 -0
  33. package/dist/Renderer/copperRenderer.d.ts +15 -0
  34. package/dist/Renderer/copperRenderer.js +52 -0
  35. package/dist/Renderer/copperRenderer.js.map +1 -0
  36. package/dist/Renderer/copperRendererOnDemond.d.ts +13 -0
  37. package/dist/Renderer/copperRendererOnDemond.js +44 -0
  38. package/dist/Renderer/copperRendererOnDemond.js.map +1 -0
  39. package/dist/Scene/baseScene.d.ts +38 -0
  40. package/dist/Scene/baseScene.js +180 -0
  41. package/dist/Scene/baseScene.js.map +1 -0
  42. package/dist/Scene/commonSceneMethod.d.ts +45 -0
  43. package/dist/Scene/commonSceneMethod.js +258 -0
  44. package/dist/Scene/commonSceneMethod.js.map +1 -0
  45. package/dist/Scene/copperMScene.d.ts +42 -0
  46. package/dist/Scene/copperMScene.js +325 -0
  47. package/dist/Scene/copperMScene.js.map +1 -0
  48. package/dist/Scene/copperScene.d.ts +34 -0
  49. package/dist/Scene/copperScene.js +303 -0
  50. package/dist/Scene/copperScene.js.map +1 -0
  51. package/dist/Scene/copperSceneOnDemond.d.ts +13 -0
  52. package/dist/Scene/copperSceneOnDemond.js +60 -0
  53. package/dist/Scene/copperSceneOnDemond.js.map +1 -0
  54. package/dist/Utils/add3DLabel.d.ts +18 -0
  55. package/dist/Utils/add3DLabel.js +66 -0
  56. package/dist/Utils/add3DLabel.js.map +1 -0
  57. package/dist/Utils/download.d.ts +1 -0
  58. package/dist/Utils/download.js +21 -0
  59. package/dist/Utils/download.js.map +1 -0
  60. package/dist/Utils/getVOILUT.d.ts +13 -0
  61. package/dist/Utils/getVOILUT.js +78 -0
  62. package/dist/Utils/getVOILUT.js.map +1 -0
  63. package/dist/Utils/kiwrious/configKiwrious.d.ts +4 -0
  64. package/dist/Utils/kiwrious/configKiwrious.js +59 -0
  65. package/dist/Utils/kiwrious/configKiwrious.js.map +1 -0
  66. package/dist/Utils/nrrd_tool.d.ts +187 -0
  67. package/dist/Utils/nrrd_tool.js +2173 -0
  68. package/dist/Utils/nrrd_tool.js.map +1 -0
  69. package/dist/Utils/raycaster.d.ts +9 -0
  70. package/dist/Utils/raycaster.js +75 -0
  71. package/dist/Utils/raycaster.js.map +1 -0
  72. package/dist/Utils/texture2d.d.ts +10 -0
  73. package/dist/Utils/texture2d.js +111 -0
  74. package/dist/Utils/texture2d.js.map +1 -0
  75. package/dist/Utils/utils.d.ts +8 -0
  76. package/dist/Utils/utils.js +141 -0
  77. package/dist/Utils/utils.js.map +1 -0
  78. package/dist/Utils/workers/reformatSaveDataWorker.d.ts +13 -0
  79. package/dist/Utils/workers/reformatSaveDataWorker.js +107 -0
  80. package/dist/Utils/workers/reformatSaveDataWorker.js.map +1 -0
  81. package/dist/bundle.esm.js +68951 -0
  82. package/dist/bundle.umd.js +68982 -0
  83. package/dist/css/style.css +168 -0
  84. package/dist/index.d.ts +21 -0
  85. package/dist/index.js +22 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/lib/dicom_pharser_dictionary.d.ts +1 -0
  88. package/dist/lib/dicom_pharser_dictionary.js +28116 -0
  89. package/dist/lib/dicom_pharser_dictionary.js.map +1 -0
  90. package/dist/lib/environment/index.d.ts +8 -0
  91. package/dist/lib/environment/index.js +28 -0
  92. package/dist/lib/environment/index.js.map +1 -0
  93. package/dist/lib/three-vignette.d.ts +11 -0
  94. package/dist/lib/three-vignette.js +93 -0
  95. package/dist/lib/three-vignette.js.map +1 -0
  96. package/dist/types/Controls/Copper3dTrackballControls.d.ts +45 -0
  97. package/dist/types/Controls/copperControls.d.ts +17 -0
  98. package/dist/types/Loader/convet.d.ts +1 -0
  99. package/dist/types/Loader/copperDicomLoader.d.ts +7 -0
  100. package/dist/types/Loader/copperGltfLoader.d.ts +3 -0
  101. package/dist/types/Loader/copperNrrdLoader.d.ts +13 -0
  102. package/dist/types/Loader/copperOBJLoader.d.ts +3 -0
  103. package/dist/types/Loader/copperVtkLoader.d.ts +8 -0
  104. package/dist/types/Renderer/baseRenderer.d.ts +30 -0
  105. package/dist/types/Renderer/copperMSceneRenderer.d.ts +21 -0
  106. package/dist/types/Renderer/copperRenderer.d.ts +15 -0
  107. package/dist/types/Renderer/copperRendererOnDemond.d.ts +13 -0
  108. package/dist/types/Scene/baseScene.d.ts +38 -0
  109. package/dist/types/Scene/commonSceneMethod.d.ts +45 -0
  110. package/dist/types/Scene/copperMScene.d.ts +42 -0
  111. package/dist/types/Scene/copperScene.d.ts +34 -0
  112. package/dist/types/Scene/copperSceneOnDemond.d.ts +13 -0
  113. package/dist/types/Utils/add3DLabel.d.ts +18 -0
  114. package/dist/types/Utils/download.d.ts +1 -0
  115. package/dist/types/Utils/getVOILUT.d.ts +13 -0
  116. package/dist/types/Utils/kiwrious/configKiwrious.d.ts +4 -0
  117. package/dist/types/Utils/nrrd_tool.d.ts +187 -0
  118. package/dist/types/Utils/raycaster.d.ts +9 -0
  119. package/dist/types/Utils/texture2d.d.ts +10 -0
  120. package/dist/types/Utils/utils.d.ts +8 -0
  121. package/dist/types/Utils/workers/reformatSaveDataWorker.d.ts +13 -0
  122. package/dist/types/index.d.ts +21 -0
  123. package/dist/types/lib/dicom_pharser_dictionary.d.ts +1 -0
  124. package/dist/types/lib/environment/index.d.ts +8 -0
  125. package/dist/types/lib/three-vignette.d.ts +11 -0
  126. package/dist/types/types/types.d.ts +198 -0
  127. package/dist/types/types.d.ts +198 -0
  128. package/dist/types/types.js +2 -0
  129. package/dist/types/types.js.map +1 -0
  130. package/package.json +60 -0
@@ -0,0 +1,180 @@
1
+ import * as THREE from "three";
2
+ import { Controls, CameraViewPoint } from "../Controls/copperControls";
3
+ import { createBackground } from "../lib/three-vignette";
4
+ import { isIOS, traverseMaterials } from "../Utils/utils";
5
+ import commonScene from "./commonSceneMethod";
6
+ const IS_IOS = isIOS();
7
+ export default class baseScene extends commonScene {
8
+ constructor(container, renderer, alpha) {
9
+ super(container);
10
+ // scene: THREE.Scene;
11
+ // camera: THREE.PerspectiveCamera;
12
+ this.sceneName = "";
13
+ this.cameraPositionFlag = false;
14
+ this.content = new THREE.Group();
15
+ this.exportContent = new THREE.Group();
16
+ this.isHalfed = false;
17
+ this.viewPoint = new CameraViewPoint();
18
+ this.color1 = "#5454ad";
19
+ this.color2 = "#18e5a7";
20
+ this.lights = [];
21
+ this.onWindowResize = () => {
22
+ var _a;
23
+ console.log("adaa");
24
+ this.renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
25
+ this.onRenderCameraChange();
26
+ (_a = this.vignette) === null || _a === void 0 ? void 0 : _a.style({
27
+ aspect: this.camera.aspect,
28
+ });
29
+ this.renderer.setSize(this.container.clientWidth, this.container.clientHeight);
30
+ };
31
+ this.renderer = renderer;
32
+ this.ambientLight = new THREE.AmbientLight(0x202020, 0.3);
33
+ this.directionalLight = new THREE.DirectionalLight(0xffffff, 0.3);
34
+ if (!alpha) {
35
+ this.vignette = createBackground({
36
+ aspect: this.container.clientWidth / this.container.clientHeight,
37
+ grainScale: IS_IOS ? 0 : 0.001,
38
+ colors: [this.color1, this.color2],
39
+ });
40
+ this.vignette.mesh.name = "Vignette";
41
+ this.vignette.mesh.renderOrder = -1;
42
+ }
43
+ this.copperControl = new Controls(this.camera);
44
+ this.init();
45
+ }
46
+ init() {
47
+ this.copperControl.setCameraViewPoint();
48
+ this.camera.position.z = 2;
49
+ this.scene.add(this.camera);
50
+ this.renderer.setSize(this.container.clientWidth, this.container.clientHeight);
51
+ this.addLights();
52
+ }
53
+ loadMetadataUrl(url) {
54
+ const xmlhttp = new XMLHttpRequest();
55
+ xmlhttp.onreadystatechange = () => {
56
+ if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
57
+ const metadata = JSON.parse(xmlhttp.responseText);
58
+ const numberOfMetadata = metadata.length;
59
+ if (numberOfMetadata === 1) {
60
+ }
61
+ else if (numberOfMetadata > 1) {
62
+ }
63
+ else {
64
+ console.error("Empty metadata!");
65
+ }
66
+ }
67
+ };
68
+ xmlhttp.open("GET", url, true);
69
+ xmlhttp.send();
70
+ }
71
+ loadViewUrl(url) {
72
+ const xmlhttp = new XMLHttpRequest();
73
+ xmlhttp.onreadystatechange = () => {
74
+ if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
75
+ const viewpointData = JSON.parse(xmlhttp.responseText);
76
+ this.loadView(viewpointData);
77
+ }
78
+ };
79
+ xmlhttp.open("GET", url, true);
80
+ xmlhttp.send();
81
+ }
82
+ loadView(viewpointData) {
83
+ this.cameraPositionFlag = true;
84
+ this.viewPoint = viewpointData;
85
+ const viewpoint = new CameraViewPoint();
86
+ viewpoint.farPlane = viewpointData.farPlane;
87
+ viewpoint.nearPlane = viewpointData.nearPlane;
88
+ viewpoint.eyePosition = viewpointData.eyePosition;
89
+ viewpoint.targetPosition = viewpointData.targetPosition;
90
+ viewpoint.upVector = viewpointData.upVector;
91
+ this.copperControl.updateCameraViewPoint(viewpoint);
92
+ }
93
+ getDefaultViewPoint() {
94
+ return this.viewPoint;
95
+ }
96
+ setViewPoint(camera, target) {
97
+ const viewPoint = new CameraViewPoint();
98
+ viewPoint.farPlane = camera.far;
99
+ viewPoint.nearPlane = camera.near;
100
+ viewPoint.eyePosition = [
101
+ camera.position.x,
102
+ camera.position.y,
103
+ camera.position.z,
104
+ ];
105
+ if (target) {
106
+ viewPoint.targetPosition = [target[0], target[1], target[2]];
107
+ }
108
+ else {
109
+ viewPoint.targetPosition = [0, 0, 0];
110
+ }
111
+ viewPoint.upVector = [camera.up.x, camera.up.y, camera.up.z];
112
+ return viewPoint;
113
+ }
114
+ addObject(obj) {
115
+ this.scene.add(obj);
116
+ }
117
+ addLights() {
118
+ const hemiLight = new THREE.HemisphereLight();
119
+ hemiLight.name = "hemi_light";
120
+ this.scene.add(hemiLight);
121
+ this.ambientLight.name = "ambient_light";
122
+ this.directionalLight.name = "main_light";
123
+ this.directionalLight.position.set(0.5, 0, 0.866);
124
+ this.camera.add(this.ambientLight);
125
+ this.camera.add(this.directionalLight);
126
+ this.lights.push(this.ambientLight);
127
+ this.lights.push(this.directionalLight);
128
+ this.lights.push(hemiLight);
129
+ }
130
+ removeLights() {
131
+ if (this.lights) {
132
+ this.lights.forEach((light) => light.parent.remove(light));
133
+ this.lights.length = 0;
134
+ }
135
+ }
136
+ updateLights(state) {
137
+ const lights = this.lights;
138
+ if (state.addLights && !lights.length) {
139
+ this.addLights();
140
+ }
141
+ else if (!state.addLights && lights.length) {
142
+ this.removeLights();
143
+ }
144
+ if (lights.length === 3) {
145
+ lights[0].intensity = state.ambientIntensity;
146
+ lights[0].color.setHex(state.ambientColor);
147
+ lights[1].intensity = state.directIntensity;
148
+ lights[1].color.setHex(state.directColor);
149
+ }
150
+ }
151
+ updateDisplay(state) {
152
+ traverseMaterials(this.content, (material) => {
153
+ material.wireframe = state.wireframe;
154
+ });
155
+ }
156
+ updateBackground(color1, color2) {
157
+ var _a;
158
+ (_a = this.vignette) === null || _a === void 0 ? void 0 : _a.style({
159
+ colors: [color1, color2],
160
+ });
161
+ }
162
+ updateModelChildrenVisualisation(child) {
163
+ child.visible = !child.visible;
164
+ let flags = [];
165
+ this.content.traverse((mesh) => {
166
+ flags.push(mesh.visible);
167
+ });
168
+ flags.includes(false) ? (this.isHalfed = true) : (this.isHalfed = false);
169
+ }
170
+ onRenderCameraChange() {
171
+ this.camera.aspect =
172
+ this.container.clientWidth / this.container.clientHeight;
173
+ this.camera.updateProjectionMatrix();
174
+ }
175
+ render() {
176
+ // this.onWindowResize();
177
+ this.renderer.render(this.scene, this.camera);
178
+ }
179
+ }
180
+ //# sourceMappingURL=baseScene.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseScene.js","sourceRoot":"","sources":["../../src/Scene/baseScene.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { preRenderCallbackFunctionType, nrrdMeshesType, nrrdSliceType, loadingBarType, dicomLoaderOptsType, mouseMovePositionType } from "../types/types";
2
+ import * as THREE from "three";
3
+ import { GUI } from "dat.gui";
4
+ import { optsType } from "../Loader/copperNrrdLoader";
5
+ import { Controls } from "../Controls/copperControls";
6
+ import { Copper3dTrackballControls } from "../Controls/Copper3dTrackballControls";
7
+ import { OrbitControls } from "three/examples/jsm/controls/OrbitControls";
8
+ import { TrackballControls } from "three/examples/jsm/controls/TrackballControls";
9
+ export default class commonScene {
10
+ container: HTMLDivElement;
11
+ scene: THREE.Scene;
12
+ camera: THREE.PerspectiveCamera | THREE.OrthographicCamera;
13
+ subDiv: HTMLDivElement | null;
14
+ subScene: THREE.Scene;
15
+ subCamera: THREE.PerspectiveCamera | null;
16
+ controls: Copper3dTrackballControls | OrbitControls | TrackballControls;
17
+ protected subRender: THREE.WebGLRenderer | null;
18
+ protected subCopperControl: Controls | null;
19
+ protected renderNrrdVolume: boolean;
20
+ protected preRenderCallbackFunctions: preRenderCallbackFunctionType;
21
+ protected sort: boolean;
22
+ protected depthStep: number;
23
+ protected pickableObjects: THREE.Mesh[];
24
+ constructor(container: HTMLDivElement);
25
+ createDemoMesh(): void;
26
+ addObject(obj: any): void;
27
+ setDepth(value: number): void;
28
+ setDicomFilesOrder(value: "ascending" | "descending"): void;
29
+ addPreRenderCallbackFunction(callbackFunction: Function): number;
30
+ removePreRenderCallbackFunction(id: number): void;
31
+ pickModel(content: THREE.Group, callback: (selectMesh: THREE.Mesh | undefined) => void, options?: string[]): void;
32
+ pickSpecifiedModel(content: THREE.Mesh | Array<THREE.Mesh>, mousePosition: mouseMovePositionType): {
33
+ intersectedObject: THREE.Object3D<THREE.Event> | null;
34
+ intersects: THREE.Intersection<THREE.Object3D<THREE.Event>>[];
35
+ };
36
+ /**
37
+ * create a new sub view to display models
38
+ */
39
+ addSubView(): HTMLDivElement;
40
+ loadDicom(urls: string | Array<string>, opts?: dicomLoaderOptsType): void;
41
+ loadNrrd(url: string, loadingBar: loadingBarType, segmentation: boolean, callback?: (volume: any, nrrdMeshes: nrrdMeshesType, nrrdSlices: nrrdSliceType, gui?: GUI) => void, opts?: optsType): void;
42
+ updateControls(camera: THREE.PerspectiveCamera | THREE.OrthographicCamera): void;
43
+ loadNrrdTexture3d(url: string, callback?: (volume: any, gui?: GUI) => void): void;
44
+ loadOBJ(url: string, callback?: (mesh: THREE.Group) => void): void;
45
+ }
@@ -0,0 +1,258 @@
1
+ import * as THREE from "three";
2
+ import { copperDicomLoader } from "../Loader/copperDicomLoader";
3
+ import { createTexture2D_Array } from "../Utils/texture2d";
4
+ import { copperNrrdLoader } from "../Loader/copperNrrdLoader";
5
+ import { pickModelDefault } from "../Utils/raycaster";
6
+ import { Controls } from "../Controls/copperControls";
7
+ import { objLoader } from "../Loader/copperOBJLoader";
8
+ import { isPickedModel } from "../Utils/raycaster";
9
+ import { Copper3dTrackballControls } from "../Controls/Copper3dTrackballControls";
10
+ import { OrbitControls } from "three/examples/jsm/controls/OrbitControls";
11
+ import { copperNrrdTexture3dLoader } from "../Loader/copperNrrdLoader";
12
+ export default class commonScene {
13
+ constructor(container) {
14
+ this.subDiv = null;
15
+ this.subScene = new THREE.Scene();
16
+ this.subCamera = null;
17
+ this.subRender = null;
18
+ this.subCopperControl = null;
19
+ this.renderNrrdVolume = false;
20
+ this.sort = true; //default ascending order
21
+ this.depthStep = 0.4;
22
+ this.pickableObjects = [];
23
+ this.container = container;
24
+ this.scene = new THREE.Scene();
25
+ this.camera = new THREE.PerspectiveCamera(75, container.clientWidth / container.clientHeight, 0.1, 500);
26
+ this.controls = new Copper3dTrackballControls(this.camera, this.container);
27
+ this.controls.dispose();
28
+ this.preRenderCallbackFunctions = {
29
+ index: 0,
30
+ cache: [],
31
+ add(fn) {
32
+ if (!fn.id) {
33
+ fn.id = this.cache.length;
34
+ this.cache.push(fn);
35
+ return;
36
+ }
37
+ },
38
+ remove(id) {
39
+ if (this.cache[id]) {
40
+ this.cache.splice(id, 1);
41
+ }
42
+ },
43
+ };
44
+ }
45
+ createDemoMesh() {
46
+ const geometry = new THREE.BoxGeometry();
47
+ const material = new THREE.MeshPhongMaterial({
48
+ color: 0xff00ff,
49
+ wireframe: true,
50
+ });
51
+ const cube = new THREE.Mesh(geometry, material);
52
+ this.scene.add(cube);
53
+ this.scene.add(new THREE.AxesHelper(5));
54
+ }
55
+ addObject(obj) {
56
+ this.scene.add(obj);
57
+ }
58
+ setDepth(value) {
59
+ this.depthStep = value;
60
+ }
61
+ setDicomFilesOrder(value) {
62
+ if (value === "ascending") {
63
+ this.sort = true;
64
+ }
65
+ else if (value === "descending") {
66
+ this.sort = false;
67
+ }
68
+ }
69
+ addPreRenderCallbackFunction(callbackFunction) {
70
+ this.preRenderCallbackFunctions.add(callbackFunction);
71
+ const id = this.preRenderCallbackFunctions.index;
72
+ return id;
73
+ }
74
+ removePreRenderCallbackFunction(id) {
75
+ this.preRenderCallbackFunctions.remove(id);
76
+ }
77
+ pickModel(content, callback, options) {
78
+ content.traverse((child) => {
79
+ if (child.isMesh) {
80
+ const m = child;
81
+ if (!(options && options.includes(m.name))) {
82
+ this.pickableObjects.push(m);
83
+ }
84
+ }
85
+ });
86
+ pickModelDefault(this.camera, this.container, this.pickableObjects, callback);
87
+ }
88
+ pickSpecifiedModel(content, mousePosition) {
89
+ if (Array.isArray(content)) {
90
+ this.pickableObjects = content;
91
+ }
92
+ else {
93
+ this.pickableObjects.push(content);
94
+ }
95
+ return isPickedModel(this.camera, this.container, this.pickableObjects, mousePosition);
96
+ }
97
+ /**
98
+ * create a new sub view to display models
99
+ */
100
+ addSubView() {
101
+ this.subDiv = document.createElement("div");
102
+ this.container.appendChild(this.subDiv);
103
+ this.subDiv.classList.add("copper3D_sub_axes");
104
+ const { clientWidth, clientHeight } = this.subDiv;
105
+ this.subCamera = new THREE.PerspectiveCamera(50, clientWidth / clientHeight, 0.1, 10);
106
+ this.subScene.add(this.subCamera);
107
+ this.subCopperControl = new Controls(this.subCamera);
108
+ this.subRender = new THREE.WebGLRenderer({ alpha: true });
109
+ this.subRender.setPixelRatio(Math.min(window.devicePixelRatio, 2));
110
+ this.subRender.setSize(this.subDiv.clientWidth, this.subDiv.clientWidth);
111
+ this.subCamera.up = this.camera.up;
112
+ this.subDiv.appendChild(this.subRender.domElement);
113
+ return this.subDiv;
114
+ }
115
+ // dicom
116
+ loadDicom(urls, opts) {
117
+ let gui;
118
+ if (opts) {
119
+ gui = opts.gui;
120
+ }
121
+ if (Array.isArray(urls)) {
122
+ const depth = urls.length;
123
+ const copperVolumes = [];
124
+ let unit8Arrays = [];
125
+ let unit16Arrays = [];
126
+ urls.forEach((url) => {
127
+ copperDicomLoader(url, (copperVolume) => {
128
+ copperVolumes.push(copperVolume);
129
+ if (copperVolumes.length === depth) {
130
+ // reorder each dicom file
131
+ copperVolumes.sort((a, b) => {
132
+ if (this.sort) {
133
+ return a.order - b.order;
134
+ }
135
+ else {
136
+ return b.order - a.order;
137
+ }
138
+ });
139
+ copperVolumes.forEach((volume) => {
140
+ unit8Arrays.push(volume.uint8);
141
+ unit16Arrays.push(volume.uint16);
142
+ });
143
+ const uint8 = new Uint8ClampedArray(copperVolume.width * copperVolume.height * depth);
144
+ const uint16 = new Uint16Array(uint8.length);
145
+ let base8Index = 0;
146
+ let base16Index = 0;
147
+ unit8Arrays.forEach((array, index) => {
148
+ base8Index = index * copperVolume.width * copperVolume.height;
149
+ for (let i = 0; i < array.length; i++) {
150
+ uint8[i + base8Index] = array[i];
151
+ }
152
+ });
153
+ unit16Arrays.forEach((array, index) => {
154
+ base16Index = index * copperVolume.width * copperVolume.height;
155
+ for (let i = 0; i < array.length; i++) {
156
+ uint16[i + base16Index] = array[i];
157
+ }
158
+ });
159
+ copperVolume.uint8 = uint8;
160
+ copperVolume.uint16 = uint16;
161
+ finishLoad(copperVolume);
162
+ }
163
+ });
164
+ });
165
+ const finishLoad = (copperVolume) => {
166
+ if (gui)
167
+ gui
168
+ .add(this, "depthStep")
169
+ .min(0.01)
170
+ .max(1)
171
+ .step(0.01);
172
+ const texture2d = createTexture2D_Array(copperVolume, depth, this.scene, gui);
173
+ if (opts === null || opts === void 0 ? void 0 : opts.getMesh) {
174
+ opts.getMesh(texture2d.mesh);
175
+ }
176
+ if (opts === null || opts === void 0 ? void 0 : opts.getCopperVolume) {
177
+ opts.getCopperVolume(texture2d.copperVolume, texture2d.updateTexture);
178
+ }
179
+ let value = texture2d.mesh.material.uniforms["depth"].value;
180
+ const render_texture2d = () => {
181
+ // if (value > depth) {
182
+ // value = 0;
183
+ // }
184
+ // eval(
185
+ // "value += this.depthStep;if (value > depth) {value = 0;}"
186
+ // );
187
+ if (opts === null || opts === void 0 ? void 0 : opts.setAnimation) {
188
+ value = opts.setAnimation(value, depth, this.depthStep, copperVolume);
189
+ }
190
+ else {
191
+ value += this.depthStep;
192
+ if (value > depth || value < 0.0) {
193
+ if (value > 1.0)
194
+ value = depth * 2.0 - value;
195
+ if (value < 0.0)
196
+ value = -value;
197
+ this.depthStep = -this.depthStep;
198
+ }
199
+ }
200
+ texture2d.mesh.material.uniforms["depth"].value = value;
201
+ };
202
+ this.addPreRenderCallbackFunction(render_texture2d);
203
+ };
204
+ }
205
+ else {
206
+ const url = urls;
207
+ copperDicomLoader(url, (copperVolume) => {
208
+ createTexture2D_Array(copperVolume, 1, this.scene);
209
+ });
210
+ }
211
+ }
212
+ // load nrrd
213
+ loadNrrd(url, loadingBar, segmentation, callback, opts) {
214
+ copperNrrdLoader(url, loadingBar, segmentation, callback, opts);
215
+ }
216
+ updateControls(camera) {
217
+ this.controls.dispose();
218
+ this.controls = new OrbitControls(camera, this.container);
219
+ this.controls.target.set(0, 0, 0);
220
+ this.controls.minZoom = 0.5;
221
+ this.controls.maxZoom = 4;
222
+ this.controls.enablePan = false;
223
+ }
224
+ loadNrrdTexture3d(url, callback) {
225
+ // const h = 512; // frustum height
226
+ const h = 1024;
227
+ const aspect = window.innerWidth / window.innerHeight;
228
+ this.camera = new THREE.OrthographicCamera((-h * aspect) / 2, (h * aspect) / 2, h / 2, -h / 2, 1, 2000);
229
+ this.camera.position.set(0, 0, 1280);
230
+ this.camera.up.set(0, 0, 1);
231
+ this.camera.updateProjectionMatrix();
232
+ this.updateControls(this.camera);
233
+ this.renderNrrdVolume = true;
234
+ copperNrrdTexture3dLoader(url, this.scene, this.container, callback);
235
+ }
236
+ loadOBJ(url, callback) {
237
+ objLoader.load(url, (obj) => {
238
+ obj.traverse((child) => {
239
+ if (child.isMesh) {
240
+ child.material = new THREE.MeshStandardMaterial({
241
+ side: THREE.DoubleSide,
242
+ color: 0xfff000,
243
+ });
244
+ }
245
+ });
246
+ this.scene.add(obj);
247
+ !!callback && callback(obj);
248
+ }, // called when loading is in progresses
249
+ (xhr) => {
250
+ // console.log((xhr.loaded / xhr.total) * 100 + "% loaded");
251
+ },
252
+ // called when loading has errors
253
+ (error) => {
254
+ console.log("An error happened");
255
+ });
256
+ }
257
+ }
258
+ //# sourceMappingURL=commonSceneMethod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commonSceneMethod.js","sourceRoot":"","sources":["../../src/Scene/commonSceneMethod.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import * as THREE from "three";
2
+ import { GUI } from "dat.gui";
3
+ import { Controls, CameraViewPoint } from "../Controls/copperControls";
4
+ import { customMeshType } from "../lib/three-vignette";
5
+ import { positionType, nrrdSliceType } from "../types/types";
6
+ import commonScene from "./commonSceneMethod";
7
+ export default class copperMScene extends commonScene {
8
+ gui: GUI;
9
+ container: HTMLDivElement;
10
+ renderer: THREE.WebGLRenderer;
11
+ sceneName: string;
12
+ vignette: customMeshType;
13
+ directionalLight: THREE.DirectionalLight;
14
+ ambientLight: THREE.AmbientLight;
15
+ copperControl: Controls;
16
+ viewPoint: CameraViewPoint;
17
+ cameraPositionFlag: boolean;
18
+ content: THREE.Group;
19
+ isHalfed: boolean;
20
+ private color1;
21
+ private color2;
22
+ private lights;
23
+ private guiContainer;
24
+ constructor(container: HTMLDivElement, renderer: THREE.WebGLRenderer);
25
+ init(): void;
26
+ setControls(type: number): void;
27
+ loadGltf(url: string, callback?: (content: THREE.Group) => void): void;
28
+ setViewPoint(camera: THREE.PerspectiveCamera, target?: number[]): CameraViewPoint;
29
+ loadOBJ(url: string, callback?: (mesh: THREE.Group) => void): void;
30
+ drawWholeNrrd(nrrdSlices: nrrdSliceType): void;
31
+ updateBackground(color1: string, color2: string): void;
32
+ addLights(): void;
33
+ removeLights(): void;
34
+ loadViewUrl(url: string): void;
35
+ loadView(viewpointData: CameraViewPoint): void;
36
+ updateCamera(viewpoint: CameraViewPoint): void;
37
+ setCameraPosition(position: positionType): void;
38
+ removePreRenderCallbackFunction(id: number): void;
39
+ resetView(): void;
40
+ onWindowResize: () => void;
41
+ render(): void;
42
+ }