@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.
- package/README.md +15 -0
- package/dist/renderer/CameraController.d.ts +3 -0
- package/dist/renderer/CameraController.d.ts.map +1 -1
- package/dist/renderer/CameraController.js +36 -24
- package/dist/renderer/CameraController.js.map +1 -1
- package/dist/renderer/CardinalGridLayer.d.ts +22 -0
- package/dist/renderer/CardinalGridLayer.d.ts.map +1 -0
- package/dist/renderer/CardinalGridLayer.js +127 -0
- package/dist/renderer/CardinalGridLayer.js.map +1 -0
- package/dist/renderer/OrthographicGroundReflection.d.ts +5 -0
- package/dist/renderer/OrthographicGroundReflection.d.ts.map +1 -0
- package/dist/renderer/OrthographicGroundReflection.js +58 -0
- package/dist/renderer/OrthographicGroundReflection.js.map +1 -0
- package/dist/renderer/PerformanceObservation.d.ts +8 -0
- package/dist/renderer/PerformanceObservation.d.ts.map +1 -0
- package/dist/renderer/PerformanceObservation.js +21 -0
- package/dist/renderer/PerformanceObservation.js.map +1 -0
- package/dist/renderer/SceneAstronomy.d.ts +34 -0
- package/dist/renderer/SceneAstronomy.d.ts.map +1 -0
- package/dist/renderer/SceneAstronomy.js +96 -0
- package/dist/renderer/SceneAstronomy.js.map +1 -0
- package/dist/renderer/SceneDayCycle.d.ts +21 -0
- package/dist/renderer/SceneDayCycle.d.ts.map +1 -0
- package/dist/renderer/SceneDayCycle.js +27 -0
- package/dist/renderer/SceneDayCycle.js.map +1 -0
- package/dist/renderer/SceneEnvironmentLayer.d.ts +26 -0
- package/dist/renderer/SceneEnvironmentLayer.d.ts.map +1 -0
- package/dist/renderer/SceneEnvironmentLayer.js +89 -0
- package/dist/renderer/SceneEnvironmentLayer.js.map +1 -0
- package/dist/renderer/Viewer3DRenderer.d.ts +30 -1
- package/dist/renderer/Viewer3DRenderer.d.ts.map +1 -1
- package/dist/renderer/Viewer3DRenderer.js +74 -11
- package/dist/renderer/Viewer3DRenderer.js.map +1 -1
- package/dist/renderer/VisualGroundLayer.d.ts.map +1 -1
- package/dist/renderer/VisualGroundLayer.js +37 -5
- package/dist/renderer/VisualGroundLayer.js.map +1 -1
- package/dist/renderer/index.d.ts +2 -0
- package/dist/renderer/index.d.ts.map +1 -1
- package/dist/renderer/index.js +2 -0
- package/dist/renderer/index.js.map +1 -1
- package/package.json +1 -1
- 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":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"CameraController.d.ts","sourceRoot":"","sources":["../../src/renderer/CameraController.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
-
//
|
|
159
|
-
//
|
|
160
|
-
nextPosition.
|
|
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
|
-
|
|
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.
|
|
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 =
|
|
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
|
-
|
|
465
|
-
|
|
466
|
-
|
|
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"}
|