abstract-3d 1.4.26 → 1.5.3
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/dxf.d.ts +2 -2
- package/lib/renderers/dxf/dxf.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf.js +20 -22
- package/lib/renderers/dxf/dxf.js.map +1 -1
- package/lib/renderers/svg/svg.d.ts +1 -2
- package/lib/renderers/svg/svg.d.ts.map +1 -1
- package/lib/renderers/svg/svg.js +8 -9
- package/lib/renderers/svg/svg.js.map +1 -1
- package/package.json +2 -2
- package/src/renderers/dxf/dxf.ts +23 -26
- package/src/renderers/svg/svg.ts +10 -11
|
@@ -12,6 +12,6 @@ export type DxfScene = {
|
|
|
12
12
|
readonly pos: Vec3;
|
|
13
13
|
};
|
|
14
14
|
export declare function renderScenes(scenes: ReadonlyArray<DxfScene>, baseOptions?: Optional<DxfOptions>): string;
|
|
15
|
-
export declare const
|
|
16
|
-
export declare const
|
|
15
|
+
export declare const render: (scene: Scene, options?: Optional<DxfOptions>) => string;
|
|
16
|
+
export declare const renderOld: (scene: Scene, options?: Optional<DxfOptions>) => string;
|
|
17
17
|
//# sourceMappingURL=dxf.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dxf.d.ts","sourceRoot":"","sources":["../../../src/renderers/dxf/dxf.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,IAAI,EAIJ,IAAI,
|
|
1
|
+
{"version":3,"file":"dxf.d.ts","sourceRoot":"","sources":["../../../src/renderers/dxf/dxf.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,IAAI,EAIJ,IAAI,EAYL,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAO,SAAS,EAAU,MAAM,mBAAmB,CAAC;AAM3D,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAIxC,MAAM,MAAM,UAAU,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjH,MAAM,MAAM,QAAQ,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAA;CAAE,CAAC;AAE9G,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM,CAgBxG;AAED,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,UAAU,QAAQ,CAAC,UAAU,CAAC,KAAG,MAIrE,CAAC;AAuEF,eAAO,MAAM,SAAS,GAAI,OAAO,KAAK,EAAE,UAAU,QAAQ,CAAC,UAAU,CAAC,KAAG,MAUxE,CAAC"}
|
package/lib/renderers/dxf/dxf.js
CHANGED
|
@@ -11,40 +11,27 @@ export function renderScenes(scenes, baseOptions) {
|
|
|
11
11
|
const allBounds = Array();
|
|
12
12
|
const handle = { handle: 0x1000 };
|
|
13
13
|
for (const view of scenes) {
|
|
14
|
-
const { groups, size, center } =
|
|
14
|
+
const { groups, size, center } = renderInternal(view.scene, optionsDef({ ...baseOptions, ...view.options, origin: "Center" }), view.pos, handle);
|
|
15
15
|
allGroups += groups;
|
|
16
16
|
allBounds.push(bounds3FromPosAndSize(center, size));
|
|
17
17
|
}
|
|
18
18
|
const bounds = bounds3Merge(...allBounds);
|
|
19
19
|
return dxf(allGroups, bounds3Center(bounds), bounds3ToSize(bounds), "Center");
|
|
20
20
|
}
|
|
21
|
-
export const renderNew = (scene, options) => {
|
|
22
|
-
const opts = optionsDef(options);
|
|
23
|
-
const { groups, size, center } = dxfGroups(scene, opts, vec3Zero, { handle: 0x1000 });
|
|
24
|
-
return dxf(groups, center, size, opts.origin);
|
|
25
|
-
};
|
|
26
|
-
// This is the original
|
|
27
21
|
export const render = (scene, options) => {
|
|
28
22
|
const opts = optionsDef(options);
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
const center = vec3Zero;
|
|
32
|
-
const offset = opts.origin === "Center" ? vec3Zero : vec3(Math.abs(bounds.min.x), Math.abs(bounds.min.y), -bounds.max.z);
|
|
33
|
-
const groupRoot = group([], offset, vec3Zero, scene.groups);
|
|
34
|
-
const handleRef = { handle: 0x1000 };
|
|
35
|
-
return dxf(dxfGroup(groupRoot, center, unitRot, opts, handleRef), center, scene.size_deprecated, opts.origin);
|
|
23
|
+
const { groups, size, center } = renderInternal(scene, opts, vec3Zero, { handle: 0x1000 });
|
|
24
|
+
return dxf(groups, center, size, opts.origin);
|
|
36
25
|
};
|
|
37
|
-
const
|
|
38
|
-
)
|
|
39
|
-
const sceneRot = scene.rotation_deprecated ?? vec3Zero;
|
|
40
|
-
const viewRot = rotationForCameraPos(options.view);
|
|
41
|
-
const unitRot = vec3RotCombine(viewRot, sceneRot);
|
|
26
|
+
const renderInternal = (scene, options, offset, handleRef) => {
|
|
27
|
+
const unitRot = vec3RotCombine(rotationForCameraPos(options.view), scene.rotation_deprecated ?? vec3Zero);
|
|
42
28
|
const [size, center] = sizeCenterBoundsForCameraPos(scene.size_deprecated, scene.center_deprecated ?? vec3Zero, unitRot);
|
|
43
|
-
const
|
|
29
|
+
// const unitCenterFlipped = vec3Flip(center);
|
|
30
|
+
const dxfCenter = vec3Add(center, offset);
|
|
44
31
|
return {
|
|
45
|
-
groups: scene.groups.reduce((a, c) => a + dxfGroup(c,
|
|
32
|
+
groups: scene.groups.reduce((a, c) => a + dxfGroup(c, dxfCenter, unitRot, options, handleRef), ""),
|
|
46
33
|
size,
|
|
47
|
-
center:
|
|
34
|
+
center: dxfCenter,
|
|
48
35
|
};
|
|
49
36
|
};
|
|
50
37
|
function dxfGroup(g, parentPos, parentRot, options, handleRef) {
|
|
@@ -89,4 +76,15 @@ function optionsDef(options) {
|
|
|
89
76
|
cylinderSideCount: DEFAULT_CYLINDER_SIDE_COUNT,
|
|
90
77
|
};
|
|
91
78
|
}
|
|
79
|
+
// This is the original
|
|
80
|
+
export const renderOld = (scene, options) => {
|
|
81
|
+
const opts = optionsDef(options);
|
|
82
|
+
const unitRot = vec3RotCombine(rotationForCameraPos(opts.view), scene.rotation_deprecated ?? vec3Zero);
|
|
83
|
+
const bounds = bounds3FromPosAndSize(scene.center_deprecated ?? vec3Zero, scene.size_deprecated);
|
|
84
|
+
const center = vec3Zero;
|
|
85
|
+
const offset = opts.origin === "Center" ? vec3Zero : vec3(Math.abs(bounds.min.x), Math.abs(bounds.min.y), -bounds.max.z);
|
|
86
|
+
const groupRoot = group([], offset, vec3Zero, scene.groups);
|
|
87
|
+
const handleRef = { handle: 0x1000 };
|
|
88
|
+
return dxf(dxfGroup(groupRoot, center, unitRot, opts, handleRef), center, scene.size_deprecated, opts.origin);
|
|
89
|
+
};
|
|
92
90
|
//# sourceMappingURL=dxf.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dxf.js","sourceRoot":"","sources":["../../../src/renderers/dxf/dxf.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,cAAc,EACd,QAAQ,EAGR,YAAY,EACZ,KAAK,EACL,aAAa,EACb,IAAI,EACJ,oBAAoB,EACpB,qBAAqB,EAErB,YAAY,EACZ,aAAa,EACb,OAAO,
|
|
1
|
+
{"version":3,"file":"dxf.js","sourceRoot":"","sources":["../../../src/renderers/dxf/dxf.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { Scene,
|
|
1
|
+
import { Scene, Vec2 } from "../../abstract-3d.js";
|
|
2
2
|
import { SvgOptions } from "./svg-geometries/shared.js";
|
|
3
3
|
import { Optional } from "../shared.js";
|
|
4
4
|
export type SvgScene = {
|
|
5
5
|
readonly scene: Scene;
|
|
6
6
|
readonly options?: Optional<SvgOptions>;
|
|
7
7
|
readonly pos: Vec2;
|
|
8
|
-
readonly originalView: View;
|
|
9
8
|
};
|
|
10
9
|
export type SvgWithSize = {
|
|
11
10
|
readonly image: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg.d.ts","sourceRoot":"","sources":["../../../src/renderers/svg/svg.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,
|
|
1
|
+
{"version":3,"file":"svg.d.ts","sourceRoot":"","sources":["../../../src/renderers/svg/svg.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,EAQL,IAAI,EAaL,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAiB,MAAM,4BAA4B,CAAC;AASvE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAGxC,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IACxC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtG,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,WAAW,CAkB7G;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,WAAW,CAShF"}
|
package/lib/renderers/svg/svg.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { exhaustiveCheck } from "ts-exhaustive-check";
|
|
2
|
-
import { vec2, vec3Rot, vec3Zero, vec3RotCombine, vec3, vec3TransRot, rotationForCameraPos, sizeCenterBoundsForCameraPos, bounds2FromPosAndSize, bounds2ToSize, bounds2Merge, vec2Zero, } from "../../abstract-3d.js";
|
|
2
|
+
import { vec2, vec3Rot, vec3Zero, vec3RotCombine, vec3, vec3TransRot, rotationForCameraPos, sizeCenterBoundsForCameraPos, bounds2FromPosAndSize, bounds2ToSize, bounds2Merge, vec2Zero, vec3Flip, } from "../../abstract-3d.js";
|
|
3
3
|
import { box } from "./svg-geometries/svg-box.js";
|
|
4
4
|
import { cylinder } from "./svg-geometries/svg-cylinder.js";
|
|
5
5
|
import { line } from "./svg-geometries/svg-line.js";
|
|
@@ -46,18 +46,17 @@ function renderInternal(scene, options, offset) {
|
|
|
46
46
|
const svgSize = vec2(unitSize.x + 1.5 * opts.stroke_thickness, unitSize.y + 1.5 * opts.stroke_thickness);
|
|
47
47
|
const svgCenter = vec2(-offset.x + opts.stroke_thickness * 0.75, offset.y + opts.stroke_thickness * 0.75);
|
|
48
48
|
const point = (x, y) => vec2(svgCenter.x + x, svgCenter.y - y);
|
|
49
|
+
const unitCenterFlipped = vec3Flip(unitCenter);
|
|
49
50
|
const elements = Array();
|
|
50
51
|
for (const g of scene.groups) {
|
|
51
|
-
|
|
52
|
-
const rot = vec3RotCombine(unitRot, g.rot ?? vec3Zero);
|
|
53
|
-
elements.push(...svgGroup(g, pos, rot, point, opts));
|
|
52
|
+
elements.push(...svgGroup(g, unitCenterFlipped, unitRot, point, opts));
|
|
54
53
|
}
|
|
55
54
|
const dimOpts = { ...opts, only_stroke: false, gray_scale: false };
|
|
56
55
|
elements.sort((a, b) => a.zOrder - b.zOrder);
|
|
57
56
|
const cameraPos = vec3Rot(vec3(1, 1, 1), vec3Zero, unitRot);
|
|
58
57
|
for (const d of scene.dimensions_deprecated?.dimensions ?? []) {
|
|
59
58
|
if (flipViews(d.views[0], cameraPos) === opts.view) {
|
|
60
|
-
const pos =
|
|
59
|
+
const pos = vec3TransRot(d.pos, unitCenterFlipped, unitRot);
|
|
61
60
|
const rot = vec3RotCombine(unitRot, d.rot);
|
|
62
61
|
for (const m of d.meshes) {
|
|
63
62
|
elements.push(...svgMesh(m, pos, rot, point, scene.dimensions_deprecated?.material ?? { normal: "" }, dimOpts));
|
|
@@ -66,15 +65,15 @@ function renderInternal(scene, options, offset) {
|
|
|
66
65
|
}
|
|
67
66
|
return { elements, size: svgSize, center: svgCenter };
|
|
68
67
|
}
|
|
69
|
-
function svgGroup(g,
|
|
68
|
+
function svgGroup(g, parentPos, parentRot, point, opts) {
|
|
69
|
+
const pos = vec3TransRot(g.pos, parentPos, parentRot);
|
|
70
|
+
const rot = vec3RotCombine(parentRot, g.rot ?? vec3Zero);
|
|
70
71
|
const elements = Array();
|
|
71
72
|
for (const m of g.meshes ?? []) {
|
|
72
73
|
elements.push(...svgMesh(m, pos, rot, point, m.material, opts));
|
|
73
74
|
}
|
|
74
75
|
for (const sg of g.groups ?? []) {
|
|
75
|
-
|
|
76
|
-
const sRot = vec3RotCombine(rot, sg.rot ?? vec3Zero);
|
|
77
|
-
elements.push(...svgGroup(sg, sPos, sRot, point, opts));
|
|
76
|
+
elements.push(...svgGroup(sg, pos, rot, point, opts));
|
|
78
77
|
}
|
|
79
78
|
return elements;
|
|
80
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg.js","sourceRoot":"","sources":["../../../src/renderers/svg/svg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EACL,IAAI,EAMJ,OAAO,EACP,QAAQ,EACR,cAAc,EACd,IAAI,EAGJ,YAAY,EAEZ,oBAAoB,EACpB,4BAA4B,EAE5B,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,QAAQ,GACT,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAEpD,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"svg.js","sourceRoot":"","sources":["../../../src/renderers/svg/svg.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "abstract-3d",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.3",
|
|
4
4
|
"description": "Abstract 3D",
|
|
5
5
|
"author": "Divid AB <info@divid.se>",
|
|
6
6
|
"repository": "https://github.com/dividab/abstract-visuals/tree/master/packages/abstract-3d",
|
|
@@ -35,5 +35,5 @@
|
|
|
35
35
|
"@types/three": "^0.180.0",
|
|
36
36
|
"react": "^19.0.0"
|
|
37
37
|
},
|
|
38
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "ab1cc69e1d3c70f109d5187ff9c7d893bbd01475"
|
|
39
39
|
}
|
package/src/renderers/dxf/dxf.ts
CHANGED
|
@@ -15,7 +15,6 @@ import {
|
|
|
15
15
|
bounds3Merge,
|
|
16
16
|
bounds3Center,
|
|
17
17
|
vec3Add,
|
|
18
|
-
vec3Rot,
|
|
19
18
|
sizeCenterBoundsForCameraPos,
|
|
20
19
|
} from "../../abstract-3d.js";
|
|
21
20
|
import { dxf, DxfOrigin, Handle } from "./dxf-encoding.js";
|
|
@@ -37,7 +36,7 @@ export function renderScenes(scenes: ReadonlyArray<DxfScene>, baseOptions?: Opti
|
|
|
37
36
|
const allBounds = Array<Bounds3>();
|
|
38
37
|
const handle = { handle: 0x1000 };
|
|
39
38
|
for (const view of scenes) {
|
|
40
|
-
const { groups, size, center } =
|
|
39
|
+
const { groups, size, center } = renderInternal(
|
|
41
40
|
view.scene,
|
|
42
41
|
optionsDef({ ...baseOptions, ...view.options, origin: "Center" }),
|
|
43
42
|
view.pos,
|
|
@@ -50,45 +49,30 @@ export function renderScenes(scenes: ReadonlyArray<DxfScene>, baseOptions?: Opti
|
|
|
50
49
|
return dxf(allGroups, bounds3Center(bounds), bounds3ToSize(bounds), "Center");
|
|
51
50
|
}
|
|
52
51
|
|
|
53
|
-
export const
|
|
52
|
+
export const render = (scene: Scene, options?: Optional<DxfOptions>): string => {
|
|
54
53
|
const opts = optionsDef(options);
|
|
55
|
-
const { groups, size, center } =
|
|
54
|
+
const { groups, size, center } = renderInternal(scene, opts, vec3Zero, { handle: 0x1000 });
|
|
56
55
|
return dxf(groups, center, size, opts.origin);
|
|
57
56
|
};
|
|
58
57
|
|
|
59
|
-
|
|
60
|
-
export const render = (scene: Scene, options: Optional<DxfOptions>): string => {
|
|
61
|
-
const opts = optionsDef(options);
|
|
62
|
-
const unitRot = vec3RotCombine(rotationForCameraPos(opts.view), scene.rotation_deprecated ?? vec3Zero);
|
|
63
|
-
const bounds = bounds3FromPosAndSize(scene.center_deprecated ?? vec3Zero, scene.size_deprecated);
|
|
64
|
-
const center = vec3Zero;
|
|
65
|
-
const offset =
|
|
66
|
-
opts.origin === "Center" ? vec3Zero : vec3(Math.abs(bounds.min.x), Math.abs(bounds.min.y), -bounds.max.z);
|
|
67
|
-
const groupRoot = group([], offset, vec3Zero, scene.groups);
|
|
68
|
-
const handleRef = { handle: 0x1000 };
|
|
69
|
-
return dxf(dxfGroup(groupRoot, center, unitRot, opts, handleRef), center, scene.size_deprecated, opts.origin);
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
const dxfGroups = (
|
|
58
|
+
const renderInternal = (
|
|
73
59
|
scene: Scene,
|
|
74
60
|
options: DxfOptions,
|
|
75
61
|
offset: Vec3,
|
|
76
|
-
handleRef: Handle
|
|
62
|
+
handleRef: Handle
|
|
77
63
|
): { readonly groups: string; readonly size: Vec3; readonly center: Vec3 } => {
|
|
78
|
-
const
|
|
79
|
-
const viewRot = rotationForCameraPos(options.view);
|
|
80
|
-
const unitRot = vec3RotCombine(viewRot, sceneRot);
|
|
81
|
-
|
|
64
|
+
const unitRot = vec3RotCombine(rotationForCameraPos(options.view), scene.rotation_deprecated ?? vec3Zero);
|
|
82
65
|
const [size, center] = sizeCenterBoundsForCameraPos(
|
|
83
66
|
scene.size_deprecated,
|
|
84
67
|
scene.center_deprecated ?? vec3Zero,
|
|
85
68
|
unitRot
|
|
86
69
|
);
|
|
87
|
-
const
|
|
70
|
+
// const unitCenterFlipped = vec3Flip(center);
|
|
71
|
+
const dxfCenter = vec3Add(center, offset);
|
|
88
72
|
return {
|
|
89
|
-
groups: scene.groups.reduce((a, c) => a + dxfGroup(c,
|
|
73
|
+
groups: scene.groups.reduce((a, c) => a + dxfGroup(c, dxfCenter, unitRot, options, handleRef), ""),
|
|
90
74
|
size,
|
|
91
|
-
center:
|
|
75
|
+
center: dxfCenter,
|
|
92
76
|
};
|
|
93
77
|
};
|
|
94
78
|
|
|
@@ -138,3 +122,16 @@ function optionsDef(options: Optional<DxfOptions> | undefined): DxfOptions {
|
|
|
138
122
|
cylinderSideCount: DEFAULT_CYLINDER_SIDE_COUNT,
|
|
139
123
|
};
|
|
140
124
|
}
|
|
125
|
+
|
|
126
|
+
// This is the original
|
|
127
|
+
export const renderOld = (scene: Scene, options?: Optional<DxfOptions>): string => {
|
|
128
|
+
const opts = optionsDef(options);
|
|
129
|
+
const unitRot = vec3RotCombine(rotationForCameraPos(opts.view), scene.rotation_deprecated ?? vec3Zero);
|
|
130
|
+
const bounds = bounds3FromPosAndSize(scene.center_deprecated ?? vec3Zero, scene.size_deprecated);
|
|
131
|
+
const center = vec3Zero;
|
|
132
|
+
const offset =
|
|
133
|
+
opts.origin === "Center" ? vec3Zero : vec3(Math.abs(bounds.min.x), Math.abs(bounds.min.y), -bounds.max.z);
|
|
134
|
+
const groupRoot = group([], offset, vec3Zero, scene.groups);
|
|
135
|
+
const handleRef = { handle: 0x1000 };
|
|
136
|
+
return dxf(dxfGroup(groupRoot, center, unitRot, opts, handleRef), center, scene.size_deprecated, opts.origin);
|
|
137
|
+
};
|
package/src/renderers/svg/svg.ts
CHANGED
|
@@ -21,6 +21,8 @@ import {
|
|
|
21
21
|
bounds2ToSize,
|
|
22
22
|
bounds2Merge,
|
|
23
23
|
vec2Zero,
|
|
24
|
+
vec3Sub,
|
|
25
|
+
vec3Flip,
|
|
24
26
|
} from "../../abstract-3d.js";
|
|
25
27
|
import { SvgOptions, zOrderElement } from "./svg-geometries/shared.js";
|
|
26
28
|
import { box } from "./svg-geometries/svg-box.js";
|
|
@@ -38,7 +40,6 @@ export type SvgScene = {
|
|
|
38
40
|
readonly scene: Scene;
|
|
39
41
|
readonly options?: Optional<SvgOptions>;
|
|
40
42
|
readonly pos: Vec2;
|
|
41
|
-
readonly originalView: View;
|
|
42
43
|
};
|
|
43
44
|
|
|
44
45
|
export type SvgWithSize = { readonly image: string; readonly width: number; readonly height: number };
|
|
@@ -103,21 +104,19 @@ function renderInternal(
|
|
|
103
104
|
);
|
|
104
105
|
const svgSize = vec2(unitSize.x + 1.5 * opts.stroke_thickness, unitSize.y + 1.5 * opts.stroke_thickness);
|
|
105
106
|
const svgCenter = vec2(-offset.x + opts.stroke_thickness * 0.75, offset.y + opts.stroke_thickness * 0.75);
|
|
106
|
-
|
|
107
107
|
const point = (x: number, y: number): Vec2 => vec2(svgCenter.x + x, svgCenter.y - y);
|
|
108
|
+
const unitCenterFlipped = vec3Flip(unitCenter);
|
|
108
109
|
|
|
109
110
|
const elements = Array<zOrderElement>();
|
|
110
111
|
for (const g of scene.groups) {
|
|
111
|
-
|
|
112
|
-
const rot = vec3RotCombine(unitRot, g.rot ?? vec3Zero);
|
|
113
|
-
elements.push(...svgGroup(g, pos, rot, point, opts));
|
|
112
|
+
elements.push(...svgGroup(g, unitCenterFlipped, unitRot, point, opts));
|
|
114
113
|
}
|
|
115
114
|
const dimOpts: SvgOptions = { ...opts, only_stroke: false, gray_scale: false };
|
|
116
115
|
elements.sort((a, b) => a.zOrder - b.zOrder);
|
|
117
116
|
const cameraPos = vec3Rot(vec3(1, 1, 1), vec3Zero, unitRot);
|
|
118
117
|
for (const d of scene.dimensions_deprecated?.dimensions ?? []) {
|
|
119
118
|
if (flipViews(d.views[0], cameraPos) === opts.view) {
|
|
120
|
-
const pos =
|
|
119
|
+
const pos = vec3TransRot(d.pos, unitCenterFlipped, unitRot);
|
|
121
120
|
const rot = vec3RotCombine(unitRot, d.rot);
|
|
122
121
|
for (const m of d.meshes) {
|
|
123
122
|
elements.push(...svgMesh(m, pos, rot, point, scene.dimensions_deprecated?.material ?? { normal: "" }, dimOpts));
|
|
@@ -129,19 +128,19 @@ function renderInternal(
|
|
|
129
128
|
|
|
130
129
|
function svgGroup(
|
|
131
130
|
g: Group,
|
|
132
|
-
|
|
133
|
-
|
|
131
|
+
parentPos: Vec3,
|
|
132
|
+
parentRot: Vec3,
|
|
134
133
|
point: (x: number, y: number) => Vec2,
|
|
135
134
|
opts: SvgOptions
|
|
136
135
|
): ReadonlyArray<zOrderElement> {
|
|
136
|
+
const pos = vec3TransRot(g.pos, parentPos, parentRot);
|
|
137
|
+
const rot = vec3RotCombine(parentRot, g.rot ?? vec3Zero);
|
|
137
138
|
const elements = Array<zOrderElement>();
|
|
138
139
|
for (const m of g.meshes ?? []) {
|
|
139
140
|
elements.push(...svgMesh(m, pos, rot, point, m.material, opts));
|
|
140
141
|
}
|
|
141
142
|
for (const sg of g.groups ?? []) {
|
|
142
|
-
|
|
143
|
-
const sRot = vec3RotCombine(rot, sg.rot ?? vec3Zero);
|
|
144
|
-
elements.push(...svgGroup(sg, sPos, sRot, point, opts));
|
|
143
|
+
elements.push(...svgGroup(sg, pos, rot, point, opts));
|
|
145
144
|
}
|
|
146
145
|
return elements;
|
|
147
146
|
}
|