@konitif/viewer-3d 0.285.6 → 0.285.8

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 (42) hide show
  1. package/README.md +15 -0
  2. package/dist/renderer/CameraController.d.ts +3 -0
  3. package/dist/renderer/CameraController.d.ts.map +1 -1
  4. package/dist/renderer/CameraController.js +36 -24
  5. package/dist/renderer/CameraController.js.map +1 -1
  6. package/dist/renderer/CardinalGridLayer.d.ts +22 -0
  7. package/dist/renderer/CardinalGridLayer.d.ts.map +1 -0
  8. package/dist/renderer/CardinalGridLayer.js +127 -0
  9. package/dist/renderer/CardinalGridLayer.js.map +1 -0
  10. package/dist/renderer/OrthographicGroundReflection.d.ts +5 -0
  11. package/dist/renderer/OrthographicGroundReflection.d.ts.map +1 -0
  12. package/dist/renderer/OrthographicGroundReflection.js +58 -0
  13. package/dist/renderer/OrthographicGroundReflection.js.map +1 -0
  14. package/dist/renderer/PerformanceObservation.d.ts +8 -0
  15. package/dist/renderer/PerformanceObservation.d.ts.map +1 -0
  16. package/dist/renderer/PerformanceObservation.js +21 -0
  17. package/dist/renderer/PerformanceObservation.js.map +1 -0
  18. package/dist/renderer/SceneAstronomy.d.ts +34 -0
  19. package/dist/renderer/SceneAstronomy.d.ts.map +1 -0
  20. package/dist/renderer/SceneAstronomy.js +96 -0
  21. package/dist/renderer/SceneAstronomy.js.map +1 -0
  22. package/dist/renderer/SceneDayCycle.d.ts +21 -0
  23. package/dist/renderer/SceneDayCycle.d.ts.map +1 -0
  24. package/dist/renderer/SceneDayCycle.js +27 -0
  25. package/dist/renderer/SceneDayCycle.js.map +1 -0
  26. package/dist/renderer/SceneEnvironmentLayer.d.ts +26 -0
  27. package/dist/renderer/SceneEnvironmentLayer.d.ts.map +1 -0
  28. package/dist/renderer/SceneEnvironmentLayer.js +89 -0
  29. package/dist/renderer/SceneEnvironmentLayer.js.map +1 -0
  30. package/dist/renderer/Viewer3DRenderer.d.ts +30 -1
  31. package/dist/renderer/Viewer3DRenderer.d.ts.map +1 -1
  32. package/dist/renderer/Viewer3DRenderer.js +74 -11
  33. package/dist/renderer/Viewer3DRenderer.js.map +1 -1
  34. package/dist/renderer/VisualGroundLayer.d.ts.map +1 -1
  35. package/dist/renderer/VisualGroundLayer.js +37 -5
  36. package/dist/renderer/VisualGroundLayer.js.map +1 -1
  37. package/dist/renderer/index.d.ts +2 -0
  38. package/dist/renderer/index.d.ts.map +1 -1
  39. package/dist/renderer/index.js +2 -0
  40. package/dist/renderer/index.js.map +1 -1
  41. package/package.json +1 -1
  42. package/reference/catalog.json +10 -0
package/README.md CHANGED
@@ -105,6 +105,21 @@ The curve stays inside each segment's angular endpoints and stops at missing
105
105
  data; its provenance includes the neighboring observations used for tangents.
106
106
  This does not add visual delay or extrapolate a future pose.
107
107
 
108
+ ## Optional local CPU observation
109
+
110
+ Hosts can attach a borrowed observer with `setPerformanceObserver(observer)`
111
+ and detach it with `setPerformanceObserver(null)`. The observer supplies
112
+ `isEnabled(label)` and `recordMeasure(label, durationMs)`; it may select metrics
113
+ and sample operations without the renderer starting another loop or timer.
114
+
115
+ The metrics are `viewer.loop.cpu`, `viewer.controls.cpu` and `viewer.draw.cpu`.
116
+ They measure CPU elapsed time around existing operations, not GPU completion.
117
+ The loop includes controls and drawing: these durations must not be added as
118
+ independent costs. An idle or hidden viewer does not render merely to produce
119
+ measurements. Disabled observation avoids its timing reads; observer exceptions
120
+ cannot replace a renderer result or error. Destroying the renderer detaches the
121
+ observer without taking ownership of host resources.
122
+
108
123
  ## Reference
109
124
 
110
125
  See [`reference/`](reference/) for the machine-readable capability catalog and
@@ -3,6 +3,7 @@ import type { RobotViewerQuaternion, RobotViewerVector, Viewer3DCameraProjection
3
3
  type CameraLike = PerspectiveCamera | OrthographicCamera;
4
4
  type ViewerCameraControls = {
5
5
  readonly target: Vector3;
6
+ readonly enableRotate?: boolean;
6
7
  update(): boolean | void;
7
8
  };
8
9
  export interface OrthographicGroundCoveragePose {
@@ -133,6 +134,8 @@ export declare class CameraController {
133
134
  transitionCameraPose(position: RobotViewerVector, target?: RobotViewerVector, durationMs?: number, up?: RobotViewerVector, callbacks?: {
134
135
  onComplete?: () => void;
135
136
  onCancel?: () => void;
137
+ zoom?: number;
138
+ orbit?: boolean;
136
139
  }): void;
137
140
  transitionRobotCameraFocus(from: RobotCameraFocusFrame, to: RobotCameraFocusFrame, durationMs?: number): void;
138
141
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"CameraController.d.ts","sourceRoot":"","sources":["../../src/renderer/CameraController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CameraController.d.ts","sourceRoot":"","sources":["../../src/renderer/CameraController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,QAAQ,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACtG,OAAO,KAAK,EACV,qBAAqB,EACrB,iBAAiB,EACjB,wBAAwB,EACxB,eAAe,EACf,2BAA2B,EAC5B,MAAM,uBAAuB,CAAC;AAK/B,KAAK,UAAU,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;AACzD,KAAK,oBAAoB,GAAG;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,MAAM,IAAI,OAAO,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,OAAO,EACf,oBAAoB,EAAE,UAAU,EAChC,iBAAiB,EAAE,UAAU,GAC5B,OAAO,CAMT;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,UAAU,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,EAAE,EAAE,OAAO,CAAC;CACb;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,OAAO,CAAC;IAClB,EAAE,EAAE,OAAO,CAAC;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,EAAE,EAAE,OAAO,CAAC;CACb;AAED,2EAA2E;AAC3E,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM7D;AAED;;;;;;;GAOG;AACH,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,OAAO,EACf,EAAE,EAAE,OAAO,EACX,eAAe,EAAE,MAAM,EACvB,iBAAiB,EAAE,MAAM,GACxB,yBAAyB,GAAG,IAAI,CAyClC;AAED,2EAA2E;AAC3E,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,OAAO,EACf,eAAe,EAAE,MAAM,EACvB,iBAAiB,EAAE,MAAM,EACzB,wBAAwB,SAAO,GAC9B,iBAAiB,GAAG,IAAI,CA6B1B;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,OAAO,EAClB,wBAAwB,SAAe,GACtC,iBAAiB,CAyCnB;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,OAAO,EACf,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,qBAAqB,EAC3B,EAAE,EAAE,qBAAqB,GACxB,oBAAoB,CAYtB;AAED;;;;;;;GAOG;AACH,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,OAAO,EACf,EAAE,EAAE,OAAO,EACX,UAAU,EAAE,MAAM,EAClB,MAAM,SAAI,EACV,MAAM,SAA0C,GAC/C,8BAA8B,CAqChC;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,KAAK,CAAC;QACV,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QACrB,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC,CAAC;IACH,WAAW,EAAE,UAAU,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC9C,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,UAAU,IAAI,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,uBAAuB,GAAG,uCAAuC,CAAC,CAAC,CAAC;IACjH,SAAS,IAAI,UAAU,CAAC;IACxB,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IACpC,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC5C,yBAAyB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACjD,WAAW,IAAI,OAAO,CAAC;IACvB,iBAAiB,IAAI,MAAM,CAAC;IAC5B,yBAAyB,IAAI,MAAM,CAAC;IACpC,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,oDAAoD,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/E,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACxE,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnD,iCAAiC,IAAI,IAAI,CAAC;IAC1C,wBAAwB,IAAI,IAAI,CAAC;IACjC,aAAa,IAAI,IAAI,CAAC;IACtB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACzC,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,iBAAiB,CAAC;IAC1D,yBAAyB,CAAC,UAAU,EAAE,UAAU,GAAG,qBAAqB,CAAC;IACzE,kBAAkB,IAAI,eAAe,GAAG,IAAI,CAAC;IAC7C,kBAAkB,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC;IACnE,wBAAwB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;CACpD;AAED,qBAAa,gBAAgB;IAIf,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHjC,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,wBAAwB,CAA6B;gBAEhC,IAAI,EAAE,oBAAoB;IAEvD,aAAa,CAAC,QAAQ,EAAE,iBAAiB,EAAE,MAAM,GAAE,iBAAuD,EAAE,EAAE,CAAC,EAAE,iBAAiB,GAAG,IAAI;IAQzI,aAAa,CAAC,eAAe,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,IAAI;IAqBvE,oBAAoB,CAAC,eAAe,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,IAAI;IAqB9E,aAAa,IAAI;QACf,QAAQ,EAAE,iBAAiB,CAAC;QAC5B,MAAM,EAAE,iBAAiB,CAAC;QAC1B,EAAE,EAAE,iBAAiB,CAAC;QACtB,UAAU,EAAE,qBAAqB,CAAC;QAClC,UAAU,EAAE,wBAAwB,CAAC;KACtC;IAcD,wBAAwB,CAAC,MAAM,GAAE,2BAAqC,GAAG;QACvE,QAAQ,EAAE,iBAAiB,CAAC;QAC5B,MAAM,EAAE,iBAAiB,CAAC;QAC1B,UAAU,EAAE,wBAAwB,CAAC;KACtC,GAAG,IAAI;IAiCR,4BAA4B,CAC1B,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,EAC/D,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE;QACP,YAAY,CAAC,EAAE,iBAAiB,CAAC;QACjC,UAAU,CAAC,EAAE,wBAAwB,CAAC;KAClC,GACL;QACD,QAAQ,EAAE,iBAAiB,CAAC;QAC5B,MAAM,EAAE,iBAAiB,CAAC;QAC1B,UAAU,EAAE,wBAAwB,CAAC;KACtC,GAAG,IAAI;IAiCR,oBAAoB,CAClB,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,GAAE,iBAAuD,EAC/D,UAAU,SAAM,EAChB,EAAE,CAAC,EAAE,iBAAiB,EACtB,SAAS,GAAE;QAAE,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GACjG,IAAI;IA4EP,0BAA0B,CACxB,IAAI,EAAE,qBAAqB,EAC3B,EAAE,EAAE,qBAAqB,EACzB,UAAU,SAAM,GACf,IAAI;IAqBP;;;;OAIG;IACH,oCAAoC,CAClC,IAAI,EAAE,qBAAqB,EAC3B,EAAE,EAAE,qBAAqB,EACzB,UAAU,SAAM,EAChB,OAAO,SAAI,GACV,IAAI;IASP,OAAO,CAAC,2BAA2B;IAmDnC,sBAAsB,IAAI,IAAI;IAe9B,wBAAwB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI;IAahF,mBAAmB,CAAC,gBAAgB,EAAE,wBAAwB,GAAG,IAAI;IAgCrE,mBAAmB,IAAI,IAAI;IAa3B,oBAAoB,IAAI,IAAI;IAK5B,iBAAiB,IAAI,IAAI;IAMzB,OAAO,CAAC,qBAAqB;CAU9B"}
@@ -1,4 +1,4 @@
1
- import { Object3D, OrthographicCamera, PerspectiveCamera, Quaternion, Vector3 } from 'three';
1
+ import { Matrix4, Object3D, OrthographicCamera, PerspectiveCamera, Quaternion, Vector3 } from 'three';
2
2
  const ROBOT_VIEWER_CONTROLS_SETTLING_FRAMES = 10;
3
3
  const ROBOT_VIEWER_ORTHOGRAPHIC_GROUND_MARGIN = 0.02;
4
4
  /**
@@ -155,10 +155,9 @@ export function resolveOrthographicGroundCoveragePose(position, target, up, view
155
155
  const lowerRayOriginY = position.y - cameraUp.y * viewHeight * 0.5;
156
156
  const lift = Math.max(0, floorY + Math.max(0, margin) - lowerRayOriginY);
157
157
  if (lift > 0) {
158
- // Translate position and target together: the ISO orientation and scale
159
- // remain unchanged while the robot gains the missing foreground floor.
160
- nextPosition.y += lift;
161
- nextTarget.y += lift;
158
+ // Retreat along the viewing axis: orthographic framing, orientation and pivot
159
+ // stay unchanged while the ray origins move above the floor.
160
+ nextPosition.addScaledVector(forward, -lift / -forward.y);
162
161
  }
163
162
  return { position: nextPosition, target: nextTarget, lift };
164
163
  }
@@ -274,6 +273,13 @@ export class CameraController {
274
273
  const toTarget = new Vector3(target.x, target.y, target.z);
275
274
  const toUp = up ? new Vector3(up.x, up.y, up.z) : undefined;
276
275
  const fromUp = this.host.getCamera().up.clone().normalize();
276
+ if (callbacks.orbit)
277
+ this.cameraTransitionOnCancel = () => {
278
+ const camera = this.host.getCamera();
279
+ const pivot = this.host.controls?.target ?? fromTarget;
280
+ this.applyCameraPoseImmediate(camera.position.clone(), pivot.clone(), fromUp);
281
+ callbacks.onCancel?.();
282
+ };
277
283
  const upRotation = toUp
278
284
  ? new Quaternion().setFromUnitVectors(fromUp, toUp.clone().normalize())
279
285
  : null;
@@ -282,7 +288,12 @@ export class CameraController {
282
288
  const currentUp = new Vector3();
283
289
  const currentUpRotation = new Quaternion();
284
290
  const duration = Math.max(0, durationMs);
291
+ const camera = this.host.getCamera(), fromZoom = camera.zoom;
292
+ const toZoom = Number.isFinite(callbacks.zoom) && callbacks.zoom > 0 ? callbacks.zoom : fromZoom;
293
+ const fromRotation = camera.quaternion.clone(), toRotation = new Quaternion().setFromRotationMatrix(new Matrix4().lookAt(toPosition, toTarget, toUp ?? fromUp)), rotation = new Quaternion();
294
+ const fromDistance = fromPosition.distanceTo(fromTarget), toDistance = toPosition.distanceTo(toTarget);
285
295
  if (duration <= 0 || typeof requestAnimationFrame === 'undefined') {
296
+ camera.zoom = toZoom;
286
297
  this.applyCameraPoseImmediate(toPosition, toTarget, toUp);
287
298
  this.cameraTransitionOnCancel = null;
288
299
  callbacks.onComplete?.();
@@ -301,12 +312,18 @@ export class CameraController {
301
312
  const eased = easeViewerTransition(progress);
302
313
  currentPosition.lerpVectors(fromPosition, toPosition, eased);
303
314
  currentTarget.lerpVectors(fromTarget, toTarget, eased);
304
- const interpolatedUp = upRotation
315
+ let interpolatedUp = upRotation
305
316
  ? currentUp
306
317
  .copy(fromUp)
307
318
  .applyQuaternion(currentUpRotation.identity().slerp(upRotation, eased))
308
319
  .normalize()
309
320
  : undefined;
321
+ if (callbacks.orbit) {
322
+ rotation.copy(fromRotation).slerp(toRotation, eased);
323
+ currentPosition.set(0, 0, fromDistance + (toDistance - fromDistance) * eased).applyQuaternion(rotation).add(currentTarget);
324
+ interpolatedUp = progress >= 1 ? (toUp ?? fromUp) : currentUp.set(0, 1, 0).applyQuaternion(rotation);
325
+ }
326
+ camera.zoom = fromZoom + (toZoom - fromZoom) * eased;
310
327
  this.applyCameraPoseImmediate(currentPosition, currentTarget, interpolatedUp);
311
328
  if (progress < 1) {
312
329
  this.cameraTransitionFrame = requestAnimationFrame(step);
@@ -397,7 +414,9 @@ export class CameraController {
397
414
  onCancel?.();
398
415
  }
399
416
  applyCameraPoseImmediate(position, target, up) {
400
- const viewHeight = this.host.resolveOrthographicViewHeightFromPerspectiveDistance(position.distanceTo(target));
417
+ const viewHeight = this.host.getOptions().cameraProjection === 'iso'
418
+ ? this.host.getOrthographicViewHeight()
419
+ : this.host.resolveOrthographicViewHeightFromPerspectiveDistance(position.distanceTo(target));
401
420
  this.host.setOrthographicViewHeight(viewHeight);
402
421
  const pose = this.resolveProjectionPose(position, target, up, viewHeight);
403
422
  this.host.applyCameraPose(pose.position, pose.target, up);
@@ -419,9 +438,7 @@ export class CameraController {
419
438
  if (cameraProjection === 'iso')
420
439
  this.host.setOrthographicViewHeight(viewHeight);
421
440
  const currentUp = camera.up.clone();
422
- const pose = cameraProjection === 'iso'
423
- ? resolveOrthographicGroundCoveragePose(position, target, currentUp, viewHeight)
424
- : { position, target, lift: 0 };
441
+ const pose = { position, target, lift: 0 };
425
442
  options.cameraProjection = cameraProjection;
426
443
  this.host.applyCameraPose(pose.position, pose.target, currentUp);
427
444
  this.host.setCamera(cameraProjection === 'iso' ? this.host.orthographicCamera : this.host.perspectiveCamera);
@@ -436,6 +453,12 @@ export class CameraController {
436
453
  }
437
454
  handleControlsStart() {
438
455
  this.cancelCameraTransition();
456
+ // A cardinal view may need a special screen-up vector (top/bottom).
457
+ // Free world-up orbit must not reuse that rendering basis as its pole.
458
+ const camera = this.host.getCamera();
459
+ if (this.host.getOptions().cameraControlMode === 'orbit' && this.host.controls.enableRotate !== false && camera.up.distanceToSquared(new Vector3(0, 1, 0)) > 1e-12) {
460
+ this.host.applyCameraPose(camera.position.clone(), this.host.controls.target.clone(), new Vector3(0, 1, 0));
461
+ }
439
462
  this.host.setControlsActive(true);
440
463
  this.host.setControlsSettlingFrames(ROBOT_VIEWER_CONTROLS_SETTLING_FRAMES);
441
464
  this.host.requestRender();
@@ -447,23 +470,12 @@ export class CameraController {
447
470
  handleControlsEnd() {
448
471
  this.host.setControlsActive(false);
449
472
  this.host.setControlsSettlingFrames(ROBOT_VIEWER_CONTROLS_SETTLING_FRAMES);
450
- const options = this.host.getOptions();
451
- if (options.cameraProjection === 'iso') {
452
- const camera = this.host.getCamera();
453
- const target = this.host.controls.target.clone();
454
- const pose = resolveOrthographicGroundCoveragePose(camera.position, target, camera.up, this.host.getOrthographicViewHeight());
455
- if (pose.lift > 0) {
456
- this.host.applyCameraPose(pose.position, pose.target, camera.up);
457
- this.host.controls.target.copy(pose.target);
458
- this.host.controls.update();
459
- }
460
- }
461
473
  this.host.requestRender();
462
474
  }
463
475
  resolveProjectionPose(position, target, up, viewHeight) {
464
- return this.host.getOptions().cameraProjection === 'iso'
465
- ? resolveOrthographicGroundCoveragePose(position, target, up ?? this.host.getCamera().up, viewHeight)
466
- : { position, target, lift: 0 };
476
+ // Orthographic clipping includes the ground behind the camera plane.
477
+ // Never move the user's pivot or orbit distance to hide a clipping edge.
478
+ return { position, target, lift: 0 };
467
479
  }
468
480
  }
469
481
  //# sourceMappingURL=CameraController.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CameraController.js","sourceRoot":"","sources":["../../src/renderer/CameraController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CameraController.js","sourceRoot":"","sources":["../../src/renderer/CameraController.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { Vector3, type Camera, type Scene } from 'three';
2
+ /** Cardinal construction planes share the camera/world convention; no document geometry is edited. */
3
+ export declare function cardinalGridFrame(direction: Vector3): {
4
+ normal: Vector3;
5
+ u: Vector3;
6
+ v: Vector3;
7
+ } | null;
8
+ export declare class ViewerCardinalGridLayer {
9
+ private target;
10
+ private element?;
11
+ private root;
12
+ private grid;
13
+ private axes;
14
+ private key;
15
+ private direction;
16
+ private labels;
17
+ private labelNodes;
18
+ constructor(scene: Scene, target: () => Vector3, element?: HTMLElement | undefined);
19
+ update(camera: Camera): void;
20
+ dispose(): void;
21
+ }
22
+ //# sourceMappingURL=CardinalGridLayer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CardinalGridLayer.d.ts","sourceRoot":"","sources":["../../src/renderer/CardinalGridLayer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyN,OAAO,EAAC,KAAK,MAAM,EAAC,KAAK,KAAK,EAAC,MAAM,OAAO,CAAC;AAE7Q,sGAAsG;AACtG,wBAAgB,iBAAiB,CAAC,SAAS,EAAC,OAAO,GAAE;IAAC,MAAM,EAAC,OAAO,CAAC;IAAA,CAAC,EAAC,OAAO,CAAC;IAAA,CAAC,EAAC,OAAO,CAAA;CAAC,GAAC,IAAI,CAK7F;AACD,qBAAa,uBAAuB;IAIX,OAAO,CAAC,MAAM;IAAa,OAAO,CAAC,OAAO,CAAC;IAHnE,OAAO,CAAC,IAAI,CAAa;IAAA,OAAO,CAAC,IAAI,CAAqC;IAAA,OAAO,CAAC,IAAI,CAAc;IACpG,OAAO,CAAC,GAAG,CAAI;IAAA,OAAO,CAAC,SAAS,CAAe;IAAA,OAAO,CAAC,MAAM,CAA0B;IACvF,OAAO,CAAC,UAAU,CAAsB;gBAC5B,KAAK,EAAC,KAAK,EAAS,MAAM,EAAC,MAAI,OAAO,EAAS,OAAO,CAAC,EAAC,WAAW,YAAA;IAa/E,MAAM,CAAC,MAAM,EAAC,MAAM;IAsBpB,OAAO;CACP"}
@@ -0,0 +1,127 @@
1
+ import { AddEquation, BufferGeometry, CustomBlending, Float32BufferAttribute, Group, LineBasicMaterial, LineSegments, Mesh, ShaderMaterial, DoubleSide, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OrthographicCamera, PerspectiveCamera, Vector3 } from 'three';
2
+ /** Cardinal construction planes share the camera/world convention; no document geometry is edited. */
3
+ export function cardinalGridFrame(direction) {
4
+ const d = direction.clone().normalize(), a = [Math.abs(d.x), Math.abs(d.y), Math.abs(d.z)], axis = a.indexOf(Math.max(...a));
5
+ if (a[axis] < .99999)
6
+ return null;
7
+ return axis === 0 ? { normal: new Vector3(1, 0, 0), u: new Vector3(0, 0, 1), v: new Vector3(0, 1, 0) } : axis === 1 ? { normal: new Vector3(0, 1, 0), u: new Vector3(1, 0, 0), v: new Vector3(0, 0, 1) } : { normal: new Vector3(0, 0, 1), u: new Vector3(1, 0, 0), v: new Vector3(0, 1, 0) };
8
+ }
9
+ export class ViewerCardinalGridLayer {
10
+ target;
11
+ element;
12
+ root = new Group();
13
+ grid;
14
+ axes;
15
+ key = '';
16
+ direction = new Vector3();
17
+ labels = null;
18
+ labelNodes = [];
19
+ constructor(scene, target, element) {
20
+ this.target = target;
21
+ this.element = element;
22
+ if (element) {
23
+ this.labels = document.createElement('div');
24
+ this.labels.setAttribute('aria-label', 'Repères des axes de construction');
25
+ this.labels.style.cssText = 'position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:2';
26
+ for (let i = 0; i < 4; i++) {
27
+ const label = document.createElement('span');
28
+ label.style.cssText = 'position:absolute;padding:2px 4px;border-radius:3px;background:#18202cbb;color:white;font:600 11px system-ui;text-shadow:0 1px 2px #000;transform:translate(-50%,-50%)';
29
+ this.labels.append(label);
30
+ this.labelNodes.push(label);
31
+ }
32
+ element.append(this.labels);
33
+ }
34
+ // Premultiplied white under this blend reads the destination per pixel:
35
+ // out = a*(1-background)+(1-a)*background. It follows sky, floor and exposure.
36
+ const gridMaterial = new ShaderMaterial({ side: DoubleSide, transparent: true, depthWrite: false, depthTest: true, toneMapped: false, blending: CustomBlending, blendEquation: AddEquation, blendSrc: OneMinusDstColorFactor, blendDst: OneMinusSrcAlphaFactor, uniforms: { step: { value: .1 }, opacity: { value: .28 }, lineWidth: { value: .55 } }, vertexShader: 'attribute vec2 gridCoordinate;varying vec2 gridPoint;void main(){gridPoint=gridCoordinate;gl_Position=projectionMatrix*modelViewMatrix*vec4(position,1.);}', fragmentShader: `uniform float step;uniform float opacity;uniform float lineWidth;varying vec2 gridPoint;
37
+ void main(){vec2 cell=abs(fract(gridPoint/step-.5)-.5)*step;vec2 pixels=cell/max(fwidth(gridPoint),vec2(.0000001));float distancePx=min(pixels.x,pixels.y);float coverage=1.-smoothstep(lineWidth*.5-.5,lineWidth*.5+.5,distancePx);float a=coverage*opacity;if(a<.001)discard;gl_FragColor=vec4(vec3(a),a);}` });
38
+ this.grid = new Mesh(new BufferGeometry(), gridMaterial);
39
+ this.grid.frustumCulled = false;
40
+ this.grid.renderOrder = 9000;
41
+ this.axes = new LineSegments(new BufferGeometry(), new LineBasicMaterial({ vertexColors: true, transparent: true, opacity: .8, depthWrite: false, toneMapped: false }));
42
+ this.axes.frustumCulled = false;
43
+ this.axes.renderOrder = 9001;
44
+ this.root.name = 'Cardinal adaptive construction grid';
45
+ this.root.userData.excludeFromGroundReflection = true;
46
+ this.root.add(this.grid, this.axes);
47
+ scene.add(this.root);
48
+ }
49
+ update(camera) {
50
+ camera.getWorldDirection(this.direction);
51
+ const frame = cardinalGridFrame(this.direction);
52
+ if (!frame) {
53
+ this.grid.geometry.setDrawRange(0, 0);
54
+ this.axes.geometry.setDrawRange(0, 0);
55
+ if (this.labels)
56
+ this.labels.hidden = true;
57
+ return;
58
+ }
59
+ if (this.labels)
60
+ this.labels.hidden = false;
61
+ const target = this.target();
62
+ let height = 2;
63
+ if (camera instanceof OrthographicCamera)
64
+ height = Math.abs(camera.top - camera.bottom) / camera.zoom;
65
+ else if (camera instanceof PerspectiveCamera)
66
+ height = 2 * camera.position.distanceTo(target) * Math.tan(camera.fov * Math.PI / 360) / camera.zoom;
67
+ const step = Math.pow(10, Math.floor(Math.log10(Math.max(height, 1e-8) / 10)));
68
+ const centerU = Math.round(target.dot(frame.u) / step) * step, centerV = Math.round(target.dot(frame.v) / step) * step;
69
+ const extent = step * 100, key = [...frame.normal.toArray(), step, centerU, centerV].join(':');
70
+ if (key !== this.key) {
71
+ this.key = key;
72
+ const points = [], coordinates = [], axisPoints = [], colors = [];
73
+ const point = (u, v, out) => out.push(frame.u.x * u + frame.v.x * v, frame.u.y * u + frame.v.y * v, frame.u.z * u + frame.v.z * v);
74
+ for (const [u, v] of [[centerU - extent, centerV - extent], [centerU + extent, centerV - extent], [centerU + extent, centerV + extent], [centerU - extent, centerV - extent], [centerU + extent, centerV + extent], [centerU - extent, centerV + extent]]) {
75
+ point(u, v, points);
76
+ coordinates.push(u, v);
77
+ }
78
+ this.grid.material.uniforms.step.value = step;
79
+ for (const basis of [frame.u, frame.v]) {
80
+ const length = Math.max(extent, target.length() + extent);
81
+ axisPoints.push(...basis.clone().multiplyScalar(-length).toArray(), ...basis.clone().multiplyScalar(length).toArray());
82
+ const color = basis.x ? [.9, .22, .18] : basis.y ? [.2, .8, .35] : [.2, .5, 1];
83
+ colors.push(...color, ...color);
84
+ }
85
+ this.grid.geometry.dispose();
86
+ this.grid.geometry = new BufferGeometry().setAttribute('position', new Float32BufferAttribute(points, 3)).setAttribute('gridCoordinate', new Float32BufferAttribute(coordinates, 2));
87
+ this.axes.geometry.dispose();
88
+ this.axes.geometry = new BufferGeometry().setAttribute('position', new Float32BufferAttribute(axisPoints, 3)).setAttribute('color', new Float32BufferAttribute(colors, 3));
89
+ }
90
+ this.grid.geometry.setDrawRange(0, frame.normal.y && this.direction.y < 0 ? 0 : Infinity);
91
+ this.axes.geometry.setDrawRange(0, Infinity);
92
+ if (this.element) {
93
+ const width = this.element.clientWidth, heightPx = this.element.clientHeight, origin = new Vector3().project(camera);
94
+ let index = 0;
95
+ for (const basis of [frame.u, frame.v]) {
96
+ const end = basis.clone().multiplyScalar(height).project(camera), dx = (end.x - origin.x) * width / 2, dy = -(end.y - origin.y) * heightPx / 2, ox = (origin.x + 1) * width / 2, oy = (1 - origin.y) * heightPx / 2;
97
+ const hits = [];
98
+ for (const x of [18, width - 18]) {
99
+ const t = (x - ox) / dx, y = oy + t * dy;
100
+ if (Number.isFinite(t) && y >= 18 && y <= heightPx - 18)
101
+ hits.push({ t, x, y });
102
+ }
103
+ for (const y of [18, heightPx - 18]) {
104
+ const t = (y - oy) / dy, x = ox + t * dx;
105
+ if (Number.isFinite(t) && x >= 18 && x <= width - 18)
106
+ hits.push({ t, x, y });
107
+ }
108
+ hits.sort((a, b) => a.t - b.t);
109
+ const axis = basis.x ? 'X' : basis.y ? 'Y' : 'Z';
110
+ for (const hit of [hits[0], hits[hits.length - 1]]) {
111
+ const node = this.labelNodes[index++];
112
+ node.hidden = !hit;
113
+ if (hit) {
114
+ node.textContent = (hit.t < 0 ? '−' : '+') + axis;
115
+ node.style.left = hit.x + 'px';
116
+ node.style.top = hit.y + 'px';
117
+ }
118
+ }
119
+ }
120
+ }
121
+ }
122
+ dispose() { this.labels?.remove(); this.root.removeFromParent(); for (const line of [this.grid, this.axes]) {
123
+ line.geometry.dispose();
124
+ line.material.dispose();
125
+ } }
126
+ }
127
+ //# sourceMappingURL=CardinalGridLayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CardinalGridLayer.js","sourceRoot":"","sources":["../../src/renderer/CardinalGridLayer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type Camera, type WebGLRenderer, type Scene } from 'three';
2
+ import type { Reflector } from 'three/examples/jsm/objects/Reflector.js';
3
+ /** Reflect an orthographic view without the perspective-only oblique clipping in Three's Reflector. */
4
+ export declare function createOrthographicGroundReflection(): (mirror: Reflector, renderer: WebGLRenderer, scene: Scene, camera: Camera) => void;
5
+ //# sourceMappingURL=OrthographicGroundReflection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrthographicGroundReflection.d.ts","sourceRoot":"","sources":["../../src/renderer/OrthographicGroundReflection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkD,KAAK,MAAM,EAAC,KAAK,aAAa,EAAC,KAAK,KAAK,EAAqB,MAAM,OAAO,CAAC;AACrI,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AACvE,uGAAuG;AACvG,wBAAgB,kCAAkC,KAGzC,QAAO,SAAS,EAAC,UAAS,aAAa,EAAC,OAAM,KAAK,EAAC,QAAO,MAAM,UAkBzE"}
@@ -0,0 +1,58 @@
1
+ import { Matrix4, OrthographicCamera, Plane, Vector3, Vector4 } from 'three';
2
+ /** Reflect an orthographic view without the perspective-only oblique clipping in Three's Reflector. */
3
+ export function createOrthographicGroundReflection() {
4
+ const reflected = new OrthographicCamera(), plane = new Plane(), normal = new Vector3(), origin = new Vector3(), position = new Vector3(), direction = new Vector3(), target = new Vector3(), clip = new Vector4(), corner = new Vector4();
5
+ const bias = new Matrix4().set(.5, 0, 0, .5, 0, .5, 0, .5, 0, 0, .5, .5, 0, 0, 0, 1);
6
+ return (mirror, renderer, scene, camera) => {
7
+ mirror.getWorldPosition(origin);
8
+ normal.set(0, 0, 1).transformDirection(mirror.matrixWorld);
9
+ plane.setFromNormalAndCoplanarPoint(normal, origin);
10
+ camera.getWorldPosition(position);
11
+ camera.getWorldDirection(direction);
12
+ target.copy(position).add(direction);
13
+ reflected.position.copy(plane.projectPoint(position, new Vector3())).multiplyScalar(2).sub(position);
14
+ target.addScaledVector(normal, -2 * plane.distanceToPoint(target));
15
+ reflected.up.copy(camera.up).reflect(normal);
16
+ reflected.lookAt(target);
17
+ reflected.near = camera.near;
18
+ reflected.far = camera.far;
19
+ reflected.updateMatrixWorld();
20
+ reflected.projectionMatrix.copy(camera.projectionMatrix);
21
+ const material = mirror.material;
22
+ material.uniforms.textureMatrix.value.copy(bias).multiply(reflected.projectionMatrix).multiply(reflected.matrixWorldInverse).multiply(mirror.matrixWorld);
23
+ plane.applyMatrix4(reflected.matrixWorldInverse);
24
+ clip.set(plane.normal.x, plane.normal.y, plane.normal.z, plane.constant);
25
+ corner.set(Math.sign(clip.x), Math.sign(clip.y), 1, 1).applyMatrix4(reflected.projectionMatrix.clone().invert());
26
+ const denominator = clip.dot(corner);
27
+ if (Math.abs(denominator) < 1e-10)
28
+ return;
29
+ clip.multiplyScalar(2 / denominator);
30
+ const e = reflected.projectionMatrix.elements;
31
+ e[2] = clip.x - e[3];
32
+ e[6] = clip.y - e[7];
33
+ e[10] = clip.z - e[11];
34
+ e[14] = clip.w - e[15];
35
+ reflected.projectionMatrixInverse.copy(reflected.projectionMatrix).invert();
36
+ const renderTarget = renderer.getRenderTarget(), xr = renderer.xr.enabled, shadowAuto = renderer.shadowMap.autoUpdate, visible = mirror.visible;
37
+ try {
38
+ mirror.visible = false;
39
+ renderer.xr.enabled = false;
40
+ renderer.shadowMap.autoUpdate = false;
41
+ renderer.setRenderTarget(mirror.getRenderTarget());
42
+ renderer.state.buffers.depth.setMask(true);
43
+ if (!renderer.autoClear)
44
+ renderer.clear();
45
+ renderer.render(scene, reflected);
46
+ }
47
+ finally {
48
+ renderer.xr.enabled = xr;
49
+ renderer.shadowMap.autoUpdate = shadowAuto;
50
+ renderer.setRenderTarget(renderTarget);
51
+ const viewport = camera.viewport;
52
+ if (viewport)
53
+ renderer.state.viewport(viewport);
54
+ mirror.visible = visible;
55
+ }
56
+ };
57
+ }
58
+ //# sourceMappingURL=OrthographicGroundReflection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrthographicGroundReflection.js","sourceRoot":"","sources":["../../src/renderer/OrthographicGroundReflection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /** CPU observation only: never interpreted as GPU execution time. */
2
+ export interface ViewerPerformanceObserver {
3
+ isEnabled(label?: string): boolean;
4
+ recordMeasure(label: 'viewer.loop.cpu' | 'viewer.controls.cpu' | 'viewer.draw.cpu', durationMs: number): void;
5
+ }
6
+ /** Optional observation must not change the result or failure of rendering. */
7
+ export declare function measureViewerOperation<T>(observer: ViewerPerformanceObserver | null, label: Parameters<ViewerPerformanceObserver['recordMeasure']>[0], operation: () => T, now?: () => number): T;
8
+ //# sourceMappingURL=PerformanceObservation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PerformanceObservation.d.ts","sourceRoot":"","sources":["../../src/renderer/PerformanceObservation.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,MAAM,WAAW,yBAAyB;IACxC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,qBAAqB,GAAG,iBAAiB,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/G;AAED,+EAA+E;AAC/E,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,QAAQ,EAAE,yBAAyB,GAAG,IAAI,EAC1C,KAAK,EAAE,UAAU,CAAC,yBAAyB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,EAChE,SAAS,EAAE,MAAM,CAAC,EAClB,GAAG,GAAE,MAAM,MAAgC,GAC1C,CAAC,CAUH"}
@@ -0,0 +1,21 @@
1
+ /** Optional observation must not change the result or failure of rendering. */
2
+ export function measureViewerOperation(observer, label, operation, now = () => performance.now()) {
3
+ let enabled = false;
4
+ try {
5
+ enabled = observer?.isEnabled(label) ?? false;
6
+ }
7
+ catch { /* Observer isolation. */ }
8
+ if (!enabled)
9
+ return operation();
10
+ const startedAt = now();
11
+ try {
12
+ return operation();
13
+ }
14
+ finally {
15
+ try {
16
+ observer?.recordMeasure(label, Math.max(0, now() - startedAt));
17
+ }
18
+ catch { /* A failed observation must not break rendering or cleanup. */ }
19
+ }
20
+ }
21
+ //# sourceMappingURL=PerformanceObservation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PerformanceObservation.js","sourceRoot":"","sources":["../../src/renderer/PerformanceObservation.ts"],"names":[],"mappings":"AAMA,+EAA+E;AAC/E,MAAM,UAAU,sBAAsB,CACpC,QAA0C,EAC1C,KAAgE,EAChE,SAAkB,EAClB,MAAoB,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;IAE3C,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,CAAC;QAAC,OAAO,GAAG,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;IAC1F,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC;IACxB,IAAI,CAAC;QAAC,OAAO,SAAS,EAAE,CAAC;IAAC,CAAC;YACnB,CAAC;QACP,IAAI,CAAC;YAAC,QAAQ,EAAE,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;QAAC,CAAC;QACvE,MAAM,CAAC,CAAC,+DAA+D,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC"}