@vertexvis/viewer 0.18.0 → 0.18.1-testing.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{config-ee5af2fe.js → config-ace9f5d5.js} +2 -1
- package/dist/cjs/config-ace9f5d5.js.map +1 -0
- package/dist/cjs/{controller-6914028a.js → controller-ee852f01.js} +12 -3
- package/dist/cjs/controller-ee852f01.js.map +1 -0
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/vertex-scene-tree.cjs.entry.js +2 -2
- package/dist/cjs/vertex-viewer-measurement-precise.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer.cjs.entry.js +103 -35
- package/dist/cjs/vertex-viewer.cjs.entry.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/controller.js +11 -2
- package/dist/collection/components/scene-tree/lib/controller.js.map +1 -1
- package/dist/collection/lib/interactions/interactionApi.js +0 -34
- package/dist/collection/lib/interactions/interactionApi.js.map +1 -1
- package/dist/collection/lib/interactions/interactionApiPerspective.js +103 -1
- package/dist/collection/lib/interactions/interactionApiPerspective.js.map +1 -1
- package/dist/collection/lib/types/interactions.js +1 -0
- package/dist/collection/lib/types/interactions.js.map +1 -1
- package/dist/custom-elements/index.js +114 -36
- package/dist/custom-elements/index.js.map +1 -1
- package/dist/esm/{config-65fd1bba.js → config-2b2e3f66.js} +2 -1
- package/dist/esm/config-2b2e3f66.js.map +1 -0
- package/dist/esm/{controller-1f6c87ab.js → controller-ea698f9b.js} +12 -3
- package/dist/esm/controller-ea698f9b.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/vertex-scene-tree.entry.js +2 -2
- package/dist/esm/vertex-viewer-measurement-precise.entry.js +1 -1
- package/dist/esm/vertex-viewer-pin-group.entry.js +1 -1
- package/dist/esm/vertex-viewer.entry.js +103 -35
- package/dist/esm/vertex-viewer.entry.js.map +1 -1
- package/dist/types/components/scene-tree/lib/controller.d.ts +1 -0
- package/dist/types/lib/interactions/interactionApi.d.ts +1 -1
- package/dist/types/lib/interactions/interactionApiPerspective.d.ts +3 -0
- package/dist/types/lib/types/interactions.d.ts +7 -0
- package/dist/viewer/index.esm.js +1 -1
- package/dist/viewer/p-0de95c4d.js +5 -0
- package/dist/viewer/p-0de95c4d.js.map +1 -0
- package/dist/viewer/{p-e2e7d01b.entry.js → p-2cca6daa.entry.js} +2 -2
- package/dist/viewer/{p-d8c70701.entry.js → p-2ce1d5a7.entry.js} +2 -2
- package/dist/viewer/{p-31c3b8d6.entry.js → p-4225576d.entry.js} +2 -2
- package/dist/viewer/p-5145f091.entry.js +5 -0
- package/dist/viewer/p-5145f091.entry.js.map +1 -0
- package/dist/viewer/{p-931247b6.js → p-bb131c4a.js} +2 -2
- package/dist/viewer/p-bb131c4a.js.map +1 -0
- package/dist/viewer/viewer.esm.js +1 -1
- package/package.json +7 -7
- package/dist/cjs/config-ee5af2fe.js.map +0 -1
- package/dist/cjs/controller-6914028a.js.map +0 -1
- package/dist/esm/config-65fd1bba.js.map +0 -1
- package/dist/esm/controller-1f6c87ab.js.map +0 -1
- package/dist/viewer/p-089d11bf.js +0 -5
- package/dist/viewer/p-089d11bf.js.map +0 -1
- package/dist/viewer/p-931247b6.js.map +0 -1
- package/dist/viewer/p-f1e718b4.entry.js +0 -5
- package/dist/viewer/p-f1e718b4.entry.js.map +0 -1
- /package/dist/viewer/{p-e2e7d01b.entry.js.map → p-2cca6daa.entry.js.map} +0 -0
- /package/dist/viewer/{p-d8c70701.entry.js.map → p-2ce1d5a7.entry.js.map} +0 -0
- /package/dist/viewer/{p-31c3b8d6.entry.js.map → p-4225576d.entry.js.map} +0 -0
package/dist/cjs/index.cjs.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
7
7
|
|
|
8
8
|
const scene = require('./scene-5f6d7efe.js');
|
|
9
|
-
const controller = require('./controller-
|
|
9
|
+
const controller = require('./controller-ee852f01.js');
|
|
10
10
|
const row = require('./row-8f1b8d84.js');
|
|
11
11
|
const cursors = require('./cursors-5f6e27c0.js');
|
|
12
12
|
const entities$1 = require('./entities-c40e141f.js');
|
|
@@ -7,8 +7,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
7
7
|
|
|
8
8
|
const index = require('./index-b99cd335.js');
|
|
9
9
|
const bundle_esm = require('./bundle.esm-5847ff0b.js');
|
|
10
|
-
const controller = require('./controller-
|
|
11
|
-
const config = require('./config-
|
|
10
|
+
const controller = require('./controller-ee852f01.js');
|
|
11
|
+
const config = require('./config-ace9f5d5.js');
|
|
12
12
|
const dom = require('./dom-bf5bd243.js');
|
|
13
13
|
const row = require('./row-8f1b8d84.js');
|
|
14
14
|
require('./wrappers_pb-9ec12cf5.js');
|
|
@@ -8,7 +8,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
8
8
|
const index = require('./index-b99cd335.js');
|
|
9
9
|
const mapper = require('./mapper-60434e0b.js');
|
|
10
10
|
const wrappers_pb = require('./wrappers_pb-9ec12cf5.js');
|
|
11
|
-
const config = require('./config-
|
|
11
|
+
const config = require('./config-ace9f5d5.js');
|
|
12
12
|
const entities = require('./entities-c40e141f.js');
|
|
13
13
|
require('./streamAttributes-eddf5b50.js');
|
|
14
14
|
const model = require('./model-14424daa.js');
|
|
@@ -7,7 +7,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
7
7
|
|
|
8
8
|
const index = require('./index-b99cd335.js');
|
|
9
9
|
const bundle_esm = require('./bundle.esm-5847ff0b.js');
|
|
10
|
-
require('./controller-
|
|
10
|
+
require('./controller-ee852f01.js');
|
|
11
11
|
require('./cursors-5f6e27c0.js');
|
|
12
12
|
require('./mapper-60434e0b.js');
|
|
13
13
|
require('./wrappers_pb-9ec12cf5.js');
|
|
@@ -10,7 +10,7 @@ const bundle_esm = require('./bundle.esm-5847ff0b.js');
|
|
|
10
10
|
const bundle_esm$1 = require('./bundle.esm-f25c75c6.js');
|
|
11
11
|
const browser_esm = require('./browser.esm-bf5e4488.js');
|
|
12
12
|
const index$1 = require('./index-5e1feaea.js');
|
|
13
|
-
const config = require('./config-
|
|
13
|
+
const config = require('./config-ace9f5d5.js');
|
|
14
14
|
const cursors = require('./cursors-5f6e27c0.js');
|
|
15
15
|
const dom = require('./dom-1bbd070f.js');
|
|
16
16
|
const errors = require('./errors-0829e369.js');
|
|
@@ -567,40 +567,6 @@ class InteractionApi {
|
|
|
567
567
|
return newCamera;
|
|
568
568
|
});
|
|
569
569
|
}
|
|
570
|
-
async zoomCameraToPoint(point, delta) {
|
|
571
|
-
return this.transformCamera(({ camera, viewport, frame, depthBuffer }) => {
|
|
572
|
-
const cam = frame.scene.camera;
|
|
573
|
-
const dir = cam.direction;
|
|
574
|
-
const frameCam = camera.toFrameCamera();
|
|
575
|
-
const ray = viewport.transformPointToRay(point, frame.image, frameCam);
|
|
576
|
-
if (this.zoomData == null) {
|
|
577
|
-
const fallbackPlane = bundle_esm.plane.fromNormalAndCoplanarPoint(dir, cam.lookAt);
|
|
578
|
-
const fallbackPt = bundle_esm.ray.intersectPlane(ray, fallbackPlane);
|
|
579
|
-
if (fallbackPt == null) {
|
|
580
|
-
console.warn('Cannot determine fallback point for zoom. Ray does not intersect plane.');
|
|
581
|
-
return camera;
|
|
582
|
-
}
|
|
583
|
-
const hitPt = depthBuffer != null
|
|
584
|
-
? this.getWorldPoint(point, depthBuffer, fallbackPt)
|
|
585
|
-
: fallbackPt;
|
|
586
|
-
const hitPlane = bundle_esm.plane.fromNormalAndCoplanarPoint(dir, hitPt);
|
|
587
|
-
this.zoomData = { hitPt, hitPlane };
|
|
588
|
-
}
|
|
589
|
-
if (this.zoomData != null) {
|
|
590
|
-
const { hitPt, hitPlane } = this.zoomData;
|
|
591
|
-
const distance = bundle_esm.vector3.distance(camera.position, hitPt);
|
|
592
|
-
const epsilon = (6 * distance * delta) / viewport.height;
|
|
593
|
-
const position = bundle_esm.ray.at(ray, epsilon);
|
|
594
|
-
const lookAt = bundle_esm.plane.projectPoint(hitPlane, position);
|
|
595
|
-
const newCamera = camera.update({ position, lookAt });
|
|
596
|
-
const newDistance = bundle_esm.vector3.distance(position, lookAt);
|
|
597
|
-
if (newDistance >= newCamera.near) {
|
|
598
|
-
return newCamera;
|
|
599
|
-
}
|
|
600
|
-
}
|
|
601
|
-
return camera;
|
|
602
|
-
});
|
|
603
|
-
}
|
|
604
570
|
/**
|
|
605
571
|
* Performs a pivot operation of the scene's camera, updating the lookAt
|
|
606
572
|
* while maintaining the position, and requests a new image for the
|
|
@@ -852,6 +818,7 @@ class InteractionApiOrthographic extends InteractionApi {
|
|
|
852
818
|
}
|
|
853
819
|
}
|
|
854
820
|
|
|
821
|
+
const CAMERA_MIN_ZOOM_SCALAR = 0.2;
|
|
855
822
|
class InteractionApiPerspective extends InteractionApi {
|
|
856
823
|
constructor(stream, cursors, getConfig, getScene, getFrame, getViewport, tapEmitter, doubleTapEmitter, longPressEmitter, interactionStartedEmitter, interactionFinishedEmitter) {
|
|
857
824
|
super(stream, cursors, getConfig, getScene, getFrame, getViewport, tapEmitter, doubleTapEmitter, longPressEmitter, interactionStartedEmitter, interactionFinishedEmitter);
|
|
@@ -879,6 +846,48 @@ class InteractionApiPerspective extends InteractionApi {
|
|
|
879
846
|
return camera.moveBy(offset);
|
|
880
847
|
});
|
|
881
848
|
}
|
|
849
|
+
async zoomCameraToPoint(point, delta) {
|
|
850
|
+
return this.transformCamera(({ camera, viewport, frame, depthBuffer, boundingBox }) => {
|
|
851
|
+
const cam = frame.scene.camera;
|
|
852
|
+
const dir = cam.direction;
|
|
853
|
+
const frameCam = camera.toFrameCamera();
|
|
854
|
+
const ray = viewport.transformPointToRay(point, frame.image, frameCam);
|
|
855
|
+
if (this.zoomData == null) {
|
|
856
|
+
const fallbackPlane = bundle_esm.plane.fromNormalAndCoplanarPoint(dir, cam.lookAt);
|
|
857
|
+
const fallbackPt = bundle_esm.ray.intersectPlane(ray, fallbackPlane);
|
|
858
|
+
if (fallbackPt == null) {
|
|
859
|
+
console.warn('Cannot determine fallback point for zoom. Ray does not intersect plane.');
|
|
860
|
+
return camera;
|
|
861
|
+
}
|
|
862
|
+
const hitPt = depthBuffer != null
|
|
863
|
+
? this.getWorldPoint(point, depthBuffer, fallbackPt)
|
|
864
|
+
: fallbackPt;
|
|
865
|
+
const hitPlane = bundle_esm.plane.fromNormalAndCoplanarPoint(dir, hitPt);
|
|
866
|
+
this.zoomData = { hitPt, hitPlane };
|
|
867
|
+
}
|
|
868
|
+
if (this.zoomData != null) {
|
|
869
|
+
const { hitPlane } = this.zoomData;
|
|
870
|
+
const { position, distance, isPastHitPlane, keepCurrent } = this.computeZoomDistances(delta, camera, viewport, boundingBox, ray, this.zoomData);
|
|
871
|
+
if (isPastHitPlane && !keepCurrent) {
|
|
872
|
+
const viewVectorRay = bundle_esm.ray.create({
|
|
873
|
+
origin: position,
|
|
874
|
+
direction: bundle_esm.vector3.normalize(camera.viewVector),
|
|
875
|
+
});
|
|
876
|
+
return camera.update({
|
|
877
|
+
position,
|
|
878
|
+
lookAt: bundle_esm.ray.at(viewVectorRay, distance),
|
|
879
|
+
});
|
|
880
|
+
}
|
|
881
|
+
else if (!keepCurrent) {
|
|
882
|
+
return camera.update({
|
|
883
|
+
position,
|
|
884
|
+
lookAt: bundle_esm.plane.projectPoint(hitPlane, position),
|
|
885
|
+
});
|
|
886
|
+
}
|
|
887
|
+
}
|
|
888
|
+
return camera;
|
|
889
|
+
});
|
|
890
|
+
}
|
|
882
891
|
async transformCamera(t) {
|
|
883
892
|
var _a;
|
|
884
893
|
if (this.isInteracting()) {
|
|
@@ -900,6 +909,65 @@ class InteractionApiPerspective extends InteractionApi {
|
|
|
900
909
|
await ((_a = this.currentCamera) === null || _a === void 0 ? void 0 : _a.render());
|
|
901
910
|
}
|
|
902
911
|
}
|
|
912
|
+
computeZoomDistances(delta, camera, viewport, boundingBox, pointRay, zoomData) {
|
|
913
|
+
const config = this.getConfig();
|
|
914
|
+
const { hitPt, hitPlane } = zoomData;
|
|
915
|
+
const minDistance = config.useMinimumPerspectiveZoomDistance
|
|
916
|
+
? this.computeZoomMinimumDistance(camera, boundingBox)
|
|
917
|
+
: -1;
|
|
918
|
+
const expectedDistance = bundle_esm.vector3.distance(camera.position, hitPt);
|
|
919
|
+
const actualDistance = Math.max(minDistance, expectedDistance);
|
|
920
|
+
const epsilon = (6 * actualDistance * delta) / viewport.height;
|
|
921
|
+
const expectedPosition = bundle_esm.ray.at(pointRay, epsilon);
|
|
922
|
+
const expectedViewVector = bundle_esm.ray.create({
|
|
923
|
+
origin: expectedPosition,
|
|
924
|
+
direction: bundle_esm.vector3.normalize(camera.viewVector),
|
|
925
|
+
});
|
|
926
|
+
const expectedIntersection = bundle_esm.ray.intersectPlane(expectedViewVector, hitPlane);
|
|
927
|
+
if (expectedIntersection == null &&
|
|
928
|
+
config.useMinimumPerspectiveZoomDistance) {
|
|
929
|
+
const minDistanceEpsilon = (6 * minDistance * delta) / viewport.height;
|
|
930
|
+
const position = bundle_esm.ray.at(pointRay, minDistanceEpsilon);
|
|
931
|
+
return {
|
|
932
|
+
position,
|
|
933
|
+
distance: minDistance,
|
|
934
|
+
isPastHitPlane: true,
|
|
935
|
+
keepCurrent: false,
|
|
936
|
+
};
|
|
937
|
+
}
|
|
938
|
+
else if (expectedIntersection == null) {
|
|
939
|
+
return {
|
|
940
|
+
position: camera.position,
|
|
941
|
+
distance: actualDistance,
|
|
942
|
+
isPastHitPlane: true,
|
|
943
|
+
keepCurrent: true,
|
|
944
|
+
};
|
|
945
|
+
}
|
|
946
|
+
return {
|
|
947
|
+
position: expectedPosition,
|
|
948
|
+
distance: actualDistance,
|
|
949
|
+
isPastHitPlane: false,
|
|
950
|
+
keepCurrent: false,
|
|
951
|
+
};
|
|
952
|
+
}
|
|
953
|
+
computeZoomMinimumDistance(camera, boundingBox) {
|
|
954
|
+
const xLength = Math.abs(boundingBox.min.x) + Math.abs(boundingBox.max.x);
|
|
955
|
+
const yLength = Math.abs(boundingBox.min.y) + Math.abs(boundingBox.max.y);
|
|
956
|
+
const zLength = Math.abs(boundingBox.min.z) + Math.abs(boundingBox.max.z);
|
|
957
|
+
const maxLength = Math.max(xLength, yLength, zLength);
|
|
958
|
+
const absDotX = Math.abs(bundle_esm.vector3.dot(bundle_esm.vector3.normalize(camera.viewVector), bundle_esm.vector3.right()));
|
|
959
|
+
const absDotY = Math.abs(bundle_esm.vector3.dot(bundle_esm.vector3.normalize(camera.viewVector), bundle_esm.vector3.up()));
|
|
960
|
+
const absDotZ = Math.abs(bundle_esm.vector3.dot(bundle_esm.vector3.normalize(camera.viewVector), bundle_esm.vector3.back()));
|
|
961
|
+
const scaledLengthX = xLength * absDotX;
|
|
962
|
+
const scaledLengthY = yLength * absDotY;
|
|
963
|
+
const scaledLengthZ = zLength * absDotZ;
|
|
964
|
+
const relevanceLengthX = maxLength / xLength;
|
|
965
|
+
const relevanceLengthY = maxLength / yLength;
|
|
966
|
+
const relevanceLengthZ = maxLength / zLength;
|
|
967
|
+
return (((scaledLengthX + scaledLengthY + scaledLengthZ) /
|
|
968
|
+
(relevanceLengthX + relevanceLengthY + relevanceLengthZ)) *
|
|
969
|
+
CAMERA_MIN_ZOOM_SCALAR);
|
|
970
|
+
}
|
|
903
971
|
}
|
|
904
972
|
|
|
905
973
|
class FlyToPositionKeyInteraction {
|