@vertexvis/viewer 0.13.1 → 0.13.2-canary.2
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-c51162f8.js} +1 -1
- package/dist/cjs/{bundle.esm-dc0a8361.js → bundle.esm-1b8b1f36.js} +34 -0
- package/dist/cjs/{config-90ee43d5.js → config-91efd353.js} +2 -2
- package/dist/cjs/{cursors-ad2fd395.js → cursors-14827f58.js} +1 -1
- package/dist/cjs/{dom-dd265f48.js → dom-c697cf99.js} +1 -1
- package/dist/cjs/{entities-aa59890e.js → entities-0829b4a4.js} +3 -3
- package/dist/cjs/index.cjs.js +13 -12
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{mapper-f6e6cafe.js → mapper-67af470b.js} +2 -2
- package/dist/cjs/{markup-fb1553b1.js → markup-835f2e83.js} +2 -2
- package/dist/cjs/{measurement-aba1e0e8.js → measurement-8e0ce89a.js} +2 -2
- package/dist/cjs/{model-4ec0c36e.js → model-78241d4f.js} +1 -1
- package/dist/cjs/{overlays-40c6cbc7.js → overlays-06786e52.js} +2 -2
- package/dist/cjs/{png-decoder-27d25eed.js → png-decoder-01b76242.js} +1 -1
- package/dist/cjs/{results-bc325974.js → results-7a694238.js} +1 -1
- package/dist/cjs/{scene-d420fd26.js → scene-23535fc0.js} +176 -85
- package/dist/cjs/{streamAttributes-d6236448.js → streamAttributes-f13c1a96.js} +1431 -41
- package/dist/cjs/{utils-f80be307.js → utils-4a02e54b.js} +1 -1
- package/dist/cjs/{utils-545b1865.js → utils-5cc32a26.js} +1 -1
- package/dist/cjs/vertex-scene-tree-search_3.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 +4 -4
- 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 +11 -11
- 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 +198 -79
- package/dist/cjs/viewer.cjs.js +1 -1
- package/dist/cjs/{viewport-8c39089f.js → viewport-052809c7.js} +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 +1 -1
- package/dist/collection/components/viewer-dom-renderer/viewer-dom-renderer.js +3 -3
- package/dist/collection/components/viewer-measurement-distance/viewer-measurement-distance.js +3 -3
- 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 +50 -0
- package/dist/collection/lib/interactions/interactionApiPerspective.js +50 -0
- package/dist/collection/lib/mappers/frameStreaming.js +27 -5
- package/dist/collection/lib/rendering/matrices.js +13 -4
- package/dist/collection/lib/scenes/__mocks__/mocks.js +2 -2
- package/dist/collection/lib/scenes/camera.js +149 -77
- package/dist/collection/lib/scenes/mapper.js +3 -2
- package/dist/collection/lib/scenes/scene.js +23 -9
- package/dist/collection/lib/types/clippingPlanes.js +54 -17
- package/dist/collection/lib/types/depthBuffer.js +1 -1
- package/dist/collection/lib/types/frame.js +88 -23
- package/dist/collection/lib/types/frameCamera.js +81 -6
- package/dist/collection/lib/types/viewport.js +1 -1
- package/dist/collection/testing/fixtures.js +23 -10
- package/dist/collection/testing/viewer.js +5 -3
- package/dist/custom-elements/index.js +1821 -194
- package/dist/esm/{browser.esm-59e914f6.js → browser.esm-48f051a3.js} +1 -1
- package/dist/esm/{bundle.esm-d899b2d5.js → bundle.esm-df3a8a42.js} +35 -1
- package/dist/esm/{config-604c644e.js → config-3a5d3ea3.js} +2 -2
- package/dist/esm/{cursors-a7ec4adb.js → cursors-45f23dfe.js} +1 -1
- package/dist/esm/{dom-780d25be.js → dom-18d9ac79.js} +1 -1
- package/dist/esm/{entities-759d97cd.js → entities-60dfd79d.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-adf23dc4.js} +2 -2
- package/dist/esm/{markup-1d177b4a.js → markup-accb6b5c.js} +2 -2
- package/dist/esm/{measurement-12cdbf5c.js → measurement-6cd457a6.js} +2 -2
- package/dist/esm/{model-e5a4f00f.js → model-4982c15d.js} +1 -1
- package/dist/esm/{overlays-1919b192.js → overlays-1783a61a.js} +2 -2
- package/dist/esm/{png-decoder-3f1fa486.js → png-decoder-f35def4c.js} +1 -1
- package/dist/esm/{results-994bdb50.js → results-93d45acc.js} +1 -1
- package/dist/esm/{scene-2c2460d5.js → scene-2d8bdccc.js} +176 -85
- package/dist/esm/{streamAttributes-d623bb60.js → streamAttributes-87a3605c.js} +1426 -43
- package/dist/esm/{utils-5e57bf24.js → utils-9f4b25ec.js} +1 -1
- package/dist/esm/{utils-83a19677.js → utils-ed2346c0.js} +1 -1
- package/dist/esm/vertex-scene-tree-search_3.entry.js +1 -1
- package/dist/esm/vertex-scene-tree.entry.js +4 -4
- package/dist/esm/vertex-viewer-dom-element_3.entry.js +4 -4
- 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 +11 -11
- 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 +198 -79
- package/dist/esm/viewer.js +1 -1
- package/dist/esm/{viewport-01c886ea.js → viewport-6d4c0af0.js} +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/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 +20 -21
- package/dist/types/lib/interactions/interactionApiOrthographic.d.ts +21 -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/scenes/__mocks__/mocks.d.ts +2 -2
- package/dist/types/lib/scenes/camera.d.ts +100 -37
- 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 +4 -4
- package/dist/types/lib/types/frame.d.ts +54 -11
- package/dist/types/lib/types/frameCamera.d.ts +21 -2
- package/dist/types/lib/types/viewport.d.ts +2 -3
- package/dist/types/testing/fixtures.d.ts +4 -2
- package/dist/viewer/index.esm.js +1 -1
- package/dist/viewer/{p-3f6ac74f.js → p-014561cd.js} +1 -1
- package/dist/viewer/p-121f2b40.js +18 -0
- package/dist/viewer/p-18ec4fed.js +4 -0
- package/dist/viewer/{p-e2297df2.entry.js → p-1acd0e56.entry.js} +1 -1
- package/dist/viewer/{p-da2f4a56.js → p-25dfee48.js} +1 -1
- package/dist/viewer/p-2e75198d.js +4 -0
- package/dist/viewer/p-38c06c25.js +4 -0
- package/dist/viewer/{p-67446e35.js → p-463151e0.js} +1 -1
- package/dist/viewer/{p-301660cf.js → p-546ae240.js} +1 -1
- package/dist/viewer/{p-d00e9203.js → p-6120a219.js} +1 -1
- package/dist/viewer/p-61db972b.js +4 -0
- package/dist/viewer/{p-a0df0e0c.js → p-6d9d3553.js} +1 -1
- package/dist/viewer/{p-f8d01b8a.entry.js → p-7c5bee8e.entry.js} +1 -1
- package/dist/viewer/{p-8decee06.entry.js → p-8de749a5.entry.js} +1 -1
- package/dist/viewer/{p-081e6873.js → p-8df35eee.js} +1 -1
- package/dist/viewer/{p-671c113c.entry.js → p-923b616f.entry.js} +1 -1
- package/dist/viewer/p-9b1ecc71.js +4 -0
- package/dist/viewer/{p-3810c24d.js → p-9fd5fc8e.js} +1 -1
- package/dist/viewer/p-b2d4c0cf.entry.js +4 -0
- package/dist/viewer/{p-364ce21c.js → p-b8bc15ec.js} +1 -1
- package/dist/viewer/{p-439220c6.js → p-b8f027eb.js} +1 -1
- package/dist/viewer/p-bc7f0ad6.entry.js +4 -0
- package/dist/viewer/{p-2cefb1b0.js → p-ce0fe8be.js} +1 -1
- package/dist/viewer/p-d939ecd3.entry.js +4 -0
- package/dist/viewer/{p-25eaab00.entry.js → p-de7eecce.entry.js} +1 -1
- package/dist/viewer/{p-4985fad5.js → p-e3fff448.js} +1 -1
- package/dist/viewer/{p-6e80f8b0.entry.js → p-e4934f47.entry.js} +1 -1
- package/dist/viewer/{p-df292b56.entry.js → p-e8f6cba6.entry.js} +1 -1
- package/dist/viewer/{p-353cfc7a.entry.js → p-ee86bed2.entry.js} +1 -1
- package/dist/viewer/{p-c62cb926.entry.js → p-f359a9ac.entry.js} +1 -1
- package/dist/viewer/{p-e07377fa.entry.js → p-fa7f2d0c.entry.js} +1 -1
- package/dist/viewer/{p-915d95ad.entry.js → p-ffde162f.entry.js} +1 -1
- package/dist/viewer/viewer.esm.js +1 -1
- package/package.json +8 -8
- package/dist/viewer/p-085e908a.js +0 -4
- package/dist/viewer/p-0aba71fd.js +0 -18
- package/dist/viewer/p-423410be.js +0 -4
- package/dist/viewer/p-432267bc.entry.js +0 -4
- package/dist/viewer/p-7cad9bf4.js +0 -4
- package/dist/viewer/p-d90f2f6d.entry.js +0 -4
- package/dist/viewer/p-f755af5a.entry.js +0 -4
- package/dist/viewer/p-f7cb7e59.js +0 -4
- package/dist/viewer/p-fe11d694.js +0 -4
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { BoundingBox, Vector3 } from '@vertexvis/geometry';
|
|
2
2
|
import { UUID } from '@vertexvis/utils';
|
|
3
3
|
import { DEFAULT_TIMEOUT_IN_MS } from '../stream/dispatcher';
|
|
4
|
-
import { ClippingPlanes, FramePerspectiveCamera, } from '../types';
|
|
4
|
+
import { ClippingPlanes, FrameCamera, FrameOrthographicCamera, FramePerspectiveCamera, } from '../types';
|
|
5
|
+
import { withPositionAndViewVector } from '../types/frameCamera';
|
|
5
6
|
import { CameraRenderResult } from './cameraRenderResult';
|
|
6
7
|
import { buildFlyToOperation } from './mapper';
|
|
7
8
|
const PI_OVER_360 = 0.008726646259972;
|
|
@@ -61,32 +62,27 @@ export class FlyToExecutor {
|
|
|
61
62
|
* a new instance of the class with the updated properties.
|
|
62
63
|
*/
|
|
63
64
|
export class Camera {
|
|
64
|
-
constructor(stream, aspect, data, boundingBox, decodeFrame) {
|
|
65
|
+
constructor(stream, aspect, data, boundingBox, decodeFrame, flyToOptions) {
|
|
65
66
|
this.stream = stream;
|
|
66
67
|
this.aspect = aspect;
|
|
67
68
|
this.data = data;
|
|
68
69
|
this.boundingBox = boundingBox;
|
|
69
70
|
this.decodeFrame = decodeFrame;
|
|
71
|
+
this.flyToOptions = flyToOptions;
|
|
70
72
|
}
|
|
71
|
-
|
|
72
|
-
* Updates the position of the camera such that the given bounding box will
|
|
73
|
-
* be contained within the camera's view.
|
|
74
|
-
*
|
|
75
|
-
* @param boundingBox The bounding box to position to.
|
|
76
|
-
*/
|
|
77
|
-
fitToBoundingBox(boundingBox) {
|
|
73
|
+
fitCameraToBoundingBox(boundingBox, fovVertical, viewVector) {
|
|
78
74
|
const radius = 1.1 *
|
|
79
75
|
Vector3.magnitude(Vector3.subtract(boundingBox.max, BoundingBox.center(boundingBox)));
|
|
80
76
|
// ratio of the height of the frustum to the distance along the view vector
|
|
81
|
-
let hOverD = Math.tan(
|
|
82
|
-
if (this.
|
|
83
|
-
hOverD *= this.
|
|
77
|
+
let hOverD = Math.tan(fovVertical * PI_OVER_360);
|
|
78
|
+
if (this.aspect < 1.0) {
|
|
79
|
+
hOverD *= this.aspect;
|
|
84
80
|
}
|
|
85
81
|
const distance = Math.abs(radius / hOverD);
|
|
86
|
-
const vvec = Vector3.scale(distance, Vector3.normalize(
|
|
82
|
+
const vvec = Vector3.scale(distance, Vector3.normalize(viewVector));
|
|
87
83
|
const lookAt = BoundingBox.center(boundingBox);
|
|
88
84
|
const position = Vector3.subtract(lookAt, vvec);
|
|
89
|
-
return this.update({ lookAt, position });
|
|
85
|
+
return this.update({ lookAt, position, viewVector: vvec });
|
|
90
86
|
}
|
|
91
87
|
/**
|
|
92
88
|
* Returns the distance from the camera's position to the center
|
|
@@ -94,12 +90,11 @@ export class Camera {
|
|
|
94
90
|
*
|
|
95
91
|
* @param boundingBox - The bounding box to determine distance from.
|
|
96
92
|
*/
|
|
97
|
-
|
|
98
|
-
const
|
|
99
|
-
const boundingBoxCenter = BoundingBox.center(
|
|
100
|
-
const cameraToCenter = Vector3.subtract(
|
|
101
|
-
|
|
102
|
-
return distanceToCenterAlongViewVec;
|
|
93
|
+
signedDistanceToBoundingBoxCenter(boundingBox) {
|
|
94
|
+
const { position, viewVector } = withPositionAndViewVector(this.data);
|
|
95
|
+
const boundingBoxCenter = BoundingBox.center(boundingBox !== null && boundingBox !== void 0 ? boundingBox : this.boundingBox);
|
|
96
|
+
const cameraToCenter = Vector3.subtract(boundingBoxCenter, position);
|
|
97
|
+
return (Vector3.dot(viewVector, cameraToCenter) / Vector3.magnitude(viewVector));
|
|
103
98
|
}
|
|
104
99
|
/**
|
|
105
100
|
* Specifies that the next render of the camera will be repositioned to one of
|
|
@@ -110,26 +105,14 @@ export class Camera {
|
|
|
110
105
|
*/
|
|
111
106
|
flyTo(paramsOrQuery) {
|
|
112
107
|
if (typeof paramsOrQuery !== 'function') {
|
|
113
|
-
|
|
114
|
-
|
|
108
|
+
return this.updateFlyToOptions({
|
|
109
|
+
flyTo: this.buildFlyToType(paramsOrQuery),
|
|
110
|
+
});
|
|
115
111
|
}
|
|
116
112
|
else {
|
|
117
|
-
this.
|
|
118
|
-
return this;
|
|
113
|
+
return this.updateFlyToOptions(paramsOrQuery(new FlyToExecutor()).build());
|
|
119
114
|
}
|
|
120
115
|
}
|
|
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
116
|
viewAll() {
|
|
134
117
|
return this.fitToBoundingBox(this.boundingBox);
|
|
135
118
|
}
|
|
@@ -161,7 +144,7 @@ export class Camera {
|
|
|
161
144
|
}
|
|
162
145
|
else {
|
|
163
146
|
this.stream.replaceCamera({
|
|
164
|
-
camera: this.data,
|
|
147
|
+
camera: FrameCamera.toProtobuf(this.data),
|
|
165
148
|
frameCorrelationId: { value: corrId },
|
|
166
149
|
});
|
|
167
150
|
return new CameraRenderResult(this.stream, this.decodeFrame, {
|
|
@@ -181,22 +164,7 @@ export class Camera {
|
|
|
181
164
|
* @param axis A normalized vector to rotate around.
|
|
182
165
|
*/
|
|
183
166
|
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
|
-
});
|
|
167
|
+
return this.rotateAroundAxisAtPoint(angleInRadians, this.data.lookAt, axis);
|
|
200
168
|
}
|
|
201
169
|
/**
|
|
202
170
|
* Updates the `position` and `up` vectors of the camera to the given standard
|
|
@@ -212,20 +180,6 @@ export class Camera {
|
|
|
212
180
|
up: standardView.up,
|
|
213
181
|
});
|
|
214
182
|
}
|
|
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
183
|
buildFlyToType(options) {
|
|
230
184
|
if (options.boundingBox != null) {
|
|
231
185
|
return { type: 'bounding-box', data: options.boundingBox };
|
|
@@ -246,36 +200,151 @@ export class Camera {
|
|
|
246
200
|
computeClippingPlanes(camera) {
|
|
247
201
|
return ClippingPlanes.fromBoundingBoxAndLookAtCamera(this.boundingBox, camera);
|
|
248
202
|
}
|
|
203
|
+
}
|
|
204
|
+
export class PerspectiveCamera extends Camera {
|
|
205
|
+
constructor(stream, aspect, perspectiveData, boundingBox, decodeFrame, flyToOptions) {
|
|
206
|
+
super(stream, aspect, perspectiveData, boundingBox, decodeFrame, flyToOptions);
|
|
207
|
+
this.perspectiveData = perspectiveData;
|
|
208
|
+
}
|
|
249
209
|
/**
|
|
250
|
-
*
|
|
251
|
-
*
|
|
210
|
+
* Shifts the position of the camera by the given delta.
|
|
211
|
+
*
|
|
212
|
+
* @param delta The number of units to shift the camera on the X, Y, and Z
|
|
213
|
+
* axis.
|
|
252
214
|
*/
|
|
253
|
-
|
|
215
|
+
moveBy(delta) {
|
|
216
|
+
return this.update({
|
|
217
|
+
position: Vector3.add(this.position, delta),
|
|
218
|
+
lookAt: Vector3.add(this.lookAt, delta),
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
rotateAroundAxisAtPoint(angleInRadians, point, axis) {
|
|
222
|
+
return this.update({
|
|
223
|
+
position: Vector3.rotateAboutAxis(angleInRadians, this.position, axis, point),
|
|
224
|
+
lookAt: Vector3.rotateAboutAxis(angleInRadians, this.lookAt, axis, point),
|
|
225
|
+
up: Vector3.rotateAboutAxis(angleInRadians, this.up, axis, Vector3.origin()),
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
fitToBoundingBox(boundingBox) {
|
|
229
|
+
return super.fitCameraToBoundingBox(boundingBox, this.fovY, this.viewVector);
|
|
230
|
+
}
|
|
231
|
+
update(camera) {
|
|
232
|
+
return new PerspectiveCamera(this.stream, this.aspect, Object.assign(Object.assign({}, this.perspectiveData), camera), this.boundingBox, this.decodeFrame, this.flyToOptions);
|
|
233
|
+
}
|
|
234
|
+
toFrameCamera() {
|
|
235
|
+
return new FramePerspectiveCamera(this.position, this.lookAt, this.up, this.near, this.far, this.aspectRatio, this.fovY);
|
|
236
|
+
}
|
|
237
|
+
get viewVector() {
|
|
254
238
|
return Vector3.subtract(this.lookAt, this.position);
|
|
255
239
|
}
|
|
256
240
|
/**
|
|
257
241
|
* The position vector for the camera, in world space coordinates.
|
|
258
242
|
*/
|
|
259
243
|
get position() {
|
|
260
|
-
return Object.assign({}, this.
|
|
244
|
+
return Object.assign({}, this.perspectiveData.position);
|
|
261
245
|
}
|
|
262
246
|
/**
|
|
263
247
|
* A normalized vector representing the up direction.
|
|
264
248
|
*/
|
|
265
249
|
get up() {
|
|
266
|
-
return Object.assign({}, this.
|
|
250
|
+
return Object.assign({}, this.perspectiveData.up);
|
|
267
251
|
}
|
|
268
252
|
/**
|
|
269
253
|
* A vector, in world space coordinates, of where the camera is pointed at.
|
|
270
254
|
*/
|
|
271
255
|
get lookAt() {
|
|
272
|
-
return Object.assign({}, this.
|
|
256
|
+
return Object.assign({}, this.perspectiveData.lookAt);
|
|
273
257
|
}
|
|
274
258
|
/**
|
|
275
259
|
* The camera's field of view.
|
|
276
260
|
*/
|
|
277
261
|
get fovY() {
|
|
278
|
-
return
|
|
262
|
+
return this.perspectiveData.fovY;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* The aspect ratio of the camera.
|
|
266
|
+
*/
|
|
267
|
+
get aspectRatio() {
|
|
268
|
+
return this.aspect;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* The camera's near clipping plane.
|
|
272
|
+
*/
|
|
273
|
+
get near() {
|
|
274
|
+
const { near } = this.computeClippingPlanes(this.perspectiveData);
|
|
275
|
+
return near;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* The camera's far clipping plane.
|
|
279
|
+
*/
|
|
280
|
+
get far() {
|
|
281
|
+
const { far } = this.computeClippingPlanes(this.perspectiveData);
|
|
282
|
+
return far;
|
|
283
|
+
}
|
|
284
|
+
updateFlyToOptions(flyToOptions) {
|
|
285
|
+
return new PerspectiveCamera(this.stream, this.aspect, this.perspectiveData, this.boundingBox, this.decodeFrame, flyToOptions);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
export class OrthographicCamera extends Camera {
|
|
289
|
+
constructor(stream, aspect, orthographicData, boundingBox, decodeFrame, flyToOptions) {
|
|
290
|
+
super(stream, aspect, orthographicData, boundingBox, decodeFrame, flyToOptions);
|
|
291
|
+
this.orthographicData = orthographicData;
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Shifts the position of the camera by the given delta.
|
|
295
|
+
*
|
|
296
|
+
* @param delta The number of units to shift the camera on the X, Y, and Z
|
|
297
|
+
* axis.
|
|
298
|
+
*/
|
|
299
|
+
moveBy(delta) {
|
|
300
|
+
const updatedLookAt = Vector3.add(this.lookAt, delta);
|
|
301
|
+
return this.update({
|
|
302
|
+
viewVector: Vector3.subtract(updatedLookAt, Vector3.add(this.position, delta)),
|
|
303
|
+
lookAt: updatedLookAt,
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
rotateAroundAxisAtPoint(angleInRadians, point, axis) {
|
|
307
|
+
const newLookAt = Vector3.rotateAboutAxis(angleInRadians, this.lookAt, axis, point);
|
|
308
|
+
const newUp = Vector3.rotateAboutAxis(angleInRadians, this.up, axis, Vector3.origin());
|
|
309
|
+
const newViewVector = Vector3.subtract(Vector3.rotateAboutAxis(angleInRadians, this.position, axis, point), newLookAt);
|
|
310
|
+
return this.update({
|
|
311
|
+
viewVector: newViewVector,
|
|
312
|
+
lookAt: newLookAt,
|
|
313
|
+
up: newUp,
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
fitToBoundingBox(boundingBox) {
|
|
317
|
+
return super.fitCameraToBoundingBox(boundingBox, this.fovHeight, this.viewVector);
|
|
318
|
+
}
|
|
319
|
+
update(camera) {
|
|
320
|
+
return new OrthographicCamera(this.stream, this.aspect, Object.assign(Object.assign({}, this.orthographicData), camera), this.boundingBox, this.decodeFrame, this.flyToOptions);
|
|
321
|
+
}
|
|
322
|
+
toFrameCamera() {
|
|
323
|
+
return new FrameOrthographicCamera(this.viewVector, this.lookAt, this.up, this.near, this.far, this.aspectRatio, this.fovHeight);
|
|
324
|
+
}
|
|
325
|
+
get viewVector() {
|
|
326
|
+
return Object.assign({}, this.orthographicData.viewVector);
|
|
327
|
+
}
|
|
328
|
+
get position() {
|
|
329
|
+
return Vector3.add(this.lookAt, Vector3.negate(this.viewVector));
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* A normalized vector representing the up direction.
|
|
333
|
+
*/
|
|
334
|
+
get up() {
|
|
335
|
+
return Object.assign({}, this.orthographicData.up);
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* A vector, in world space coordinates, of where the camera is pointed at.
|
|
339
|
+
*/
|
|
340
|
+
get lookAt() {
|
|
341
|
+
return Object.assign({}, this.orthographicData.lookAt);
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* The camera's field of view.
|
|
345
|
+
*/
|
|
346
|
+
get fovHeight() {
|
|
347
|
+
return this.orthographicData.fovHeight;
|
|
279
348
|
}
|
|
280
349
|
/**
|
|
281
350
|
* The aspect ratio of the camera.
|
|
@@ -287,15 +356,18 @@ export class Camera {
|
|
|
287
356
|
* The camera's near clipping plane.
|
|
288
357
|
*/
|
|
289
358
|
get near() {
|
|
290
|
-
const { near } = this.computeClippingPlanes(this.
|
|
359
|
+
const { near } = this.computeClippingPlanes(this.orthographicData);
|
|
291
360
|
return near;
|
|
292
361
|
}
|
|
293
362
|
/**
|
|
294
363
|
* The camera's far clipping plane.
|
|
295
364
|
*/
|
|
296
365
|
get far() {
|
|
297
|
-
const { far } = this.computeClippingPlanes(this.
|
|
366
|
+
const { far } = this.computeClippingPlanes(this.orthographicData);
|
|
298
367
|
return far;
|
|
299
368
|
}
|
|
369
|
+
updateFlyToOptions(flyToOptions) {
|
|
370
|
+
return new OrthographicCamera(this.stream, this.aspect, this.orthographicData, this.boundingBox, this.decodeFrame, flyToOptions);
|
|
371
|
+
}
|
|
300
372
|
}
|
|
301
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FtZXJhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zY2VuZXMvY2FtZXJhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFM0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR3hDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFFTCxjQUFjLEVBR2Qsc0JBQXNCLEdBRXZCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUvQyxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQztBQU10QyxNQUFNLE9BQU8scUJBQXFCO0VBQ2hDLFlBQTJCLFlBQWlDO0lBQWpDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtFQUFHLENBQUM7RUFFekQsS0FBSztJQUNWLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztFQUMzQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sYUFBYTtFQUdqQixVQUFVLENBQUMsRUFBVTtJQUMxQixPQUFPLElBQUkscUJBQXFCLENBQUM7TUFDL0IsS0FBSyxFQUFFO1FBQ0wsSUFBSSxFQUFFLFVBQVU7UUFDaEIsSUFBSSxFQUFFLEVBQUU7T0FDVDtLQUNGLENBQUMsQ0FBQztFQUNMLENBQUM7RUFFTSxjQUFjLENBQUMsRUFBVTtJQUM5QixPQUFPLElBQUkscUJBQXFCLENBQUM7TUFDL0IsS0FBSyxFQUFFO1FBQ0wsSUFBSSxFQUFFLFVBQVU7UUFDaEIsSUFBSSxFQUFFLEVBQUU7T0FDVDtLQUNGLENBQUMsQ0FBQztFQUNMLENBQUM7RUFFTSxVQUFVLENBQUMsTUFBK0I7SUFDL0MsT0FBTyxJQUFJLHFC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
|
|
373
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FtZXJhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zY2VuZXMvY2FtZXJhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFM0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR3hDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFFTCxjQUFjLEVBRWQsV0FBVyxFQUVYLHVCQUF1QixFQUN2QixzQkFBc0IsR0FFdkIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRS9DLE1BQU0sV0FBVyxHQUFHLGlCQUFpQixDQUFDO0FBTXRDLE1BQU0sT0FBTyxxQkFBcUI7RUFDaEMsWUFBMkIsWUFBaUM7SUFBakMsaUJBQVksR0FBWixZQUFZLENBQXFCO0VBQUcsQ0FBQztFQUV6RCxLQUFLO0lBQ1YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0VBQzNCLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxhQUFhO0VBR2pCLFVBQVUsQ0FBQyxFQUFVO0lBQzFCLE9BQU8sSUFBSSxxQkFBcUIsQ0FBQztNQUMvQixLQUFLLEVBQUU7UUFDTCxJQUFJLEVBQUUsVUFBVTtRQUNoQixJQUFJLEVBQUUsRUFBRTtPQUNUO0tBQ0YsQ0FBQyxDQUFDO0VBQ0wsQ0FBQztFQUVNLGNBQWMsQ0FBQyxFQUFVO0lBQzlCLE9BQU8sSUFBSSxxQkFBcUIsQ0FBQztNQUMvQixLQUFLLEVBQUU7UUFDTCxJQUFJLEVBQUUsVUFBVTtRQUNoQixJQUFJLEVBQUUsRUFBRTtP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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,7 @@
|
|
|
1
1
|
import { Dimensions, Point } from '@vertexvis/geometry';
|
|
2
|
-
import { InvalidArgumentError } from '../errors';
|
|
3
|
-
import {
|
|
2
|
+
import { InvalidArgumentError, InvalidCameraError } from '../errors';
|
|
3
|
+
import { FrameOrthographicCamera, FramePerspectiveCamera } from '../types';
|
|
4
|
+
import { OrthographicCamera, PerspectiveCamera } from '.';
|
|
4
5
|
import { fromHex } from './colorMaterial';
|
|
5
6
|
import { CrossSectioner } from './crossSectioner';
|
|
6
7
|
import { buildSceneOperation } from './mapper';
|
|
@@ -171,12 +172,25 @@ export class Scene {
|
|
|
171
172
|
*/
|
|
172
173
|
camera() {
|
|
173
174
|
const { scene } = this.frame;
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
175
|
+
if (scene.camera instanceof FrameOrthographicCamera) {
|
|
176
|
+
return new OrthographicCamera(this.stream, Dimensions.aspectRatio(this.viewport()), {
|
|
177
|
+
viewVector: scene.camera.viewVector,
|
|
178
|
+
lookAt: scene.camera.lookAt,
|
|
179
|
+
up: scene.camera.up,
|
|
180
|
+
fovHeight: scene.camera.fovHeight,
|
|
181
|
+
}, this.frame.scene.boundingBox, this.decodeFrame);
|
|
182
|
+
}
|
|
183
|
+
else if (scene.camera instanceof FramePerspectiveCamera) {
|
|
184
|
+
return new PerspectiveCamera(this.stream, Dimensions.aspectRatio(this.viewport()), {
|
|
185
|
+
position: scene.camera.position,
|
|
186
|
+
lookAt: scene.camera.lookAt,
|
|
187
|
+
up: scene.camera.up,
|
|
188
|
+
fovY: scene.camera.fovY,
|
|
189
|
+
}, this.frame.scene.boundingBox, this.decodeFrame);
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
throw new InvalidCameraError('Cannot retrieve camera. Scene has an unknown or invalid camera type.');
|
|
193
|
+
}
|
|
180
194
|
}
|
|
181
195
|
boundingBox() {
|
|
182
196
|
return this.frame.scene.boundingBox;
|
|
@@ -206,4 +220,4 @@ export class Scene {
|
|
|
206
220
|
return this.imageScaleProvider() || Point.create(1, 1);
|
|
207
221
|
}
|
|
208
222
|
}
|
|
209
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3NjZW5lcy9zY2VuZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSXJFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVyRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFM0UsT0FBTyxFQUFVLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sR0FBRyxDQUFDO0FBQ2xFLE9BQU8sRUFBaUIsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMvQyxPQUFPLEVBR0wscUJBQXFCLEdBQ3RCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBbUIsc0JBQXNCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQVd4Qzs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLDBCQUEwQjtFQUtyQyxZQUNVLEtBQXNCLEVBQ3RCLHdCQUF1QyxFQUMvQyxZQUFvQztJQUY1QixVQUFLLEdBQUwsS0FBSyxDQUFpQjtJQUN0Qiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQWU7SUFHL0MsSUFBSSxDQUFDLE9BQU87TUFDVixZQUFZLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUkscUJBQXFCLEVBQUUsQ0FBQztFQUN0RSxDQUFDO0VBRU0sZ0JBQWdCLENBQ3JCLEtBQTZCO0lBRTdCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO01B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
|
|
@@ -1,24 +1,61 @@
|
|
|
1
1
|
import { BoundingBox, Vector3 } from '@vertexvis/geometry';
|
|
2
|
+
import { isOrthographicFrameCamera, } from './frameCamera';
|
|
2
3
|
export function fromBoundingBoxAndLookAtCamera(boundingBox, camera) {
|
|
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) {
|
|
3
12
|
const boundingBoxCenter = BoundingBox.center(boundingBox);
|
|
4
|
-
const cameraToCenter = Vector3.subtract(camera.position, boundingBoxCenter);
|
|
5
13
|
const centerToBoundingPlane = Vector3.subtract(boundingBox.max, boundingBoxCenter);
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
const radius = Vector3.magnitude(centerToBoundingPlane);
|
|
15
|
+
const length = Math.max(radius, Vector3.magnitude(boundingBoxCenter));
|
|
16
|
+
const epsilon = length === 0 ? 1.0 : length * 1e-6;
|
|
17
|
+
const minRange = epsilon * 1e2;
|
|
18
|
+
const signedDistToEye = Vector3.dot(Vector3.subtract(boundingBoxCenter, camera.position), Vector3.normalize(Vector3.subtract(camera.lookAt, camera.position)));
|
|
19
|
+
const bRadius = Math.max(radius, minRange);
|
|
20
|
+
let newFar = bRadius + signedDistToEye < minRange
|
|
21
|
+
? bRadius * 3.0
|
|
22
|
+
: bRadius + signedDistToEye;
|
|
23
|
+
let newNear = newFar - bRadius * 2.0 < minRange
|
|
24
|
+
? Math.min(minRange, newFar)
|
|
25
|
+
: newFar - bRadius * 2.0;
|
|
26
|
+
if (newFar - newNear < minRange) {
|
|
27
|
+
newNear = Math.max(newNear, minRange);
|
|
28
|
+
newFar += newNear + minRange;
|
|
29
|
+
}
|
|
30
|
+
else if (newNear / newFar < 0.0001) {
|
|
31
|
+
newNear = newFar * 0.0001;
|
|
18
32
|
}
|
|
19
|
-
|
|
20
|
-
|
|
33
|
+
if (newNear > newFar - bRadius * 2.0) {
|
|
34
|
+
if (newNear > 1000 + minRange) {
|
|
35
|
+
newFar -= newNear - 1000;
|
|
36
|
+
newNear = 1000;
|
|
37
|
+
}
|
|
21
38
|
}
|
|
22
|
-
return {
|
|
39
|
+
return {
|
|
40
|
+
near: newNear,
|
|
41
|
+
far: newFar,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
// Logic pulled from https://github.com/Vertexvis/rendering-client-lib-java/blob/master/src/main/java/com/vertexvis/rendering/graphics/OrthographicCamera.java#L35
|
|
45
|
+
// and needs to remain in sync with that computation.
|
|
46
|
+
// TODO: revisit computation of these values in a single location
|
|
47
|
+
export function fromBoundingBoxAndOrthographicCamera(boundingBox, camera) {
|
|
48
|
+
const boundingBoxCenter = BoundingBox.center(boundingBox);
|
|
49
|
+
const centerToBoundingPlane = Vector3.subtract(boundingBox.max, boundingBoxCenter);
|
|
50
|
+
const radius = Vector3.magnitude(centerToBoundingPlane);
|
|
51
|
+
const length = Math.max(radius, Vector3.magnitude(boundingBoxCenter));
|
|
52
|
+
const epsilon = length === 0 ? 1.0 : length * 1e-6;
|
|
53
|
+
const minRange = epsilon * 1e2;
|
|
54
|
+
const projCenter = Vector3.dot(Vector3.subtract(boundingBoxCenter, camera.lookAt), camera.viewVector);
|
|
55
|
+
const bRadius = Math.max(radius, minRange);
|
|
56
|
+
return {
|
|
57
|
+
near: projCenter - bRadius,
|
|
58
|
+
far: projCenter + bRadius,
|
|
59
|
+
};
|
|
23
60
|
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcHBpbmdQbGFuZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3R5cGVzL2NsaXBwaW5nUGxhbmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFM0QsT0FBTyxFQUVMLHlCQUF5QixHQUcxQixNQUFNLGVBQWUsQ0FBQztBQU92QixNQUFNLFVBQVUsOEJBQThCLENBQzVDLFdBQW9DLEVBQ3BDLE1BQW1CO0VBRW5CLE9BQU8seUJBQXlCLENBQUMsTUFBTSxDQUFDO0lBQ3RDLENBQUMsQ0FBQyxvQ0FBb0MsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDO0lBQzNELENBQUMsQ0FBQyxtQ0FBbUMsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUVELGlLQUFpSztBQUNqSyxxREFBcUQ7QUFDckQsaUVBQWlFO0FBQ2pFLE1BQU0sVUFBVSxtQ0FBbUMsQ0FDakQsV0FBb0MsRUFDcEMsTUFBOEI7RUFFOUIsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0VBQzFELE1BQU0scUJBQXFCLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FDNUMsV0FBVyxDQUFDLEdBQUcsRUFDZixpQkFBaUIsQ0FDbEIsQ0FBQztFQUNGLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsQ0FBQztFQUN4RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztFQUN0RSxNQUFNLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7RUFDbkQsTUFBTSxR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
|
|
@@ -139,4 +139,4 @@ export class DepthBuffer {
|
|
|
139
139
|
* by a depth buffer.
|
|
140
140
|
*/
|
|
141
141
|
DepthBuffer.MAX_DEPTH_VALUE = 2 ** 16 - 1;
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwdGhCdWZmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3R5cGVzL2RlcHRoQnVmZmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBVTlDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7RUFPdEI7Ozs7OztLQU1HO0VBQ0gsWUFDa0IsTUFBK0IsRUFDL0IsU0FBOEIsRUFDOUIsTUFBbUI7SUFGbkIsV0FBTSxHQUFOLE1BQU0sQ0FBeUI7SUFDL0IsY0FBUyxHQUFULFNBQVMsQ0FBcUI7SUFDOUIsV0FBTSxHQUFOLE1BQU0sQ0FBYTtFQUNsQyxDQUFDO0VBRUo7Ozs7Ozs7O0tBUUc7RUFDSSxNQUFNLENBQUMsT0FBTyxDQUNuQixHQUE2QixFQUM3QixNQUErQixFQUMvQixTQUE4QjtJQUU5QixJQUFJLEdBQUcsQ0FBQyxJQUFJLFlBQVksV0FBVyxFQUFFO01BQ25DLE9BQU8sSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDckQ7U0FBTTtNQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztLQUMvRDtFQUNILENBQUM7RUFFRDs7Ozs7Ozs7O0tBU0c7RUFDSSxxQkFBcUIsQ0FDMUIsS0FBa0IsRUFDbEIsdUJBQWdDO0lBRWhDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNsQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQzFDLEtBQUssRUFDTCx1QkFBdUIsQ0FDeEIsQ0FBQztJQUNGLE9BQU8sS0FBSyxHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztFQUNyQyxDQUFDO0VBRUQ7Ozs7Ozs7OztLQVNHO0VBQ0kseUJBQXlCLENBQzlCLEtBQWtCLEVBQ2xCLHVCQUFnQztJQUVoQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO0lBRW5ELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0QsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDO0lBQzVDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUVoRCxJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDLEdBQUcsTUFBTSxFQUFFO01BQ3ZFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztNQUNoRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO01BQ2pDLE1BQU0sZUFBZSxHQUNuQixLQUFLLEtBQUssV0FBVyxDQUFDLGVBQWU7UUFDbkMsQ0FBQyxDQUFDLHVCQUF1QixhQUF2Qix1QkFBdUIsY0FBdkIsdUJBQXVCLEdBQUksS0FBSztRQUNsQyxDQUFDLENBQUMsS0FBSyxDQUFDO01BQ1osT0FBTyxDQUNMLENBQUMsZUFBZSxhQUFmLGVBQWUsY0FBZixlQUFlLEdBQUksV0FBVyxDQUFDLGVBQWUsQ0FBQztRQUNoRCxXQUFXLENBQUMsZUFBZSxDQUM1QixDQUFDO0tBQ0g7U0FBTTtNQUNMLE9BQU8sdUJBQXVCLGFBQXZCLHVCQUF1QixjQUF2Qix1QkFBdUIsR0FBSSxDQUFDLENBQUM7S0FDckM7RUFDSCxDQUFDO0VBRUQ7Ozs7Ozs7S0FPRztFQUNJLE9BQU8sQ0FBQyxLQUFrQjtJQUMvQixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDbkQsQ0FBQztFQUVEOzs7Ozs7Ozs7S0FTRztFQUNJLGFBQWEsQ0FDbEIsS0FBa0IsRUFDbEIsR0FBWSxFQUNaLHVCQUFnQztJQUVoQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN0RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLHVCQUF1QixDQUFDLENBQUM7SUFFNUUsNkRBQTZEO0lBQzdELDREQUE0RDtJQUM1RCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqQyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUV6RCxNQUFNLEtBQUssR0FDVCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxZQUFZLENBQUM7TUFDN0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUM1RCxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQztFQUN2QyxDQUFDO0VBRUQ7Ozs7Ozs7S0FPRztFQUNJLFVBQVUsQ0FBQyxPQUF3QixFQUFFLFFBQWtCO0lBQzVELE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUVsRSxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN2RCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN6RCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTlDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLG9CQUFvQixDQUFDLENBQUM7SUFDbkUsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRW5ELE9BQU8sUUFBUSxHQUFHLEtBQUssQ0FBQztFQUMxQixDQUFDOztBQWhLRDs7O0dBR0c7QUFDVywyQkFBZSxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDIn0=
|