@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.
Files changed (167) hide show
  1. package/dist/cjs/{browser.esm-31b03292.js → browser.esm-c51162f8.js} +1 -1
  2. package/dist/cjs/{bundle.esm-dc0a8361.js → bundle.esm-1b8b1f36.js} +34 -0
  3. package/dist/cjs/{config-90ee43d5.js → config-91efd353.js} +2 -2
  4. package/dist/cjs/{cursors-ad2fd395.js → cursors-14827f58.js} +1 -1
  5. package/dist/cjs/{dom-dd265f48.js → dom-c697cf99.js} +1 -1
  6. package/dist/cjs/{entities-aa59890e.js → entities-0829b4a4.js} +3 -3
  7. package/dist/cjs/index.cjs.js +13 -12
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/cjs/{mapper-f6e6cafe.js → mapper-67af470b.js} +2 -2
  10. package/dist/cjs/{markup-fb1553b1.js → markup-835f2e83.js} +2 -2
  11. package/dist/cjs/{measurement-aba1e0e8.js → measurement-8e0ce89a.js} +2 -2
  12. package/dist/cjs/{model-4ec0c36e.js → model-78241d4f.js} +1 -1
  13. package/dist/cjs/{overlays-40c6cbc7.js → overlays-06786e52.js} +2 -2
  14. package/dist/cjs/{png-decoder-27d25eed.js → png-decoder-01b76242.js} +1 -1
  15. package/dist/cjs/{results-bc325974.js → results-7a694238.js} +1 -1
  16. package/dist/cjs/{scene-d420fd26.js → scene-23535fc0.js} +176 -85
  17. package/dist/cjs/{streamAttributes-d6236448.js → streamAttributes-f13c1a96.js} +1431 -41
  18. package/dist/cjs/{utils-f80be307.js → utils-4a02e54b.js} +1 -1
  19. package/dist/cjs/{utils-545b1865.js → utils-5cc32a26.js} +1 -1
  20. package/dist/cjs/vertex-scene-tree-search_3.cjs.entry.js +1 -1
  21. package/dist/cjs/vertex-scene-tree.cjs.entry.js +4 -4
  22. package/dist/cjs/vertex-viewer-dom-element_3.cjs.entry.js +4 -4
  23. package/dist/cjs/vertex-viewer-markup-arrow_3.cjs.entry.js +3 -3
  24. package/dist/cjs/vertex-viewer-markup-tool.cjs.entry.js +4 -4
  25. package/dist/cjs/vertex-viewer-markup.cjs.entry.js +4 -4
  26. package/dist/cjs/vertex-viewer-measurement-details.cjs.entry.js +3 -3
  27. package/dist/cjs/vertex-viewer-measurement-distance.cjs.entry.js +11 -11
  28. package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js +6 -6
  29. package/dist/cjs/vertex-viewer-measurement-precise.cjs.entry.js +10 -10
  30. package/dist/cjs/vertex-viewer-measurement-tool.cjs.entry.js +5 -5
  31. package/dist/cjs/vertex-viewer-measurements.cjs.entry.js +8 -8
  32. package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js +3 -3
  33. package/dist/cjs/vertex-viewer.cjs.entry.js +198 -79
  34. package/dist/cjs/viewer.cjs.js +1 -1
  35. package/dist/cjs/{viewport-8c39089f.js → viewport-052809c7.js} +1 -1
  36. package/dist/collection/components/viewer/viewer.js +68 -4
  37. package/dist/collection/components/viewer-dom-renderer/renderer2d.js +1 -1
  38. package/dist/collection/components/viewer-dom-renderer/renderer3d.js +1 -1
  39. package/dist/collection/components/viewer-dom-renderer/viewer-dom-renderer.js +3 -3
  40. package/dist/collection/components/viewer-measurement-distance/viewer-measurement-distance.js +3 -3
  41. package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays.js +3 -3
  42. package/dist/collection/index.js +2 -2
  43. package/dist/collection/lib/errors.js +8 -1
  44. package/dist/collection/lib/interactions/index.js +3 -1
  45. package/dist/collection/lib/interactions/interactionApi.js +4 -25
  46. package/dist/collection/lib/interactions/interactionApiOrthographic.js +50 -0
  47. package/dist/collection/lib/interactions/interactionApiPerspective.js +50 -0
  48. package/dist/collection/lib/mappers/frameStreaming.js +27 -5
  49. package/dist/collection/lib/rendering/matrices.js +13 -4
  50. package/dist/collection/lib/scenes/__mocks__/mocks.js +2 -2
  51. package/dist/collection/lib/scenes/camera.js +149 -77
  52. package/dist/collection/lib/scenes/mapper.js +3 -2
  53. package/dist/collection/lib/scenes/scene.js +23 -9
  54. package/dist/collection/lib/types/clippingPlanes.js +54 -17
  55. package/dist/collection/lib/types/depthBuffer.js +1 -1
  56. package/dist/collection/lib/types/frame.js +88 -23
  57. package/dist/collection/lib/types/frameCamera.js +81 -6
  58. package/dist/collection/lib/types/viewport.js +1 -1
  59. package/dist/collection/testing/fixtures.js +23 -10
  60. package/dist/collection/testing/viewer.js +5 -3
  61. package/dist/custom-elements/index.js +1821 -194
  62. package/dist/esm/{browser.esm-59e914f6.js → browser.esm-48f051a3.js} +1 -1
  63. package/dist/esm/{bundle.esm-d899b2d5.js → bundle.esm-df3a8a42.js} +35 -1
  64. package/dist/esm/{config-604c644e.js → config-3a5d3ea3.js} +2 -2
  65. package/dist/esm/{cursors-a7ec4adb.js → cursors-45f23dfe.js} +1 -1
  66. package/dist/esm/{dom-780d25be.js → dom-18d9ac79.js} +1 -1
  67. package/dist/esm/{entities-759d97cd.js → entities-60dfd79d.js} +3 -3
  68. package/dist/esm/index.js +12 -12
  69. package/dist/esm/index.mjs +12 -12
  70. package/dist/esm/loader.js +1 -1
  71. package/dist/esm/loader.mjs +1 -1
  72. package/dist/esm/{mapper-4b815e31.js → mapper-adf23dc4.js} +2 -2
  73. package/dist/esm/{markup-1d177b4a.js → markup-accb6b5c.js} +2 -2
  74. package/dist/esm/{measurement-12cdbf5c.js → measurement-6cd457a6.js} +2 -2
  75. package/dist/esm/{model-e5a4f00f.js → model-4982c15d.js} +1 -1
  76. package/dist/esm/{overlays-1919b192.js → overlays-1783a61a.js} +2 -2
  77. package/dist/esm/{png-decoder-3f1fa486.js → png-decoder-f35def4c.js} +1 -1
  78. package/dist/esm/{results-994bdb50.js → results-93d45acc.js} +1 -1
  79. package/dist/esm/{scene-2c2460d5.js → scene-2d8bdccc.js} +176 -85
  80. package/dist/esm/{streamAttributes-d623bb60.js → streamAttributes-87a3605c.js} +1426 -43
  81. package/dist/esm/{utils-5e57bf24.js → utils-9f4b25ec.js} +1 -1
  82. package/dist/esm/{utils-83a19677.js → utils-ed2346c0.js} +1 -1
  83. package/dist/esm/vertex-scene-tree-search_3.entry.js +1 -1
  84. package/dist/esm/vertex-scene-tree.entry.js +4 -4
  85. package/dist/esm/vertex-viewer-dom-element_3.entry.js +4 -4
  86. package/dist/esm/vertex-viewer-markup-arrow_3.entry.js +3 -3
  87. package/dist/esm/vertex-viewer-markup-tool.entry.js +4 -4
  88. package/dist/esm/vertex-viewer-markup.entry.js +4 -4
  89. package/dist/esm/vertex-viewer-measurement-details.entry.js +3 -3
  90. package/dist/esm/vertex-viewer-measurement-distance.entry.js +11 -11
  91. package/dist/esm/vertex-viewer-measurement-line_2.entry.js +6 -6
  92. package/dist/esm/vertex-viewer-measurement-precise.entry.js +10 -10
  93. package/dist/esm/vertex-viewer-measurement-tool.entry.js +5 -5
  94. package/dist/esm/vertex-viewer-measurements.entry.js +8 -8
  95. package/dist/esm/vertex-viewer-view-cube.entry.js +3 -3
  96. package/dist/esm/vertex-viewer.entry.js +198 -79
  97. package/dist/esm/viewer.js +1 -1
  98. package/dist/esm/{viewport-01c886ea.js → viewport-6d4c0af0.js} +1 -1
  99. package/dist/types/components/viewer/viewer.d.ts +8 -0
  100. package/dist/types/components/viewer-dom-renderer/renderer2d.d.ts +2 -2
  101. package/dist/types/components/viewer-dom-renderer/renderer3d.d.ts +3 -3
  102. package/dist/types/components/viewer-dom-renderer/viewer-dom-renderer.d.ts +2 -2
  103. package/dist/types/components/viewer-measurement-distance/utils.d.ts +2 -2
  104. package/dist/types/components/viewer-measurement-distance/viewer-measurement-distance.d.ts +2 -2
  105. package/dist/types/components/viewer-measurement-overlays/viewer-measurement-overlays-components.d.ts +2 -2
  106. package/dist/types/components/viewer-measurement-overlays/viewer-measurement-overlays.d.ts +2 -2
  107. package/dist/types/components.d.ts +15 -7
  108. package/dist/types/index.d.ts +1 -1
  109. package/dist/types/lib/errors.d.ts +3 -0
  110. package/dist/types/lib/interactions/index.d.ts +2 -0
  111. package/dist/types/lib/interactions/interactionApi.d.ts +20 -21
  112. package/dist/types/lib/interactions/interactionApiOrthographic.d.ts +21 -0
  113. package/dist/types/lib/interactions/interactionApiPerspective.d.ts +21 -0
  114. package/dist/types/lib/mappers/frameStreaming.d.ts +2 -0
  115. package/dist/types/lib/scenes/__mocks__/mocks.d.ts +2 -2
  116. package/dist/types/lib/scenes/camera.d.ts +100 -37
  117. package/dist/types/lib/scenes/scene.d.ts +1 -1
  118. package/dist/types/lib/types/clippingPlanes.d.ts +3 -1
  119. package/dist/types/lib/types/depthBuffer.d.ts +4 -4
  120. package/dist/types/lib/types/frame.d.ts +54 -11
  121. package/dist/types/lib/types/frameCamera.d.ts +21 -2
  122. package/dist/types/lib/types/viewport.d.ts +2 -3
  123. package/dist/types/testing/fixtures.d.ts +4 -2
  124. package/dist/viewer/index.esm.js +1 -1
  125. package/dist/viewer/{p-3f6ac74f.js → p-014561cd.js} +1 -1
  126. package/dist/viewer/p-121f2b40.js +18 -0
  127. package/dist/viewer/p-18ec4fed.js +4 -0
  128. package/dist/viewer/{p-e2297df2.entry.js → p-1acd0e56.entry.js} +1 -1
  129. package/dist/viewer/{p-da2f4a56.js → p-25dfee48.js} +1 -1
  130. package/dist/viewer/p-2e75198d.js +4 -0
  131. package/dist/viewer/p-38c06c25.js +4 -0
  132. package/dist/viewer/{p-67446e35.js → p-463151e0.js} +1 -1
  133. package/dist/viewer/{p-301660cf.js → p-546ae240.js} +1 -1
  134. package/dist/viewer/{p-d00e9203.js → p-6120a219.js} +1 -1
  135. package/dist/viewer/p-61db972b.js +4 -0
  136. package/dist/viewer/{p-a0df0e0c.js → p-6d9d3553.js} +1 -1
  137. package/dist/viewer/{p-f8d01b8a.entry.js → p-7c5bee8e.entry.js} +1 -1
  138. package/dist/viewer/{p-8decee06.entry.js → p-8de749a5.entry.js} +1 -1
  139. package/dist/viewer/{p-081e6873.js → p-8df35eee.js} +1 -1
  140. package/dist/viewer/{p-671c113c.entry.js → p-923b616f.entry.js} +1 -1
  141. package/dist/viewer/p-9b1ecc71.js +4 -0
  142. package/dist/viewer/{p-3810c24d.js → p-9fd5fc8e.js} +1 -1
  143. package/dist/viewer/p-b2d4c0cf.entry.js +4 -0
  144. package/dist/viewer/{p-364ce21c.js → p-b8bc15ec.js} +1 -1
  145. package/dist/viewer/{p-439220c6.js → p-b8f027eb.js} +1 -1
  146. package/dist/viewer/p-bc7f0ad6.entry.js +4 -0
  147. package/dist/viewer/{p-2cefb1b0.js → p-ce0fe8be.js} +1 -1
  148. package/dist/viewer/p-d939ecd3.entry.js +4 -0
  149. package/dist/viewer/{p-25eaab00.entry.js → p-de7eecce.entry.js} +1 -1
  150. package/dist/viewer/{p-4985fad5.js → p-e3fff448.js} +1 -1
  151. package/dist/viewer/{p-6e80f8b0.entry.js → p-e4934f47.entry.js} +1 -1
  152. package/dist/viewer/{p-df292b56.entry.js → p-e8f6cba6.entry.js} +1 -1
  153. package/dist/viewer/{p-353cfc7a.entry.js → p-ee86bed2.entry.js} +1 -1
  154. package/dist/viewer/{p-c62cb926.entry.js → p-f359a9ac.entry.js} +1 -1
  155. package/dist/viewer/{p-e07377fa.entry.js → p-fa7f2d0c.entry.js} +1 -1
  156. package/dist/viewer/{p-915d95ad.entry.js → p-ffde162f.entry.js} +1 -1
  157. package/dist/viewer/viewer.esm.js +1 -1
  158. package/package.json +8 -8
  159. package/dist/viewer/p-085e908a.js +0 -4
  160. package/dist/viewer/p-0aba71fd.js +0 -18
  161. package/dist/viewer/p-423410be.js +0 -4
  162. package/dist/viewer/p-432267bc.entry.js +0 -4
  163. package/dist/viewer/p-7cad9bf4.js +0 -4
  164. package/dist/viewer/p-d90f2f6d.entry.js +0 -4
  165. package/dist/viewer/p-f755af5a.entry.js +0 -4
  166. package/dist/viewer/p-f7cb7e59.js +0 -4
  167. 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(this.fovY * PI_OVER_360);
82
- if (this.aspectRatio < 1.0) {
83
- hOverD *= this.aspectRatio;
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(this.viewVector()));
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
- distanceToBoundingBoxCenter(boundingBox) {
98
- const box = boundingBox || this.boundingBox;
99
- const boundingBoxCenter = BoundingBox.center(box);
100
- const cameraToCenter = Vector3.subtract(this.position, boundingBoxCenter);
101
- const distanceToCenterAlongViewVec = Math.abs(Vector3.dot(Vector3.subtract(this.lookAt, this.position), cameraToCenter)) / Vector3.magnitude(Vector3.subtract(this.lookAt, this.position));
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
- this.flyToOptions = { flyTo: this.buildFlyToType(paramsOrQuery) };
114
- return this;
108
+ return this.updateFlyToOptions({
109
+ flyTo: this.buildFlyToType(paramsOrQuery),
110
+ });
115
111
  }
116
112
  else {
117
- this.flyToOptions = paramsOrQuery(new FlyToExecutor()).build();
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
- * Returns the view vector for the camera, which is the direction between the
251
- * `position` and `lookAt` vectors.
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
- viewVector() {
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.data.position);
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.data.up);
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.data.lookAt);
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 45;
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.data);
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.data);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zY2VuZXMvbWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFXeEQsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxLQUFzQixFQUN0QixVQUEyQixFQUMzQixPQUFtQztFQUVuQyxNQUFNLGNBQWMsR0FBRyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztFQUV2RCxRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7SUFDbEIsS0FBSyxLQUFLLENBQUM7SUFDWCxLQUFLLElBQUk7TUFDUCxPQUFPO1FBQ0wsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7VUFDWixPQUFPLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdkMsY0FBYyxFQUFFLG1CQUFtQixDQUFDLEdBQUcsQ0FBQztXQUN6QyxDQUFDLENBQUM7U0FDSjtRQUNELGNBQWM7T0FDZixDQUFDO0lBQ0osS0FBSyxTQUFTLENBQUM7SUFDZixLQUFLLGFBQWE7TUFDaEIsT0FBTztRQUNMLElBQUksRUFBRTtVQUNKLGNBQWMsRUFBRSxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7U0FDM0M7UUFDRCxjQUFjO09BQ2YsQ0FBQztJQUNKLEtBQUssS0FBSztNQUNSLE9BQU87UUFDTCxHQUFHLEVBQUUsRUFBRTtRQUNQLGNBQWM7T0FDZixDQUFDO0lBQ0osS0FBSyxrQkFBa0I7TUFDckIsT0FBTztRQUNMLGNBQWMsRUFBRTtVQUNkLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUs7VUFDeEIsR0FBRyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRztTQUNyQjtRQUNE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
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 { Camera } from './camera';
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
- const data = {
175
- position: scene.camera.position,
176
- lookAt: scene.camera.lookAt,
177
- up: scene.camera.up,
178
- };
179
- return new Camera(this.stream, Dimensions.aspectRatio(this.viewport()), data, this.frame.scene.boundingBox, this.decodeFrame);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3NjZW5lcy9zY2VuZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSXJFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUdqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBaUIsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMvQyxPQUFPLEVBR0wscUJBQXFCLEdBQ3RCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBbUIsc0JBQXNCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQVd4Qzs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLDBCQUEwQjtFQUtyQyxZQUNVLEtBQXNCLEVBQ3RCLHdCQUF1QyxFQUMvQyxZQUFvQztJQUY1QixVQUFLLEdBQUwsS0FBSyxDQUFpQjtJQUN0Qiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQWU7SUFHL0MsSUFBSSxDQUFDLE9BQU87TUFDVixZQUFZLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUkscUJBQXFCLEVBQUUsQ0FBQztFQUN0RSxDQUFDO0VBRU0sZ0JBQWdCLENBQ3JCLEtBQTZCO0lBRTdCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO01BQzdCLE9BQU8sSUFBSSwwQkFBMEIsQ0FDbkMsSUFBSSxDQUFDLEtBQUssRUFDVixJQUFJLENBQUMsd0JBQXdCLEVBQzdCLElBQUksQ0FBQyxP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
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 distanceToCenterAlongViewVec = Math.abs(Vector3.dot(Vector3.subtract(camera.lookAt, camera.position), cameraToCenter)) / Vector3.magnitude(Vector3.subtract(camera.lookAt, camera.position));
7
- const radius = 1.1 * Vector3.magnitude(centerToBoundingPlane);
8
- let far = distanceToCenterAlongViewVec + radius;
9
- let near = far * 0.01;
10
- if (near > distanceToCenterAlongViewVec - radius) {
11
- if (near > 1000) {
12
- const difference = near - 1000;
13
- near = 1000;
14
- far -= difference;
15
- }
16
- else {
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
- else {
20
- near = distanceToCenterAlongViewVec - radius;
33
+ if (newNear > newFar - bRadius * 2.0) {
34
+ if (newNear > 1000 + minRange) {
35
+ newFar -= newNear - 1000;
36
+ newNear = 1000;
37
+ }
21
38
  }
22
- return { far, near };
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcHBpbmdQbGFuZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3R5cGVzL2NsaXBwaW5nUGxhbmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFTM0QsTUFBTSxVQUFVLDhCQUE4QixDQUM1QyxXQUFvQyxFQUNwQyxNQUFtQjtFQUVuQixNQUFNLGlCQUFpQixHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7RUFDMUQsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLENBQUM7RUFDNUUsTUFBTSxxQkFBcUIsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUM1QyxXQUFXLENBQUMsR0FBRyxFQUNmLGlCQUFpQixDQUNsQixDQUFDO0VBQ0YsTUFBTSw0QkFBNEIsR0FDaEMsSUFBSSxDQUFDLEdBQUcsQ0FDTixPQUFPLENBQUMsR0FBRyxDQUNULE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQ2hELGNBQWMsQ0FDZixDQUNGLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7RUFDMUUsTUFBTSxNQUFNLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsQ0FBQztFQUM5RCxJQUFJLEdBQUcsR0FBRyw0QkFBNEIsR0FBRyxNQUFNLENBQUM7RUFDaEQsSUFBSSxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQztFQUV0QixJQUFJLElBQUksR0FBRyw0QkFBNEIsR0FBRyxNQUFNLEVBQUU7SUFDaEQsSUFBSSxJQUFJLEdBQUcsSUFBSSxFQUFFO01BQ2YsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztNQUMvQixJQUFJLEdBQUcsSUFBSSxDQUFDO01BQ1osR0FBRyxJQUFJLFVBQVUsQ0FBQztLQUNuQjtTQUFNO0tBQ047R0FDRjtPQUFNO0lBQ0wsSUFBSSxHQUFHLDRCQUE0QixHQUFHLE1BQU0sQ0FBQztHQUM5QztFQUVELE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDdkIsQ0FBQyJ9
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwdGhCdWZmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3R5cGVzL2RlcHRoQnVmZmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBVTlDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7RUFPdEI7Ozs7OztLQU1HO0VBQ0gsWUFDa0IsTUFBOEIsRUFDOUIsU0FBOEIsRUFDOUIsTUFBbUI7SUFGbkIsV0FBTSxHQUFOLE1BQU0sQ0FBd0I7SUFDOUIsY0FBUyxHQUFULFNBQVMsQ0FBcUI7SUFDOUIsV0FBTSxHQUFOLE1BQU0sQ0FBYTtFQUNsQyxDQUFDO0VBRUo7Ozs7Ozs7O0tBUUc7RUFDSSxNQUFNLENBQUMsT0FBTyxDQUNuQixHQUE2QixFQUM3QixNQUE4QixFQUM5QixTQUE4QjtJQUU5QixJQUFJLEdBQUcsQ0FBQyxJQUFJLFlBQVksV0FBVyxFQUFFO01BQ25DLE9BQU8sSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDckQ7U0FBTTtNQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztLQUMvRDtFQUNILENBQUM7RUFFRDs7Ozs7Ozs7O0tBU0c7RUFDSSxxQkFBcUIsQ0FDMUIsS0FBa0IsRUFDbEIsdUJBQWdDO0lBRWhDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNsQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQzFDLEtBQUssRUFDTCx1QkFBdUIsQ0FDeEIsQ0FBQztJQUNGLE9BQU8sS0FBSyxHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFH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
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwdGhCdWZmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3R5cGVzL2RlcHRoQnVmZmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBVTlDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7RUFPdEI7Ozs7OztLQU1HO0VBQ0gsWUFDa0IsTUFBK0IsRUFDL0IsU0FBOEIsRUFDOUIsTUFBbUI7SUFGbkIsV0FBTSxHQUFOLE1BQU0sQ0FBeUI7SUFDL0IsY0FBUyxHQUFULFNBQVMsQ0FBcUI7SUFDOUIsV0FBTSxHQUFOLE1BQU0sQ0FBYTtFQUNsQyxDQUFDO0VBRUo7Ozs7Ozs7O0tBUUc7RUFDSSxNQUFNLENBQUMsT0FBTyxDQUNuQixHQUE2QixFQUM3QixNQUErQixFQUMvQixTQUE4QjtJQUU5QixJQUFJLEdBQUcsQ0FBQyxJQUFJLFlBQVksV0FBVyxFQUFFO01BQ25DLE9BQU8sSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDckQ7U0FBTTtNQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztLQUMvRDtFQUNILENBQUM7RUFFRDs7Ozs7Ozs7O0tBU0c7RUFDSSxxQkFBcUIsQ0FDMUIsS0FBa0IsRUFDbEIsdUJBQWdDO0lBRWhDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNsQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQzFDLEtBQUssRUFDTCx1QkFBdUIsQ0FDeEIsQ0FBQztJQUNGLE9BQU8sS0FBSyxHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFH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