@combeenation/3d-viewer 4.1.0 → 4.1.1-alpha1

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.
@@ -99,9 +99,6 @@ export declare class Viewer extends EventBroadcaster {
99
99
  * Calculates the bounding box from all visible meshes on the scene.
100
100
  */
101
101
  calculateBoundingBox(): Promise<Mesh>;
102
- /**
103
- * Focuses the camera to see every visible mesh in scene and tries to optimize wheel precision and panning.
104
- */
105
102
  autofocusActiveCamera(settings?: AutofocusSettings): Promise<void>;
106
103
  /**
107
104
  * Resets everything by calling {@link destroy} to clear all references and {@link bootstrap} to setup a clean
@@ -128,4 +125,12 @@ export declare class Viewer extends EventBroadcaster {
128
125
  * Batch creation of multiple {@link VariantInstance} objects with a {@link SetupJson} object passed
129
126
  */
130
127
  protected createVariantInstances(): Promise<VariantInstance[]>;
128
+ /**
129
+ * Help function for focusing a helper camera exactly onto the given bounding box
130
+ */
131
+ private getFocusedHelperCamera;
132
+ /**
133
+ * Help function for applying the relevant data of the focused helper camera to the real camera
134
+ */
135
+ private applyFocusedHelperCameraData;
131
136
  }
@@ -345,57 +345,32 @@ var Viewer = /** @class */ (function (_super) {
345
345
  });
346
346
  });
347
347
  };
348
- /**
349
- * Focuses the camera to see every visible mesh in scene and tries to optimize wheel precision and panning.
350
- */
351
348
  Viewer.prototype.autofocusActiveCamera = function (settings) {
352
- var _a;
353
349
  return tslib_1.__awaiter(this, void 0, void 0, function () {
354
- var activeCamera, boundingBox, size, radius, helperCamera, cameraClsName;
355
- return tslib_1.__generator(this, function (_b) {
356
- switch (_b.label) {
350
+ var activeCamera, cameraClsName, boundingBox, helperCamera;
351
+ return tslib_1.__generator(this, function (_a) {
352
+ switch (_a.label) {
357
353
  case 0:
358
354
  activeCamera = this.scene.activeCamera;
359
355
  if (!activeCamera) {
360
- throw new Error('No active camera found when using autofocus feature.');
356
+ throw new Error("No active camera found when using autofocus feature.");
357
+ }
358
+ if (!(activeCamera instanceof arcRotateCamera_1.ArcRotateCamera)) {
359
+ cameraClsName = activeCamera.getClassName();
360
+ throw new Error("Camera of type \"" + cameraClsName + "\" is not implemented yet to use autofocus feature.");
361
361
  }
362
- if (!(activeCamera instanceof arcRotateCamera_1.ArcRotateCamera)) return [3 /*break*/, 2];
363
362
  return [4 /*yield*/, this.calculateBoundingBox()];
364
363
  case 1:
365
- boundingBox = _b.sent();
366
- size = boundingBox.getBoundingInfo().maximum.subtract(boundingBox.getBoundingInfo().minimum);
367
- radius = size.length() * ((_a = settings === null || settings === void 0 ? void 0 : settings.radiusFactor) !== null && _a !== void 0 ? _a : 1.5);
368
- if (!isFinite(radius)) {
369
- radius = 1;
370
- }
371
- helperCamera = new arcRotateCamera_1.ArcRotateCamera('__helper_camera__', Math.PI / -2, Math.PI / 2, radius, math_vector_1.Vector3.Zero(), this.scene);
372
- helperCamera.useFramingBehavior = true;
373
- helperCamera.setTarget(boundingBox);
374
- // translate values from helper to active camera
375
- activeCamera.setTarget(mesh_1.Mesh.Center([boundingBox]));
376
- activeCamera.alpha = helperCamera.alpha;
377
- activeCamera.beta = helperCamera.beta;
378
- activeCamera.minZ = helperCamera.minZ;
379
- activeCamera.maxZ = helperCamera.maxZ;
380
- activeCamera.radius = helperCamera.radius;
381
- activeCamera.lowerRadiusLimit = helperCamera.lowerRadiusLimit;
382
- activeCamera.upperRadiusLimit = helperCamera.upperRadiusLimit;
383
- if ((settings === null || settings === void 0 ? void 0 : settings.adjustWheelPrecision) !== false) {
384
- activeCamera.wheelPrecision = helperCamera.wheelPrecision;
385
- }
386
- if ((settings === null || settings === void 0 ? void 0 : settings.adjustPanningSensibility) !== false) {
387
- activeCamera.panningSensibility = helperCamera.panningSensibility;
388
- }
389
- if ((settings === null || settings === void 0 ? void 0 : settings.adjustPinchPrecision) !== false) {
390
- activeCamera.pinchPrecision = helperCamera.pinchPrecision;
391
- }
364
+ boundingBox = _a.sent();
365
+ helperCamera = this.getFocusedHelperCamera(boundingBox, settings);
366
+ return [4 /*yield*/, this.applyFocusedHelperCameraData(activeCamera, helperCamera, settings)
367
+ // remove the helper camera
368
+ ];
369
+ case 2:
370
+ _a.sent();
392
371
  // remove the helper camera
393
372
  helperCamera.dispose();
394
- return [3 /*break*/, 3];
395
- case 2:
396
- cameraClsName = activeCamera.getClassName();
397
- throw new Error("Camera of type \"" + cameraClsName + "\" is not implemented yet to use autofocus feature.");
398
- case 3: return [2 /*return*/];
373
+ return [2 /*return*/];
399
374
  }
400
375
  });
401
376
  });
@@ -561,6 +536,72 @@ var Viewer = /** @class */ (function (_super) {
561
536
  });
562
537
  });
563
538
  };
539
+ /**
540
+ * Help function for focusing a helper camera exactly onto the given bounding box
541
+ */
542
+ Viewer.prototype.getFocusedHelperCamera = function (boundingBox, settings) {
543
+ var _a, _b;
544
+ // use helper camera to get some default values and set the values of the real camera accordingly
545
+ var helperCamera = new arcRotateCamera_1.ArcRotateCamera("__helper_camera__", 0, // camera angles will be overwritten after the target has been set
546
+ 0, 0, // radius will be calculated, so we can set to 0 here
547
+ math_vector_1.Vector3.Zero(), this.scene);
548
+ // this is required for automatically calculating the `lowerRadiusLimit`, so that we don't "dive" into meshes
549
+ // see https://doc.babylonjs.com/divingDeeper/behaviors/cameraBehaviors#framing-behavior
550
+ helperCamera.useFramingBehavior = true;
551
+ // `minZ` is the camera distance beyond which the mesh will be clipped
552
+ // this should be very low, but can't be zero
553
+ // a good value seems to be 1% of the bounding box size (= radius), whereas the value shouldn't go above 1, which is also the default value
554
+ var radius = boundingBox.getBoundingInfo().boundingSphere.radius;
555
+ helperCamera.minZ = Math.min(radius / 100, 1);
556
+ // set desired camera data, these won't be changed by the autofocus function!
557
+ // default values should focus the element exactly from the front (= XY Plane)
558
+ helperCamera.setTarget(boundingBox, true);
559
+ helperCamera.alpha = ((_a = settings === null || settings === void 0 ? void 0 : settings.alpha) !== null && _a !== void 0 ? _a : -90) * (Math.PI / 180);
560
+ helperCamera.beta = ((_b = settings === null || settings === void 0 ? void 0 : settings.beta) !== null && _b !== void 0 ? _b : 90) * (Math.PI / 180);
561
+ // finally zoom to the bounding box
562
+ // also apply a zoom factor, this adjusts the borders around the model in the viewport
563
+ helperCamera.zoomOnFactor = (settings === null || settings === void 0 ? void 0 : settings.radiusFactor) || 1;
564
+ helperCamera.zoomOn([boundingBox], true);
565
+ return helperCamera;
566
+ };
567
+ /**
568
+ * Help function for applying the relevant data of the focused helper camera to the real camera
569
+ */
570
+ Viewer.prototype.applyFocusedHelperCameraData = function (activeCamera, helperCamera, settings) {
571
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
572
+ var newCameraPosition;
573
+ return tslib_1.__generator(this, function (_a) {
574
+ switch (_a.label) {
575
+ case 0:
576
+ // limits
577
+ activeCamera.minZ = helperCamera.minZ;
578
+ activeCamera.maxZ = helperCamera.maxZ;
579
+ activeCamera.lowerRadiusLimit = helperCamera.lowerRadiusLimit;
580
+ activeCamera.upperRadiusLimit = helperCamera.upperRadiusLimit;
581
+ // additional settings
582
+ if ((settings === null || settings === void 0 ? void 0 : settings.adjustWheelPrecision) !== false) {
583
+ activeCamera.wheelPrecision = helperCamera.wheelPrecision;
584
+ }
585
+ if ((settings === null || settings === void 0 ? void 0 : settings.adjustPanningSensibility) !== false) {
586
+ activeCamera.panningSensibility = helperCamera.panningSensibility;
587
+ }
588
+ if ((settings === null || settings === void 0 ? void 0 : settings.adjustPinchPrecision) !== false) {
589
+ activeCamera.pinchPrecision = helperCamera.pinchPrecision;
590
+ }
591
+ newCameraPosition = {
592
+ alpha: helperCamera.alpha,
593
+ beta: helperCamera.beta,
594
+ radius: helperCamera.radius,
595
+ target: helperCamera.target
596
+ };
597
+ return [4 /*yield*/, this.animationManager.animateToPlacement(activeCamera, newCameraPosition, settings === null || settings === void 0 ? void 0 : settings.animation)];
598
+ case 1:
599
+ _a.sent();
600
+ return [2 /*return*/];
601
+ }
602
+ });
603
+ });
604
+ };
564
605
  Viewer.version = buildinfo_json_1.version;
565
606
  return Viewer;
566
607
  }(eventBroadcaster_1.EventBroadcaster));
@@ -1 +1 @@
1
- {"version":3,"file":"viewer.js","sourceRoot":"","sources":["../../../../src/api/classes/viewer.ts"],"names":[],"mappings":";;;;AAAA,2EAA0E;AAE1E,qEAAoE;AACpE,yDAAwD;AACxD,wEAAuE;AACvE,+EAA8E;AAC9E,oFAAmF;AACnF,+DAA0D;AAC1D,iEAA4D;AAC5D,oDAAmD;AACnD,wEAAuE;AAEvE,uCAAqC;AACrC,uDAA+C;AAC/C,qDAAoD;AACpD,gEAA+D;AAC/D,wDAAuD;AACvD,4EAA2E;AAC3E,oDAAmD;AACnD,yDAAmE;AACnE,iCAAgC;AAChC,uDAAsD;AACtD,yCAAwC;AACxC,qCAAoC;AAIpC;;;;;;;;GAQG;AACH;IAA4B,kCAAgB;IAY3C;;OAEG;IACH,gBAAoC,MAAyB,EAAY,aAAqC;QAA9G,YACC,iBAAO,SACP;QAFmC,YAAM,GAAN,MAAM,CAAmB;QAAY,mBAAa,GAAb,aAAa,CAAwB;QAbpG,YAAM,GAAiB,IAAI,CAAC;QAE5B,uBAAiB,GAA4B,IAAI,CAAC;QAElD,mBAAa,GAAwB,IAAI,CAAC;QAE1C,uBAAiB,GAAkC,IAAI,CAAC;;IASlE,CAAC;IAOD,sBAAI,yBAAK;QALT;;;;WAIG;aACH;YACC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAG;gBAClB,MAAM,IAAI,KAAK,CAAE,iCAAiC,CAAE,CAAC;aACrD;YACD,OAAO,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;;;OAAA;IAED,sBAAI,gCAAY;aAAhB;YACC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAG;gBACzB,MAAM,IAAI,KAAK,CAAE,uCAAuC,CAAE,CAAC;aAC3D;YACD,OAAO,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAI,0BAAM;QAHV;;WAEG;aACH;YACC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAC/B,CAAC;;;OAAA;IAOD,sBAAI,oCAAgB;QALpB;;;;WAIG;aACH;YACC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAG;gBAC7B,MAAM,KAAK,CAAE,qCAAqC,CAAE,CAAC;aACrD;YACD,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAC/B,CAAC;;;OAAA;IAOD,sBAAI,oCAAgB;QALpB;;;;WAIG;aACH;YACC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAG;gBAC7B,MAAM,IAAI,KAAK,CAAE,wCAAwC,CAAE,CAAC;aAC5D;YACD,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAC/B,CAAC;;;OAAA;IAED;;;;;;;;;;;OAWG;IACU,0BAAS,GAAtB;;;;;;;wBACC,IAAI,CAAC,cAAc,CAAE,aAAK,CAAC,eAAe,EAAE,IAAI,CAAE,CAAC;6BAE/C,oBAAQ,CAAE,IAAI,CAAC,aAAa,CAAE,EAA9B,wBAA8B;wBACrB,qBAAM,yBAAQ,CAAiB,IAAI,CAAC,aAAa,CAAE,EAAA;;wBAA/D,SAAS,GAAG,SAAmD,CAAC;;;wBAEhE,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC;;;wBAEhC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAG;4BACtB,MAAM,IAAI,KAAK,CAAE,gDAA8C,CAAE,CAAC;yBAClE;wBACD,kBAAkB;wBAClB,yBAAW,CAAC,cAAc,CAAE,SAAS,CAAE,CAAC;6BAEpC,oBAAQ,CAAE,SAAS,CAAC,KAAK,CAAE,EAA3B,wBAA2B;wBACZ,qBAAM,yBAAQ,CAAa,SAAS,CAAC,KAAK,CAAE,EAAA;;wBAAxD,SAAS,GAAG,SAA4C;wBAC9D,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC;;;wBAE7B,KAAA,IAAI,CAAA;wBAAU,qBAAM,IAAI,CAAC,SAAS,EAAE,EAAA;;wBAApC,GAAK,MAAM,GAAG,SAAsB,CAAC;wBAEjB,qBAAM,iBAAO,CAAC,MAAM,CAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAE,EAAA;;wBAA1D,WAAW,GAAG,SAA4C;wBAChE,KAAA,IAAI,CAAA;wBAAqB,qBAAM,+CAAsB,CAAC,MAAM,CAAE,WAAW,CAAE,EAAA;;wBAA3E,GAAK,iBAAiB,GAAG,SAAkD,CAAC;6BAExE,SAAS,CAAC,KAAK,EAAf,yBAAe;6BACd,oBAAQ,CAAE,SAAS,CAAC,KAAK,CAAE,EAA3B,yBAA2B;wBACZ,qBAAM,yBAAQ,CAAa,SAAS,CAAC,KAAK,CAAE,EAAA;;wBAAxD,SAAS,GAAG,SAA4C;wBAC9D,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC;;6BAE7B,qBAAM,IAAI,CAAC,sBAAsB,EAAE,EAAA;;wBAAnC,SAAmC,CAAC;;;wBAErC,iBAAiB;wBACjB,MAAM,CAAC,gBAAgB,CAAE,QAAQ,EAAE,yBAAQ,CAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAE,IAAI,CAAE,EAAE,GAAG,CAAE,CAAE,CAAC;wBAC/E,uCAAuC;wBACvC,qBAAM,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAA;;wBADjC,uCAAuC;wBACvC,SAAiC,CAAC;wBAClC,qBAAqB;wBACrB,IAAI,CAAC,cAAc,CAAE,aAAK,CAAC,aAAa,EAAE,IAAI,CAAE,CAAC;wBACjD,cAAc;wBACd,IAAI,CAAC,MAAM,CAAC,aAAa,CAAE;4BAC1B,KAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;wBACrB,CAAC,CAAE,CAAC;wBACJ,sBAAO,IAAI,EAAC;;;;KACZ;IAED,4CAA4C;IAC5C,0DAA0D;IAC1D,MAAM;IACN,mHAAmH;IACnH,MAAM;IACN,iDAAiD;IACjD,kBAAkB;IAClB,mFAAmF;IACnF,+CAA+C;IAC/C,iBAAiB;IACjB,IAAI;IAEJ;;OAEG;IACI,wCAAuB,GAA9B;QAAA,iBAKC;QAJA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAE,UAAA,eAAe;YACjD,KAAI,CAAC,gBAAgB,CAAC,OAAO,CAAE,eAAe,CAAC,IAAI,CAAE,CAAC;QACvD,CAAC,CAAE,CAAC;QACJ,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;OAEG;IACI,uBAAM,GAAb;QACC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;OAGG;IACU,wBAAO,GAApB,UAAsB,mBAA2B,EAC3B,iBAAqC,EACrC,cAAkC;;;;;4BAC/B,qBAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAA;;wBAAtE,eAAe,GAAG,SAAoD;wBAC5E,sBAAO,eAAe,CAAC,OAAO,CAAE,iBAAiB,EAAE,cAAc,CAAE,EAAC;;;;KACpE;IAED;;;OAGG;IACU,wBAAO,GAApB,UAAsB,mBAA2B,EAC3B,iBAAqC,EACrC,cAAkC;;;;;4BAC/B,qBAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAA;;wBAAtE,eAAe,GAAG,SAAoD;wBAC5E,sBAAO,eAAe,CAAC,OAAO,CAAE,iBAAiB,EAAE,cAAc,CAAE,EAAC;;;;KACpE;IAED;;;;OAIG;IACI,6BAAY,GAAnB,UAAqB,SAAiB,EAAE,KAAqB;QAArB,sBAAA,EAAA,YAAqB;QAC5D,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAE,SAAS,CAAE,CAAC;QACvD,IAAI,MAAM,EAAG;YACZ,IAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;YAC7C,IAAI,YAAY,EAAG;gBAClB,YAAY,CAAC,aAAa,CAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAG,CAAE,CAAC;aAChE;YACD,IAAI,KAAK,EAAG;gBACX,MAAM,CAAC,YAAY,EAAE,CAAC;aACtB;YACD,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAE,SAAS,CAAE,CAAC;YAC9C,MAAM,CAAC,aAAa,CAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAG,CAAE,CAAC;YAC1D,IAAI,CAAC,cAAc,CAAE,aAAK,CAAC,eAAe,EAAE,MAAM,CAAE,CAAC;SACrD;aAAM;YACN,MAAM,IAAI,KAAK,CAAE,oBAAiB,SAAS,kBAAc,CAAE,CAAC;SAC5D;QACD,6DAA6D;QAC7D,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;OAEG;IACU,mCAAkB,GAA/B,UAAiC,SAAuC,EACvC,SAAwC;;;gBACxE,sBAAO,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAE,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,CAAE,EAAC;;;KACxG;IAED;;OAEG;IACI,2BAAU,GAAjB,UAAmB,QAA6B;QAAhD,iBAqBC;QApBA,OAAO,IAAI,OAAO,CAAE,UAAE,OAAO,EAAE,MAAM;;YACpC,IAAI,CAAC,KAAI,CAAC,MAAM,EAAG;gBAClB,OAAO,MAAM,CAAE,gBAAgB,CAAE,CAAC;aAClC;YACD,IAAI,CAAC,KAAI,CAAC,KAAK,EAAG;gBACjB,OAAO,MAAM,CAAE,eAAe,CAAE,CAAC;aACjC;YACD,KAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAE,oGAAoG;YAC1H,iCAAe,CAAC,iCAAiC,CAChD,KAAI,CAAC,MAAM,EACX,KAAI,CAAC,YAAY,CAAC,YAAY,QAC9B,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,mCAAI,EAAE,KAAK,EAAE,KAAI,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,KAAI,CAAC,MAAM,CAAC,YAAY,EAAE,EACtF,OAAO,QACP,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,mCAAI,WAAW,QACjC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,mCAAI,CAAC,QACtB,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,YAAY,mCAAI,KAAK,QAC/B,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,mCAAI,gBAAgB,QACtC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,aAAa,mCAAI,KAAK,CAChC,CAAC;QACH,CAAC,CAAE,CAAC;IACL,CAAC;IAED;;OAEG;IACU,qCAAoB,GAAjC;;;;gBACC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAG;oBACpC,MAAM,IAAI,KAAK,CAAE,6CAA6C,CAAE,CAAC;iBACjE;gBACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAE,iEAAiE;gBACjF,MAAM,GAAG,kBAAkB,CAAC;gBAE5B,KAAe,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAE,UAAA,IAAI;oBAClD,IAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnC,wEAAwE;oBACxE,IAAM,aAAa,GAAG,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC;oBACzC,4CAA4C;oBAC5C,IAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;oBAC1E,OAAO,SAAS,IAAI,aAAa,IAAI,gBAAgB,CAAC;gBACvD,CAAC,CAAE,CAAC,MAAM,CAAE,UAAE,aAAa,EAAE,OAAO,EAAE,GAAG;oBACxC,IAAM,IAAI,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,WAAW,CAAC;oBACnD,iGAAiG;oBACjG,IAAM,GAAG,GAAG,CAAE,GAAG,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,qBAAO,CAAC,QAAQ,CAAE,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAE,CAAA;oBACxG,IAAM,GAAG,GAAG,CAAE,GAAG,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,qBAAO,CAAC,QAAQ,CAAE,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAE,CAAA;oBACxG,OAAO,EAAE,GAAG,KAAA,EAAE,GAAG,KAAA,EAAE,CAAA;gBACpB,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,qBAAO,EAAE,EAAE,GAAG,EAAE,IAAI,qBAAO,EAAE,EAAE,CAAE,EAbvC,GAAG,SAAA,EAAE,GAAG,SAAA,CAagC;gBAE5C,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAE,MAAM,CAAU,CAAC;gBAC7D,IAAI,CAAC,WAAW,EAAG;oBAClB,WAAW,GAAG,IAAI,WAAI,CAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAE,CAAC;iBAC7C;gBACD,WAAW,CAAC,eAAe,CAAE,IAAI,2BAAY,CAAE,GAAG,EAAE,GAAG,CAAE,CAAE,CAAC;gBAC5D,sBAAO,WAAW,EAAC;;;KACnB;IAED;;OAEG;IACU,sCAAqB,GAAlC,UAAoC,QAA4B;;;;;;;wBACzD,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;wBAC7C,IAAI,CAAC,YAAY,EAAG;4BACnB,MAAM,IAAI,KAAK,CAAE,sDAAsD,CAAE,CAAC;yBAC1E;6BACG,CAAA,YAAY,YAAY,iCAAe,CAAA,EAAvC,wBAAuC;wBAEtB,qBAAM,IAAI,CAAC,oBAAoB,EAAE,EAAA;;wBAA/C,WAAW,GAAG,SAAiC;wBAC/C,IAAI,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAE,WAAW,CAAC,eAAe,EAAE,CAAC,OAAO,CAAE,CAAC;wBACjG,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,OAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,YAAY,mCAAI,GAAG,CAAC,CAAC;wBAC7D,IAAI,CAAC,QAAQ,CAAE,MAAM,CAAE,EAAG;4BACzB,MAAM,GAAG,CAAC,CAAC;yBACX;wBAEK,YAAY,GAAG,IAAI,iCAAe,CACvC,mBAAmB,EACnB,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EACZ,IAAI,CAAC,EAAE,GAAG,CAAC,EACX,MAAM,EACN,qBAAO,CAAC,IAAI,EAAE,EACd,IAAI,CAAC,KAAK,CACV,CAAC;wBACF,YAAY,CAAC,kBAAkB,GAAG,IAAI,CAAC;wBACvC,YAAY,CAAC,SAAS,CAAE,WAAW,CAAE,CAAC;wBACtC,gDAAgD;wBAChD,YAAY,CAAC,SAAS,CAAE,WAAI,CAAC,MAAM,CAAE,CAAC,WAAW,CAAC,CAAE,CAAE,CAAC;wBACvD,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;wBACxC,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;wBACtC,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;wBACtC,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;wBACtC,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;wBAC1C,YAAY,CAAC,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,CAAC;wBAC9D,YAAY,CAAC,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,CAAC;wBAC9D,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,oBAAoB,MAAK,KAAK,EAAG;4BAC9C,YAAY,CAAC,cAAc,GAAG,YAAY,CAAC,cAAc,CAAC;yBAC1D;wBACD,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,wBAAwB,MAAK,KAAK,EAAG;4BAClD,YAAY,CAAC,kBAAkB,GAAG,YAAY,CAAC,kBAAkB,CAAC;yBAClE;wBACD,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,oBAAoB,MAAK,KAAK,EAAG;4BAC9C,YAAY,CAAC,cAAc,GAAG,YAAY,CAAC,cAAc,CAAC;yBAC1D;wBACD,2BAA2B;wBAC3B,YAAY,CAAC,OAAO,EAAE,CAAC;;;wBAEjB,aAAa,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC;wBAClD,MAAM,IAAI,KAAK,CAAE,sBAAmB,aAAa,wDAAoD,CAAE,CAAC;;;;;KAEzG;IAED;;;OAGG;IACU,sBAAK,GAAlB;;;;4BACC,qBAAM,IAAI,CAAC,OAAO,EAAE,EAAA;;wBAApB,SAAoB,CAAC;wBACrB,sBAAO,IAAI,CAAC,SAAS,EAAE,EAAC;;;;KACxB;IAED;;;;;OAKG;IACI,wBAAO,GAAd;QACC,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACrB,yBAAW,CAAC,OAAO,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;OAEG;IACI,qCAAoB,GAA3B,UAA6B,SAAiB;QAC7C,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAM,aAAa,GAAG,UAAU,IAAY,EAAE,KAAa,EAAE,IAAY;YACxE,IAAM,cAAc,GAAG,IAAI,+BAAc,CAAE,gBAAgB,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAE,CAAC;YAC/E,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC;YAC/B,cAAc,CAAC,QAAQ,CAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,CAAE,CAAC;YACtF,IAAM,KAAK,GAAG,WAAI,CAAC,WAAW,CAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAE,CAAC;YACjE,KAAK,CAAC,QAAQ,GAAG,IAAI,mCAAgB,CAAE,mBAAmB,EAAE,KAAK,CAAE,CAAC;YACpE,KAAK,CAAC,QAAQ,CAAC,eAAe,GAAG,KAAK,CAAC;YACvC,aAAa;YACb,KAAK,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,mBAAM,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;YACrD,aAAa;YACb,KAAK,CAAC,QAAQ,CAAC,cAAc,GAAG,cAAc,CAAC;YAC/C,OAAO,KAAK,CAAC;QACd,CAAC,CAAC;QACF,IAAM,KAAK,GAAG,WAAI,CAAC,WAAW,CAAE,OAAO,EAAE;YACxC,qBAAO,CAAC,IAAI,EAAE;YACd,IAAI,qBAAO,CAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAE;YAC9B,IAAI,qBAAO,CAAE,SAAS,GAAG,IAAI,EAAE,IAAI,GAAG,SAAS,EAAE,CAAC,CAAE;YACpD,IAAI,qBAAO,CAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAE;YAC9B,IAAI,qBAAO,CAAE,SAAS,GAAG,IAAI,EAAE,CAAC,IAAI,GAAG,SAAS,EAAE,CAAC,CAAE;SACrD,EAAE,KAAK,CAAE,CAAC;QACX,KAAK,CAAC,KAAK,GAAG,IAAI,mBAAM,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;QACpC,IAAM,KAAK,GAAG,aAAa,CAAE,GAAG,EAAE,KAAK,EAAE,SAAS,GAAG,EAAE,CAAE,CAAC;QAC1D,KAAK,CAAC,QAAQ,GAAG,IAAI,qBAAO,CAAE,GAAG,GAAG,SAAS,EAAE,CAAC,IAAI,GAAG,SAAS,EAAE,CAAC,CAAE,CAAC;QACtE,IAAM,KAAK,GAAG,WAAI,CAAC,WAAW,CAAE,OAAO,EAAE;YACxC,qBAAO,CAAC,IAAI,EAAE;YACd,IAAI,qBAAO,CAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAE;YAC9B,IAAI,qBAAO,CAAE,CAAC,IAAI,GAAG,SAAS,EAAE,SAAS,GAAG,IAAI,EAAE,CAAC,CAAE;YACrD,IAAI,qBAAO,CAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAE;YAC9B,IAAI,qBAAO,CAAE,IAAI,GAAG,SAAS,EAAE,SAAS,GAAG,IAAI,EAAE,CAAC,CAAE;SACpD,EAAE,KAAK,CAAE,CAAC;QACX,KAAK,CAAC,KAAK,GAAG,IAAI,mBAAM,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;QACpC,IAAM,KAAK,GAAG,aAAa,CAAE,GAAG,EAAE,OAAO,EAAE,SAAS,GAAG,EAAE,CAAE,CAAC;QAC5D,KAAK,CAAC,QAAQ,GAAG,IAAI,qBAAO,CAAE,CAAC,EAAE,GAAG,GAAG,SAAS,EAAE,CAAC,IAAI,GAAG,SAAS,CAAE,CAAC;QACtE,IAAM,KAAK,GAAG,WAAI,CAAC,WAAW,CAAE,OAAO,EAAE;YACxC,qBAAO,CAAC,IAAI,EAAE;YACd,IAAI,qBAAO,CAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAE;YAC9B,IAAI,qBAAO,CAAE,CAAC,EAAE,CAAC,IAAI,GAAG,SAAS,EAAE,SAAS,GAAG,IAAI,CAAE;YACrD,IAAI,qBAAO,CAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAE;YAC9B,IAAI,qBAAO,CAAE,CAAC,EAAE,IAAI,GAAG,SAAS,EAAE,SAAS,GAAG,IAAI,CAAE;SACpD,EAAE,KAAK,CAAE,CAAC;QACX,KAAK,CAAC,KAAK,GAAG,IAAI,mBAAM,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;QACpC,IAAM,KAAK,GAAG,aAAa,CAAE,GAAG,EAAE,MAAM,EAAE,SAAS,GAAG,EAAE,CAAE,CAAC;QAC3D,KAAK,CAAC,QAAQ,GAAG,IAAI,qBAAO,CAAE,CAAC,EAAE,IAAI,GAAG,SAAS,EAAE,GAAG,GAAG,SAAS,CAAE,CAAC;IACtE,CAAC;IAED;;;OAGG;IACa,0BAAS,GAAzB;;;;;;;;wBACO,SAAS,GAAG,yBAAW,CAAC,GAAG,CAAa,OAAO,CAAE,CAAC;wBACxD,IAAI,CAAC,cAAc,CAAE,aAAK,CAAC,sBAAsB,EAAE,SAAS,CAAE,CAAC;wBACzD,MAAM,GAAG,IAAI,eAAM,CACxB,IAAI,CAAC,MAA2B,cAChC,SAAS,CAAC,MAAM,0CAAE,YAAY,mCAAI,KAAK,QACvC,SAAS,CAAC,MAAM,0CAAE,OAAO,CACzB,CAAC;wBACY,qBAAM,uBAAU,CAAE,MAAM,EAAE,SAAS,CAAE,EAAA;;wBAA7C,KAAK,GAAG,SAAqC;wBACnD,IAAI,SAAS,CAAC,WAAW,EAAG;4BAC3B,IAAI,+BAAc,CAAE,SAAS,EAAE,KAAK,CAAE,CAAC;4BACvC,KAAK,CAAC,aAAa,GAAG,UAAE,YAA0B,EAAE,QAAqB;gCACxE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAG;oCACnB,OAAO;iCACP;gCACD,IAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC;gCACjC,KAAI,CAAC,cAAc,CAAE,aAAK,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,OAAO,CAAE,CAAC;gCAC/F,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,OAAO,EAAG;oCAC5B,KAAI,CAAC,cAAc,CAAE,aAAK,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAE,CAAC;iCACnE;gCACD,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,OAAO,EAAG;oCAC5B,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,qBAAS,CAAC,iBAAiB,CAAC,EAAG;wCAC5E,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;qCACxC;oCACD,KAAI,CAAC,cAAc,CAAE,aAAK,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAE,CAAC;iCACnE;4BACF,CAAC,CAAC;yBACF;wBACD,KAAA,IAAI,CAAA;wBAAiB,qBAAM,2BAAY,CAAC,MAAM,CAAE,KAAK,CAAE,EAAA;;wBAAvD,GAAK,aAAa,GAAG,SAAkC,CAAC;wBACxD,KAAA,IAAI,CAAA;wBAAqB,qBAAM,mCAAgB,CAAC,MAAM,CAAE,KAAK,CAAE,EAAA;;wBAA/D,GAAK,iBAAiB,GAAG,SAAsC,CAAC;wBAChE,IAAI,CAAC,cAAc,CAAE,aAAK,CAAC,oBAAoB,EAAE,KAAK,CAAE,CAAC;wBACzD,sBAAO,KAAK,EAAC;;;;KACb;IAED;;OAEG;IACa,uCAAsB,GAAtC;;;;;;wBACO,SAAS,GAAG,yBAAW,CAAC,GAAG,CAAa,OAAO,CAAE,CAAC;wBAClD,SAAS,GAAG,EAAE,CAAC;8BAC+B,EAAnB,KAAA,SAAS,CAAC,SAAS;;;6BAAnB,CAAA,cAAmB,CAAA;wBAAzC,kBAAkB;wBAC5B,IAAI,kBAAkB,CAAC,IAAI,EAAG;4BAC7B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAE,kBAAkB,CAAE,CAAC;4BACrD,wBAAS;yBACT;wBACD,KAAA,CAAA,KAAA,SAAS,CAAA,CAAC,IAAI,CAAA;wBAAE,qBAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CACjD,kBAAkB,CAAC,OAAO,EAC1B,kBAAkB,CAAC,IAAI,EACvB,kBAAkB,CAAC,UAAU,CAC7B,EAAA;;wBAJD,cAAgB,SAIf,EAAE,CAAC;;;wBAT4B,IAAmB,CAAA;;4BAWpD,sBAAO,SAAS,EAAC;;;;KACjB;IAvbM,cAAO,GAAG,wBAAO,CAAC;IAyb1B,aAAC;CAAA,AAncD,CAA4B,mCAAgB,GAmc3C;AAncY,wBAAM"}
1
+ {"version":3,"file":"viewer.js","sourceRoot":"","sources":["../../../../src/api/classes/viewer.ts"],"names":[],"mappings":"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"}
@@ -212,6 +212,11 @@ declare type AutofocusSettings = {
212
212
  adjustWheelPrecision?: boolean;
213
213
  adjustPanningSensibility?: boolean;
214
214
  adjustPinchPrecision?: boolean;
215
+ /** Desired camera angles, these won't be overwritten by the autofocus function, only the camera radius is adjusted */
216
+ alpha?: number;
217
+ beta?: number;
218
+ /** Optional animation for the focusing camera movement */
219
+ animation?: string | AnimationDefinition;
215
220
  };
216
221
  declare type LightDefinitions = {
217
222
  [name: string]: LightDefinition | string;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@combeenation/3d-viewer",
3
3
  "description": "Combeenation 3D Viewer",
4
- "version": "4.1.0",
4
+ "version": "4.1.1-alpha1",
5
5
  "homepage": "https://github.com/Combeenation/3d-viewer#readme",
6
6
  "keywords": [],
7
7
  "author": "",
@@ -302,57 +302,26 @@ export class Viewer extends EventBroadcaster {
302
302
  return boundingBox;
303
303
  }
304
304
 
305
- /**
306
- * Focuses the camera to see every visible mesh in scene and tries to optimize wheel precision and panning.
307
- */
308
305
  public async autofocusActiveCamera( settings?: AutofocusSettings ) {
306
+ // first check some preconditions
309
307
  const activeCamera = this.scene.activeCamera;
310
- if( !activeCamera ) {
311
- throw new Error( 'No active camera found when using autofocus feature.' );
308
+ if ( !activeCamera ) {
309
+ throw new Error("No active camera found when using autofocus feature.");
312
310
  }
313
- if( activeCamera instanceof ArcRotateCamera ) {
314
- // calculate some values
315
- const boundingBox = await this.calculateBoundingBox();
316
- const size = boundingBox.getBoundingInfo().maximum.subtract( boundingBox.getBoundingInfo().minimum );
317
- let radius = size.length() * (settings?.radiusFactor ?? 1.5);
318
- if( !isFinite( radius ) ) {
319
- radius = 1;
320
- }
321
- // use helper camera to get some default values
322
- const helperCamera = new ArcRotateCamera(
323
- '__helper_camera__',
324
- Math.PI / -2,
325
- Math.PI / 2,
326
- radius,
327
- Vector3.Zero(),
328
- this.scene
329
- );
330
- helperCamera.useFramingBehavior = true;
331
- helperCamera.setTarget( boundingBox );
332
- // translate values from helper to active camera
333
- activeCamera.setTarget( Mesh.Center( [boundingBox] ) );
334
- activeCamera.alpha = helperCamera.alpha;
335
- activeCamera.beta = helperCamera.beta;
336
- activeCamera.minZ = helperCamera.minZ;
337
- activeCamera.maxZ = helperCamera.maxZ;
338
- activeCamera.radius = helperCamera.radius;
339
- activeCamera.lowerRadiusLimit = helperCamera.lowerRadiusLimit;
340
- activeCamera.upperRadiusLimit = helperCamera.upperRadiusLimit;
341
- if( settings?.adjustWheelPrecision !== false ) {
342
- activeCamera.wheelPrecision = helperCamera.wheelPrecision;
343
- }
344
- if( settings?.adjustPanningSensibility !== false ) {
345
- activeCamera.panningSensibility = helperCamera.panningSensibility;
346
- }
347
- if( settings?.adjustPinchPrecision !== false ) {
348
- activeCamera.pinchPrecision = helperCamera.pinchPrecision;
349
- }
350
- // remove the helper camera
351
- helperCamera.dispose();
352
- } else {
311
+ if ( !( activeCamera instanceof ArcRotateCamera ) ) {
353
312
  const cameraClsName = activeCamera.getClassName();
354
313
  throw new Error( `Camera of type "${cameraClsName}" is not implemented yet to use autofocus feature.` );
355
314
  }
315
+
316
+ // get bounding box of all visible meshes, this is the base for the autofocus algorithm
317
+ const boundingBox = await this.calculateBoundingBox();
318
+
319
+ // focus the helper camera and set the calculated camera data to the real camera
320
+ const helperCamera = this.getFocusedHelperCamera( boundingBox, settings )
321
+ await this.applyFocusedHelperCameraData( activeCamera, helperCamera, settings )
322
+
323
+ // remove the helper camera
324
+ helperCamera.dispose();
356
325
  }
357
326
 
358
327
  /**
@@ -485,4 +454,72 @@ export class Viewer extends EventBroadcaster {
485
454
  return instances;
486
455
  }
487
456
 
457
+ /**
458
+ * Help function for focusing a helper camera exactly onto the given bounding box
459
+ */
460
+ private getFocusedHelperCamera(boundingBox: Mesh, settings?: AutofocusSettings): ArcRotateCamera {
461
+ // use helper camera to get some default values and set the values of the real camera accordingly
462
+ const helperCamera = new ArcRotateCamera(
463
+ "__helper_camera__",
464
+ 0, // camera angles will be overwritten after the target has been set
465
+ 0,
466
+ 0, // radius will be calculated, so we can set to 0 here
467
+ Vector3.Zero(),
468
+ this.scene
469
+ );
470
+ // this is required for automatically calculating the `lowerRadiusLimit`, so that we don't "dive" into meshes
471
+ // see https://doc.babylonjs.com/divingDeeper/behaviors/cameraBehaviors#framing-behavior
472
+ helperCamera.useFramingBehavior = true;
473
+
474
+ // `minZ` is the camera distance beyond which the mesh will be clipped
475
+ // this should be very low, but can't be zero
476
+ // a good value seems to be 1% of the bounding box size (= radius), whereas the value shouldn't go above 1, which is also the default value
477
+ const radius = boundingBox.getBoundingInfo().boundingSphere.radius;
478
+ helperCamera.minZ = Math.min(radius/100, 1);
479
+
480
+ // set desired camera data, these won't be changed by the autofocus function!
481
+ // default values should focus the element exactly from the front (= XY Plane)
482
+ helperCamera.setTarget(boundingBox, true);
483
+ helperCamera.alpha = ( settings?.alpha ?? - 90 ) * ( Math.PI / 180 );
484
+ helperCamera.beta = ( settings?.beta ?? 90 ) * ( Math.PI / 180 );
485
+
486
+ // finally zoom to the bounding box
487
+ // also apply a zoom factor, this adjusts the borders around the model in the viewport
488
+ helperCamera.zoomOnFactor = settings?.radiusFactor || 1;
489
+ helperCamera.zoomOn( [boundingBox], true );
490
+
491
+ return helperCamera;
492
+ }
493
+
494
+ /**
495
+ * Help function for applying the relevant data of the focused helper camera to the real camera
496
+ */
497
+ private async applyFocusedHelperCameraData(activeCamera: ArcRotateCamera, helperCamera: ArcRotateCamera, settings?: AutofocusSettings) {
498
+ // limits
499
+ activeCamera.minZ = helperCamera.minZ;
500
+ activeCamera.maxZ = helperCamera.maxZ;
501
+ activeCamera.lowerRadiusLimit = helperCamera.lowerRadiusLimit;
502
+ activeCamera.upperRadiusLimit = helperCamera.upperRadiusLimit;
503
+
504
+ // additional settings
505
+ if( settings?.adjustWheelPrecision !== false ) {
506
+ activeCamera.wheelPrecision = helperCamera.wheelPrecision;
507
+ }
508
+ if( settings?.adjustPanningSensibility !== false ) {
509
+ activeCamera.panningSensibility = helperCamera.panningSensibility;
510
+ }
511
+ if( settings?.adjustPinchPrecision !== false ) {
512
+ activeCamera.pinchPrecision = helperCamera.pinchPrecision;
513
+ }
514
+
515
+ // finally move the camera
516
+ // do this at last, so that all camera settings are already considered
517
+ const newCameraPosition: PlacementDefinition = {
518
+ alpha: helperCamera.alpha,
519
+ beta: helperCamera.beta,
520
+ radius: helperCamera.radius,
521
+ target: helperCamera.target
522
+ }
523
+ await this.animationManager.animateToPlacement(activeCamera, newCameraPosition, settings?.animation)
524
+ }
488
525
  }
@@ -233,7 +233,12 @@ type AutofocusSettings = {
233
233
  radiusFactor?: number,
234
234
  adjustWheelPrecision?: boolean,
235
235
  adjustPanningSensibility?: boolean,
236
- adjustPinchPrecision?: boolean
236
+ adjustPinchPrecision?: boolean,
237
+ /** Desired camera angles, these won't be overwritten by the autofocus function, only the camera radius is adjusted */
238
+ alpha?: number;
239
+ beta?: number;
240
+ /** Optional animation for the focusing camera movement */
241
+ animation?: string | AnimationDefinition
237
242
  };
238
243
 
239
244
  type LightDefinitions = {