abstract-3d 4.1.4 → 4.1.6
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/lib/renderers/dxf/color.d.ts +7 -0
- package/lib/renderers/dxf/color.d.ts.map +1 -0
- package/lib/renderers/dxf/color.js +311 -0
- package/lib/renderers/dxf/color.js.map +1 -0
- package/lib/renderers/dxf/dxf-encoding.d.ts +17 -0
- package/lib/renderers/dxf/dxf-encoding.d.ts.map +1 -0
- package/lib/renderers/dxf/dxf-encoding.js +18467 -0
- package/lib/renderers/dxf/dxf-encoding.js.map +1 -0
- package/lib/renderers/react/react-camera.d.ts +71 -0
- package/lib/renderers/react/react-camera.d.ts.map +1 -0
- package/lib/renderers/react/react-camera.js +179 -0
- package/lib/renderers/react/react-camera.js.map +1 -0
- package/lib/renderers/react/react-dimension.d.ts +16 -0
- package/lib/renderers/react/react-dimension.d.ts.map +1 -0
- package/lib/renderers/react/react-dimension.js +29 -0
- package/lib/renderers/react/react-dimension.js.map +1 -0
- package/lib/renderers/react/react-group.d.ts +23 -0
- package/lib/renderers/react/react-group.d.ts.map +1 -0
- package/lib/renderers/react/react-group.js +68 -0
- package/lib/renderers/react/react-group.js.map +1 -0
- package/lib/renderers/react/react-hotspot.d.ts +27 -0
- package/lib/renderers/react/react-hotspot.d.ts.map +1 -0
- package/lib/renderers/react/react-hotspot.js +37 -0
- package/lib/renderers/react/react-hotspot.js.map +1 -0
- package/lib/renderers/react/react-image-material.d.ts +28 -0
- package/lib/renderers/react/react-image-material.d.ts.map +1 -0
- package/lib/renderers/react/react-image-material.js +81 -0
- package/lib/renderers/react/react-image-material.js.map +1 -0
- package/lib/renderers/react/react-material.d.ts +19 -0
- package/lib/renderers/react/react-material.d.ts.map +1 -0
- package/lib/renderers/react/react-material.js +50 -0
- package/lib/renderers/react/react-material.js.map +1 -0
- package/lib/renderers/react/react-mesh.d.ts +11 -0
- package/lib/renderers/react/react-mesh.d.ts.map +1 -0
- package/lib/renderers/react/react-mesh.js +229 -0
- package/lib/renderers/react/react-mesh.js.map +1 -0
- package/lib/renderers/react/react-scene.d.ts +28 -0
- package/lib/renderers/react/react-scene.d.ts.map +1 -0
- package/lib/renderers/react/react-scene.js +20 -0
- package/lib/renderers/react/react-scene.js.map +1 -0
- package/lib/renderers/react/react-types.d.ts +7 -0
- package/lib/renderers/react/react-types.d.ts.map +1 -0
- package/lib/renderers/react/react-types.js +3 -0
- package/lib/renderers/react/react-types.js.map +1 -0
- package/lib/renderers/shared.d.ts +30 -0
- package/lib/renderers/shared.d.ts.map +1 -0
- package/lib/renderers/shared.js +164 -0
- package/lib/renderers/shared.js.map +1 -0
- package/lib/renderers/three/camera/camera.d.ts +3 -2
- package/lib/renderers/three/camera/camera.d.ts.map +1 -1
- package/lib/renderers/three/camera/camera.js +12 -0
- package/lib/renderers/three/camera/camera.js.map +1 -1
- package/lib/renderers/three/camera/gizmo.d.ts +6 -1
- package/lib/renderers/three/camera/gizmo.d.ts.map +1 -1
- package/lib/renderers/three/camera/gizmo.js +60 -2
- package/lib/renderers/three/camera/gizmo.js.map +1 -1
- package/lib/renderers/three/viewer/viewer.d.ts +14 -1
- package/lib/renderers/three/viewer/viewer.d.ts.map +1 -1
- package/lib/renderers/three/viewer/viewer.js +102 -26
- package/lib/renderers/three/viewer/viewer.js.map +1 -1
- package/package.json +1 -1
- package/src/renderers/three/camera/camera.ts +16 -3
- package/src/renderers/three/camera/gizmo.ts +67 -2
- package/src/renderers/three/viewer/viewer.ts +114 -26
- package/lib/renderers/svg/svg-order.d.ts +0 -9
- package/lib/renderers/svg/svg-order.d.ts.map +0 -1
- package/lib/renderers/svg/svg-order.js +0 -148
- package/lib/renderers/svg/svg-order.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewer.js","sourceRoot":"","sources":["../../../../src/renderers/three/viewer/viewer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"viewer.js","sourceRoot":"","sources":["../../../../src/renderers/three/viewer/viewer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { OrthographicCamera, PerspectiveCamera } from "three";
|
|
1
|
+
import type { OrthographicCamera, PerspectiveCamera, Quaternion } from "three";
|
|
2
|
+
import { Vector3 } from "three";
|
|
2
3
|
import { exhaustiveCheck } from "ts-exhaustive-check";
|
|
3
4
|
import type { Vec3, View } from "../../../abstract-3d.js";
|
|
4
5
|
import { vec3 } from "../../../abstract-3d.js";
|
|
@@ -13,7 +14,8 @@ export type CameraOptions =
|
|
|
13
14
|
export type BufferZones = { readonly left?: number; readonly right?: number; readonly top?: number; readonly bottom?: number };
|
|
14
15
|
|
|
15
16
|
export type FitInput = {
|
|
16
|
-
|
|
17
|
+
/** A view, or the camera's orientation, e.g. one the gizmo turns it to */
|
|
18
|
+
readonly view: View | Quaternion;
|
|
17
19
|
/** The scene's size */
|
|
18
20
|
readonly size: Vec3;
|
|
19
21
|
/** In CSS pixels */
|
|
@@ -65,7 +67,18 @@ export function fitCamera(
|
|
|
65
67
|
}
|
|
66
68
|
|
|
67
69
|
/** The direction to look from, the scene's size as seen on screen and its aspect */
|
|
68
|
-
function getViewTransform(view: View, size: Vec3): readonly [Vec3, Vec3, number] {
|
|
70
|
+
function getViewTransform(view: View | Quaternion, size: Vec3): readonly [Vec3, Vec3, number] {
|
|
71
|
+
if (typeof view !== "string") {
|
|
72
|
+
// The extent of the scene's box along the camera's right, up and backward axes, which for a view's orientation is the size below
|
|
73
|
+
const orientation = view;
|
|
74
|
+
const extent = (x: number, y: number, z: number): number => {
|
|
75
|
+
const axis = new Vector3(x, y, z).applyQuaternion(orientation);
|
|
76
|
+
return Math.abs(axis.x) * size.x + Math.abs(axis.y) * size.y + Math.abs(axis.z) * size.z;
|
|
77
|
+
};
|
|
78
|
+
const back = new Vector3(0, 0, 1).applyQuaternion(orientation);
|
|
79
|
+
const [width, height] = [extent(1, 0, 0), extent(0, 1, 0)];
|
|
80
|
+
return [vec3(back.x, back.y, back.z), vec3(width, height, extent(0, 0, 1)), width / height];
|
|
81
|
+
}
|
|
69
82
|
switch (view) {
|
|
70
83
|
case "front":
|
|
71
84
|
case "back":
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { OrthographicCamera, PerspectiveCamera, WebGLRenderer } from "three";
|
|
2
|
+
import { BufferGeometry, Material, MathUtils, Mesh, MeshBasicMaterial, Spherical, Sprite, SpriteMaterial } from "three";
|
|
2
3
|
import type { GizmoAxisOptions, GizmoOptions } from "three-viewport-gizmo";
|
|
3
4
|
import { ViewportGizmo } from "three-viewport-gizmo";
|
|
4
5
|
|
|
@@ -48,25 +49,89 @@ export function createGizmo(
|
|
|
48
49
|
camera: PerspectiveCamera | OrthographicCamera,
|
|
49
50
|
renderer: WebGLRenderer,
|
|
50
51
|
container: HTMLElement,
|
|
51
|
-
helper: ControlsHelper
|
|
52
|
+
helper: ControlsHelper,
|
|
53
|
+
onHover: () => void
|
|
52
54
|
): ViewportGizmo {
|
|
53
55
|
const [mx, my] = helper.props?.margin ?? [80, 80];
|
|
54
56
|
const options = helper.type === "Viewcube" ? helper.viewcubeProps : helper.viewportProps;
|
|
55
57
|
// "600 24px Helvetica, Arial" is weight 600 of Helvetica, Arial
|
|
56
58
|
const [, weight = 600, family = "Helvetica, Arial, sans-serif"] = /^(?:(\S+)\s+)?[\d.]+px\s+(.+)$/.exec(options?.font ?? "") ?? [];
|
|
59
|
+
// Hovering changes its look without a change event, as it's made for a render loop, so its pointer events are caught as they bubble through a
|
|
60
|
+
// parent of its own, which has no box, so it's placed in the container as before
|
|
61
|
+
const layer = Object.assign(document.createElement("div"), { style: "display: contents" });
|
|
62
|
+
["pointermove", "pointerout"].forEach((type) => layer.addEventListener(type, onHover));
|
|
63
|
+
layer.addEventListener("pointerdown", (event) => dragGizmo(gizmo, event));
|
|
64
|
+
container.append(layer);
|
|
57
65
|
const gizmo = new ViewportGizmo(camera, renderer, {
|
|
58
|
-
container,
|
|
66
|
+
container: layer,
|
|
59
67
|
size,
|
|
60
68
|
placement: helper.props?.alignment ?? "bottom-right",
|
|
61
69
|
offset: { left: mx - size / 2, right: mx - size / 2, top: my - size / 2, bottom: my - size / 2 },
|
|
62
70
|
// A family without a generic fallback, e.g. a web font, would otherwise fall back to the browser's serif
|
|
63
71
|
font: { family: `${family}, sans-serif`, weight },
|
|
72
|
+
// A click moves the camera at once, for the viewer to turn it there, eased and also fitting the scene
|
|
73
|
+
animated: false,
|
|
64
74
|
...(helper.type === "Viewcube" ? getViewcubeOptions(helper.viewcubeProps ?? {}) : getAxesOptions(helper.viewportProps ?? {})),
|
|
65
75
|
});
|
|
66
76
|
gizmo.enabled = !(helper.type === "Viewport" && helper.viewportProps?.disabled);
|
|
67
77
|
return gizmo;
|
|
68
78
|
}
|
|
69
79
|
|
|
80
|
+
/**
|
|
81
|
+
* Its own drag turns the camera only once the pointer moved 10 pixels away, by all of them at once, so a drag turns it here from the first pixel, the
|
|
82
|
+
* same way, from where it was pressed: the turn is half a revolution per gizmo width. As each move's listener here runs after its own, which it adds
|
|
83
|
+
* when pressed, its drag is overridden; a press that moves less than that is still its click. Its press disables the controls, and only a drag or a
|
|
84
|
+
* click on a side ends it, so a release that starts no turn ends it here, enabling them again
|
|
85
|
+
*/
|
|
86
|
+
function dragGizmo(gizmo: ViewportGizmo, press: PointerEvent): void {
|
|
87
|
+
if (gizmo.enabled && !gizmo.animating) {
|
|
88
|
+
const { camera, target } = gizmo;
|
|
89
|
+
const { theta, phi } = new Spherical().setFromVector3(camera.position.clone().sub(target));
|
|
90
|
+
const listeners = new AbortController();
|
|
91
|
+
const signal = { signal: listeners.signal };
|
|
92
|
+
document.addEventListener(
|
|
93
|
+
"pointermove",
|
|
94
|
+
(event) => {
|
|
95
|
+
const [x, y] = [((event.clientX - press.clientX) / size) * Math.PI, ((event.clientY - press.clientY) / size) * Math.PI];
|
|
96
|
+
const turned = new Spherical(camera.position.distanceTo(target), MathUtils.clamp(phi - y, 1e-6, Math.PI - 1e-6), theta - x);
|
|
97
|
+
camera.position.setFromSpherical(turned).add(target);
|
|
98
|
+
camera.lookAt(target);
|
|
99
|
+
gizmo.cameraUpdate();
|
|
100
|
+
gizmo.dispatchEvent({ type: "change" });
|
|
101
|
+
},
|
|
102
|
+
signal
|
|
103
|
+
);
|
|
104
|
+
const release = (): void => {
|
|
105
|
+
listeners.abort();
|
|
106
|
+
if (!gizmo.animating) {
|
|
107
|
+
gizmo.dispatchEvent({ type: "end" });
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
["pointerup", "pointercancel"].forEach((type) => document.addEventListener(type, release, signal));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Its own dispose() frees only every other child, as it removes them while iterating over them, so it's left to detach it from the controls and DOM;
|
|
116
|
+
* the layer from createGizmo is removed with its listeners
|
|
117
|
+
*/
|
|
118
|
+
export function disposeGizmo(gizmo: ViewportGizmo): void {
|
|
119
|
+
if (gizmo.options.container instanceof HTMLElement) {
|
|
120
|
+
gizmo.options.container.remove();
|
|
121
|
+
}
|
|
122
|
+
gizmo.children.forEach((child) => {
|
|
123
|
+
// Faces, corners, edges and background are meshes, the axes' ends sprites and their lines a Line2 mesh, each with one material
|
|
124
|
+
if ((child instanceof Mesh || child instanceof Sprite) && child.material instanceof Material && child.geometry instanceof BufferGeometry) {
|
|
125
|
+
if (child.material instanceof MeshBasicMaterial || child.material instanceof SpriteMaterial) {
|
|
126
|
+
child.material.map?.dispose();
|
|
127
|
+
}
|
|
128
|
+
child.material.dispose();
|
|
129
|
+
child.geometry.dispose();
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
gizmo.clear().dispose();
|
|
133
|
+
}
|
|
134
|
+
|
|
70
135
|
function getViewcubeOptions(options: ViewcubeOptions): GizmoOptions {
|
|
71
136
|
const { opacity = 1, color = "#f4f5f7", hoverColor = "#cfe0ff", textColor = "#333", strokeColor = "#9aa0a6" } = options;
|
|
72
137
|
const labels = options.faces ?? ["Right", "Left", "Top", "Bottom", "Front", "Back"];
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
NeutralToneMapping,
|
|
7
7
|
OrthographicCamera,
|
|
8
8
|
PerspectiveCamera,
|
|
9
|
+
type Quaternion,
|
|
9
10
|
Raycaster,
|
|
10
11
|
Scene as ThreeScene,
|
|
11
12
|
Vector2,
|
|
@@ -24,7 +25,7 @@ import type { Placement } from "../camera/camera.js";
|
|
|
24
25
|
import { fitCamera } from "../camera/camera.js";
|
|
25
26
|
import type { Controls } from "../camera/controls.js";
|
|
26
27
|
import { configureControls, createControls, setPose } from "../camera/controls.js";
|
|
27
|
-
import { createGizmo } from "../camera/gizmo.js";
|
|
28
|
+
import { createGizmo, disposeGizmo } from "../camera/gizmo.js";
|
|
28
29
|
import type { CompiledScene } from "../compile/compile.js";
|
|
29
30
|
import { compileScene } from "../compile/compile.js";
|
|
30
31
|
import type { TierGovernor } from "../quality/quality.js";
|
|
@@ -47,6 +48,9 @@ import { createOverlayLayer, setOverlays } from "./overlays.js";
|
|
|
47
48
|
|
|
48
49
|
type Hit = { readonly item: number; readonly target: number; readonly point: Vector3 };
|
|
49
50
|
|
|
51
|
+
/** Where the camera looks from: it looks at the target from the distance, turned by the quaternion */
|
|
52
|
+
type Pose = { readonly quaternion: Quaternion; readonly target: Vector3; readonly distance: number; readonly zoom: number };
|
|
53
|
+
|
|
50
54
|
export type Viewer<Content> = {
|
|
51
55
|
options: ViewerOptions<Content>;
|
|
52
56
|
readonly container: HTMLElement;
|
|
@@ -77,6 +81,8 @@ export type Viewer<Content> = {
|
|
|
77
81
|
/** The previous build and ground shadow, out of the scene, disposed once the next frame has given their shader programs to the new ones */
|
|
78
82
|
readonly retired: { built?: BuiltScene; shadow?: GroundShadow };
|
|
79
83
|
gizmo?: ViewportGizmo;
|
|
84
|
+
/** A gizmo click's turn of the camera, from when it was clicked; where it ends is known once the gizmo moved the camera there */
|
|
85
|
+
turn?: { readonly from: Pose; readonly to?: Pose; readonly start: number };
|
|
80
86
|
shadow?: GroundShadow;
|
|
81
87
|
/** The key light that casts the solids' shadows on themselves */
|
|
82
88
|
keyLight?: Group;
|
|
@@ -91,6 +97,8 @@ export type Viewer<Content> = {
|
|
|
91
97
|
|
|
92
98
|
/** Pointer travel in CSS pixels below which a press and release is a click, not a drag */
|
|
93
99
|
const clickTolerance = 4;
|
|
100
|
+
/** How long a gizmo click's turn of the camera takes */
|
|
101
|
+
const turnMs = 400;
|
|
94
102
|
|
|
95
103
|
export function createViewer<Content>(container: HTMLElement, options: ViewerOptions<Content>): Viewer<Content> {
|
|
96
104
|
if (getComputedStyle(container).position === "static") {
|
|
@@ -184,7 +192,9 @@ export function disposeViewer<Content>(v: Viewer<Content>): void {
|
|
|
184
192
|
v.listeners.abort();
|
|
185
193
|
v.resizeObserver.disconnect();
|
|
186
194
|
v.controls.orbit.dispose();
|
|
187
|
-
v.gizmo
|
|
195
|
+
if (v.gizmo) {
|
|
196
|
+
disposeGizmo(v.gizmo);
|
|
197
|
+
}
|
|
188
198
|
disposeRetired(v);
|
|
189
199
|
if (v.built) {
|
|
190
200
|
disposeScene(v.built);
|
|
@@ -337,7 +347,12 @@ function renderFrame<Content>(v: Viewer<Content>, now: number): void {
|
|
|
337
347
|
}
|
|
338
348
|
const { built, camera, gizmo } = v;
|
|
339
349
|
renderer.info.reset();
|
|
340
|
-
|
|
350
|
+
if (v.turn?.to) {
|
|
351
|
+
turnCamera(v, v.turn.from, v.turn.to, (now - v.turn.start) / turnMs);
|
|
352
|
+
}
|
|
353
|
+
// Not during a turn, as the controls would look at the target with the world's up instead of the turn's roll, which spins the camera near the
|
|
354
|
+
// top and bottom views and snaps it at their end
|
|
355
|
+
const moving = !!v.turn || v.controls.orbit.update(Math.min(interval / 1000, 0.1));
|
|
341
356
|
if (moving && loop.wasMoving && v.governor && recordFrame(v.governor, interval)) {
|
|
342
357
|
renderer.setPixelRatio(getPixelRatio(v.governor.tier, window.devicePixelRatio));
|
|
343
358
|
}
|
|
@@ -397,46 +412,119 @@ function fitPose<Content>(v: Viewer<Content>): void {
|
|
|
397
412
|
}
|
|
398
413
|
}
|
|
399
414
|
|
|
400
|
-
function fitScene<Content>(v: Viewer<Content
|
|
401
|
-
const { scene,
|
|
415
|
+
function fitScene<Content>(v: Viewer<Content>, view: View | Quaternion = v.options.view ?? "front"): Placement | undefined {
|
|
416
|
+
const { scene, bufferZones = {}, fitPadding = 0 } = v.options;
|
|
402
417
|
return scene && fitCamera(v.camera, { view, size: scene.size_deprecated, canvas: v.size, bufferZones, fitPadding });
|
|
403
418
|
}
|
|
404
419
|
|
|
405
|
-
function updateGizmo<Content>(v: Viewer<Content
|
|
406
|
-
v.gizmo
|
|
420
|
+
function updateGizmo<Content>(v: Viewer<Content>, fontsLoaded = false): void {
|
|
421
|
+
if (v.gizmo) {
|
|
422
|
+
disposeGizmo(v.gizmo);
|
|
423
|
+
}
|
|
424
|
+
// A click's turn that the old gizmo hadn't moved the camera to the end of would never end
|
|
425
|
+
if (v.turn && !v.turn.to) {
|
|
426
|
+
endTurn(v);
|
|
427
|
+
}
|
|
407
428
|
const { gizmo } = v.options;
|
|
408
|
-
v.gizmo = gizmo && createGizmo(v.camera, v.renderer, v.container, gizmo).attachControls(v.controls.orbit);
|
|
409
|
-
v.gizmo?.addEventListener("change", () =>
|
|
429
|
+
v.gizmo = gizmo && createGizmo(v.camera, v.renderer, v.container, gizmo, () => invalidate(v)).attachControls(v.controls.orbit);
|
|
430
|
+
v.gizmo?.addEventListener("change", () => onGizmoChange(v));
|
|
410
431
|
v.gizmo?.addEventListener("start", () => onGizmoStart(v));
|
|
411
|
-
|
|
432
|
+
v.gizmo?.addEventListener("end", () => onGizmoEnd(v));
|
|
433
|
+
// Its labels are drawn into its textures once, so ones drawn before their web font loaded are replaced by a new one once it has, unless replaced
|
|
434
|
+
// or disposed meanwhile; loading starts it if nothing has, and gives no faces for a system font or one that failed. Only once, so a font that
|
|
435
|
+
// never checks as loaded can't replace it again and again. Not by its set(options), which leaves it detached from the controls and keeps every
|
|
436
|
+
// other old label
|
|
412
437
|
const created = v.gizmo;
|
|
413
|
-
|
|
414
|
-
|
|
438
|
+
const font = created && `${created.options.font?.weight ?? ""} 16px ${created.options.font?.family ?? "sans-serif"}`;
|
|
439
|
+
if (created && font && !fontsLoaded && !document.fonts.check(font)) {
|
|
440
|
+
document.fonts
|
|
441
|
+
.load(font)
|
|
442
|
+
.then((faces) => faces.length > 0 && v.gizmo === created && !v.disposed && replaceGizmo(v))
|
|
443
|
+
.catch(() => undefined);
|
|
415
444
|
}
|
|
416
445
|
}
|
|
417
446
|
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
447
|
+
function replaceGizmo<Content>(v: Viewer<Content>): void {
|
|
448
|
+
updateGizmo(v, true);
|
|
449
|
+
invalidate(v);
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
/** A click starts a turn, from where a turn going on has got to */
|
|
453
|
+
function onGizmoStart<Content>(v: Viewer<Content>): void {
|
|
454
|
+
if (v.gizmo?.animating) {
|
|
455
|
+
v.turn = { from: getPose(v), start: performance.now() };
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
/** Dragging the gizmo stops a turn going on; a click's changes come while it's animating, or before the turn knows where it ends */
|
|
460
|
+
function onGizmoChange<Content>(v: Viewer<Content>): void {
|
|
461
|
+
if (!v.gizmo?.animating && v.turn?.to) {
|
|
462
|
+
v.turn = undefined;
|
|
423
463
|
}
|
|
464
|
+
invalidate(v);
|
|
424
465
|
}
|
|
425
466
|
|
|
426
467
|
/**
|
|
427
|
-
*
|
|
428
|
-
* distance
|
|
468
|
+
* The gizmo, not animated, moved the camera to the clicked view at once; it's moved back, to turn from there in the next frames, eased, and with the
|
|
469
|
+
* target and distance too, as a click can also move the target back to the scene's center and fit the scene to the view. An orthographic camera's
|
|
470
|
+
* zoom starts at the one that shows as much on the fitted projection as before
|
|
429
471
|
*/
|
|
430
|
-
function
|
|
431
|
-
const {
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
472
|
+
function onGizmoEnd<Content>(v: Viewer<Content>): void {
|
|
473
|
+
const { turn, camera } = v;
|
|
474
|
+
if (turn && !turn.to) {
|
|
475
|
+
const { gizmo } = v.options;
|
|
476
|
+
const reset = gizmo?.type === "Viewcube" ? gizmo.viewcubeProps?.resetZoomAndPanOnClick : gizmo?.viewportProps?.resetZoomAndPanOnClick;
|
|
477
|
+
const quaternion = camera.quaternion.clone();
|
|
478
|
+
const height = (): number => ("isOrthographicCamera" in camera ? camera.top - camera.bottom : 1);
|
|
479
|
+
const before = height();
|
|
480
|
+
const placement = reset ? fitScene(v, quaternion) : undefined;
|
|
481
|
+
const from = { ...turn.from, zoom: (turn.from.zoom * height()) / before };
|
|
482
|
+
const to = placement ? { quaternion, target: new Vector3(), distance: placement.distance, zoom: 1 } : { ...turn.from, quaternion };
|
|
483
|
+
v.turn = { ...turn, from, to };
|
|
484
|
+
setCameraPose(v, from);
|
|
485
|
+
}
|
|
486
|
+
// Its end, also of a press during a turn, enabled the controls, which the turn enables when it ends
|
|
487
|
+
if (v.turn) {
|
|
488
|
+
v.controls.orbit.enabled = false;
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
function turnCamera<Content>(v: Viewer<Content>, from: Pose, to: Pose, progress: number): void {
|
|
493
|
+
const t = Math.min(1, progress);
|
|
494
|
+
const eased = t * t * (3 - 2 * t);
|
|
495
|
+
const lerp = (a: number, b: number): number => a + (b - a) * eased;
|
|
496
|
+
setCameraPose(v, {
|
|
497
|
+
quaternion: from.quaternion.clone().slerp(to.quaternion, eased),
|
|
498
|
+
target: from.target.clone().lerp(to.target, eased),
|
|
499
|
+
distance: lerp(from.distance, to.distance),
|
|
500
|
+
zoom: lerp(from.zoom, to.zoom),
|
|
501
|
+
});
|
|
502
|
+
if (t === 1) {
|
|
503
|
+
endTurn(v);
|
|
437
504
|
}
|
|
438
505
|
}
|
|
439
506
|
|
|
507
|
+
/** The controls the click disabled are enabled again */
|
|
508
|
+
function endTurn<Content>(v: Viewer<Content>): void {
|
|
509
|
+
v.turn = undefined;
|
|
510
|
+
v.controls.orbit.enabled = v.controls.current.options.enabled ?? true;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
function getPose<Content>({ camera, controls }: Viewer<Content>): Pose {
|
|
514
|
+
const target = controls.orbit.target.clone();
|
|
515
|
+
return { quaternion: camera.quaternion.clone(), target, distance: camera.position.distanceTo(target), zoom: camera.zoom };
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
function setCameraPose<Content>(v: Viewer<Content>, { quaternion, target, distance, zoom }: Pose): void {
|
|
519
|
+
const { camera } = v;
|
|
520
|
+
camera.quaternion.copy(quaternion);
|
|
521
|
+
camera.position.set(0, 0, distance).applyQuaternion(quaternion).add(target);
|
|
522
|
+
camera.zoom = zoom;
|
|
523
|
+
camera.updateProjectionMatrix();
|
|
524
|
+
v.controls.orbit.target.copy(target);
|
|
525
|
+
v.gizmo?.cameraUpdate();
|
|
526
|
+
}
|
|
527
|
+
|
|
440
528
|
function onPointerMove<Content>(v: Viewer<Content>, event: PointerEvent): void {
|
|
441
529
|
v.pointer.last = event;
|
|
442
530
|
v.pointer.frame ||= requestAnimationFrame(() => hoverAtPointer(v));
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { zOrderElement } from "./svg-geometries/shared.js";
|
|
2
|
-
/**
|
|
3
|
-
* Elements in drawing order, back to front, by Newell's ordering without splitting: of two elements that overlap on screen, one entirely behind the
|
|
4
|
-
* other's plane, or the other entirely in front of its plane, is drawn first. Elements are drawn by mean depth otherwise, each after those it must be
|
|
5
|
-
* drawn after, depth first; elements overlapping in a cycle, which only splitting them could resolve, are drawn where the cycle is met. Elements
|
|
6
|
-
* entirely inside an opaque convex polygon in front of them are left out, as they can't be seen
|
|
7
|
-
*/
|
|
8
|
-
export declare function orderElements(elements: ReadonlyArray<zOrderElement>): ReadonlyArray<zOrderElement>;
|
|
9
|
-
//# sourceMappingURL=svg-order.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"svg-order.d.ts","sourceRoot":"","sources":["../../../src/renderers/svg/svg-order.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC,aAAa,CAAC,CA0DlG"}
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Elements in drawing order, back to front, by Newell's ordering without splitting: of two elements that overlap on screen, one entirely behind the
|
|
3
|
-
* other's plane, or the other entirely in front of its plane, is drawn first. Elements are drawn by mean depth otherwise, each after those it must be
|
|
4
|
-
* drawn after, depth first; elements overlapping in a cycle, which only splitting them could resolve, are drawn where the cycle is met. Elements
|
|
5
|
-
* entirely inside an opaque convex polygon in front of them are left out, as they can't be seen
|
|
6
|
-
*/
|
|
7
|
-
export function orderElements(elements) {
|
|
8
|
-
const items = [];
|
|
9
|
-
const swept = [];
|
|
10
|
-
const byDepth = [];
|
|
11
|
-
elements.forEach((e, i) => {
|
|
12
|
-
items.push(e.polygon && createItem(e.polygon, !!e.opaque));
|
|
13
|
-
byDepth.push(i);
|
|
14
|
-
if (e.polygon) {
|
|
15
|
-
swept.push(i);
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
swept.sort((a, b) => items[a].min.x - items[b].min.x);
|
|
19
|
-
byDepth.sort((a, b) => elements[a].zOrder - elements[b].zOrder);
|
|
20
|
-
// Sweep along x: each item is compared with the active ones whose bounds still overlap it on screen, dropping the others in the same pass
|
|
21
|
-
const behind = [];
|
|
22
|
-
const hidden = new Uint8Array(elements.length);
|
|
23
|
-
const active = [];
|
|
24
|
-
for (const i of swept) {
|
|
25
|
-
const a = items[i];
|
|
26
|
-
active.length = active.reduce((kept, j) => {
|
|
27
|
-
const b = items[j];
|
|
28
|
-
if (b.max.x <= a.min.x + eps) {
|
|
29
|
-
return kept;
|
|
30
|
-
}
|
|
31
|
-
active[kept] = j;
|
|
32
|
-
const order = b.min.y < a.max.y - eps && a.min.y < b.max.y - eps ? getOrder(a, b) : 0;
|
|
33
|
-
if (order !== 0) {
|
|
34
|
-
const [back, front] = order < 0 ? [i, j] : [j, i];
|
|
35
|
-
(behind[front] ??= []).push(back);
|
|
36
|
-
hidden[back] ||= covers(items[front], items[back]) ? 1 : 0;
|
|
37
|
-
}
|
|
38
|
-
return kept + 1;
|
|
39
|
-
}, 0);
|
|
40
|
-
active.push(i);
|
|
41
|
-
}
|
|
42
|
-
// Depth first: an element is drawn when it's met on the stack again, after the elements behind it; 1 while it waits, 2 once drawn
|
|
43
|
-
const state = new Uint8Array(elements.length);
|
|
44
|
-
const stack = [];
|
|
45
|
-
const ordered = [];
|
|
46
|
-
for (const start of byDepth) {
|
|
47
|
-
stack.push(start);
|
|
48
|
-
while (stack.length > 0) {
|
|
49
|
-
const i = stack.pop();
|
|
50
|
-
if (state[i] === 0) {
|
|
51
|
-
state[i] = 1;
|
|
52
|
-
stack.push(i);
|
|
53
|
-
behind[i]?.forEach((j) => state[j] === 0 && stack.push(j));
|
|
54
|
-
}
|
|
55
|
-
else if (state[i] === 1) {
|
|
56
|
-
state[i] = 2;
|
|
57
|
-
if (!hidden[i]) {
|
|
58
|
-
ordered.push(elements[i]);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
return ordered;
|
|
64
|
-
}
|
|
65
|
-
/** Distances below this, in the scene's units, are equal */
|
|
66
|
-
const eps = 1e-3;
|
|
67
|
-
/** In one pass over the points: their bounds, edge normals on screen, plane by Newell's method, and whether they're a convex polygon */
|
|
68
|
-
function createItem(points, opaque) {
|
|
69
|
-
const min = { x: Infinity, y: Infinity, z: Infinity };
|
|
70
|
-
const max = { x: -Infinity, y: -Infinity, z: -Infinity };
|
|
71
|
-
const normal = { x: 0, y: 0, z: 0 };
|
|
72
|
-
// The smallest and largest turn at a corner on screen, the same sign throughout for a convex polygon
|
|
73
|
-
const turns = { min: 0, max: 0 };
|
|
74
|
-
const axes = [];
|
|
75
|
-
points.forEach((p, i) => {
|
|
76
|
-
Object.assign(min, { x: Math.min(min.x, p.x), y: Math.min(min.y, p.y), z: Math.min(min.z, p.z) });
|
|
77
|
-
Object.assign(max, { x: Math.max(max.x, p.x), y: Math.max(max.y, p.y), z: Math.max(max.z, p.z) });
|
|
78
|
-
const q = points[(i + 1) % points.length];
|
|
79
|
-
normal.x += (p.y - q.y) * (p.z + q.z);
|
|
80
|
-
normal.y += (p.z - q.z) * (p.x + q.x);
|
|
81
|
-
normal.z += (p.x - q.x) * (p.y + q.y);
|
|
82
|
-
if (Math.abs(q.x - p.x) + Math.abs(q.y - p.y) > eps) {
|
|
83
|
-
axes.push([q.y - p.y, p.x - q.x]);
|
|
84
|
-
}
|
|
85
|
-
const o = points[(i + points.length - 1) % points.length];
|
|
86
|
-
const turn = (p.x - o.x) * (q.y - p.y) - (p.y - o.y) * (q.x - p.x);
|
|
87
|
-
Object.assign(turns, { min: Math.min(turns.min, turn), max: Math.max(turns.max, turn) });
|
|
88
|
-
});
|
|
89
|
-
const convex = points.length >= 3 && (turns.min >= -eps || turns.max <= eps);
|
|
90
|
-
const occluder = opaque && convex ? Math.sign(normal.z) : 0;
|
|
91
|
-
const length = Math.hypot(normal.x, normal.y, normal.z);
|
|
92
|
-
if (points.length < 3 || length < eps || Math.abs(normal.z) < 1e-6 * length) {
|
|
93
|
-
return { points, min, max, axes, occluder: 0 };
|
|
94
|
-
}
|
|
95
|
-
// Toward the viewer, at +z
|
|
96
|
-
const s = Math.sign(normal.z) / length;
|
|
97
|
-
const n = { x: normal.x * s, y: normal.y * s, z: normal.z * s };
|
|
98
|
-
const p0 = points[0];
|
|
99
|
-
return { points, min, max, axes, plane: { normal: n, d: n.x * p0.x + n.y * p0.y + n.z * p0.z }, occluder };
|
|
100
|
-
}
|
|
101
|
-
/** -1 if `a` is drawn before `b`, 1 if after, 0 if they don't overlap or nothing decides */
|
|
102
|
-
function getOrder(a, b) {
|
|
103
|
-
if (a.max.z <= b.min.z + eps) {
|
|
104
|
-
return -1;
|
|
105
|
-
}
|
|
106
|
-
if (b.max.z <= a.min.z + eps) {
|
|
107
|
-
return 1;
|
|
108
|
-
}
|
|
109
|
-
if (!overlap(a, b)) {
|
|
110
|
-
return 0;
|
|
111
|
-
}
|
|
112
|
-
const aToB = b.plane ? getSide(a.points, b.plane) : 0;
|
|
113
|
-
if (aToB !== 0) {
|
|
114
|
-
return aToB;
|
|
115
|
-
}
|
|
116
|
-
return a.plane ? -getSide(b.points, a.plane) : 0;
|
|
117
|
-
}
|
|
118
|
-
/** -1 if the points are all behind the plane, 1 if all in front of it, 0 if on both sides or in it */
|
|
119
|
-
function getSide(points, { normal: n, d }) {
|
|
120
|
-
const range = { min: Infinity, max: -Infinity };
|
|
121
|
-
points.forEach((p) => {
|
|
122
|
-
const distance = n.x * p.x + n.y * p.y + n.z * p.z - d;
|
|
123
|
-
Object.assign(range, { min: Math.min(range.min, distance), max: Math.max(range.max, distance) });
|
|
124
|
-
});
|
|
125
|
-
return range.max <= eps && range.min < -eps ? -1 : range.min >= -eps && range.max > eps ? 1 : 0;
|
|
126
|
-
}
|
|
127
|
-
/** Whether the polygons overlap on screen by more than touching: no edge normal of either separates them */
|
|
128
|
-
function overlap(a, b) {
|
|
129
|
-
return a.axes.every(([x, y]) => !separates(a, b, x, y)) && b.axes.every(([x, y]) => !separates(a, b, x, y));
|
|
130
|
-
}
|
|
131
|
-
function separates(a, b, x, y) {
|
|
132
|
-
const range = { aMin: Infinity, aMax: -Infinity, bMin: Infinity, bMax: -Infinity };
|
|
133
|
-
a.points.forEach((p) => Object.assign(range, { aMin: Math.min(range.aMin, p.x * x + p.y * y), aMax: Math.max(range.aMax, p.x * x + p.y * y) }));
|
|
134
|
-
b.points.forEach((p) => Object.assign(range, { bMin: Math.min(range.bMin, p.x * x + p.y * y), bMax: Math.max(range.bMax, p.x * x + p.y * y) }));
|
|
135
|
-
const tolerance = eps * Math.hypot(x, y);
|
|
136
|
-
return range.aMax <= range.bMin + tolerance || range.bMax <= range.aMin + tolerance;
|
|
137
|
-
}
|
|
138
|
-
/** Whether the front's opaque convex polygon contains all of the back's points on screen, so the back can't be seen; not for a single point, e.g. text */
|
|
139
|
-
function covers(front, back) {
|
|
140
|
-
const { points, occluder } = front;
|
|
141
|
-
return (occluder !== 0 &&
|
|
142
|
-
back.points.length >= 2 &&
|
|
143
|
-
points.every((p, i) => {
|
|
144
|
-
const q = points[(i + 1) % points.length];
|
|
145
|
-
return back.points.every((r) => occluder * ((q.x - p.x) * (r.y - p.y) - (q.y - p.y) * (r.x - p.x)) >= -eps * Math.hypot(q.x - p.x, q.y - p.y));
|
|
146
|
-
}));
|
|
147
|
-
}
|
|
148
|
-
//# sourceMappingURL=svg-order.js.map
|