@vertexvis/viewer 0.13.1 → 0.13.2-canary.10
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/{browser.esm-31b03292.js → browser.esm-075810bf.js} +1 -1
- package/dist/cjs/{bundle.esm-dc0a8361.js → bundle.esm-618a5fe9.js} +80 -28
- package/dist/cjs/{config-90ee43d5.js → config-fb124bac.js} +2 -2
- package/dist/cjs/{cursors-ad2fd395.js → cursors-d71f6a74.js} +1 -1
- package/dist/cjs/{dom-dd265f48.js → dom-57ef84e9.js} +1 -1
- package/dist/cjs/{entities-aa59890e.js → entities-90f1347a.js} +3 -3
- package/dist/cjs/index.cjs.js +14 -12
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{mapper-f6e6cafe.js → mapper-80ee2957.js} +2 -2
- package/dist/cjs/{markup-fb1553b1.js → markup-7f7de5f2.js} +2 -2
- package/dist/cjs/{measurement-aba1e0e8.js → measurement-f1ae9248.js} +2 -2
- package/dist/cjs/{model-4ec0c36e.js → model-55abd9ab.js} +1 -1
- package/dist/cjs/{overlays-40c6cbc7.js → overlays-68e8eff2.js} +2 -2
- package/dist/cjs/{png-decoder-27d25eed.js → png-decoder-076131d8.js} +1 -1
- package/dist/cjs/{results-bc325974.js → results-e9496869.js} +1 -1
- package/dist/cjs/{scene-d420fd26.js → scene-92728420.js} +188 -90
- package/dist/cjs/{streamAttributes-d6236448.js → streamAttributes-81eb52f2.js} +1508 -43
- package/dist/cjs/{utils-545b1865.js → utils-463cd52e.js} +1 -1
- package/dist/cjs/{utils-f80be307.js → utils-6397efca.js} +1 -1
- package/dist/cjs/vertex-scene-tree-search_3.cjs.entry.js +1 -1
- package/dist/cjs/vertex-scene-tree-table-cell.cjs.entry.js +1 -1
- package/dist/cjs/vertex-scene-tree.cjs.entry.js +4 -4
- package/dist/cjs/vertex-viewer-dom-element_3.cjs.entry.js +8 -7
- package/dist/cjs/vertex-viewer-markup-arrow_3.cjs.entry.js +3 -3
- package/dist/cjs/vertex-viewer-markup-tool.cjs.entry.js +4 -4
- package/dist/cjs/vertex-viewer-markup.cjs.entry.js +4 -4
- package/dist/cjs/vertex-viewer-measurement-details.cjs.entry.js +3 -3
- package/dist/cjs/vertex-viewer-measurement-distance.cjs.entry.js +20 -15
- package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js +6 -6
- package/dist/cjs/vertex-viewer-measurement-precise.cjs.entry.js +10 -10
- package/dist/cjs/vertex-viewer-measurement-tool.cjs.entry.js +5 -5
- package/dist/cjs/vertex-viewer-measurements.cjs.entry.js +8 -8
- package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js +3 -3
- package/dist/cjs/vertex-viewer.cjs.entry.js +287 -80
- package/dist/cjs/viewer.cjs.js +1 -1
- package/dist/cjs/{viewport-8c39089f.js → viewport-54b1389d.js} +34 -2
- package/dist/collection/components/scene-tree-table-cell/scene-tree-table-cell.css +1 -1
- package/dist/collection/components/viewer/viewer.js +68 -4
- package/dist/collection/components/viewer-dom-renderer/renderer2d.js +1 -1
- package/dist/collection/components/viewer-dom-renderer/renderer3d.js +4 -2
- package/dist/collection/components/viewer-dom-renderer/viewer-dom-renderer.js +5 -6
- package/dist/collection/components/viewer-measurement-distance/hitTest.js +9 -4
- package/dist/collection/components/viewer-measurement-distance/viewer-measurement-distance.js +5 -5
- package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays.js +3 -3
- package/dist/collection/index.js +2 -2
- package/dist/collection/lib/errors.js +8 -1
- package/dist/collection/lib/interactions/index.js +3 -1
- package/dist/collection/lib/interactions/interactionApi.js +4 -25
- package/dist/collection/lib/interactions/interactionApiOrthographic.js +136 -0
- package/dist/collection/lib/interactions/interactionApiPerspective.js +51 -0
- package/dist/collection/lib/interactions/multiTouchInteractionHandler.js +3 -2
- package/dist/collection/lib/mappers/frameStreaming.js +27 -5
- package/dist/collection/lib/rendering/matrices.js +13 -4
- package/dist/collection/lib/rendering/vectors.js +7 -0
- package/dist/collection/lib/scenes/__mocks__/mocks.js +2 -2
- package/dist/collection/lib/scenes/camera.js +163 -83
- package/dist/collection/lib/scenes/mapper.js +3 -2
- package/dist/collection/lib/scenes/scene.js +22 -9
- package/dist/collection/lib/types/clippingPlanes.js +48 -20
- package/dist/collection/lib/types/depthBuffer.js +32 -3
- package/dist/collection/lib/types/frame.js +133 -24
- package/dist/collection/lib/types/frameCamera.js +87 -6
- package/dist/collection/lib/types/viewport.js +34 -2
- package/dist/collection/testing/fixtures.js +28 -15
- package/dist/collection/testing/viewer.js +5 -3
- package/dist/custom-elements/index.js +2135 -283
- package/dist/esm/{browser.esm-59e914f6.js → browser.esm-e72d80ad.js} +1 -1
- package/dist/esm/{bundle.esm-d899b2d5.js → bundle.esm-8ceccb91.js} +80 -29
- package/dist/esm/{config-604c644e.js → config-fb7cd8ff.js} +2 -2
- package/dist/esm/{cursors-a7ec4adb.js → cursors-fc2deed7.js} +1 -1
- package/dist/esm/{dom-780d25be.js → dom-2cd18856.js} +1 -1
- package/dist/esm/{entities-759d97cd.js → entities-78557270.js} +3 -3
- package/dist/esm/index.js +12 -12
- package/dist/esm/index.mjs +12 -12
- package/dist/esm/loader.js +1 -1
- package/dist/esm/loader.mjs +1 -1
- package/dist/esm/{mapper-4b815e31.js → mapper-da36de17.js} +2 -2
- package/dist/esm/{markup-1d177b4a.js → markup-c313d99c.js} +2 -2
- package/dist/esm/{measurement-12cdbf5c.js → measurement-544b69d5.js} +2 -2
- package/dist/esm/{model-e5a4f00f.js → model-2a34b443.js} +1 -1
- package/dist/esm/{overlays-1919b192.js → overlays-354e275c.js} +2 -2
- package/dist/esm/{png-decoder-3f1fa486.js → png-decoder-07de80d1.js} +1 -1
- package/dist/esm/{results-994bdb50.js → results-4d0c3568.js} +1 -1
- package/dist/esm/{scene-2c2460d5.js → scene-2bfcce74.js} +188 -90
- package/dist/esm/{streamAttributes-d623bb60.js → streamAttributes-d0b384b3.js} +1502 -44
- package/dist/esm/{utils-83a19677.js → utils-3ea0acdd.js} +1 -1
- package/dist/esm/{utils-5e57bf24.js → utils-e0941c61.js} +1 -1
- package/dist/esm/vertex-scene-tree-search_3.entry.js +1 -1
- package/dist/esm/vertex-scene-tree-table-cell.entry.js +1 -1
- package/dist/esm/vertex-scene-tree.entry.js +4 -4
- package/dist/esm/vertex-viewer-dom-element_3.entry.js +8 -7
- package/dist/esm/vertex-viewer-markup-arrow_3.entry.js +3 -3
- package/dist/esm/vertex-viewer-markup-tool.entry.js +4 -4
- package/dist/esm/vertex-viewer-markup.entry.js +4 -4
- package/dist/esm/vertex-viewer-measurement-details.entry.js +3 -3
- package/dist/esm/vertex-viewer-measurement-distance.entry.js +20 -15
- package/dist/esm/vertex-viewer-measurement-line_2.entry.js +6 -6
- package/dist/esm/vertex-viewer-measurement-precise.entry.js +10 -10
- package/dist/esm/vertex-viewer-measurement-tool.entry.js +5 -5
- package/dist/esm/vertex-viewer-measurements.entry.js +8 -8
- package/dist/esm/vertex-viewer-view-cube.entry.js +3 -3
- package/dist/esm/vertex-viewer.entry.js +287 -80
- package/dist/esm/viewer.js +1 -1
- package/dist/esm/{viewport-01c886ea.js → viewport-5cc7b128.js} +34 -2
- package/dist/types/components/scene-tree-table-cell/scene-tree-table-cell.d.ts +1 -1
- package/dist/types/components/viewer/viewer.d.ts +8 -0
- package/dist/types/components/viewer-dom-renderer/renderer2d.d.ts +2 -2
- package/dist/types/components/viewer-dom-renderer/renderer3d.d.ts +3 -3
- package/dist/types/components/viewer-dom-renderer/viewer-dom-renderer.d.ts +2 -2
- package/dist/types/components/viewer-measurement-distance/hitTest.d.ts +3 -2
- package/dist/types/components/viewer-measurement-distance/utils.d.ts +2 -2
- package/dist/types/components/viewer-measurement-distance/viewer-measurement-distance.d.ts +2 -2
- package/dist/types/components/viewer-measurement-overlays/viewer-measurement-overlays-components.d.ts +2 -2
- package/dist/types/components/viewer-measurement-overlays/viewer-measurement-overlays.d.ts +2 -2
- package/dist/types/components.d.ts +15 -7
- package/dist/types/index.d.ts +1 -1
- package/dist/types/lib/errors.d.ts +3 -0
- package/dist/types/lib/interactions/index.d.ts +2 -0
- package/dist/types/lib/interactions/interactionApi.d.ts +34 -26
- package/dist/types/lib/interactions/interactionApiOrthographic.d.ts +35 -0
- package/dist/types/lib/interactions/interactionApiPerspective.d.ts +21 -0
- package/dist/types/lib/mappers/frameStreaming.d.ts +2 -0
- package/dist/types/lib/rendering/vectors.d.ts +2 -0
- package/dist/types/lib/scenes/__mocks__/mocks.d.ts +2 -2
- package/dist/types/lib/scenes/camera.d.ts +101 -38
- package/dist/types/lib/scenes/scene.d.ts +1 -1
- package/dist/types/lib/types/clippingPlanes.d.ts +3 -1
- package/dist/types/lib/types/depthBuffer.d.ts +28 -6
- package/dist/types/lib/types/frame.d.ts +80 -11
- package/dist/types/lib/types/frameCamera.d.ts +22 -3
- package/dist/types/lib/types/viewport.d.ts +24 -4
- package/dist/types/testing/fixtures.d.ts +8 -5
- package/dist/viewer/index.esm.js +1 -1
- package/dist/viewer/{p-f8d01b8a.entry.js → p-0a189e62.entry.js} +1 -1
- package/dist/viewer/{p-e07377fa.entry.js → p-1ca95f9a.entry.js} +1 -1
- package/dist/viewer/{p-d00e9203.js → p-3561d910.js} +1 -1
- package/dist/viewer/p-388a43f7.js +4 -0
- package/dist/viewer/{p-3810c24d.js → p-3f0f83ad.js} +1 -1
- package/dist/viewer/{p-8decee06.entry.js → p-41028d3b.entry.js} +1 -1
- package/dist/viewer/{p-439220c6.js → p-487e054a.js} +1 -1
- package/dist/viewer/p-49d36e94.entry.js +4 -0
- package/dist/viewer/{p-da2f4a56.js → p-5b342e97.js} +1 -1
- package/dist/viewer/p-661f0612.js +18 -0
- package/dist/viewer/{p-364ce21c.js → p-69058178.js} +1 -1
- package/dist/viewer/{p-353cfc7a.entry.js → p-73a5eacc.entry.js} +1 -1
- package/dist/viewer/p-77be081a.js +4 -0
- package/dist/viewer/{p-a0df0e0c.js → p-809d09d9.js} +1 -1
- package/dist/viewer/{p-d90f2f6d.entry.js → p-858bd2c7.entry.js} +1 -1
- package/dist/viewer/{p-25eaab00.entry.js → p-89b66838.entry.js} +1 -1
- package/dist/viewer/p-a93a63a9.js +4 -0
- package/dist/viewer/{p-df292b56.entry.js → p-b043b076.entry.js} +1 -1
- package/dist/viewer/{p-915d95ad.entry.js → p-b0ac6b3c.entry.js} +1 -1
- package/dist/viewer/{p-fec1a8d0.entry.js → p-b7624ff2.entry.js} +1 -1
- package/dist/viewer/{p-f7cb7e59.js → p-b8774c9c.js} +1 -1
- package/dist/viewer/{p-67446e35.js → p-bcb66f97.js} +1 -1
- package/dist/viewer/p-bcde5521.entry.js +4 -0
- package/dist/viewer/{p-7cad9bf4.js → p-d1584404.js} +1 -1
- package/dist/viewer/p-d32b54cb.js +4 -0
- package/dist/viewer/{p-f755af5a.entry.js → p-d3a20af4.entry.js} +1 -1
- package/dist/viewer/{p-c62cb926.entry.js → p-d9f99f4d.entry.js} +1 -1
- package/dist/viewer/p-e38458da.js +4 -0
- package/dist/viewer/{p-301660cf.js → p-e75bba97.js} +2 -2
- package/dist/viewer/{p-6e80f8b0.entry.js → p-ebd55df7.entry.js} +1 -1
- package/dist/viewer/{p-671c113c.entry.js → p-f0411993.entry.js} +1 -1
- package/dist/viewer/{p-2cefb1b0.js → p-fa9a0bed.js} +1 -1
- package/dist/viewer/p-ffdeb08c.js +4 -0
- package/dist/viewer/viewer.esm.js +1 -1
- package/package.json +8 -8
- package/dist/viewer/p-081e6873.js +0 -4
- package/dist/viewer/p-085e908a.js +0 -4
- package/dist/viewer/p-0aba71fd.js +0 -18
- package/dist/viewer/p-3f6ac74f.js +0 -4
- package/dist/viewer/p-423410be.js +0 -4
- package/dist/viewer/p-432267bc.entry.js +0 -4
- package/dist/viewer/p-4985fad5.js +0 -4
- package/dist/viewer/p-e2297df2.entry.js +0 -4
- package/dist/viewer/p-fe11d694.js +0 -4
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { BoundingBox, Vector3 } from '@vertexvis/geometry';
|
|
1
|
+
import { BoundingBox, BoundingSphere, Vector3 } from '@vertexvis/geometry';
|
|
2
2
|
import { UUID } from '@vertexvis/utils';
|
|
3
|
+
import { constrainViewVector } from '../rendering/vectors';
|
|
3
4
|
import { DEFAULT_TIMEOUT_IN_MS } from '../stream/dispatcher';
|
|
4
|
-
import { ClippingPlanes, FramePerspectiveCamera, } from '../types';
|
|
5
|
+
import { ClippingPlanes, FrameCamera, FrameOrthographicCamera, FramePerspectiveCamera, } from '../types';
|
|
6
|
+
import { withPositionAndViewVector } from '../types/frameCamera';
|
|
5
7
|
import { CameraRenderResult } from './cameraRenderResult';
|
|
6
8
|
import { buildFlyToOperation } from './mapper';
|
|
7
9
|
const PI_OVER_360 = 0.008726646259972;
|
|
@@ -61,32 +63,19 @@ export class FlyToExecutor {
|
|
|
61
63
|
* a new instance of the class with the updated properties.
|
|
62
64
|
*/
|
|
63
65
|
export class Camera {
|
|
64
|
-
constructor(stream, aspect, data, boundingBox, decodeFrame) {
|
|
66
|
+
constructor(stream, aspect, data, boundingBox, decodeFrame, flyToOptions) {
|
|
65
67
|
this.stream = stream;
|
|
66
68
|
this.aspect = aspect;
|
|
67
69
|
this.data = data;
|
|
68
70
|
this.boundingBox = boundingBox;
|
|
69
71
|
this.decodeFrame = decodeFrame;
|
|
72
|
+
this.flyToOptions = flyToOptions;
|
|
70
73
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
* be contained within the camera's view.
|
|
74
|
-
*
|
|
75
|
-
* @param boundingBox The bounding box to position to.
|
|
76
|
-
*/
|
|
77
|
-
fitToBoundingBox(boundingBox) {
|
|
78
|
-
const radius = 1.1 *
|
|
79
|
-
Vector3.magnitude(Vector3.subtract(boundingBox.max, BoundingBox.center(boundingBox)));
|
|
80
|
-
// ratio of the height of the frustum to the distance along the view vector
|
|
81
|
-
let hOverD = Math.tan(this.fovY * PI_OVER_360);
|
|
82
|
-
if (this.aspectRatio < 1.0) {
|
|
83
|
-
hOverD *= this.aspectRatio;
|
|
84
|
-
}
|
|
85
|
-
const distance = Math.abs(radius / hOverD);
|
|
86
|
-
const vvec = Vector3.scale(distance, Vector3.normalize(this.viewVector()));
|
|
74
|
+
fitCameraToBoundingBox(boundingBox, distance, viewVector) {
|
|
75
|
+
const vvec = Vector3.scale(distance, Vector3.normalize(viewVector));
|
|
87
76
|
const lookAt = BoundingBox.center(boundingBox);
|
|
88
77
|
const position = Vector3.subtract(lookAt, vvec);
|
|
89
|
-
return this.update({ lookAt, position });
|
|
78
|
+
return this.update({ lookAt, position, viewVector: vvec });
|
|
90
79
|
}
|
|
91
80
|
/**
|
|
92
81
|
* Returns the distance from the camera's position to the center
|
|
@@ -94,12 +83,11 @@ export class Camera {
|
|
|
94
83
|
*
|
|
95
84
|
* @param boundingBox - The bounding box to determine distance from.
|
|
96
85
|
*/
|
|
97
|
-
|
|
98
|
-
const
|
|
99
|
-
const boundingBoxCenter = BoundingBox.center(
|
|
100
|
-
const cameraToCenter = Vector3.subtract(
|
|
101
|
-
|
|
102
|
-
return distanceToCenterAlongViewVec;
|
|
86
|
+
signedDistanceToBoundingBoxCenter(boundingBox) {
|
|
87
|
+
const { position, viewVector } = withPositionAndViewVector(this.data);
|
|
88
|
+
const boundingBoxCenter = BoundingBox.center(boundingBox !== null && boundingBox !== void 0 ? boundingBox : this.boundingBox);
|
|
89
|
+
const cameraToCenter = Vector3.subtract(boundingBoxCenter, position);
|
|
90
|
+
return (Vector3.dot(viewVector, cameraToCenter) / Vector3.magnitude(viewVector));
|
|
103
91
|
}
|
|
104
92
|
/**
|
|
105
93
|
* Specifies that the next render of the camera will be repositioned to one of
|
|
@@ -110,26 +98,14 @@ export class Camera {
|
|
|
110
98
|
*/
|
|
111
99
|
flyTo(paramsOrQuery) {
|
|
112
100
|
if (typeof paramsOrQuery !== 'function') {
|
|
113
|
-
|
|
114
|
-
|
|
101
|
+
return this.updateFlyToOptions({
|
|
102
|
+
flyTo: this.buildFlyToType(paramsOrQuery),
|
|
103
|
+
});
|
|
115
104
|
}
|
|
116
105
|
else {
|
|
117
|
-
this.
|
|
118
|
-
return this;
|
|
106
|
+
return this.updateFlyToOptions(paramsOrQuery(new FlyToExecutor()).build());
|
|
119
107
|
}
|
|
120
108
|
}
|
|
121
|
-
/**
|
|
122
|
-
* Shifts the position of the camera by the given delta.
|
|
123
|
-
*
|
|
124
|
-
* @param delta The number of units to shift the camera on the X, Y, and Z
|
|
125
|
-
* axis.
|
|
126
|
-
*/
|
|
127
|
-
moveBy(delta) {
|
|
128
|
-
return this.update({
|
|
129
|
-
position: Vector3.add(this.position, delta),
|
|
130
|
-
lookAt: Vector3.add(this.lookAt, delta),
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
109
|
viewAll() {
|
|
134
110
|
return this.fitToBoundingBox(this.boundingBox);
|
|
135
111
|
}
|
|
@@ -161,7 +137,7 @@ export class Camera {
|
|
|
161
137
|
}
|
|
162
138
|
else {
|
|
163
139
|
this.stream.replaceCamera({
|
|
164
|
-
camera: this.data,
|
|
140
|
+
camera: FrameCamera.toProtobuf(this.data),
|
|
165
141
|
frameCorrelationId: { value: corrId },
|
|
166
142
|
});
|
|
167
143
|
return new CameraRenderResult(this.stream, this.decodeFrame, {
|
|
@@ -181,22 +157,7 @@ export class Camera {
|
|
|
181
157
|
* @param axis A normalized vector to rotate around.
|
|
182
158
|
*/
|
|
183
159
|
rotateAroundAxis(angleInRadians, axis) {
|
|
184
|
-
return this.rotateAroundAxisAtPoint(angleInRadians, this.lookAt, axis);
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Repositions the camera by rotating its current position around an axis
|
|
188
|
-
* defined at a specific world point.
|
|
189
|
-
*
|
|
190
|
-
* @param angleInRadians The angle, in radians, to rotate.
|
|
191
|
-
* @param point The point in world space to place the axis at.
|
|
192
|
-
* @param axis A normalized vector to rotate around.
|
|
193
|
-
*/
|
|
194
|
-
rotateAroundAxisAtPoint(angleInRadians, point, axis) {
|
|
195
|
-
return this.update({
|
|
196
|
-
position: Vector3.rotateAboutAxis(angleInRadians, this.position, axis, point),
|
|
197
|
-
lookAt: Vector3.rotateAboutAxis(angleInRadians, this.lookAt, axis, point),
|
|
198
|
-
up: Vector3.rotateAboutAxis(angleInRadians, this.up, axis, Vector3.origin()),
|
|
199
|
-
});
|
|
160
|
+
return this.rotateAroundAxisAtPoint(angleInRadians, this.data.lookAt, axis);
|
|
200
161
|
}
|
|
201
162
|
/**
|
|
202
163
|
* Updates the `position` and `up` vectors of the camera to the given standard
|
|
@@ -208,24 +169,11 @@ export class Camera {
|
|
|
208
169
|
standardView(standardView) {
|
|
209
170
|
return this.update({
|
|
210
171
|
position: standardView.position,
|
|
172
|
+
viewVector: Vector3.subtract(Vector3.origin(), standardView.position),
|
|
211
173
|
lookAt: Vector3.origin(),
|
|
212
174
|
up: standardView.up,
|
|
213
175
|
});
|
|
214
176
|
}
|
|
215
|
-
/**
|
|
216
|
-
* Updates the `position`, `lookAt` and/or `up` vectors of the camera.
|
|
217
|
-
*
|
|
218
|
-
* @param camera The values to update the camera to.
|
|
219
|
-
*/
|
|
220
|
-
update(camera) {
|
|
221
|
-
return new Camera(this.stream, this.aspectRatio, Object.assign(Object.assign({}, this.data), camera), this.boundingBox, this.decodeFrame);
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* Returns a `FramePerspectiveCamera` representation.
|
|
225
|
-
*/
|
|
226
|
-
toFrameCamera() {
|
|
227
|
-
return new FramePerspectiveCamera(this.position, this.lookAt, this.up, this.near, this.far, this.aspectRatio, this.fovY);
|
|
228
|
-
}
|
|
229
177
|
buildFlyToType(options) {
|
|
230
178
|
if (options.boundingBox != null) {
|
|
231
179
|
return { type: 'bounding-box', data: options.boundingBox };
|
|
@@ -246,36 +194,165 @@ export class Camera {
|
|
|
246
194
|
computeClippingPlanes(camera) {
|
|
247
195
|
return ClippingPlanes.fromBoundingBoxAndLookAtCamera(this.boundingBox, camera);
|
|
248
196
|
}
|
|
197
|
+
}
|
|
198
|
+
export class PerspectiveCamera extends Camera {
|
|
199
|
+
constructor(stream, aspect, perspectiveData, boundingBox, decodeFrame, flyToOptions) {
|
|
200
|
+
super(stream, aspect, perspectiveData, boundingBox, decodeFrame, flyToOptions);
|
|
201
|
+
this.perspectiveData = perspectiveData;
|
|
202
|
+
}
|
|
249
203
|
/**
|
|
250
|
-
*
|
|
251
|
-
*
|
|
204
|
+
* Shifts the position of the camera by the given delta.
|
|
205
|
+
*
|
|
206
|
+
* @param delta The number of units to shift the camera on the X, Y, and Z
|
|
207
|
+
* axis.
|
|
252
208
|
*/
|
|
253
|
-
|
|
209
|
+
moveBy(delta) {
|
|
210
|
+
return this.update({
|
|
211
|
+
position: Vector3.add(this.position, delta),
|
|
212
|
+
lookAt: Vector3.add(this.lookAt, delta),
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
rotateAroundAxisAtPoint(angleInRadians, point, axis) {
|
|
216
|
+
return this.update({
|
|
217
|
+
position: Vector3.rotateAboutAxis(angleInRadians, this.position, axis, point),
|
|
218
|
+
lookAt: Vector3.rotateAboutAxis(angleInRadians, this.lookAt, axis, point),
|
|
219
|
+
up: Vector3.rotateAboutAxis(angleInRadians, this.up, axis, Vector3.origin()),
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
fitToBoundingBox(boundingBox) {
|
|
223
|
+
var _a;
|
|
224
|
+
const radius = 1.1 *
|
|
225
|
+
Vector3.magnitude(Vector3.subtract(boundingBox.max, BoundingBox.center(boundingBox)));
|
|
226
|
+
// ratio of the height of the frustum to the distance along the view vector
|
|
227
|
+
let hOverD = Math.tan(((_a = this.fovY) !== null && _a !== void 0 ? _a : 45) * PI_OVER_360);
|
|
228
|
+
if (this.aspect < 1.0) {
|
|
229
|
+
hOverD *= this.aspect;
|
|
230
|
+
}
|
|
231
|
+
const distance = Math.abs(radius / hOverD);
|
|
232
|
+
return super.fitCameraToBoundingBox(boundingBox, distance, this.viewVector);
|
|
233
|
+
}
|
|
234
|
+
update(camera) {
|
|
235
|
+
return new PerspectiveCamera(this.stream, this.aspect, Object.assign(Object.assign({}, this.perspectiveData), camera), this.boundingBox, this.decodeFrame, this.flyToOptions);
|
|
236
|
+
}
|
|
237
|
+
toFrameCamera() {
|
|
238
|
+
var _a;
|
|
239
|
+
return new FramePerspectiveCamera(this.position, this.lookAt, this.up, this.near, this.far, this.aspectRatio, (_a = this.fovY) !== null && _a !== void 0 ? _a : 45);
|
|
240
|
+
}
|
|
241
|
+
get viewVector() {
|
|
254
242
|
return Vector3.subtract(this.lookAt, this.position);
|
|
255
243
|
}
|
|
256
244
|
/**
|
|
257
245
|
* The position vector for the camera, in world space coordinates.
|
|
258
246
|
*/
|
|
259
247
|
get position() {
|
|
260
|
-
return Object.assign({}, this.
|
|
248
|
+
return Object.assign({}, this.perspectiveData.position);
|
|
261
249
|
}
|
|
262
250
|
/**
|
|
263
251
|
* A normalized vector representing the up direction.
|
|
264
252
|
*/
|
|
265
253
|
get up() {
|
|
266
|
-
return Object.assign({}, this.
|
|
254
|
+
return Object.assign({}, this.perspectiveData.up);
|
|
267
255
|
}
|
|
268
256
|
/**
|
|
269
257
|
* A vector, in world space coordinates, of where the camera is pointed at.
|
|
270
258
|
*/
|
|
271
259
|
get lookAt() {
|
|
272
|
-
return Object.assign({}, this.
|
|
260
|
+
return Object.assign({}, this.perspectiveData.lookAt);
|
|
273
261
|
}
|
|
274
262
|
/**
|
|
275
263
|
* The camera's field of view.
|
|
276
264
|
*/
|
|
277
265
|
get fovY() {
|
|
278
|
-
return
|
|
266
|
+
return this.perspectiveData.fovY;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* The aspect ratio of the camera.
|
|
270
|
+
*/
|
|
271
|
+
get aspectRatio() {
|
|
272
|
+
return this.aspect;
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* The camera's near clipping plane.
|
|
276
|
+
*/
|
|
277
|
+
get near() {
|
|
278
|
+
const { near } = this.computeClippingPlanes(this.perspectiveData);
|
|
279
|
+
return near;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* The camera's far clipping plane.
|
|
283
|
+
*/
|
|
284
|
+
get far() {
|
|
285
|
+
const { far } = this.computeClippingPlanes(this.perspectiveData);
|
|
286
|
+
return far;
|
|
287
|
+
}
|
|
288
|
+
updateFlyToOptions(flyToOptions) {
|
|
289
|
+
return new PerspectiveCamera(this.stream, this.aspect, this.perspectiveData, this.boundingBox, this.decodeFrame, flyToOptions);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
export class OrthographicCamera extends Camera {
|
|
293
|
+
constructor(stream, aspect, orthographicData, boundingBox, decodeFrame, flyToOptions) {
|
|
294
|
+
super(stream, aspect, orthographicData, boundingBox, decodeFrame, flyToOptions);
|
|
295
|
+
this.orthographicData = orthographicData;
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Shifts the position of the camera by the given delta.
|
|
299
|
+
*
|
|
300
|
+
* @param delta The number of units to shift the camera on the X, Y, and Z
|
|
301
|
+
* axis.
|
|
302
|
+
*/
|
|
303
|
+
moveBy(delta) {
|
|
304
|
+
return this.update({
|
|
305
|
+
lookAt: Vector3.add(this.lookAt, delta),
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
rotateAroundAxisAtPoint(angleInRadians, point, axis) {
|
|
309
|
+
const updatedLookAt = Vector3.rotateAboutAxis(angleInRadians, this.lookAt, axis, point);
|
|
310
|
+
const updatedPosition = Vector3.rotateAboutAxis(angleInRadians, this.position, axis, point);
|
|
311
|
+
const viewVector = constrainViewVector(Vector3.subtract(updatedLookAt, updatedPosition), BoundingSphere.create(this.boundingBox));
|
|
312
|
+
return this.update({
|
|
313
|
+
viewVector: viewVector,
|
|
314
|
+
lookAt: updatedLookAt,
|
|
315
|
+
up: Vector3.rotateAboutAxis(angleInRadians, this.up, axis, Vector3.origin()),
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
fitToBoundingBox(boundingBox) {
|
|
319
|
+
const boundingSphere = BoundingSphere.create(boundingBox);
|
|
320
|
+
const fitAll = super.fitCameraToBoundingBox(boundingBox, boundingSphere.radius, this.viewVector);
|
|
321
|
+
return this.update({
|
|
322
|
+
lookAt: fitAll.lookAt,
|
|
323
|
+
viewVector: fitAll.viewVector,
|
|
324
|
+
fovHeight: boundingSphere.radius * 2,
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
update(camera) {
|
|
328
|
+
return new OrthographicCamera(this.stream, this.aspect, Object.assign(Object.assign({}, this.orthographicData), camera), this.boundingBox, this.decodeFrame, this.flyToOptions);
|
|
329
|
+
}
|
|
330
|
+
toFrameCamera() {
|
|
331
|
+
return new FrameOrthographicCamera(constrainViewVector(this.viewVector, BoundingSphere.create(this.boundingBox)), this.lookAt, this.up, this.near, this.far, this.aspectRatio, this.fovHeight);
|
|
332
|
+
}
|
|
333
|
+
get viewVector() {
|
|
334
|
+
return Object.assign({}, this.orthographicData.viewVector);
|
|
335
|
+
}
|
|
336
|
+
get position() {
|
|
337
|
+
return Vector3.add(this.lookAt, Vector3.negate(this.viewVector));
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* A normalized vector representing the up direction.
|
|
341
|
+
*/
|
|
342
|
+
get up() {
|
|
343
|
+
return Object.assign({}, this.orthographicData.up);
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* A vector, in world space coordinates, of where the camera is pointed at.
|
|
347
|
+
*/
|
|
348
|
+
get lookAt() {
|
|
349
|
+
return Object.assign({}, this.orthographicData.lookAt);
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* The camera's field of view.
|
|
353
|
+
*/
|
|
354
|
+
get fovHeight() {
|
|
355
|
+
return this.orthographicData.fovHeight;
|
|
279
356
|
}
|
|
280
357
|
/**
|
|
281
358
|
* The aspect ratio of the camera.
|
|
@@ -287,15 +364,18 @@ export class Camera {
|
|
|
287
364
|
* The camera's near clipping plane.
|
|
288
365
|
*/
|
|
289
366
|
get near() {
|
|
290
|
-
const { near } = this.computeClippingPlanes(this.
|
|
367
|
+
const { near } = this.computeClippingPlanes(this.orthographicData);
|
|
291
368
|
return near;
|
|
292
369
|
}
|
|
293
370
|
/**
|
|
294
371
|
* The camera's far clipping plane.
|
|
295
372
|
*/
|
|
296
373
|
get far() {
|
|
297
|
-
const { far } = this.computeClippingPlanes(this.
|
|
374
|
+
const { far } = this.computeClippingPlanes(this.orthographicData);
|
|
298
375
|
return far;
|
|
299
376
|
}
|
|
377
|
+
updateFlyToOptions(flyToOptions) {
|
|
378
|
+
return new OrthographicCamera(this.stream, this.aspect, this.orthographicData, this.boundingBox, this.decodeFrame, flyToOptions);
|
|
379
|
+
}
|
|
300
380
|
}
|
|
301
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FtZXJhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zY2VuZXMvY2FtZXJhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFM0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR3hDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFFTCxjQUFjLEVBR2Qsc0JBQXNCLEdBRXZCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUvQyxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQztBQU10QyxNQUFNLE9BQU8scUJBQXFCO0VBQ2hDLFlBQTJCLFlBQWlDO0lBQWpDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtFQUFHLENBQUM7RUFFekQsS0FBSztJQUNWLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztFQUMzQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sYUFBYTtFQUdqQixVQUFVLENBQUMsRUFBVTtJQUMxQixPQUFPLElBQUkscUJBQXFCLENBQUM7TUFDL0IsS0FBSyxFQUFFO1FBQ0wsSUFBSSxFQUFFLFVBQVU7UUFDaEIsSUFBSSxFQUFFLEVBQUU7T0FDVDtLQUNGLENBQUMsQ0FBQztFQUNMLENBQUM7RUFFTSxjQUFjLENBQUMsRUFBVTtJQUM5QixPQUFPLElBQUkscUJBQXFCLENBQUM7TUFDL0IsS0FBSyxFQUFFO1FBQ0wsSUFBSSxFQUFFLFVBQVU7UUFDaEIsSUFBSSxFQUFFLEVBQUU7T0FDVDtLQUNGLENBQUMsQ0FBQztFQUNMLENBQUM7RUFFTSxVQUFVLENBQUMsTUFBK0I7SUFDL0MsT0FBTyxJQUFJLHFC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
|
|
381
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FtZXJhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zY2VuZXMvY2FtZXJhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTNFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUd4QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBRUwsY0FBYyxFQUVkLFdBQVcsRUFFWCx1QkFBdUIsRUFDdkIsc0JBQXNCLEdBRXZCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUvQyxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQztBQU10QyxNQUFNLE9BQU8scUJBQXFCO0VBQ2hDLFlBQTJCLFlBQWlDO0lBQWpDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtFQUFHLENBQUM7RUFFekQsS0FBSztJQUNWLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztFQUMzQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sYUFBYTtFQUdqQixVQUFVLENBQUMsRUFBVTtJQUMxQixPQUFPLElBQUkscUJBQXFCLENBQUM7TUFDL0IsS0FBSyxFQUFFO1FBQ0wsSUFBSSxFQUFFLFVBQVU7UUFDaEIsSUFBSSxFQUFFLEVBQUU7T0FDVDtLQUNGLENBQUMsQ0FBQztFQUNMLENBQUM7RUFFTSxjQUFjLENBQUMsRUFBVTtJQUM5QixPQUFPLElBQUkscUJBQXFCLENBQUM7TUFD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
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { vertexvis } from '@vertexvis/frame-streaming-protos';
|
|
2
2
|
import { toProtoDuration } from '@vertexvis/stream-api';
|
|
3
|
+
import { FrameCamera } from '../types';
|
|
3
4
|
export function buildSceneOperation(query, operations, context) {
|
|
4
5
|
const operationTypes = buildOperationTypes(operations);
|
|
5
6
|
switch (query.type) {
|
|
@@ -98,7 +99,7 @@ export function buildFlyToOperation(frameCorrelationId, options, animation) {
|
|
|
98
99
|
}) });
|
|
99
100
|
}
|
|
100
101
|
case 'camera': {
|
|
101
|
-
return Object.assign(Object.assign({}, payload), { camera: options.flyTo.data });
|
|
102
|
+
return Object.assign(Object.assign({}, payload), { camera: FrameCamera.toProtobuf(options.flyTo.data) });
|
|
102
103
|
}
|
|
103
104
|
case 'bounding-box': {
|
|
104
105
|
return Object.assign(Object.assign({}, payload), { boundingBox: {
|
|
@@ -174,4 +175,4 @@ function buildOperationTypes(operations) {
|
|
|
174
175
|
}
|
|
175
176
|
});
|
|
176
177
|
}
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zY2VuZXMvbWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHeEQsT0FBTyxFQUFvQixXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFRekQsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxLQUFzQixFQUN0QixVQUEyQixFQUMzQixPQUFtQztFQUVuQyxNQUFNLGNBQWMsR0FBRyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztFQUV2RCxRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7SUFDbEIsS0FBSyxLQUFLLENBQUM7SUFDWCxLQUFLLElBQUk7TUFDUCxPQUFPO1FBQ0wsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7VUFDWixPQUFPLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdkMsY0FBYyxFQUFFLG1CQUFtQixDQUFDLEdBQUcsQ0FBQztXQUN6QyxDQUFDLENBQUM7U0FDSjtRQUNELGNBQWM7T0FDZixDQUFDO0lBQ0osS0FBSyxTQUFTLENBQUM7SUFDZixLQUFLLGFBQWE7TUFDaEIsT0FBTztRQUNMLElBQUksRUFBRTtVQUNKLGNBQWMsRUFBRSxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7U0FDM0M7UUFDRCxjQUFjO09BQ2YsQ0FBQztJQUNKLEtBQUssS0FBSztNQUNSLE9BQU87UUFDTCxHQUFHLEVBQUUsRUFBRTtRQUNQLGNBQWM7T0FDZixDQUFDO0lBQ0osS0FBSyxrQkFBa0I7TUFDckIsT0FBTztRQUNMLGNBQWMsRUFBRTtVQUNkLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUs7VUFDeEIsR0FB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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Dimensions, Point } from '@vertexvis/geometry';
|
|
2
|
-
import { InvalidArgumentError } from '../errors';
|
|
3
|
-
import {
|
|
2
|
+
import { InvalidArgumentError, InvalidCameraError } from '../errors';
|
|
3
|
+
import { OrthographicCamera, PerspectiveCamera } from '.';
|
|
4
4
|
import { fromHex } from './colorMaterial';
|
|
5
5
|
import { CrossSectioner } from './crossSectioner';
|
|
6
6
|
import { buildSceneOperation } from './mapper';
|
|
@@ -171,12 +171,25 @@ export class Scene {
|
|
|
171
171
|
*/
|
|
172
172
|
camera() {
|
|
173
173
|
const { scene } = this.frame;
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
174
|
+
if (scene.camera.isOrthographic()) {
|
|
175
|
+
return new OrthographicCamera(this.stream, Dimensions.aspectRatio(this.viewport()), {
|
|
176
|
+
viewVector: scene.camera.viewVector,
|
|
177
|
+
lookAt: scene.camera.lookAt,
|
|
178
|
+
up: scene.camera.up,
|
|
179
|
+
fovHeight: scene.camera.fovHeight,
|
|
180
|
+
}, this.frame.scene.boundingBox, this.decodeFrame);
|
|
181
|
+
}
|
|
182
|
+
else if (scene.camera.isPerspective()) {
|
|
183
|
+
return new PerspectiveCamera(this.stream, Dimensions.aspectRatio(this.viewport()), {
|
|
184
|
+
position: scene.camera.position,
|
|
185
|
+
lookAt: scene.camera.lookAt,
|
|
186
|
+
up: scene.camera.up,
|
|
187
|
+
fovY: scene.camera.fovY,
|
|
188
|
+
}, this.frame.scene.boundingBox, this.decodeFrame);
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
throw new InvalidCameraError('Cannot retrieve camera. Scene has an unknown or invalid camera type.');
|
|
192
|
+
}
|
|
180
193
|
}
|
|
181
194
|
boundingBox() {
|
|
182
195
|
return this.frame.scene.boundingBox;
|
|
@@ -206,4 +219,4 @@ export class Scene {
|
|
|
206
219
|
return this.imageScaleProvider() || Point.create(1, 1);
|
|
207
220
|
}
|
|
208
221
|
}
|
|
209
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3NjZW5lcy9zY2VuZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSXJFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUdyRSxPQUFPLEVBQVUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxHQUFHLENBQUM7QUFDbEUsT0FBTyxFQUFpQixPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQy9DLE9BQU8sRUFHTCxxQkFBcUIsR0FDdEIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFtQixzQkFBc0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBV3hDOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sMEJBQTBCO0VBS3JDLFlBQ1UsS0FBc0IsRUFDdEIsd0JBQXVDLEVBQy9DLFlBQW9DO0lBRjVCLFVBQUssR0FBTCxLQUFLLENBQWlCO0lBQ3RCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBZTtJQUcvQyxJQUFJLENBQUMsT0FBTztNQUNWLFlBQVksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO0VBQ3RFLENBQUM7RUFFTSxnQkFBZ0IsQ0FDckIsS0FBNkI7SUFFN0IsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7TUFDN0IsT0FBTyxJQUFJLDBCQUEwQixDQUNuQyxJQUFJLENBQUMsS0FBSyxFQUNWLElBQUksQ0FB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
|
|
@@ -1,24 +1,52 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BoundingSphere, Vector3 } from '@vertexvis/geometry';
|
|
2
|
+
import { isOrthographicFrameCamera, } from './frameCamera';
|
|
2
3
|
export function fromBoundingBoxAndLookAtCamera(boundingBox, camera) {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
4
|
+
return isOrthographicFrameCamera(camera)
|
|
5
|
+
? fromBoundingBoxAndOrthographicCamera(boundingBox, camera)
|
|
6
|
+
: fromBoundingBoxAndPerspectiveCamera(boundingBox, camera);
|
|
7
|
+
}
|
|
8
|
+
// Logic pulled from https://github.com/Vertexvis/rendering-client-lib-java/blob/master/src/main/java/com/vertexvis/rendering/graphics/PerspectiveCamera.java#L65
|
|
9
|
+
// and needs to remain in sync with that computation.
|
|
10
|
+
// TODO: revisit computation of these values in a single location
|
|
11
|
+
export function fromBoundingBoxAndPerspectiveCamera(boundingBox, camera) {
|
|
12
|
+
const boundingSphere = BoundingSphere.create(boundingBox);
|
|
13
|
+
const minRange = boundingSphere.epsilon * 1e2;
|
|
14
|
+
const signedDistToEye = Vector3.dot(Vector3.subtract(boundingSphere.center, camera.position), Vector3.normalize(Vector3.subtract(camera.lookAt, camera.position)));
|
|
15
|
+
const bRadius = Math.max(boundingSphere.radius, minRange);
|
|
16
|
+
let newFar = bRadius + signedDistToEye < minRange
|
|
17
|
+
? bRadius * 3.0
|
|
18
|
+
: bRadius + signedDistToEye;
|
|
19
|
+
let newNear = newFar - bRadius * 2.0 < minRange
|
|
20
|
+
? Math.min(minRange, newFar)
|
|
21
|
+
: newFar - bRadius * 2.0;
|
|
22
|
+
if (newFar - newNear < minRange) {
|
|
23
|
+
newNear = Math.max(newNear, minRange);
|
|
24
|
+
newFar += newNear + minRange;
|
|
18
25
|
}
|
|
19
|
-
else {
|
|
20
|
-
|
|
26
|
+
else if (newNear / newFar < 0.0001) {
|
|
27
|
+
newNear = newFar * 0.0001;
|
|
21
28
|
}
|
|
22
|
-
|
|
29
|
+
if (newNear > newFar - bRadius * 2.0) {
|
|
30
|
+
if (newNear > 1000 + minRange) {
|
|
31
|
+
newFar -= newNear - 1000;
|
|
32
|
+
newNear = 1000;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
near: newNear,
|
|
37
|
+
far: newFar,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
// Logic pulled from https://github.com/Vertexvis/rendering-client-lib-java/blob/master/src/main/java/com/vertexvis/rendering/graphics/OrthographicCamera.java#L35
|
|
41
|
+
// and needs to remain in sync with that computation.
|
|
42
|
+
// TODO: revisit computation of these values in a single location
|
|
43
|
+
export function fromBoundingBoxAndOrthographicCamera(boundingBox, camera) {
|
|
44
|
+
const boundingSphere = BoundingSphere.create(boundingBox);
|
|
45
|
+
const minRange = boundingSphere.epsilon * 1e2;
|
|
46
|
+
const bRadius = Math.max(boundingSphere.radius, minRange);
|
|
47
|
+
return {
|
|
48
|
+
near: -bRadius,
|
|
49
|
+
far: bRadius,
|
|
50
|
+
};
|
|
23
51
|
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcHBpbmdQbGFuZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3R5cGVzL2NsaXBwaW5nUGxhbmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxjQUFjLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFM0UsT0FBTyxFQUVMLHlCQUF5QixHQUcxQixNQUFNLGVBQWUsQ0FBQztBQU92QixNQUFNLFVBQVUsOEJBQThCLENBQzVDLFdBQW9DLEVBQ3BDLE1BQW1CO0VBRW5CLE9BQU8seUJBQXlCLENBQUMsTUFBTSxDQUFDO0lBQ3RDLENBQUMsQ0FBQyxvQ0FBb0MsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDO0lBQzNELENBQUMsQ0FBQyxtQ0FBbUMsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUVELGlLQUFpSztBQUNqSyxxREFBcUQ7QUFDckQsaUVBQWlFO0FBQ2pFLE1BQU0sVUFBVSxtQ0FBbUMsQ0FDakQsV0FBb0MsRUFDcEMsTUFBOEI7RUFFOUIsTUFBTSxjQUFjLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztFQUMxRCxNQUFNLFFBQVEsR0FBRyxjQUFjLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztFQUU5QyxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUNqQyxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUN4RCxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FDcEUsQ0FBQztFQUVGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztFQUUxRCxJQUFJLE1BQU0sR0FDUixPQUFPLEdBQUcsZUFBZSxHQUFHLFFBQVE7SUFDbEMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxHQUFHO0lBQ2YsQ0FBQyxDQUFDLE9BQU8sR0FBRyxlQUFlLENBQUM7RUFFaEMsSUFBSSxPQUFPLEdBQ1QsTUFBTSxHQUFHLE9BQU8sR0FBRyxHQUFHLEdBQUcsUUFBUTtJQUMvQixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDO0lBQzVCLENBQUMsQ0FBQyxNQUFNLEdBQUcsT0FBTyxHQUFHLEdBQUcsQ0FBQztFQUU3QixJQUFJLE1BQU0sR0FBRyxPQUFPLEdBQUcsUUFBUSxFQUFFO0lBQy9CLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN0QyxNQUFNLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQztHQUM5QjtPQUFNLElBQUksT0FBTyxHQUFHLE1BQU0sR0FBRyxNQUFNLEVBQUU7SUFDcEMsT0FBTyxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUM7R0FDM0I7RUFFRCxJQUFJLE9BQU8sR0FBRyxNQUFNLEdBQUcsT0FBTyxHQUFHLEdBQUcsRUFBRTtJQUNwQyxJQUFJLE9BQU8sR0FBRyxJQUFJLEdBQUcsUUFBUSxFQUFFO01BQzdCLE1BQU0sSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO01BQ3pCLE9BQU8sR0FBRyxJQUFJLENBQUM7S0FDaEI7R0FDRjtFQUVELE9BQU87SUFDTCxJQUFJLEVBQUUsT0FBTztJQUNiLEdBQUcsRUFBRSxNQUFNO0dBQ1osQ0FBQztBQUNKLENBQUM7QUFFRCxrS0FBa0s7QUFDbEsscURBQXFEO0FBQ3JELGlFQUFpRTtBQUNqRSxNQUFNLFVBQVUsb0NBQW9DLENBQ2xELFdBQW9DLEVBQ3BDLE1BQStCO0VBRS9CLE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7RUFDMUQsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7RUFFOUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0VBRTFELE9BQU87SUFDTCxJQUFJLEVBQUUsQ0FBQyxPQUFPO0lBQ2QsR0FBRyxFQUFFLE9BQU87R0FDYixDQUFDO0FBQ0osQ0FBQyJ9
|