abstract-3d 2.7.30 → 2.7.32
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/CHANGELOG.md +4 -0
- package/lib/abstract-3d.d.ts +1 -1
- package/lib/abstract-3d.d.ts.map +1 -1
- package/lib/abstract-3d.js +20 -12
- package/lib/abstract-3d.js.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-3dface.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-dimension.d.ts +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-dimension.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-dimension.js +3 -3
- package/lib/renderers/dxf/dxf-encoding/dxf-dimension.js.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-footer.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-header.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-header.js.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-mtext.js.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-solid.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding/dxf-triangle.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-image.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-polygon.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-shape.js.map +1 -1
- package/lib/renderers/dxf/dxf.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf.js +9 -5
- package/lib/renderers/dxf/dxf.js.map +1 -1
- package/lib/renderers/react/react-camera.d.ts +2 -2
- package/lib/renderers/react/react-camera.d.ts.map +1 -1
- package/lib/renderers/react/react-camera.js +3 -5
- package/lib/renderers/react/react-camera.js.map +1 -1
- package/lib/renderers/react/react-dimension.d.ts +2 -2
- package/lib/renderers/react/react-dimension.d.ts.map +1 -1
- package/lib/renderers/react/react-dimension.js +3 -3
- package/lib/renderers/react/react-dimension.js.map +1 -1
- package/lib/renderers/react/react-group.d.ts +4 -4
- package/lib/renderers/react/react-group.d.ts.map +1 -1
- package/lib/renderers/react/react-group.js.map +1 -1
- package/lib/renderers/react/react-hotspot.d.ts +2 -2
- package/lib/renderers/react/react-hotspot.d.ts.map +1 -1
- package/lib/renderers/react/react-hotspot.js +1 -1
- package/lib/renderers/react/react-hotspot.js.map +1 -1
- package/lib/renderers/react/react-image-material.d.ts +2 -2
- package/lib/renderers/react/react-image-material.d.ts.map +1 -1
- package/lib/renderers/react/react-image-material.js +1 -0
- package/lib/renderers/react/react-image-material.js.map +1 -1
- package/lib/renderers/react/react-material.d.ts +1 -1
- package/lib/renderers/react/react-material.d.ts.map +1 -1
- package/lib/renderers/react/react-material.js +1 -0
- package/lib/renderers/react/react-material.js.map +1 -1
- package/lib/renderers/react/react-mesh.d.ts +1 -1
- package/lib/renderers/react/react-mesh.d.ts.map +1 -1
- package/lib/renderers/react/react-mesh.js +4 -12
- package/lib/renderers/react/react-mesh.js.map +1 -1
- package/lib/renderers/react/react-scene.d.ts +5 -5
- package/lib/renderers/react/react-scene.d.ts.map +1 -1
- package/lib/renderers/react/react-scene.js +1 -0
- package/lib/renderers/react/react-scene.js.map +1 -1
- package/lib/renderers/react/react-types.d.ts +1 -1
- package/lib/renderers/react/react-types.d.ts.map +1 -1
- package/lib/renderers/react/react.d.ts +5 -5
- package/lib/renderers/react/react.d.ts.map +1 -1
- package/lib/renderers/react/react.js +1 -1
- package/lib/renderers/react/react.js.map +1 -1
- package/lib/renderers/step/step-encoding.d.ts +1 -1
- package/lib/renderers/step/step-encoding.d.ts.map +1 -1
- package/lib/renderers/step/step-encoding.js.map +1 -1
- package/lib/renderers/step/step-geometries/step-box.d.ts +2 -2
- package/lib/renderers/step/step-geometries/step-box.d.ts.map +1 -1
- package/lib/renderers/step/step-geometries/step-box.js.map +1 -1
- package/lib/renderers/step/step-geometries/step-cone.d.ts +2 -2
- package/lib/renderers/step/step-geometries/step-cone.d.ts.map +1 -1
- package/lib/renderers/step/step-geometries/step-cone.js +0 -1
- package/lib/renderers/step/step-geometries/step-cone.js.map +1 -1
- package/lib/renderers/step/step-geometries/step-cylinder.d.ts +2 -2
- package/lib/renderers/step/step-geometries/step-cylinder.d.ts.map +1 -1
- package/lib/renderers/step/step-geometries/step-cylinder.js +8 -23
- package/lib/renderers/step/step-geometries/step-cylinder.js.map +1 -1
- package/lib/renderers/step/step-geometries/step-plane.d.ts +2 -2
- package/lib/renderers/step/step-geometries/step-plane.d.ts.map +1 -1
- package/lib/renderers/step/step-geometries/step-plane.js +1 -1
- package/lib/renderers/step/step-geometries/step-plane.js.map +1 -1
- package/lib/renderers/step/step.d.ts +1 -1
- package/lib/renderers/step/step.d.ts.map +1 -1
- package/lib/renderers/step/step.js +1 -1
- package/lib/renderers/step/step.js.map +1 -1
- package/lib/renderers/stl/stl-encoding.d.ts +1 -1
- package/lib/renderers/stl/stl-encoding.d.ts.map +1 -1
- package/lib/renderers/stl/stl-encoding.js.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-box.d.ts +1 -1
- package/lib/renderers/stl/stl-geometries/stl-box.d.ts.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-box.js.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-cone.d.ts +1 -1
- package/lib/renderers/stl/stl-geometries/stl-cone.d.ts.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-cone.js.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-cylinder.d.ts +1 -1
- package/lib/renderers/stl/stl-geometries/stl-cylinder.d.ts.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-cylinder.js +1 -1
- package/lib/renderers/stl/stl-geometries/stl-cylinder.js.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-plane.d.ts +1 -1
- package/lib/renderers/stl/stl-geometries/stl-plane.d.ts.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-plane.js +1 -1
- package/lib/renderers/stl/stl-geometries/stl-plane.js.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-polygon.d.ts +1 -1
- package/lib/renderers/stl/stl-geometries/stl-polygon.d.ts.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-polygon.js.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-shape.d.ts +1 -1
- package/lib/renderers/stl/stl-geometries/stl-shape.d.ts.map +1 -1
- package/lib/renderers/stl/stl-geometries/stl-shape.js.map +1 -1
- package/lib/renderers/stl/stl.d.ts +1 -1
- package/lib/renderers/stl/stl.d.ts.map +1 -1
- package/lib/renderers/stl/stl.js.map +1 -1
- package/lib/renderers/svg/index.js +1 -0
- package/lib/renderers/svg/index.js.map +1 -1
- package/lib/renderers/svg/svg-encoding.d.ts +3 -3
- package/lib/renderers/svg/svg-encoding.d.ts.map +1 -1
- package/lib/renderers/svg/svg-encoding.js +6 -15
- package/lib/renderers/svg/svg-encoding.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/shared.d.ts +1 -1
- package/lib/renderers/svg/svg-geometries/shared.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/shared.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-box.d.ts +2 -2
- package/lib/renderers/svg/svg-geometries/svg-box.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-box.js +1 -1
- package/lib/renderers/svg/svg-geometries/svg-box.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-cone.d.ts +2 -2
- package/lib/renderers/svg/svg-geometries/svg-cone.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-cone.js +1 -1
- package/lib/renderers/svg/svg-geometries/svg-cone.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-cylinder.d.ts +2 -2
- package/lib/renderers/svg/svg-geometries/svg-cylinder.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-cylinder.js +1 -1
- package/lib/renderers/svg/svg-geometries/svg-cylinder.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-image.d.ts +2 -2
- package/lib/renderers/svg/svg-geometries/svg-image.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-image.js +1 -1
- package/lib/renderers/svg/svg-geometries/svg-image.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-line.d.ts +2 -2
- package/lib/renderers/svg/svg-geometries/svg-line.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-line.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-plane.d.ts +2 -2
- package/lib/renderers/svg/svg-geometries/svg-plane.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-plane.js +1 -1
- package/lib/renderers/svg/svg-geometries/svg-plane.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-polygon.d.ts +2 -2
- package/lib/renderers/svg/svg-geometries/svg-polygon.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-polygon.js +1 -1
- package/lib/renderers/svg/svg-geometries/svg-polygon.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-shape.d.ts +2 -2
- package/lib/renderers/svg/svg-geometries/svg-shape.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-shape.js +1 -1
- package/lib/renderers/svg/svg-geometries/svg-shape.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-text.d.ts +2 -2
- package/lib/renderers/svg/svg-geometries/svg-text.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-text.js.map +1 -1
- package/lib/renderers/svg/svg.d.ts +3 -3
- package/lib/renderers/svg/svg.d.ts.map +1 -1
- package/lib/renderers/svg/svg.js.map +1 -1
- package/lib/utils.d.ts +1 -1
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +0 -1
- package/lib/utils.js.map +1 -1
- package/package.json +3 -3
- package/src/abstract-3d.ts +91 -91
- package/src/custom_typings/react-three-fiber.d.ts +1 -1
- package/src/renderers/dxf/dxf-encoding/dxf-dimension.ts +57 -13
- package/src/renderers/dxf/dxf.ts +67 -16
- package/src/renderers/react/react-camera.tsx +3 -4
- package/src/renderers/react/react-dimension.tsx +5 -5
- package/src/renderers/react/react-group.tsx +6 -4
- package/src/renderers/react/react-hotspot.tsx +3 -2
- package/src/renderers/react/react-image-material.tsx +3 -2
- package/src/renderers/react/react-material.tsx +1 -1
- package/src/renderers/react/react-mesh.tsx +28 -39
- package/src/renderers/react/react-scene.tsx +6 -5
- package/src/renderers/react/react-types.ts +1 -1
- package/src/renderers/react/react.tsx +7 -6
- package/src/renderers/step/step-encoding.ts +43 -44
- package/src/renderers/step/step-geometries/step-box.ts +3 -8
- package/src/renderers/step/step-geometries/step-cone.ts +3 -14
- package/src/renderers/step/step-geometries/step-cylinder.ts +49 -251
- package/src/renderers/step/step-geometries/step-plane.ts +4 -11
- package/src/renderers/step/step.ts +3 -19
- package/src/renderers/stl/stl-encoding.ts +2 -1
- package/src/renderers/stl/stl-geometries/stl-box.ts +2 -1
- package/src/renderers/stl/stl-geometries/stl-cone.ts +2 -1
- package/src/renderers/stl/stl-geometries/stl-cylinder.ts +3 -2
- package/src/renderers/stl/stl-geometries/stl-plane.ts +2 -10
- package/src/renderers/stl/stl-geometries/stl-polygon.ts +2 -1
- package/src/renderers/stl/stl-geometries/stl-shape.ts +2 -1
- package/src/renderers/stl/stl.ts +2 -1
- package/src/renderers/svg/svg-encoding.ts +7 -31
- package/src/renderers/svg/svg-geometries/shared.ts +2 -1
- package/src/renderers/svg/svg-geometries/svg-box.ts +4 -13
- package/src/renderers/svg/svg-geometries/svg-cone.ts +4 -13
- package/src/renderers/svg/svg-geometries/svg-cylinder.ts +4 -13
- package/src/renderers/svg/svg-geometries/svg-image.ts +6 -12
- package/src/renderers/svg/svg-geometries/svg-line.ts +4 -2
- package/src/renderers/svg/svg-geometries/svg-plane.ts +4 -14
- package/src/renderers/svg/svg-geometries/svg-polygon.ts +4 -11
- package/src/renderers/svg/svg-geometries/svg-shape.ts +4 -12
- package/src/renderers/svg/svg-geometries/svg-text.ts +6 -8
- package/src/renderers/svg/svg.ts +13 -17
- package/src/utils.ts +22 -27
|
@@ -1,16 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
vec3,
|
|
6
|
-
vec3TransRot,
|
|
7
|
-
vec3RotCombine,
|
|
8
|
-
vec3Zero,
|
|
9
|
-
vec3ZMean,
|
|
10
|
-
equals,
|
|
11
|
-
Material,
|
|
12
|
-
} from "../../../abstract-3d.js";
|
|
13
|
-
import { gray, stBW, SvgOptions, transparent, zElem, zOrderElement } from "./shared.js";
|
|
1
|
+
import type { Cylinder, Vec2, Vec3, Material } from "../../../abstract-3d.js";
|
|
2
|
+
import { vec3, vec3TransRot, vec3RotCombine, vec3Zero, vec3ZMean, equals } from "../../../abstract-3d.js";
|
|
3
|
+
import type { SvgOptions, zOrderElement } from "./shared.js";
|
|
4
|
+
import { gray, stBW, transparent, zElem } from "./shared.js";
|
|
14
5
|
import { svgCircle, svgPolygon } from "../svg-encoding.js";
|
|
15
6
|
import { rgbGrayScale } from "../../../utils.js";
|
|
16
7
|
|
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
import { createSVG } from "abstract-image";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
vec3RotCombine,
|
|
9
|
-
vec3Zero,
|
|
10
|
-
vec3,
|
|
11
|
-
} from "../../../abstract-3d.js";
|
|
12
|
-
import { zElem, zOrderElement, SvgOptions } from "./shared.js";
|
|
13
|
-
import { EmbededImage, rawSvgPrefix, svgImage } from "../svg-encoding.js";
|
|
2
|
+
import type { ImageMesh, Vec2, Vec3 } from "../../../abstract-3d.js";
|
|
3
|
+
import { vec2Scale, vec3TransRot, vec3RotCombine, vec3Zero, vec3 } from "../../../abstract-3d.js";
|
|
4
|
+
import type { zOrderElement, SvgOptions } from "./shared.js";
|
|
5
|
+
import { zElem } from "./shared.js";
|
|
6
|
+
import type { EmbededImage } from "../svg-encoding.js";
|
|
7
|
+
import { rawSvgPrefix, svgImage } from "../svg-encoding.js";
|
|
14
8
|
import { exhaustiveCheck } from "ts-exhaustive-check";
|
|
15
9
|
|
|
16
10
|
export function image(
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { CulledLine, Line, Vec2, Vec3
|
|
2
|
-
import {
|
|
1
|
+
import type { CulledLine, Line, Vec2, Vec3 } from "../../../abstract-3d.js";
|
|
2
|
+
import { vec3TransRot, vec3ZMean } from "../../../abstract-3d.js";
|
|
3
|
+
import type { SvgOptions, zOrderElement } from "./shared.js";
|
|
4
|
+
import { zElem } from "./shared.js";
|
|
3
5
|
import { svgLine } from "../svg-encoding.js";
|
|
4
6
|
import { rgbGrayScale } from "../../../utils.js";
|
|
5
7
|
|
|
@@ -1,17 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
vec2Scale,
|
|
6
|
-
vec3TransRot,
|
|
7
|
-
vec3RotCombine,
|
|
8
|
-
vec3Zero,
|
|
9
|
-
vec3,
|
|
10
|
-
vec3ZMean,
|
|
11
|
-
Material,
|
|
12
|
-
Hole,
|
|
13
|
-
} from "../../../abstract-3d.js";
|
|
14
|
-
import { gray, black, zElem, zOrderElement, SvgOptions } from "./shared.js";
|
|
1
|
+
import type { Plane, Vec2, Vec3, Material, Hole } from "../../../abstract-3d.js";
|
|
2
|
+
import { vec2Scale, vec3TransRot, vec3RotCombine, vec3Zero, vec3, vec3ZMean } from "../../../abstract-3d.js";
|
|
3
|
+
import type { zOrderElement, SvgOptions } from "./shared.js";
|
|
4
|
+
import { gray, black, zElem } from "./shared.js";
|
|
15
5
|
import { svgPolygon } from "../svg-encoding.js";
|
|
16
6
|
import { rgbGrayScale } from "../../../utils.js";
|
|
17
7
|
|
|
@@ -1,14 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Vec2,
|
|
6
|
-
vec3TransRot,
|
|
7
|
-
vec3RotCombine,
|
|
8
|
-
vec3Zero,
|
|
9
|
-
Material,
|
|
10
|
-
} from "../../../abstract-3d.js";
|
|
11
|
-
import { gray, zElem, zOrderElement, transparent, SvgOptions } from "./shared.js";
|
|
1
|
+
import type { Polygon, Vec3, Vec2, Material } from "../../../abstract-3d.js";
|
|
2
|
+
import { vec3ZMean, vec3TransRot, vec3RotCombine, vec3Zero } from "../../../abstract-3d.js";
|
|
3
|
+
import type { zOrderElement, SvgOptions } from "./shared.js";
|
|
4
|
+
import { gray, zElem, transparent } from "./shared.js";
|
|
12
5
|
import { svgPolygon } from "../svg-encoding.js";
|
|
13
6
|
import { rgbGrayScale } from "../../../utils.js";
|
|
14
7
|
|
|
@@ -1,15 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
vec3TransRot,
|
|
6
|
-
vec3RotCombine,
|
|
7
|
-
Shape,
|
|
8
|
-
vec3,
|
|
9
|
-
vec3Zero,
|
|
10
|
-
Material,
|
|
11
|
-
} from "../../../abstract-3d.js";
|
|
12
|
-
import { gray, zElem, zOrderElement, transparent, SvgOptions } from "./shared.js";
|
|
1
|
+
import type { Vec3, Vec2, Shape, Material } from "../../../abstract-3d.js";
|
|
2
|
+
import { vec3ZMean, vec3TransRot, vec3RotCombine, vec3, vec3Zero } from "../../../abstract-3d.js";
|
|
3
|
+
import type { zOrderElement, SvgOptions } from "./shared.js";
|
|
4
|
+
import { gray, zElem, transparent } from "./shared.js";
|
|
13
5
|
import { svgPolygon } from "../svg-encoding.js";
|
|
14
6
|
import { rgbGrayScale } from "../../../utils.js";
|
|
15
7
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { Text, Vec2, Vec3
|
|
2
|
-
import {
|
|
1
|
+
import type { Text, Vec2, Vec3 } from "../../../abstract-3d.js";
|
|
2
|
+
import { vec3TransRot, vec3RotCombine, vec3Zero, vec3, vec3Dot, vec3Rot } from "../../../abstract-3d.js";
|
|
3
|
+
import type { SvgOptions, zOrderElement } from "./shared.js";
|
|
4
|
+
import { svgTrsMatrix, zElem } from "./shared.js";
|
|
3
5
|
import { svgText } from "../svg-encoding.js";
|
|
4
6
|
|
|
5
7
|
const SVG_FORWARD: Vec3 = vec3(0.0, 0.0, 1.0);
|
|
@@ -17,14 +19,10 @@ export function text(
|
|
|
17
19
|
const pos = vec3TransRot(t.pos, parentPos, parentRot);
|
|
18
20
|
const rot = vec3RotCombine(parentRot, t.rot ?? vec3Zero);
|
|
19
21
|
|
|
20
|
-
const textForward = vec3Rot(
|
|
21
|
-
{ x: 0, y: 0, z: 1 },
|
|
22
|
-
vec3Zero,
|
|
23
|
-
rot,
|
|
24
|
-
);
|
|
22
|
+
const textForward = vec3Rot({ x: 0, y: 0, z: 1 }, vec3Zero, rot);
|
|
25
23
|
|
|
26
24
|
//discard texts that are pointing away
|
|
27
|
-
if(vec3Dot(textForward, SVG_FORWARD) <= SVG_DOT_OPPOSITE_THRESHOLD) {
|
|
25
|
+
if (vec3Dot(textForward, SVG_FORWARD) <= SVG_DOT_OPPOSITE_THRESHOLD) {
|
|
28
26
|
return [];
|
|
29
27
|
}
|
|
30
28
|
|
package/src/renderers/svg/svg.ts
CHANGED
|
@@ -1,31 +1,22 @@
|
|
|
1
1
|
import { exhaustiveCheck } from "ts-exhaustive-check";
|
|
2
|
+
import type { Scene, Vec3, Mesh, Vec2, Group, Material, Bounds2 } from "../../abstract-3d.js";
|
|
2
3
|
import {
|
|
3
4
|
vec2,
|
|
4
|
-
Scene,
|
|
5
|
-
Vec3,
|
|
6
|
-
Mesh,
|
|
7
5
|
vec3Rot,
|
|
8
6
|
vec3Zero,
|
|
9
7
|
vec3RotCombine,
|
|
10
8
|
vec3,
|
|
11
|
-
Vec2,
|
|
12
|
-
Group,
|
|
13
9
|
vec3TransRot,
|
|
14
|
-
Material,
|
|
15
10
|
rotationForCameraPos,
|
|
16
11
|
sizeBoundsForCameraPos,
|
|
17
|
-
Bounds2,
|
|
18
12
|
bounds2FromPosAndSize,
|
|
19
13
|
bounds2ToSize,
|
|
20
14
|
bounds2Merge,
|
|
21
15
|
vec2Zero,
|
|
22
16
|
vec3Flip,
|
|
23
|
-
vec2Add,
|
|
24
|
-
View,
|
|
25
|
-
vec3RotInverse,
|
|
26
17
|
dimensionConvertToTypeMesh,
|
|
27
18
|
} from "../../abstract-3d.js";
|
|
28
|
-
import { SvgOptions, zOrderElement } from "./svg-geometries/shared.js";
|
|
19
|
+
import type { SvgOptions, zOrderElement } from "./svg-geometries/shared.js";
|
|
29
20
|
import { box } from "./svg-geometries/svg-box.js";
|
|
30
21
|
import { cylinder } from "./svg-geometries/svg-cylinder.js";
|
|
31
22
|
import { line } from "./svg-geometries/svg-line.js";
|
|
@@ -34,7 +25,8 @@ import { shape } from "./svg-geometries/svg-shape.js";
|
|
|
34
25
|
import { polygon } from "./svg-geometries/svg-polygon.js";
|
|
35
26
|
import { text } from "./svg-geometries/svg-text.js";
|
|
36
27
|
import { cone } from "./svg-geometries/svg-cone.js";
|
|
37
|
-
import {
|
|
28
|
+
import type { Optional } from "../../utils.js";
|
|
29
|
+
import { calculateVisibleViews, isViewVisible } from "../../utils.js";
|
|
38
30
|
import { svg } from "./svg-encoding.js";
|
|
39
31
|
import { image } from "./svg-geometries/svg-image.js";
|
|
40
32
|
|
|
@@ -114,13 +106,17 @@ function renderInternal(
|
|
|
114
106
|
}
|
|
115
107
|
const dimOpts: SvgOptions = { ...opts, only_stroke: false, gray_scale: false };
|
|
116
108
|
elements.sort((a, b) => a.zOrder - b.zOrder);
|
|
117
|
-
|
|
109
|
+
const visibleViews = calculateVisibleViews(opts.view, scene.rotation_deprecated);
|
|
118
110
|
|
|
119
111
|
for (const dim of scene.dimensions_deprecated?.dimensions ?? []) {
|
|
120
|
-
const d = dimensionConvertToTypeMesh(
|
|
121
|
-
|
|
112
|
+
const d = dimensionConvertToTypeMesh(
|
|
113
|
+
dim,
|
|
114
|
+
scene.rotation_deprecated ?? vec3Zero,
|
|
115
|
+
scene.dimensions_deprecated?.material
|
|
116
|
+
);
|
|
117
|
+
if (isViewVisible(d.views[0], visibleViews)) {
|
|
122
118
|
const pos = vec3TransRot(d.pos, unitCenterFlipped, unitRot);
|
|
123
|
-
|
|
119
|
+
const rot = vec3RotCombine(unitRot, d.rot);
|
|
124
120
|
for (const m of d.meshes) {
|
|
125
121
|
elements.push(...svgMesh(m, pos, rot, point, scene.dimensions_deprecated?.material ?? { normal: "" }, dimOpts));
|
|
126
122
|
}
|
|
@@ -182,4 +178,4 @@ function svgMesh(
|
|
|
182
178
|
default:
|
|
183
179
|
return exhaustiveCheck(mesh.geometry);
|
|
184
180
|
}
|
|
185
|
-
}
|
|
181
|
+
}
|
package/src/utils.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { vec3, Vec3, vec3Rot, vec3Zero, View } from "./abstract-3d.js";
|
|
1
|
+
import type { Vec3, View } from "./abstract-3d.js";
|
|
2
|
+
import { vec3, vec3Rot, vec3Zero } from "./abstract-3d.js";
|
|
4
3
|
|
|
5
4
|
// dummy
|
|
6
5
|
export function parseRgb(color: string): { readonly r: number; readonly g: number; readonly b: number } {
|
|
@@ -153,35 +152,31 @@ export function shade(p: number, from: string, to?: string): string | undefined
|
|
|
153
152
|
|
|
154
153
|
export function calculateVisibleViews(originalView: View, sceneRotation: Vec3 | undefined): Record<string, boolean> {
|
|
155
154
|
const cameraPositionForView = (view: View): Vec3 => {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
155
|
+
switch (view) {
|
|
156
|
+
case "front":
|
|
157
|
+
return vec3(0, 0, 1);
|
|
158
|
+
case "back":
|
|
159
|
+
return vec3(0, 0, -1);
|
|
160
|
+
case "top":
|
|
161
|
+
return vec3(0, 1, 0);
|
|
162
|
+
case "bottom":
|
|
163
|
+
return vec3(0, -1, 0);
|
|
164
|
+
case "right":
|
|
165
|
+
return vec3(1, 0, 0);
|
|
166
|
+
case "left":
|
|
167
|
+
return vec3(-1, 0, 0);
|
|
169
168
|
default:
|
|
170
169
|
return vec3(0, 0, 1);
|
|
171
|
-
|
|
172
|
-
|
|
170
|
+
}
|
|
171
|
+
};
|
|
173
172
|
|
|
174
|
-
|
|
175
|
-
cameraPositionForView(originalView),
|
|
176
|
-
vec3Zero,
|
|
177
|
-
sceneRotation ?? vec3Zero
|
|
178
|
-
);
|
|
173
|
+
const cam = vec3Rot(cameraPositionForView(originalView), vec3Zero, sceneRotation ?? vec3Zero);
|
|
179
174
|
|
|
180
175
|
return {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
176
|
+
[cam.x >= 0 ? "right" : "left"]: originalView === "right" || originalView === "left",
|
|
177
|
+
[cam.y >= 0 ? "top" : "bottom"]: originalView === "top" || originalView === "bottom",
|
|
178
|
+
[cam.z >= 0 ? "front" : "back"]: originalView === "front" || originalView === "back",
|
|
179
|
+
};
|
|
185
180
|
}
|
|
186
181
|
|
|
187
182
|
export function isViewVisible(view: View | undefined, visibleViews: Record<string, boolean>): boolean {
|