okgeometry-api 1.17.0 → 1.18.0
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/dist/Circle.d.ts +5 -2
- package/dist/Circle.d.ts.map +1 -1
- package/dist/Circle.js +5 -2
- package/dist/Circle.js.map +1 -1
- package/dist/Mesh.d.ts.map +1 -1
- package/dist/Mesh.js +7 -1
- package/dist/Mesh.js.map +1 -1
- package/dist/SculptSession.d.ts +158 -0
- package/dist/SculptSession.d.ts.map +1 -0
- package/dist/SculptSession.js +227 -0
- package/dist/SculptSession.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/wasm-base64.d.ts +1 -1
- package/dist/wasm-base64.d.ts.map +1 -1
- package/dist/wasm-base64.js +1 -1
- package/dist/wasm-base64.js.map +1 -1
- package/dist/wasm-bindings.d.ts +120 -0
- package/dist/wasm-bindings.d.ts.map +1 -1
- package/dist/wasm-bindings.js +180 -0
- package/dist/wasm-bindings.js.map +1 -1
- package/package.json +3 -2
- package/src/Circle.ts +24 -21
- package/src/Mesh.ts +3810 -3804
- package/src/SculptSession.ts +337 -0
- package/src/index.ts +15 -0
- package/src/wasm-base64.ts +1 -1
- package/src/wasm-bindings.d.ts +97 -0
- package/src/wasm-bindings.js +194 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { Mesh } from "./Mesh.js";
|
|
2
|
+
/**
|
|
3
|
+
* Sculpting brushes. Codes are a stable WASM ABI — never renumber.
|
|
4
|
+
*/
|
|
5
|
+
export declare enum SculptBrush {
|
|
6
|
+
Draw = 0,
|
|
7
|
+
DrawSharp = 1,
|
|
8
|
+
Clay = 2,
|
|
9
|
+
Smooth = 3,
|
|
10
|
+
Inflate = 4,
|
|
11
|
+
Grab = 5,
|
|
12
|
+
SnakeHook = 6,
|
|
13
|
+
Flatten = 7,
|
|
14
|
+
Scrape = 8,
|
|
15
|
+
Fill = 9,
|
|
16
|
+
Pinch = 10,
|
|
17
|
+
Crease = 11,
|
|
18
|
+
Layer = 12,
|
|
19
|
+
Nudge = 13,
|
|
20
|
+
/** Paints the sculpt mask (protection) instead of moving geometry. */
|
|
21
|
+
Mask = 14
|
|
22
|
+
}
|
|
23
|
+
/** Brush falloff profiles over normalized distance. Stable WASM ABI codes. */
|
|
24
|
+
export declare enum SculptFalloff {
|
|
25
|
+
Smooth = 0,
|
|
26
|
+
Sphere = 1,
|
|
27
|
+
Linear = 2,
|
|
28
|
+
Sharp = 3,
|
|
29
|
+
Root = 4,
|
|
30
|
+
Constant = 5
|
|
31
|
+
}
|
|
32
|
+
export interface SculptBrushSettings {
|
|
33
|
+
brush: SculptBrush;
|
|
34
|
+
/** Brush radius in mesh (local) units. */
|
|
35
|
+
radius: number;
|
|
36
|
+
/** Strength, typically 0..1. */
|
|
37
|
+
strength: number;
|
|
38
|
+
falloff?: SculptFalloff;
|
|
39
|
+
/** Invert the brush direction (carve instead of add, etc.). */
|
|
40
|
+
invert?: boolean;
|
|
41
|
+
/** Only affect vertices facing the viewer (default true). */
|
|
42
|
+
frontFacesOnly?: boolean;
|
|
43
|
+
/** Clay plane offset as a fraction of the radius (default 0.05). */
|
|
44
|
+
planeOffset?: number;
|
|
45
|
+
/** Mirror across local planes: combine SYMMETRY_X | SYMMETRY_Y | SYMMETRY_Z. */
|
|
46
|
+
symmetry?: number;
|
|
47
|
+
}
|
|
48
|
+
export declare const SYMMETRY_X = 1;
|
|
49
|
+
export declare const SYMMETRY_Y = 2;
|
|
50
|
+
export declare const SYMMETRY_Z = 4;
|
|
51
|
+
export interface SculptRayHit {
|
|
52
|
+
point: [number, number, number];
|
|
53
|
+
normal: [number, number, number];
|
|
54
|
+
distance: number;
|
|
55
|
+
triangleIndex: number;
|
|
56
|
+
}
|
|
57
|
+
export interface SculptDabInput {
|
|
58
|
+
/** Brush center on the surface (usually the raycast hit point). */
|
|
59
|
+
center: [number, number, number];
|
|
60
|
+
/** Normalized view ray direction, used for front-face masking. */
|
|
61
|
+
viewDir: [number, number, number];
|
|
62
|
+
/**
|
|
63
|
+
* World-space drag vector. Grab: total drag since the stroke start.
|
|
64
|
+
* Snake hook / nudge: drag since the previous dab. Others: ignored.
|
|
65
|
+
*/
|
|
66
|
+
drag?: [number, number, number];
|
|
67
|
+
/** Tablet pressure 0..1 (default 1). */
|
|
68
|
+
pressure?: number;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Render patch after a dab/undo/redo/mask op: for each changed vertex,
|
|
72
|
+
* 8 floats `[index, x, y, z, nx, ny, nz, mask]`.
|
|
73
|
+
*/
|
|
74
|
+
export type SculptPatch = Float32Array;
|
|
75
|
+
export interface SculptRenderData {
|
|
76
|
+
vertexCount: number;
|
|
77
|
+
triangleCount: number;
|
|
78
|
+
positions: Float32Array;
|
|
79
|
+
normals: Float32Array;
|
|
80
|
+
/** Per-vertex sculpt mask in [0, 1] (1 = protected). */
|
|
81
|
+
mask: Float32Array;
|
|
82
|
+
indices: Uint32Array;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Interactive sculpting session over a triangle mesh.
|
|
86
|
+
*
|
|
87
|
+
* The mesh, its spatial index, adjacency and normals live WASM-side for the
|
|
88
|
+
* lifetime of the session, so brush dabs are incremental: each dab returns
|
|
89
|
+
* only the changed vertices as a compact patch. Call `dispose()` when done —
|
|
90
|
+
* sessions hold WASM memory.
|
|
91
|
+
*
|
|
92
|
+
* ```ts
|
|
93
|
+
* const session = SculptSession.fromMesh(mesh);
|
|
94
|
+
* session.beginStroke({ brush: SculptBrush.Draw, radius: 0.5, strength: 0.8 });
|
|
95
|
+
* const hit = session.raycast(origin, dir);
|
|
96
|
+
* if (hit) session.dab({ center: hit.point, viewDir: dir });
|
|
97
|
+
* session.endStroke();
|
|
98
|
+
* const result = session.toMesh(); // commit
|
|
99
|
+
* session.dispose();
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
export declare class SculptSession {
|
|
103
|
+
private id;
|
|
104
|
+
private disposed;
|
|
105
|
+
private constructor();
|
|
106
|
+
/** Create a session from a Mesh. Throws on invalid/empty geometry. */
|
|
107
|
+
static fromMesh(mesh: Mesh): SculptSession;
|
|
108
|
+
/** Create a session from a raw mesh buffer `[vertexCount, xyz..., idx...]`. */
|
|
109
|
+
static fromBuffer(vertexCount: number, buffer: Float64Array): SculptSession;
|
|
110
|
+
/** Free the WASM-side session. Safe to call more than once. */
|
|
111
|
+
dispose(): void;
|
|
112
|
+
get isDisposed(): boolean;
|
|
113
|
+
private ensureAlive;
|
|
114
|
+
get vertexCount(): number;
|
|
115
|
+
get triangleCount(): number;
|
|
116
|
+
/** Average edge length — a good baseline for default brush radius. */
|
|
117
|
+
get averageEdgeLength(): number;
|
|
118
|
+
get undoDepth(): number;
|
|
119
|
+
get redoDepth(): number;
|
|
120
|
+
/**
|
|
121
|
+
* Full render snapshot (f32 positions/normals + u32 indices) for building
|
|
122
|
+
* an indexed, smooth-shaded display mesh. Fetch once at session start and
|
|
123
|
+
* after `subdivide()`; use dab patches for incremental updates.
|
|
124
|
+
*/
|
|
125
|
+
getRenderData(): SculptRenderData;
|
|
126
|
+
/** Raycast the current (deforming) surface. */
|
|
127
|
+
raycast(origin: [number, number, number], direction: [number, number, number]): SculptRayHit | null;
|
|
128
|
+
/** Begin a brush stroke. Ends any stroke still in flight. */
|
|
129
|
+
beginStroke(settings: SculptBrushSettings): void;
|
|
130
|
+
/**
|
|
131
|
+
* Apply one brush dab. Returns the changed-vertex render patch
|
|
132
|
+
* (`[index, x,y,z, nx,ny,nz]` per vertex); empty when nothing changed.
|
|
133
|
+
*/
|
|
134
|
+
dab(input: SculptDabInput): SculptPatch;
|
|
135
|
+
/** Finish the active stroke; the stroke becomes one undo step. */
|
|
136
|
+
endStroke(): void;
|
|
137
|
+
/** Undo the last stroke. Returns the restoring patch (empty = nothing to undo). */
|
|
138
|
+
undo(): SculptPatch;
|
|
139
|
+
/** Redo the last undone stroke. */
|
|
140
|
+
redo(): SculptPatch;
|
|
141
|
+
/**
|
|
142
|
+
* Uniform 1:4 shape-preserving (linear midpoint) subdivision for more
|
|
143
|
+
* sculptable detail. Clears session undo history. Returns false when
|
|
144
|
+
* refused by the safety cap (~8M triangles). Refetch `getRenderData()`
|
|
145
|
+
* afterwards.
|
|
146
|
+
*/
|
|
147
|
+
subdivide(): boolean;
|
|
148
|
+
/**
|
|
149
|
+
* Fill the whole sculpt mask (0 clears, 1 protects everything).
|
|
150
|
+
* Undoable; returns the render patch of changed vertices.
|
|
151
|
+
*/
|
|
152
|
+
maskFill(value: number): SculptPatch;
|
|
153
|
+
/** Invert the sculpt mask. Undoable; returns the render patch. */
|
|
154
|
+
maskInvert(): SculptPatch;
|
|
155
|
+
/** Current mesh as a new Mesh instance (for committing the sculpt). */
|
|
156
|
+
toMesh(): Mesh;
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=SculptSession.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SculptSession.d.ts","sourceRoot":"","sources":["../src/SculptSession.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import { ensureInit } from "./engine.js";
|
|
2
|
+
import { Mesh } from "./Mesh.js";
|
|
3
|
+
import * as wasm from "./wasm-bindings.js";
|
|
4
|
+
/**
|
|
5
|
+
* Sculpting brushes. Codes are a stable WASM ABI — never renumber.
|
|
6
|
+
*/
|
|
7
|
+
export var SculptBrush;
|
|
8
|
+
(function (SculptBrush) {
|
|
9
|
+
SculptBrush[SculptBrush["Draw"] = 0] = "Draw";
|
|
10
|
+
SculptBrush[SculptBrush["DrawSharp"] = 1] = "DrawSharp";
|
|
11
|
+
SculptBrush[SculptBrush["Clay"] = 2] = "Clay";
|
|
12
|
+
SculptBrush[SculptBrush["Smooth"] = 3] = "Smooth";
|
|
13
|
+
SculptBrush[SculptBrush["Inflate"] = 4] = "Inflate";
|
|
14
|
+
SculptBrush[SculptBrush["Grab"] = 5] = "Grab";
|
|
15
|
+
SculptBrush[SculptBrush["SnakeHook"] = 6] = "SnakeHook";
|
|
16
|
+
SculptBrush[SculptBrush["Flatten"] = 7] = "Flatten";
|
|
17
|
+
SculptBrush[SculptBrush["Scrape"] = 8] = "Scrape";
|
|
18
|
+
SculptBrush[SculptBrush["Fill"] = 9] = "Fill";
|
|
19
|
+
SculptBrush[SculptBrush["Pinch"] = 10] = "Pinch";
|
|
20
|
+
SculptBrush[SculptBrush["Crease"] = 11] = "Crease";
|
|
21
|
+
SculptBrush[SculptBrush["Layer"] = 12] = "Layer";
|
|
22
|
+
SculptBrush[SculptBrush["Nudge"] = 13] = "Nudge";
|
|
23
|
+
/** Paints the sculpt mask (protection) instead of moving geometry. */
|
|
24
|
+
SculptBrush[SculptBrush["Mask"] = 14] = "Mask";
|
|
25
|
+
})(SculptBrush || (SculptBrush = {}));
|
|
26
|
+
/** Brush falloff profiles over normalized distance. Stable WASM ABI codes. */
|
|
27
|
+
export var SculptFalloff;
|
|
28
|
+
(function (SculptFalloff) {
|
|
29
|
+
SculptFalloff[SculptFalloff["Smooth"] = 0] = "Smooth";
|
|
30
|
+
SculptFalloff[SculptFalloff["Sphere"] = 1] = "Sphere";
|
|
31
|
+
SculptFalloff[SculptFalloff["Linear"] = 2] = "Linear";
|
|
32
|
+
SculptFalloff[SculptFalloff["Sharp"] = 3] = "Sharp";
|
|
33
|
+
SculptFalloff[SculptFalloff["Root"] = 4] = "Root";
|
|
34
|
+
SculptFalloff[SculptFalloff["Constant"] = 5] = "Constant";
|
|
35
|
+
})(SculptFalloff || (SculptFalloff = {}));
|
|
36
|
+
export const SYMMETRY_X = 1;
|
|
37
|
+
export const SYMMETRY_Y = 2;
|
|
38
|
+
export const SYMMETRY_Z = 4;
|
|
39
|
+
/**
|
|
40
|
+
* Interactive sculpting session over a triangle mesh.
|
|
41
|
+
*
|
|
42
|
+
* The mesh, its spatial index, adjacency and normals live WASM-side for the
|
|
43
|
+
* lifetime of the session, so brush dabs are incremental: each dab returns
|
|
44
|
+
* only the changed vertices as a compact patch. Call `dispose()` when done —
|
|
45
|
+
* sessions hold WASM memory.
|
|
46
|
+
*
|
|
47
|
+
* ```ts
|
|
48
|
+
* const session = SculptSession.fromMesh(mesh);
|
|
49
|
+
* session.beginStroke({ brush: SculptBrush.Draw, radius: 0.5, strength: 0.8 });
|
|
50
|
+
* const hit = session.raycast(origin, dir);
|
|
51
|
+
* if (hit) session.dab({ center: hit.point, viewDir: dir });
|
|
52
|
+
* session.endStroke();
|
|
53
|
+
* const result = session.toMesh(); // commit
|
|
54
|
+
* session.dispose();
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export class SculptSession {
|
|
58
|
+
constructor(id) {
|
|
59
|
+
this.disposed = false;
|
|
60
|
+
this.id = id;
|
|
61
|
+
}
|
|
62
|
+
/** Create a session from a Mesh. Throws on invalid/empty geometry. */
|
|
63
|
+
static fromMesh(mesh) {
|
|
64
|
+
ensureInit();
|
|
65
|
+
const buffer = mesh.rawBuffer;
|
|
66
|
+
const id = wasm.sculpt_session_create(mesh.vertexCount, buffer);
|
|
67
|
+
if (!id) {
|
|
68
|
+
throw new Error("SculptSession: invalid mesh (empty or malformed buffer)");
|
|
69
|
+
}
|
|
70
|
+
return new SculptSession(id);
|
|
71
|
+
}
|
|
72
|
+
/** Create a session from a raw mesh buffer `[vertexCount, xyz..., idx...]`. */
|
|
73
|
+
static fromBuffer(vertexCount, buffer) {
|
|
74
|
+
ensureInit();
|
|
75
|
+
const id = wasm.sculpt_session_create(vertexCount, buffer);
|
|
76
|
+
if (!id) {
|
|
77
|
+
throw new Error("SculptSession: invalid mesh buffer");
|
|
78
|
+
}
|
|
79
|
+
return new SculptSession(id);
|
|
80
|
+
}
|
|
81
|
+
/** Free the WASM-side session. Safe to call more than once. */
|
|
82
|
+
dispose() {
|
|
83
|
+
if (!this.disposed) {
|
|
84
|
+
wasm.sculpt_session_release(this.id);
|
|
85
|
+
this.disposed = true;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
get isDisposed() {
|
|
89
|
+
return this.disposed;
|
|
90
|
+
}
|
|
91
|
+
ensureAlive() {
|
|
92
|
+
if (this.disposed) {
|
|
93
|
+
throw new Error("SculptSession: session already disposed");
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
get vertexCount() {
|
|
97
|
+
this.ensureAlive();
|
|
98
|
+
const info = wasm.sculpt_session_info(this.id);
|
|
99
|
+
return info.length ? info[0] : 0;
|
|
100
|
+
}
|
|
101
|
+
get triangleCount() {
|
|
102
|
+
this.ensureAlive();
|
|
103
|
+
const info = wasm.sculpt_session_info(this.id);
|
|
104
|
+
return info.length ? info[1] : 0;
|
|
105
|
+
}
|
|
106
|
+
/** Average edge length — a good baseline for default brush radius. */
|
|
107
|
+
get averageEdgeLength() {
|
|
108
|
+
this.ensureAlive();
|
|
109
|
+
const info = wasm.sculpt_session_info(this.id);
|
|
110
|
+
return info.length ? info[2] : 0;
|
|
111
|
+
}
|
|
112
|
+
get undoDepth() {
|
|
113
|
+
this.ensureAlive();
|
|
114
|
+
const info = wasm.sculpt_session_info(this.id);
|
|
115
|
+
return info.length ? info[3] : 0;
|
|
116
|
+
}
|
|
117
|
+
get redoDepth() {
|
|
118
|
+
this.ensureAlive();
|
|
119
|
+
const info = wasm.sculpt_session_info(this.id);
|
|
120
|
+
return info.length ? info[4] : 0;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Full render snapshot (f32 positions/normals + u32 indices) for building
|
|
124
|
+
* an indexed, smooth-shaded display mesh. Fetch once at session start and
|
|
125
|
+
* after `subdivide()`; use dab patches for incremental updates.
|
|
126
|
+
*/
|
|
127
|
+
getRenderData() {
|
|
128
|
+
this.ensureAlive();
|
|
129
|
+
const raw = wasm.sculpt_session_render_data(this.id);
|
|
130
|
+
if (raw.length < 2) {
|
|
131
|
+
throw new Error("SculptSession: no render data (session lost)");
|
|
132
|
+
}
|
|
133
|
+
const vertexCount = raw[0];
|
|
134
|
+
const triangleCount = raw[1];
|
|
135
|
+
const pStart = 2;
|
|
136
|
+
const nStart = pStart + vertexCount * 3;
|
|
137
|
+
const mStart = nStart + vertexCount * 3;
|
|
138
|
+
const iStart = mStart + vertexCount;
|
|
139
|
+
const positions = raw.slice(pStart, nStart);
|
|
140
|
+
const normals = raw.slice(nStart, mStart);
|
|
141
|
+
const mask = raw.slice(mStart, iStart);
|
|
142
|
+
const indices = new Uint32Array(triangleCount * 3);
|
|
143
|
+
for (let i = 0; i < indices.length; i++) {
|
|
144
|
+
indices[i] = raw[iStart + i];
|
|
145
|
+
}
|
|
146
|
+
return { vertexCount, triangleCount, positions, normals, mask, indices };
|
|
147
|
+
}
|
|
148
|
+
/** Raycast the current (deforming) surface. */
|
|
149
|
+
raycast(origin, direction) {
|
|
150
|
+
this.ensureAlive();
|
|
151
|
+
const hit = wasm.sculpt_session_raycast(this.id, origin[0], origin[1], origin[2], direction[0], direction[1], direction[2]);
|
|
152
|
+
if (hit.length < 8)
|
|
153
|
+
return null;
|
|
154
|
+
return {
|
|
155
|
+
point: [hit[0], hit[1], hit[2]],
|
|
156
|
+
normal: [hit[3], hit[4], hit[5]],
|
|
157
|
+
distance: hit[6],
|
|
158
|
+
triangleIndex: hit[7],
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
/** Begin a brush stroke. Ends any stroke still in flight. */
|
|
162
|
+
beginStroke(settings) {
|
|
163
|
+
this.ensureAlive();
|
|
164
|
+
const flags = (settings.invert ? 1 : 0) | ((settings.frontFacesOnly ?? true) ? 2 : 0);
|
|
165
|
+
const ok = wasm.sculpt_session_begin_stroke(this.id, settings.brush, settings.radius, settings.strength, settings.falloff ?? SculptFalloff.Smooth, flags, settings.planeOffset ?? 0.05, settings.symmetry ?? 0);
|
|
166
|
+
if (!ok) {
|
|
167
|
+
throw new Error("SculptSession: beginStroke failed (bad settings or session lost)");
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Apply one brush dab. Returns the changed-vertex render patch
|
|
172
|
+
* (`[index, x,y,z, nx,ny,nz]` per vertex); empty when nothing changed.
|
|
173
|
+
*/
|
|
174
|
+
dab(input) {
|
|
175
|
+
this.ensureAlive();
|
|
176
|
+
const drag = input.drag ?? [0, 0, 0];
|
|
177
|
+
return wasm.sculpt_session_dab(this.id, input.center[0], input.center[1], input.center[2], input.viewDir[0], input.viewDir[1], input.viewDir[2], drag[0], drag[1], drag[2], input.pressure ?? 1);
|
|
178
|
+
}
|
|
179
|
+
/** Finish the active stroke; the stroke becomes one undo step. */
|
|
180
|
+
endStroke() {
|
|
181
|
+
this.ensureAlive();
|
|
182
|
+
wasm.sculpt_session_end_stroke(this.id);
|
|
183
|
+
}
|
|
184
|
+
/** Undo the last stroke. Returns the restoring patch (empty = nothing to undo). */
|
|
185
|
+
undo() {
|
|
186
|
+
this.ensureAlive();
|
|
187
|
+
return wasm.sculpt_session_undo(this.id);
|
|
188
|
+
}
|
|
189
|
+
/** Redo the last undone stroke. */
|
|
190
|
+
redo() {
|
|
191
|
+
this.ensureAlive();
|
|
192
|
+
return wasm.sculpt_session_redo(this.id);
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Uniform 1:4 shape-preserving (linear midpoint) subdivision for more
|
|
196
|
+
* sculptable detail. Clears session undo history. Returns false when
|
|
197
|
+
* refused by the safety cap (~8M triangles). Refetch `getRenderData()`
|
|
198
|
+
* afterwards.
|
|
199
|
+
*/
|
|
200
|
+
subdivide() {
|
|
201
|
+
this.ensureAlive();
|
|
202
|
+
return wasm.sculpt_session_subdivide(this.id) === 1;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Fill the whole sculpt mask (0 clears, 1 protects everything).
|
|
206
|
+
* Undoable; returns the render patch of changed vertices.
|
|
207
|
+
*/
|
|
208
|
+
maskFill(value) {
|
|
209
|
+
this.ensureAlive();
|
|
210
|
+
return wasm.sculpt_session_mask_fill(this.id, value);
|
|
211
|
+
}
|
|
212
|
+
/** Invert the sculpt mask. Undoable; returns the render patch. */
|
|
213
|
+
maskInvert() {
|
|
214
|
+
this.ensureAlive();
|
|
215
|
+
return wasm.sculpt_session_mask_invert(this.id);
|
|
216
|
+
}
|
|
217
|
+
/** Current mesh as a new Mesh instance (for committing the sculpt). */
|
|
218
|
+
toMesh() {
|
|
219
|
+
this.ensureAlive();
|
|
220
|
+
const buffer = wasm.sculpt_session_mesh_buffer(this.id);
|
|
221
|
+
if (!buffer.length) {
|
|
222
|
+
throw new Error("SculptSession: mesh buffer unavailable (session lost)");
|
|
223
|
+
}
|
|
224
|
+
return Mesh.fromBuffer(buffer);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=SculptSession.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SculptSession.js","sourceRoot":"","sources":["../src/SculptSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAC;AAE3C;;GAEG;AACH,MAAM,CAAN,IAAY,WAiBX;AAjBD,WAAY,WAAW;IACrB,6CAAQ,CAAA;IACR,uDAAa,CAAA;IACb,6CAAQ,CAAA;IACR,iDAAU,CAAA;IACV,mDAAW,CAAA;IACX,6CAAQ,CAAA;IACR,uDAAa,CAAA;IACb,mDAAW,CAAA;IACX,iDAAU,CAAA;IACV,6CAAQ,CAAA;IACR,gDAAU,CAAA;IACV,kDAAW,CAAA;IACX,gDAAU,CAAA;IACV,gDAAU,CAAA;IACV,sEAAsE;IACtE,8CAAS,CAAA;AACX,CAAC,EAjBW,WAAW,KAAX,WAAW,QAiBtB;AAED,8EAA8E;AAC9E,MAAM,CAAN,IAAY,aAOX;AAPD,WAAY,aAAa;IACvB,qDAAU,CAAA;IACV,qDAAU,CAAA;IACV,qDAAU,CAAA;IACV,mDAAS,CAAA;IACT,iDAAQ,CAAA;IACR,yDAAY,CAAA;AACd,CAAC,EAPW,aAAa,KAAb,aAAa,QAOxB;AAmBD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;AAC5B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;AAC5B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;AAuC5B;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,aAAa;IAIxB,YAAoB,EAAU;QAFtB,aAAQ,GAAG,KAAK,CAAC;QAGvB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAED,sEAAsE;IACtE,MAAM,CAAC,QAAQ,CAAC,IAAU;QACxB,UAAU,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;QAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAChE,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,+EAA+E;IAC/E,MAAM,CAAC,UAAU,CAAC,WAAmB,EAAE,MAAoB;QACzD,UAAU,EAAE,CAAC;QACb,MAAM,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,+DAA+D;IAC/D,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAEO,WAAW;QACjB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,IAAI,WAAW;QACb,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,aAAa;QACf,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,sEAAsE;IACtE,IAAI,iBAAiB;QACnB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,SAAS;QACX,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,SAAS;QACX,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACH,aAAa;QACX,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAG,CAAC,CAAC;QACjB,MAAM,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC;QACpC,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;QACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC3E,CAAC;IAED,+CAA+C;IAC/C,OAAO,CACL,MAAgC,EAChC,SAAmC;QAEnC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,sBAAsB,CACrC,IAAI,CAAC,EAAE,EACP,MAAM,CAAC,CAAC,CAAC,EACT,MAAM,CAAC,CAAC,CAAC,EACT,MAAM,CAAC,CAAC,CAAC,EACT,SAAS,CAAC,CAAC,CAAC,EACZ,SAAS,CAAC,CAAC,CAAC,EACZ,SAAS,CAAC,CAAC,CAAC,CACb,CAAC;QACF,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAChC,OAAO;YACL,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAChC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;YAChB,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC;SACtB,CAAC;IACJ,CAAC;IAED,6DAA6D;IAC7D,WAAW,CAAC,QAA6B;QACvC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,KAAK,GACT,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,MAAM,EAAE,GAAG,IAAI,CAAC,2BAA2B,CACzC,IAAI,CAAC,EAAE,EACP,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,OAAO,IAAI,aAAa,CAAC,MAAM,EACxC,KAAK,EACL,QAAQ,CAAC,WAAW,IAAI,IAAI,EAC5B,QAAQ,CAAC,QAAQ,IAAI,CAAC,CACvB,CAAC;QACF,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,KAAqB;QACvB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,kBAAkB,CAC5B,IAAI,CAAC,EAAE,EACP,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EACf,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EACf,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EACf,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAChB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAChB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAChB,IAAI,CAAC,CAAC,CAAC,EACP,IAAI,CAAC,CAAC,CAAC,EACP,IAAI,CAAC,CAAC,CAAC,EACP,KAAK,CAAC,QAAQ,IAAI,CAAC,CACpB,CAAC;IACJ,CAAC;IAED,kEAAkE;IAClE,SAAS;QACP,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,mFAAmF;IACnF,IAAI;QACF,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,mCAAmC;IACnC,IAAI;QACF,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;OAKG;IACH,SAAS;QACP,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,kEAAkE;IAClE,UAAU;QACR,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,uEAAuE;IACvE,MAAM;QACJ,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -19,6 +19,8 @@ export type { Surface } from "./Surface.js";
|
|
|
19
19
|
export { Brep } from "./Brep.js";
|
|
20
20
|
export type { BrepInfo, BrepValidationReport, BrepBooleanOptions, BrepParametricBooleanOptions, MeshToBrepConversionOptions, BrepSplitSolidResult, } from "./Brep.js";
|
|
21
21
|
export { Mesh, MeshBooleanExecutionError } from "./Mesh.js";
|
|
22
|
+
export { SculptSession, SculptBrush, SculptFalloff, SYMMETRY_X, SYMMETRY_Y, SYMMETRY_Z, } from "./SculptSession.js";
|
|
23
|
+
export type { SculptBrushSettings, SculptRayHit, SculptDabInput, SculptPatch, SculptRenderData, } from "./SculptSession.js";
|
|
22
24
|
export type { MeshBooleanOperation, MeshBooleanDebugProbeId, MeshBooleanDebugOptions, MeshBooleanDebugProbe, MeshBooleanDebugProbeSummary, MeshBooleanDebugReport, MeshBooleanReproOperand, MeshBooleanReproResult, MeshBooleanReproError, MeshBooleanReproPayload, MeshBooleanReproOptions, MeshSplitResult, MeshPlaneSplitResult, MeshPlaneSplitOptions, MeshCurveSplitOptions, MeshPlanarFace, MeshDebugBounds, MeshDebugRayHit, MeshDebugSummary, MeshBooleanLimits, MeshBooleanOptions, MeshBooleanAsyncOptions, MeshBooleanErrorCode, MeshBooleanErrorPayload, MeshBooleanProgressEvent, } from "./Mesh.js";
|
|
23
25
|
export { intersect } from "./Geometry.js";
|
|
24
26
|
export { geometryBoolean, geometrySplit } from "./GeometryBoolean.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGlD,YAAY,EACV,cAAc,EACd,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,YAAY,EACV,QAAQ,EACR,oBAAoB,EACpB,kBAAkB,EAClB,4BAA4B,EAC5B,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,IAAI,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAC5D,YAAY,EACV,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,4BAA4B,EAC5B,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,EACvB,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACtE,YAAY,EACV,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGlD,YAAY,EACV,cAAc,EACd,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,YAAY,EACV,QAAQ,EACR,oBAAoB,EACpB,kBAAkB,EAClB,4BAA4B,EAC5B,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,IAAI,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EACL,aAAa,EACb,WAAW,EACX,aAAa,EACb,UAAU,EACV,UAAU,EACV,UAAU,GACX,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,WAAW,EACX,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,4BAA4B,EAC5B,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,EACvB,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACtE,YAAY,EACV,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -20,6 +20,7 @@ export { MeshSurface } from "./MeshSurface.js";
|
|
|
20
20
|
export { Brep } from "./Brep.js";
|
|
21
21
|
// Mesh and operations
|
|
22
22
|
export { Mesh, MeshBooleanExecutionError } from "./Mesh.js";
|
|
23
|
+
export { SculptSession, SculptBrush, SculptFalloff, SYMMETRY_X, SYMMETRY_Y, SYMMETRY_Z, } from "./SculptSession.js";
|
|
23
24
|
export { intersect } from "./Geometry.js";
|
|
24
25
|
// Universal geometry boolean dispatcher
|
|
25
26
|
export { geometryBoolean, geometrySplit } from "./GeometryBoolean.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAYlD,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAE1B,kBAAkB;AAClB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,cAAc;AACd,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,0BAA0B;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAUjC,sBAAsB;AACtB,OAAO,EAAE,IAAI,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAYlD,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAE1B,kBAAkB;AAClB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,cAAc;AACd,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,0BAA0B;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAUjC,sBAAsB;AACtB,OAAO,EAAE,IAAI,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EACL,aAAa,EACb,WAAW,EACX,aAAa,EACb,UAAU,EACV,UAAU,EACV,UAAU,GACX,MAAM,oBAAoB,CAAC;AAmC5B,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,wCAAwC;AACxC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
|