copper3d 1.15.6 → 1.15.8

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 (50) hide show
  1. package/README.md +5 -2
  2. package/dist/Controls/Copper3dTrackballControls.js +37 -49
  3. package/dist/Controls/Copper3dTrackballControls.js.map +1 -1
  4. package/dist/Loader/copperDicomLoader.js +0 -2
  5. package/dist/Loader/copperDicomLoader.js.map +1 -1
  6. package/dist/Loader/copperNrrdLoader.js +1 -4
  7. package/dist/Loader/copperNrrdLoader.js.map +1 -1
  8. package/dist/Renderer/baseRenderer.d.ts +3 -3
  9. package/dist/Renderer/baseRenderer.js +9 -5
  10. package/dist/Renderer/baseRenderer.js.map +1 -1
  11. package/dist/Renderer/copperRenderer.d.ts +2 -2
  12. package/dist/Renderer/copperRenderer.js +6 -2
  13. package/dist/Renderer/copperRenderer.js.map +1 -1
  14. package/dist/Renderer/copperRendererOnDemond.d.ts +2 -2
  15. package/dist/Renderer/copperRendererOnDemond.js +0 -3
  16. package/dist/Renderer/copperRendererOnDemond.js.map +1 -1
  17. package/dist/Scene/baseScene.d.ts +2 -2
  18. package/dist/Scene/baseScene.js +7 -5
  19. package/dist/Scene/baseScene.js.map +1 -1
  20. package/dist/Scene/commonSceneMethod.d.ts +4 -2
  21. package/dist/Scene/commonSceneMethod.js +13 -8
  22. package/dist/Scene/commonSceneMethod.js.map +1 -1
  23. package/dist/Scene/copperScene.d.ts +2 -1
  24. package/dist/Scene/copperScene.js +5 -11
  25. package/dist/Scene/copperScene.js.map +1 -1
  26. package/dist/Utils/convet.js.map +1 -0
  27. package/dist/Utils/nrrd_tool.js +0 -2
  28. package/dist/Utils/nrrd_tool.js.map +1 -1
  29. package/dist/bundle.esm.js +77 -91
  30. package/dist/bundle.umd.js +77 -91
  31. package/dist/index.d.ts +1 -1
  32. package/dist/index.js +2 -2
  33. package/dist/types/Renderer/baseRenderer.d.ts +3 -3
  34. package/dist/types/Renderer/copperRenderer.d.ts +2 -2
  35. package/dist/types/Renderer/copperRendererOnDemond.d.ts +2 -2
  36. package/dist/types/Scene/baseScene.d.ts +2 -2
  37. package/dist/types/Scene/commonSceneMethod.d.ts +4 -2
  38. package/dist/types/Scene/copperScene.d.ts +2 -1
  39. package/dist/types/index.d.ts +1 -1
  40. package/dist/types/types/types.d.ts +11 -5
  41. package/dist/types/types.d.ts +11 -5
  42. package/package.json +1 -1
  43. package/dist/Controls/Copper3dTrackballControls1.d.ts +0 -45
  44. package/dist/Controls/Copper3dTrackballControls1.js +0 -531
  45. package/dist/Controls/Copper3dTrackballControls1.js.map +0 -1
  46. package/dist/Loader/convet.js.map +0 -1
  47. package/dist/types/Controls/Copper3dTrackballControls1.d.ts +0 -45
  48. /package/dist/{Loader → Utils}/convet.d.ts +0 -0
  49. /package/dist/{Loader → Utils}/convet.js +0 -0
  50. /package/dist/types/{Loader → Utils}/convet.d.ts +0 -0
@@ -38590,11 +38590,9 @@
38590
38590
  loader$1.load(url, (arrayBuffer) => {
38591
38591
  var dicomFileAsBuffer = new Uint8Array(arrayBuffer);
38592
38592
  const dataSet = dicomParser.parseDicom(dicomFileAsBuffer);
38593
- // console.log(dataSet1);
38594
38593
  // const dataSet = dicomParser.parseDicom(dicomFileAsBuffer, {
38595
38594
  // vrCallback(tag) {
38596
38595
  // const formatted = `(${tag.substring(1, 5)},${tag.substring(5, 9)})`;
38597
- // // console.log(!!TAG_DICT[formatted] ? TAG_DICT[formatted].vr : undefined);
38598
38596
  // return !!TAG_DICT[formatted] ? TAG_DICT[formatted].vr : undefined;
38599
38597
  // },
38600
38598
  // });
@@ -44102,7 +44100,6 @@
44102
44100
  // 获取边界框的尺寸
44103
44101
  const size_ = new Vector3();
44104
44102
  boundingBox.getSize(size_);
44105
- console.log(size_);
44106
44103
  scene.add(mesh);
44107
44104
  const gui = new GUI$1();
44108
44105
  gui.add(volconfig, "clim1_g", -500, 500, 1).onChange((value) => {
@@ -44171,7 +44168,6 @@
44171
44168
  // nrrdSlices.z.index = i;
44172
44169
  // nrrdSlices.z.repaint(nrrdSlices.z);
44173
44170
  // nrrdSlices.z.mesh.position.set(0, 0, 0.5);
44174
- // console.log(nrrdSlices.z.mesh);
44175
44171
  // }, 100);
44176
44172
  // }
44177
44173
  let up = true;
@@ -44216,7 +44212,6 @@
44216
44212
  // }
44217
44213
  // if (slicesX[index]) {
44218
44214
  // controls.enabled = false;
44219
- // console.log(slicesX[index]);
44220
44215
  // slicesX[index].visible = false;
44221
44216
  // // ? (slicesX[index].visible = false)
44222
44217
  // // : (slicesX[index].visible = true);
@@ -45252,7 +45247,7 @@
45252
45247
  this.maxDistance = Infinity;
45253
45248
  this.minZoom = 0;
45254
45249
  this.maxZoom = Infinity;
45255
- this.keys = ["KeyA", "KeyS", "KeyD"];
45250
+ this.keys = ["KeyA" /*A*/, "KeyS" /*S*/, "KeyD" /*D*/];
45256
45251
  this.mouseButtons = {
45257
45252
  LEFT: MOUSE.ROTATE,
45258
45253
  MIDDLE: MOUSE.DOLLY,
@@ -45270,11 +45265,10 @@
45270
45265
  this.position0 = this.object.position.clone();
45271
45266
  this.up0 = this.object.up.clone();
45272
45267
  this.zoom0 = this.object.zoom;
45273
- // core methods
45268
+ // methods
45274
45269
  this.handleResize = function () {
45275
45270
  const box = scope.domElement.getBoundingClientRect();
45276
- // adjustments come from similar code in the jquery offser() function
45277
- // get root element
45271
+ // adjustments come from similar code in the jquery offset() function
45278
45272
  const d = scope.domElement.ownerDocument.documentElement;
45279
45273
  scope.screen.left = box.left + window.pageXOffset - d.clientLeft;
45280
45274
  scope.screen.top = box.top + window.pageYOffset - d.clientTop;
@@ -45289,18 +45283,11 @@
45289
45283
  };
45290
45284
  })();
45291
45285
  const getMouseOnCircle = (function () {
45292
- /**
45293
- * convert screen coordinates to threejs coordinates ratio
45294
- */
45295
45286
  const vector = new Vector2();
45296
- return function getMouseonCircle(pageX, pageY) {
45297
- vector.set(
45298
- // the width radius of the circle diameter
45299
- (pageX - scope.screen.width * 0.5 - scope.screen.left) /
45300
- (scope.screen.width * 0.5),
45301
- // the height radius of the circle diameter
45302
- (scope.screen.height + 2 * (scope.screen.top - pageY)) /
45303
- scope.screen.width //screen.width intentional
45287
+ return function getMouseOnCircle(pageX, pageY) {
45288
+ vector.set((pageX - scope.screen.width * 0.5 - scope.screen.left) /
45289
+ (scope.screen.width * 0.5), (scope.screen.height + 2 * (scope.screen.top - pageY)) /
45290
+ scope.screen.width // screen.width intentional
45304
45291
  );
45305
45292
  return vector;
45306
45293
  };
@@ -45309,26 +45296,20 @@
45309
45296
  const axis = new Vector3(), quaternion = new Quaternion(), eyeDirection = new Vector3(), objectUpDirection = new Vector3(), objectSidewaysDirection = new Vector3(), moveDirection = new Vector3();
45310
45297
  return function rotateCamera() {
45311
45298
  moveDirection.set(_moveCurr.x - _movePrev.x, _moveCurr.y - _movePrev.y, 0);
45312
- // Computes the Euclidean length (straight-line length) from (0, 0, 0) to (x, y, z).
45313
45299
  let angle = moveDirection.length();
45314
45300
  if (angle) {
45315
- // .sub Subtracts v from this vector.
45316
45301
  _eye.copy(scope.object.position).sub(scope.target);
45317
- // .normalize() Convert this vector to a unit vector - that is, sets it equal to a vector with the same direction as this one, but length 1.
45318
45302
  eyeDirection.copy(_eye).normalize();
45319
45303
  objectUpDirection.copy(scope.object.up).normalize();
45320
- // .crossVectors Sets this vector to cross product of a and b.
45321
45304
  objectSidewaysDirection
45322
45305
  .crossVectors(objectUpDirection, eyeDirection)
45323
45306
  .normalize();
45324
- // .setLength Set this vector to a vector with the same direction as this one, but length l.
45325
45307
  objectUpDirection.setLength(_moveCurr.y - _movePrev.y);
45326
45308
  objectSidewaysDirection.setLength(_moveCurr.x - _movePrev.x);
45327
45309
  moveDirection.copy(objectUpDirection.add(objectSidewaysDirection));
45328
45310
  axis.crossVectors(moveDirection, _eye).normalize();
45329
45311
  angle *= scope.rotateSpeed;
45330
45312
  quaternion.setFromAxisAngle(axis, angle);
45331
- // Applies a Quaternion transform to this vector.
45332
45313
  _eye.applyQuaternion(quaternion);
45333
45314
  scope.object.up.applyQuaternion(quaternion);
45334
45315
  _lastAxis.copy(axis);
@@ -45383,15 +45364,15 @@
45383
45364
  const mouseChange = new Vector2(), objectUp = new Vector3(), pan = new Vector3();
45384
45365
  return function panCamera() {
45385
45366
  mouseChange.copy(_panEnd).sub(_panStart);
45386
- // .lengthSq() Computes the squared length of this vector. If you are comparing the lengths of vectors, you should compare the length squared instead as it is slightly more efficient to calculate.
45387
45367
  if (mouseChange.lengthSq()) {
45388
45368
  if (scope.object.isOrthographicCamera) {
45389
- const orth_camera = scope.object;
45390
- const scale_x = (orth_camera.right - orth_camera.left) /
45391
- orth_camera.zoom /
45369
+ const scale_x = (scope.object.right -
45370
+ scope.object.left) /
45371
+ scope.object.zoom /
45392
45372
  scope.domElement.clientWidth;
45393
- const scale_y = (orth_camera.top - orth_camera.bottom) /
45394
- orth_camera.zoom /
45373
+ const scale_y = (scope.object.top -
45374
+ scope.object.bottom) /
45375
+ scope.object.zoom /
45395
45376
  scope.domElement.clientWidth;
45396
45377
  mouseChange.x *= scale_x;
45397
45378
  mouseChange.y *= scale_y;
@@ -45477,9 +45458,10 @@
45477
45458
  return;
45478
45459
  if (_pointers.length === 0) {
45479
45460
  scope.domElement.setPointerCapture(event.pointerId);
45480
- scope.domElement.addEventListener("pointermove", onPointerMove, false);
45481
- scope.domElement.addEventListener("pointerup", onPointerUp, false);
45461
+ scope.domElement.addEventListener("pointermove", onPointerMove);
45462
+ scope.domElement.addEventListener("pointerup", onPointerUp);
45482
45463
  }
45464
+ //
45483
45465
  addPointer(event);
45484
45466
  if (event.pointerType === "touch") {
45485
45467
  onTouchStart(event);
@@ -45507,11 +45489,12 @@
45507
45489
  else {
45508
45490
  onMouseUp();
45509
45491
  }
45492
+ //
45510
45493
  removePointer(event);
45511
45494
  if (_pointers.length === 0) {
45512
45495
  scope.domElement.releasePointerCapture(event.pointerId);
45513
- scope.domElement.removeEventListener("pointermove", onPointerMove, false);
45514
- scope.domElement.removeEventListener("pointerup", onPointerUp, false);
45496
+ scope.domElement.removeEventListener("pointermove", onPointerMove);
45497
+ scope.domElement.removeEventListener("pointerup", onPointerUp);
45515
45498
  }
45516
45499
  }
45517
45500
  function onPointerCancel(event) {
@@ -45534,11 +45517,11 @@
45534
45517
  _keyState = STATE.PAN;
45535
45518
  }
45536
45519
  }
45537
- function keyup(event) {
45520
+ function keyup() {
45538
45521
  if (scope.enabled === false)
45539
45522
  return;
45540
45523
  _keyState = STATE.NONE;
45541
- window.addEventListener("keydown", keydown, false);
45524
+ window.addEventListener("keydown", keydown);
45542
45525
  }
45543
45526
  function onMouseDown(event) {
45544
45527
  if (_state === STATE.NONE) {
@@ -45582,7 +45565,7 @@
45582
45565
  _panEnd.copy(getMouseOnScreen(event.pageX, event.pageY));
45583
45566
  }
45584
45567
  }
45585
- function onMouseUp(event) {
45568
+ function onMouseUp() {
45586
45569
  _state = STATE.NONE;
45587
45570
  scope.dispatchEvent(_endEvent$2);
45588
45571
  }
@@ -45716,7 +45699,7 @@
45716
45699
  function removePointer(event) {
45717
45700
  delete _pointerPositions[event.pointerId];
45718
45701
  for (let i = 0; i < _pointers.length; i++) {
45719
- if (_pointers[i].pointerId === event.pointerId) {
45702
+ if (_pointers[i].pointerId == event.pointerId) {
45720
45703
  _pointers.splice(i, 1);
45721
45704
  return;
45722
45705
  }
@@ -45737,21 +45720,21 @@
45737
45720
  return _pointerPositions[pointer.pointerId];
45738
45721
  }
45739
45722
  this.dispose = function () {
45740
- scope.domElement.removeEventListener("contextmenu", contextmenu, false);
45741
- scope.domElement.removeEventListener("pointerdown", onPointerDown, false);
45742
- scope.domElement.removeEventListener("pointercancel", onPointerCancel, false);
45743
- scope.domElement.removeEventListener("wheel", onMouseWheel, false);
45744
- scope.domElement.removeEventListener("pointermove", onPointerMove, false);
45745
- scope.domElement.removeEventListener("pointerup", onPointerUp, false);
45746
- window.removeEventListener("keydown", keydown, false);
45747
- window.removeEventListener("keyup", keyup, false);
45723
+ scope.domElement.removeEventListener("contextmenu", contextmenu);
45724
+ scope.domElement.removeEventListener("pointerdown", onPointerDown);
45725
+ scope.domElement.removeEventListener("pointercancel", onPointerCancel);
45726
+ scope.domElement.removeEventListener("wheel", onMouseWheel);
45727
+ scope.domElement.removeEventListener("pointermove", onPointerMove);
45728
+ scope.domElement.removeEventListener("pointerup", onPointerUp);
45729
+ window.removeEventListener("keydown", keydown);
45730
+ window.removeEventListener("keyup", keyup);
45748
45731
  };
45749
- this.domElement.addEventListener("contextmenu", contextmenu, false);
45750
- this.domElement.addEventListener("pointerdown", onPointerDown, false);
45751
- this.domElement.addEventListener("pointercancel", onPointerCancel, false);
45732
+ this.domElement.addEventListener("contextmenu", contextmenu);
45733
+ this.domElement.addEventListener("pointerdown", onPointerDown);
45734
+ this.domElement.addEventListener("pointercancel", onPointerCancel);
45752
45735
  this.domElement.addEventListener("wheel", onMouseWheel, { passive: false });
45753
- window.addEventListener("keydown", keydown, false);
45754
- window.addEventListener("keyup", keyup, false);
45736
+ window.addEventListener("keydown", keydown);
45737
+ window.addEventListener("keyup", keyup);
45755
45738
  this.handleResize();
45756
45739
  // force an update at start
45757
45740
  this.update();
@@ -47010,7 +46993,7 @@
47010
46993
  }
47011
46994
 
47012
46995
  class commonScene {
47013
- constructor(container) {
46996
+ constructor(container, opt) {
47014
46997
  this.subDiv = null;
47015
46998
  this.subScene = new Scene();
47016
46999
  this.subCamera = null;
@@ -47022,7 +47005,16 @@
47022
47005
  this.pickableObjects = [];
47023
47006
  this.container = container;
47024
47007
  this.scene = new Scene();
47025
- this.camera = new PerspectiveCamera(75, container.clientWidth / container.clientHeight, 0.1, 500);
47008
+ this.copperPerspectiveCamera = new PerspectiveCamera(75, container.clientWidth / container.clientHeight, 0.1, 500);
47009
+ const h = 1024;
47010
+ const aspect = window.innerWidth / window.innerHeight;
47011
+ this.copperOrthographicCamera = new OrthographicCamera((-h * aspect) / 2, (h * aspect) / 2, h / 2, -h / 2, 1, 2000);
47012
+ if ((opt === null || opt === void 0 ? void 0 : opt.camera) === "orthographic") {
47013
+ this.camera = this.copperOrthographicCamera;
47014
+ }
47015
+ else {
47016
+ this.camera = this.copperPerspectiveCamera;
47017
+ }
47026
47018
  this.controls = new Copper3dTrackballControls(this.camera, this.container);
47027
47019
  this.controls.dispose();
47028
47020
  this.preRenderCallbackFunctions = {
@@ -47223,9 +47215,7 @@
47223
47215
  }
47224
47216
  loadNrrdTexture3d(url, callback) {
47225
47217
  // const h = 512; // frustum height
47226
- const h = 1024;
47227
- const aspect = window.innerWidth / window.innerHeight;
47228
- this.camera = new OrthographicCamera((-h * aspect) / 2, (h * aspect) / 2, h / 2, -h / 2, 1, 2000);
47218
+ this.camera.updateProjectionMatrix();
47229
47219
  this.camera.position.set(0, 0, 1280);
47230
47220
  this.camera.up.set(0, 0, 1);
47231
47221
  this.camera.updateProjectionMatrix();
@@ -47246,9 +47236,7 @@
47246
47236
  this.scene.add(obj);
47247
47237
  !!callback && callback(obj);
47248
47238
  }, // called when loading is in progresses
47249
- (xhr) => {
47250
- // console.log((xhr.loaded / xhr.total) * 100 + "% loaded");
47251
- },
47239
+ (xhr) => { },
47252
47240
  // called when loading has errors
47253
47241
  (error) => {
47254
47242
  console.log("An error happened");
@@ -47258,8 +47246,8 @@
47258
47246
 
47259
47247
  const IS_IOS = isIOS();
47260
47248
  class baseScene extends commonScene {
47261
- constructor(container, renderer, alpha) {
47262
- super(container);
47249
+ constructor(container, renderer, opt) {
47250
+ super(container, opt);
47263
47251
  // scene: THREE.Scene;
47264
47252
  // camera: THREE.PerspectiveCamera;
47265
47253
  this.sceneName = "";
@@ -47273,18 +47261,19 @@
47273
47261
  this.lights = [];
47274
47262
  this.onWindowResize = () => {
47275
47263
  var _a;
47276
- console.log("adaa");
47277
47264
  this.renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
47278
47265
  this.onRenderCameraChange();
47279
47266
  (_a = this.vignette) === null || _a === void 0 ? void 0 : _a.style({
47280
47267
  aspect: this.camera.aspect,
47281
47268
  });
47269
+ if (this.controls instanceof Copper3dTrackballControls)
47270
+ this.controls.handleResize();
47282
47271
  this.renderer.setSize(this.container.clientWidth, this.container.clientHeight);
47283
47272
  };
47284
47273
  this.renderer = renderer;
47285
47274
  this.ambientLight = new AmbientLight(0x202020, 0.3);
47286
47275
  this.directionalLight = new DirectionalLight(0xffffff, 0.3);
47287
- if (!alpha) {
47276
+ if (!(opt === null || opt === void 0 ? void 0 : opt.alpha)) {
47288
47277
  this.vignette = createBackground({
47289
47278
  aspect: this.container.clientWidth / this.container.clientHeight,
47290
47279
  grainScale: IS_IOS ? 0 : 0.001,
@@ -47299,7 +47288,7 @@
47299
47288
  init() {
47300
47289
  this.copperControl.setCameraViewPoint();
47301
47290
  this.camera.position.z = 2;
47302
- this.scene.add(this.camera);
47291
+ // this.scene.add(this.camera);
47303
47292
  this.renderer.setSize(this.container.clientWidth, this.container.clientHeight);
47304
47293
  this.addLights();
47305
47294
  }
@@ -48109,10 +48098,14 @@
48109
48098
  this.pmremGenerator.compileEquirectangularShader();
48110
48099
  this.renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
48111
48100
  if (!!((_b = this.options) === null || _b === void 0 ? void 0 : _b.alpha)) {
48112
- this.currentScene = new baseScene(this.container, this.renderer, true);
48101
+ this.currentScene = new baseScene(this.container, this.renderer, {
48102
+ alpha: true,
48103
+ });
48113
48104
  }
48114
48105
  else {
48115
- this.currentScene = new baseScene(this.container, this.renderer, false);
48106
+ this.currentScene = new baseScene(this.container, this.renderer, {
48107
+ alpha: false,
48108
+ });
48116
48109
  }
48117
48110
  this.currentScene.sceneName = "default";
48118
48111
  !!this.currentScene.vignette &&
@@ -48197,11 +48190,11 @@
48197
48190
  bgColor1Ctrl.onChange(() => this.currentScene.updateBackground(this.state.bgColor1, this.state.bgColor2));
48198
48191
  bgColor2Ctrl.onChange(() => this.currentScene.updateBackground(this.state.bgColor1, this.state.bgColor2));
48199
48192
  // camera
48200
- if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.camera) {
48193
+ if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.cameraGui) {
48201
48194
  this.cameraFolder = gui.addFolder("Camera");
48202
48195
  }
48203
48196
  // Performance
48204
- if ((_b = this.options) === null || _b === void 0 ? void 0 : _b.performance) {
48197
+ if ((_b = this.options) === null || _b === void 0 ? void 0 : _b.performanceGui) {
48205
48198
  const perfFolder = gui.addFolder("Performance");
48206
48199
  const perfLi = document.createElement("li");
48207
48200
  this.stats.dom.style.position = "static";
@@ -48210,7 +48203,7 @@
48210
48203
  perfFolder.__ul.appendChild(perfLi);
48211
48204
  }
48212
48205
  // lights
48213
- if ((_c = this.options) === null || _c === void 0 ? void 0 : _c.light) {
48206
+ if ((_c = this.options) === null || _c === void 0 ? void 0 : _c.lightGui) {
48214
48207
  const lightFolder = gui.addFolder("LightsFolder");
48215
48208
  [
48216
48209
  lightFolder.add(this.state, "addLights").listen(),
@@ -56255,11 +56248,8 @@
56255
56248
  }
56256
56249
 
56257
56250
  class copperScene extends baseScene {
56258
- // private preRenderCallbackFunctions: Array<preRenderCallbackFunctionType> = [];
56259
- // private preRenderCallbackFunctions: preRenderCallbackFunctionType;
56260
- // private sort: boolean = true; //default ascending order
56261
- constructor(container, renderer, controls, alpha) {
56262
- super(container, renderer, alpha);
56251
+ constructor(container, renderer, opt) {
56252
+ super(container, renderer, opt);
56263
56253
  this.clock = new Clock();
56264
56254
  // isHalfed: boolean = false;
56265
56255
  this.mixer = null;
@@ -56267,12 +56257,11 @@
56267
56257
  this.modelReady = false;
56268
56258
  // rayster pick
56269
56259
  // texture2d
56270
- // private depthStep: number = 0.4;
56271
56260
  this.texture2dMesh = null;
56272
- if (controls === "trackball") {
56261
+ if ((opt === null || opt === void 0 ? void 0 : opt.controls) === "trackball") {
56273
56262
  this.controls = new TrackballControls(this.camera, this.renderer.domElement);
56274
56263
  }
56275
- else if (controls === "orbit") {
56264
+ else if ((opt === null || opt === void 0 ? void 0 : opt.controls) === "orbit") {
56276
56265
  this.controls = new OrbitControls(this.camera, this.renderer.domElement);
56277
56266
  }
56278
56267
  else {
@@ -56515,13 +56504,12 @@
56515
56504
  }
56516
56505
  updateControls(camera) {
56517
56506
  this.controls.dispose();
56518
- this.controls = new OrbitControls(camera, this.renderer.domElement);
56507
+ this.controls = new Copper3dTrackballControls(camera, this.renderer.domElement);
56519
56508
  // this.controls.target.set(64, 64, 128);
56520
56509
  this.controls.target.set(0, 0, 0);
56521
56510
  this.controls.minZoom = 0.5;
56522
56511
  this.controls.maxZoom = 4;
56523
56512
  // this.controls.enablePan = false;
56524
- this.controls.update();
56525
56513
  }
56526
56514
  onRenderCameraChange() {
56527
56515
  const { width, height } = this.container.getBoundingClientRect();
@@ -56535,7 +56523,6 @@
56535
56523
  else {
56536
56524
  this.camera.aspect = aspect;
56537
56525
  }
56538
- this.camera.updateProjectionMatrix();
56539
56526
  }
56540
56527
  render() {
56541
56528
  this.controls.update();
@@ -56583,13 +56570,17 @@
56583
56570
  }
56584
56571
  }
56585
56572
  createScene(name) {
56586
- var _a, _b;
56573
+ var _a, _b, _c;
56587
56574
  if (this.sceneMap[name] != undefined) {
56588
56575
  return undefined;
56589
56576
  }
56590
56577
  else {
56591
56578
  const alpha = !!((_a = this.options) === null || _a === void 0 ? void 0 : _a.alpha);
56592
- const new_scene = new copperScene(this.container, this.renderer, (_b = this.options) === null || _b === void 0 ? void 0 : _b.controls, alpha);
56579
+ const new_scene = new copperScene(this.container, this.renderer, {
56580
+ camera: (_b = this.options) === null || _b === void 0 ? void 0 : _b.cameraType,
56581
+ controls: (_c = this.options) === null || _c === void 0 ? void 0 : _c.controls,
56582
+ alpha: alpha,
56583
+ });
56593
56584
  new_scene.sceneName = name;
56594
56585
  this.updateEnvironment(new_scene.vignette);
56595
56586
  this.sceneMap[name] = new_scene;
@@ -56733,9 +56724,6 @@
56733
56724
  constructor(container, options) {
56734
56725
  super(container, options);
56735
56726
  this.sceneMap = {};
56736
- // addGui(): void {
56737
- // console.log("hello");
56738
- // }
56739
56727
  this.animate = () => {
56740
56728
  this.render();
56741
56729
  this.stats.update();
@@ -67843,8 +67831,6 @@
67843
67831
  this.allSlicesArray[0].x.volume.dimensions[1];
67844
67832
  this.nrrd_states.nrrd_z_pixel =
67845
67833
  this.allSlicesArray[0].x.volume.dimensions[2];
67846
- console.log("mm", this.nrrd_states.nrrd_x_mm);
67847
- console.log("pixel", this.nrrd_states.nrrd_x_pixel);
67848
67834
  this.nrrd_states.voxelSpacing = this.allSlicesArray[0].x.volume.spacing;
67849
67835
  this.nrrd_states.ratios.x = this.allSlicesArray[0].x.volume.spacing[0];
67850
67836
  this.nrrd_states.ratios.y = this.allSlicesArray[0].x.volume.spacing[1];
@@ -69779,8 +69765,8 @@
69779
69765
  }
69780
69766
 
69781
69767
  // import * as kiwrious from "copper3d_plugin_heart_k";
69782
- const REVISION = "v1.15.3";
69783
- console.log("%cCopper3D Visualisation %cBeta:v1.15.3", "padding: 3px;color:white; background:#023047", "padding: 3px;color:white; background:#f50a25");
69768
+ const REVISION = "v1.15.8";
69769
+ console.log("%cCopper3D Visualisation %cBeta:v1.15.8", "padding: 3px;color:white; background:#023047", "padding: 3px;color:white; background:#f50a25");
69784
69770
 
69785
69771
  exports.CameraViewPoint = CameraViewPoint;
69786
69772
  exports.Copper3dTrackballControls = Copper3dTrackballControls;
package/dist/index.d.ts CHANGED
@@ -16,6 +16,6 @@ import { nrrd_tools } from "./Utils/nrrd_tool";
16
16
  import { Copper3dTrackballControls } from "./Controls/Copper3dTrackballControls";
17
17
  import { nrrdMeshesType, nrrdSliceType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, loadingBarType, paintImageType, exportPaintImageType, IOptVTKLoader } from "./types/types";
18
18
  import "./css/style.css";
19
- export declare const REVISION = "v1.15.3";
19
+ export declare const REVISION = "v1.15.8";
20
20
  export { copperRenderer, copperRendererOnDemond, copperMSceneRenderer, setHDRFilePath, addLabelToScene, convert3DPostoScreenPos, convertScreenPosto3DPos, addBoxHelper, fullScreenListenner, configKiwriousHeart, copperScene, copperSceneOnDemond, copperMScene, CameraViewPoint, kiwrious, nrrd_tools, loading, Copper3dTrackballControls, createTexture2D_NRRD, };
21
21
  export type { positionType, screenPosType, optsType, nrrdMeshesType, nrrdSliceType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, loadingBarType, paintImageType, exportPaintImageType, IOptVTKLoader, };
package/dist/index.js CHANGED
@@ -16,7 +16,7 @@ import kiwrious from "./Utils/kiwrious/configKiwrious";
16
16
  import { nrrd_tools } from "./Utils/nrrd_tool";
17
17
  import { Copper3dTrackballControls } from "./Controls/Copper3dTrackballControls";
18
18
  import "./css/style.css";
19
- export const REVISION = "v1.15.3";
20
- console.log("%cCopper3D Visualisation %cBeta:v1.15.3", "padding: 3px;color:white; background:#023047", "padding: 3px;color:white; background:#f50a25");
19
+ export const REVISION = "v1.15.8";
20
+ console.log("%cCopper3D Visualisation %cBeta:v1.15.8", "padding: 3px;color:white; background:#023047", "padding: 3px;color:white; background:#f50a25");
21
21
  export { copperRenderer, copperRendererOnDemond, copperMSceneRenderer, setHDRFilePath, addLabelToScene, convert3DPostoScreenPos, convertScreenPosto3DPos, addBoxHelper, fullScreenListenner, configKiwriousHeart, copperScene, copperSceneOnDemond, copperMScene, CameraViewPoint, kiwrious, nrrd_tools, loading, Copper3dTrackballControls, createTexture2D_NRRD, };
22
22
  //# sourceMappingURL=index.js.map
@@ -4,7 +4,7 @@ import baseScene from "../Scene/baseScene";
4
4
  import { customMeshType } from "../lib/three-vignette";
5
5
  import Stats from "three/examples/jsm/libs/stats.module";
6
6
  import { GUI } from "dat.gui";
7
- import { optType } from "../types/types";
7
+ import { ICopperRenderOpt } from "../types/types";
8
8
  export default class baseRenderer {
9
9
  container: HTMLDivElement;
10
10
  renderer: THREE.WebGLRenderer;
@@ -12,12 +12,12 @@ export default class baseRenderer {
12
12
  stats: Stats;
13
13
  currentScene: baseScene;
14
14
  pmremGenerator: THREE.PMREMGenerator;
15
- options: optType | undefined;
15
+ options: ICopperRenderOpt | undefined;
16
16
  private state;
17
17
  private visualiseFolder;
18
18
  private visualCtrls;
19
19
  private cameraFolder;
20
- constructor(container: HTMLDivElement, options?: optType);
20
+ constructor(container: HTMLDivElement, options?: ICopperRenderOpt);
21
21
  init(): void;
22
22
  updateEnvironment(vignette?: customMeshType): void;
23
23
  private getCubeMapTexture;
@@ -1,10 +1,10 @@
1
1
  import baseRenderer from "./baseRenderer";
2
2
  import copperScene from "../Scene/copperScene";
3
- import { optType } from "../types/types";
3
+ import { ICopperRenderOpt } from "../types/types";
4
4
  export default class copperRenderer extends baseRenderer {
5
5
  private sceneMap;
6
6
  preRenderCallbackFunctions: Array<Function>;
7
- constructor(container: HTMLDivElement, options?: optType);
7
+ constructor(container: HTMLDivElement, options?: ICopperRenderOpt);
8
8
  getSceneByName(name: string): copperScene | import("../Scene/baseScene").default | import("../index").copperMScene;
9
9
  setCurrentScene(sceneIn: copperScene): void;
10
10
  createScene(name: string): copperScene | undefined;
@@ -1,10 +1,10 @@
1
1
  import baseRenderer from "./baseRenderer";
2
2
  import copperScene from "../Scene/copperScene";
3
- import { optType } from "../types/types";
3
+ import { ICopperRenderOpt } from "../types/types";
4
4
  import copperSceneOnDemond from "../Scene/copperSceneOnDemond";
5
5
  export default class copperRendererOnDemond extends baseRenderer {
6
6
  private sceneMap;
7
- constructor(container: HTMLDivElement, options?: optType);
7
+ constructor(container: HTMLDivElement, options?: ICopperRenderOpt);
8
8
  getSceneByName(name: string): copperScene | import("../Scene/baseScene").default | import("../index").copperMScene;
9
9
  setCurrentScene(sceneIn: copperSceneOnDemond): void;
10
10
  createScene(name: string): copperSceneOnDemond | undefined;
@@ -1,7 +1,7 @@
1
1
  import * as THREE from "three";
2
2
  import { Controls, CameraViewPoint } from "../Controls/copperControls";
3
3
  import { customMeshType } from "../lib/three-vignette";
4
- import { baseStateType } from "../types/types";
4
+ import { baseStateType, ICopperSceneOpts } from "../types/types";
5
5
  import commonScene from "./commonSceneMethod";
6
6
  export default class baseScene extends commonScene {
7
7
  renderer: THREE.WebGLRenderer;
@@ -18,7 +18,7 @@ export default class baseScene extends commonScene {
18
18
  private color1;
19
19
  private color2;
20
20
  private lights;
21
- constructor(container: HTMLDivElement, renderer: THREE.WebGLRenderer, alpha?: boolean);
21
+ constructor(container: HTMLDivElement, renderer: THREE.WebGLRenderer, opt?: ICopperSceneOpts);
22
22
  init(): void;
23
23
  loadMetadataUrl(url: string): void;
24
24
  loadViewUrl(url: string): void;
@@ -1,4 +1,4 @@
1
- import { preRenderCallbackFunctionType, nrrdMeshesType, nrrdSliceType, loadingBarType, dicomLoaderOptsType, mouseMovePositionType } from "../types/types";
1
+ import { preRenderCallbackFunctionType, nrrdMeshesType, nrrdSliceType, loadingBarType, dicomLoaderOptsType, mouseMovePositionType, ICopperSceneOpts } from "../types/types";
2
2
  import * as THREE from "three";
3
3
  import { GUI } from "dat.gui";
4
4
  import { optsType } from "../Loader/copperNrrdLoader";
@@ -10,6 +10,8 @@ export default class commonScene {
10
10
  container: HTMLDivElement;
11
11
  scene: THREE.Scene;
12
12
  camera: THREE.PerspectiveCamera | THREE.OrthographicCamera;
13
+ copperPerspectiveCamera: THREE.PerspectiveCamera;
14
+ copperOrthographicCamera: THREE.OrthographicCamera;
13
15
  subDiv: HTMLDivElement | null;
14
16
  subScene: THREE.Scene;
15
17
  subCamera: THREE.PerspectiveCamera | null;
@@ -21,7 +23,7 @@ export default class commonScene {
21
23
  protected sort: boolean;
22
24
  protected depthStep: number;
23
25
  protected pickableObjects: THREE.Mesh[];
24
- constructor(container: HTMLDivElement);
26
+ constructor(container: HTMLDivElement, opt?: ICopperSceneOpts);
25
27
  createDemoMesh(): void;
26
28
  addObject(obj: any): void;
27
29
  setDepth(value: number): void;
@@ -5,6 +5,7 @@ import { OrbitControls } from "three/examples/jsm/controls/OrbitControls";
5
5
  import baseScene from "./baseScene";
6
6
  import { vtkModels } from "../types/types";
7
7
  import { TrackballControls } from "three/examples/jsm/controls/TrackballControls";
8
+ import { ICopperSceneOpts } from "../types/types";
8
9
  export default class copperScene extends baseScene {
9
10
  clock: THREE.Clock;
10
11
  controls: Copper3dTrackballControls | OrbitControls | TrackballControls;
@@ -13,7 +14,7 @@ export default class copperScene extends baseScene {
13
14
  private modelReady;
14
15
  private clipAction;
15
16
  private texture2dMesh;
16
- constructor(container: HTMLDivElement, renderer: THREE.WebGLRenderer, controls?: "copper3d" | "orbit" | "trackball", alpha?: boolean);
17
+ constructor(container: HTMLDivElement, renderer: THREE.WebGLRenderer, opt?: ICopperSceneOpts);
17
18
  loadGltf(url: string, callback?: (content: THREE.Group) => void): void;
18
19
  loadVtk(url: string): void;
19
20
  loadVtks(models: Array<vtkModels>): void;
@@ -16,6 +16,6 @@ import { nrrd_tools } from "./Utils/nrrd_tool";
16
16
  import { Copper3dTrackballControls } from "./Controls/Copper3dTrackballControls";
17
17
  import { nrrdMeshesType, nrrdSliceType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, loadingBarType, paintImageType, exportPaintImageType, IOptVTKLoader } from "./types/types";
18
18
  import "./css/style.css";
19
- export declare const REVISION = "v1.15.3";
19
+ export declare const REVISION = "v1.15.8";
20
20
  export { copperRenderer, copperRendererOnDemond, copperMSceneRenderer, setHDRFilePath, addLabelToScene, convert3DPostoScreenPos, convertScreenPosto3DPos, addBoxHelper, fullScreenListenner, configKiwriousHeart, copperScene, copperSceneOnDemond, copperMScene, CameraViewPoint, kiwrious, nrrd_tools, loading, Copper3dTrackballControls, createTexture2D_NRRD, };
21
21
  export type { positionType, screenPosType, optsType, nrrdMeshesType, nrrdSliceType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, loadingBarType, paintImageType, exportPaintImageType, IOptVTKLoader, };
@@ -5,13 +5,14 @@ import { GUI } from "dat.gui";
5
5
  interface SceneMapType {
6
6
  [key: string]: copperScene | baseScene | copperMScene;
7
7
  }
8
- interface optType {
8
+ interface ICopperRenderOpt {
9
9
  guiOpen: boolean;
10
- camera?: boolean;
11
- performance?: boolean;
12
- light?: boolean;
10
+ cameraGui?: boolean;
11
+ performanceGui?: boolean;
12
+ lightGui?: boolean;
13
13
  alpha?: boolean;
14
14
  controls?: "copper3d" | "trackball" | "orbit";
15
+ cameraType?: "perspective" | "orthographic";
15
16
  [key: string]: string | boolean | undefined;
16
17
  }
17
18
  interface stateType {
@@ -77,6 +78,11 @@ interface HeartRateResult_kiwrious {
77
78
  status: string;
78
79
  value?: number;
79
80
  }
81
+ interface ICopperSceneOpts {
82
+ controls?: "copper3d" | "orbit" | "trackball";
83
+ camera?: "perspective" | "orthographic";
84
+ alpha?: boolean;
85
+ }
80
86
  declare class SerialService_kiwrious {
81
87
  onSerialData?: (data: SensorReadResult_kiwrious) => void;
82
88
  onSerialConnection?: (connect: boolean) => void;
@@ -196,4 +202,4 @@ interface IOptVTKLoader {
196
202
  transparent?: boolean;
197
203
  opacity?: number;
198
204
  }
199
- export type { SceneMapType, optType, stateType, modelVisualisationDataType, preRenderCallbackFunctionType, baseStateType, nrrdMeshesType, nrrdSliceType, nrrdDragImageOptType, nrrdDrawImageOptType, loadingBarType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, SerialService_kiwrious, kiwriousType, mouseMovePositionType, positionType, paintImagesType, paintImageType, storedPaintImagesType, optionsGltfExporterType, vtkModels, undoType, copperVolumeType, dicomLoaderOptsType, skipSlicesDictType, exportPaintImagesType, exportPaintImageType, storeExportPaintImageType, IOptVTKLoader, };
205
+ export type { SceneMapType, ICopperRenderOpt, stateType, modelVisualisationDataType, preRenderCallbackFunctionType, baseStateType, nrrdMeshesType, nrrdSliceType, nrrdDragImageOptType, nrrdDrawImageOptType, loadingBarType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, SerialService_kiwrious, kiwriousType, mouseMovePositionType, positionType, paintImagesType, paintImageType, storedPaintImagesType, optionsGltfExporterType, vtkModels, undoType, copperVolumeType, dicomLoaderOptsType, skipSlicesDictType, exportPaintImagesType, exportPaintImageType, storeExportPaintImageType, IOptVTKLoader, ICopperSceneOpts, };