okgeometry-api 1.17.1 → 1.19.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.
@@ -1308,6 +1308,104 @@ export function ray_point_at(ox: number, oy: number, oz: number, dx: number, dy:
1308
1308
  */
1309
1309
  export function sample_nurbs_curve(data: Float64Array, samples: number): Float64Array;
1310
1310
 
1311
+ /**
1312
+ * Begin a stroke. `brush` and `falloff` are stable enum codes
1313
+ * (see okgeometry-api SculptBrush / SculptFalloff). Flags: bit 0 = invert,
1314
+ * bit 1 = front faces only. `symmetry`: bit 0 = X, bit 1 = Y, bit 2 = Z.
1315
+ */
1316
+ export function sculpt_session_begin_stroke(id: number, brush: number, radius: number, strength: number, falloff: number, flags: number, plane_offset: number, symmetry: number): number;
1317
+
1318
+ /**
1319
+ * Create a sculpt session from a standard mesh buffer
1320
+ * `[vertexCount, x,y,z..., i0,i1,i2...]`. Returns the session id, or 0 on
1321
+ * invalid input.
1322
+ */
1323
+ export function sculpt_session_create(vertex_count: number, buffer: Float64Array): number;
1324
+
1325
+ /**
1326
+ * Apply one dab. Returns the render patch `[index, x,y,z, nx,ny,nz]` per
1327
+ * changed vertex (f32), empty when nothing changed.
1328
+ */
1329
+ export function sculpt_session_dab(id: number, cx: number, cy: number, cz: number, vx: number, vy: number, vz: number, dragx: number, dragy: number, dragz: number, pressure: number): Float32Array;
1330
+
1331
+ /**
1332
+ * Finish the active stroke (pushes one undo entry).
1333
+ */
1334
+ export function sculpt_session_end_stroke(id: number): void;
1335
+
1336
+ /**
1337
+ * Smooth face group around a seed triangle (dihedral flood fill, same
1338
+ * semantics as the mesh-level query push-pull uses). Returns the group's
1339
+ * triangle indices; empty when the session/seed is invalid.
1340
+ */
1341
+ export function sculpt_session_face_group(id: number, seed_triangle: number, max_angle_deg: number): Uint32Array;
1342
+
1343
+ /**
1344
+ * Session stats: `[vertexCount, triangleCount, averageEdgeLength, undoDepth,
1345
+ * redoDepth]`; empty if the session does not exist.
1346
+ */
1347
+ export function sculpt_session_info(id: number): Float64Array;
1348
+
1349
+ /**
1350
+ * Fill the sculpt mask with one value (0 clears). Undoable; returns the
1351
+ * render patch (stride 8) of changed vertices.
1352
+ */
1353
+ export function sculpt_session_mask_fill(id: number, value: number): Float32Array;
1354
+
1355
+ /**
1356
+ * Invert the sculpt mask. Undoable; returns the render patch (stride 8).
1357
+ */
1358
+ export function sculpt_session_mask_invert(id: number): Float32Array;
1359
+
1360
+ /**
1361
+ * Current mesh as a standard f64 buffer (for committing back to a document).
1362
+ */
1363
+ export function sculpt_session_mesh_buffer(id: number): Float64Array;
1364
+
1365
+ /**
1366
+ * Raycast the CURRENT (deforming) surface. Returns
1367
+ * `[px,py,pz, nx,ny,nz, distance, triangleIndex]` or empty on miss.
1368
+ */
1369
+ export function sculpt_session_raycast(id: number, ox: number, oy: number, oz: number, dx: number, dy: number, dz: number): Float64Array;
1370
+
1371
+ /**
1372
+ * Redo the last undone stroke. Same contract as `sculpt_session_undo`.
1373
+ */
1374
+ export function sculpt_session_redo(id: number): Float32Array;
1375
+
1376
+ /**
1377
+ * Release a sculpt session and free its memory.
1378
+ */
1379
+ export function sculpt_session_release(id: number): void;
1380
+
1381
+ /**
1382
+ * Full render snapshot as f32:
1383
+ * `[vertexCount, triangleCount, positions..., normals..., mask..., indices...]`.
1384
+ */
1385
+ export function sculpt_session_render_data(id: number): Float32Array;
1386
+
1387
+ /**
1388
+ * Uniform 1:4 shape-preserving subdivision (adds sculptable detail).
1389
+ * Clears session undo history. Returns 1 on success, 0 when refused
1390
+ * (session missing or the result would exceed the safety cap). Callers must
1391
+ * refetch `sculpt_session_render_data` afterwards.
1392
+ */
1393
+ export function sculpt_session_subdivide(id: number): number;
1394
+
1395
+ /**
1396
+ * Locally refine the given triangles 1:4 with crack-free conforming
1397
+ * neighbor splits (red-green refinement). Returns 1 on success, 0 when
1398
+ * refused (bad input or safety cap). Clears session undo history; callers
1399
+ * must refetch `sculpt_session_render_data` afterwards.
1400
+ */
1401
+ export function sculpt_session_subdivide_faces(id: number, triangles: Uint32Array): number;
1402
+
1403
+ /**
1404
+ * Undo the last stroke. Returns the render patch restoring the previous
1405
+ * positions; empty when there is nothing to undo.
1406
+ */
1407
+ export function sculpt_session_undo(id: number): Float32Array;
1408
+
1311
1409
  /**
1312
1410
  * Sweep a profile curve along a path curve using exact curve evaluation.
1313
1411
  * profile_data/path_data: encoded curve (see decode_curve)
@@ -1536,6 +1634,22 @@ export interface InitOutput {
1536
1634
  readonly ray_closest_point_parameter: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number;
1537
1635
  readonly ray_point_at: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
1538
1636
  readonly sample_nurbs_curve: (a: number, b: number, c: number) => [number, number];
1637
+ readonly sculpt_session_begin_stroke: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number;
1638
+ readonly sculpt_session_create: (a: number, b: number, c: number) => number;
1639
+ readonly sculpt_session_dab: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number) => [number, number];
1640
+ readonly sculpt_session_end_stroke: (a: number) => void;
1641
+ readonly sculpt_session_face_group: (a: number, b: number, c: number) => [number, number];
1642
+ readonly sculpt_session_info: (a: number) => [number, number];
1643
+ readonly sculpt_session_mask_fill: (a: number, b: number) => [number, number];
1644
+ readonly sculpt_session_mask_invert: (a: number) => [number, number];
1645
+ readonly sculpt_session_mesh_buffer: (a: number) => [number, number];
1646
+ readonly sculpt_session_raycast: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
1647
+ readonly sculpt_session_redo: (a: number) => [number, number];
1648
+ readonly sculpt_session_release: (a: number) => void;
1649
+ readonly sculpt_session_render_data: (a: number) => [number, number];
1650
+ readonly sculpt_session_subdivide: (a: number) => number;
1651
+ readonly sculpt_session_subdivide_faces: (a: number, b: number, c: number) => number;
1652
+ readonly sculpt_session_undo: (a: number) => [number, number];
1539
1653
  readonly sweep_curves: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
1540
1654
  readonly sweep_polylines: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1541
1655
  readonly tessellate_nurbs_surface: (a: number, b: number) => [number, number];
@@ -3886,6 +3886,232 @@ export function sample_nurbs_curve(data, samples) {
3886
3886
  return v2;
3887
3887
  }
3888
3888
 
3889
+ /**
3890
+ * Begin a stroke. `brush` and `falloff` are stable enum codes
3891
+ * (see okgeometry-api SculptBrush / SculptFalloff). Flags: bit 0 = invert,
3892
+ * bit 1 = front faces only. `symmetry`: bit 0 = X, bit 1 = Y, bit 2 = Z.
3893
+ * @param {number} id
3894
+ * @param {number} brush
3895
+ * @param {number} radius
3896
+ * @param {number} strength
3897
+ * @param {number} falloff
3898
+ * @param {number} flags
3899
+ * @param {number} plane_offset
3900
+ * @param {number} symmetry
3901
+ * @returns {number}
3902
+ */
3903
+ export function sculpt_session_begin_stroke(id, brush, radius, strength, falloff, flags, plane_offset, symmetry) {
3904
+ const ret = wasm.sculpt_session_begin_stroke(id, brush, radius, strength, falloff, flags, plane_offset, symmetry);
3905
+ return ret >>> 0;
3906
+ }
3907
+
3908
+ /**
3909
+ * Create a sculpt session from a standard mesh buffer
3910
+ * `[vertexCount, x,y,z..., i0,i1,i2...]`. Returns the session id, or 0 on
3911
+ * invalid input.
3912
+ * @param {number} vertex_count
3913
+ * @param {Float64Array} buffer
3914
+ * @returns {number}
3915
+ */
3916
+ export function sculpt_session_create(vertex_count, buffer) {
3917
+ const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
3918
+ const len0 = WASM_VECTOR_LEN;
3919
+ const ret = wasm.sculpt_session_create(vertex_count, ptr0, len0);
3920
+ return ret >>> 0;
3921
+ }
3922
+
3923
+ /**
3924
+ * Apply one dab. Returns the render patch `[index, x,y,z, nx,ny,nz]` per
3925
+ * changed vertex (f32), empty when nothing changed.
3926
+ * @param {number} id
3927
+ * @param {number} cx
3928
+ * @param {number} cy
3929
+ * @param {number} cz
3930
+ * @param {number} vx
3931
+ * @param {number} vy
3932
+ * @param {number} vz
3933
+ * @param {number} dragx
3934
+ * @param {number} dragy
3935
+ * @param {number} dragz
3936
+ * @param {number} pressure
3937
+ * @returns {Float32Array}
3938
+ */
3939
+ export function sculpt_session_dab(id, cx, cy, cz, vx, vy, vz, dragx, dragy, dragz, pressure) {
3940
+ const ret = wasm.sculpt_session_dab(id, cx, cy, cz, vx, vy, vz, dragx, dragy, dragz, pressure);
3941
+ var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();
3942
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
3943
+ return v1;
3944
+ }
3945
+
3946
+ /**
3947
+ * Finish the active stroke (pushes one undo entry).
3948
+ * @param {number} id
3949
+ */
3950
+ export function sculpt_session_end_stroke(id) {
3951
+ wasm.sculpt_session_end_stroke(id);
3952
+ }
3953
+
3954
+ /**
3955
+ * Smooth face group around a seed triangle (dihedral flood fill, same
3956
+ * semantics as the mesh-level query push-pull uses). Returns the group's
3957
+ * triangle indices; empty when the session/seed is invalid.
3958
+ * @param {number} id
3959
+ * @param {number} seed_triangle
3960
+ * @param {number} max_angle_deg
3961
+ * @returns {Uint32Array}
3962
+ */
3963
+ export function sculpt_session_face_group(id, seed_triangle, max_angle_deg) {
3964
+ const ret = wasm.sculpt_session_face_group(id, seed_triangle, max_angle_deg);
3965
+ var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice();
3966
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
3967
+ return v1;
3968
+ }
3969
+
3970
+ /**
3971
+ * Session stats: `[vertexCount, triangleCount, averageEdgeLength, undoDepth,
3972
+ * redoDepth]`; empty if the session does not exist.
3973
+ * @param {number} id
3974
+ * @returns {Float64Array}
3975
+ */
3976
+ export function sculpt_session_info(id) {
3977
+ const ret = wasm.sculpt_session_info(id);
3978
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
3979
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
3980
+ return v1;
3981
+ }
3982
+
3983
+ /**
3984
+ * Fill the sculpt mask with one value (0 clears). Undoable; returns the
3985
+ * render patch (stride 8) of changed vertices.
3986
+ * @param {number} id
3987
+ * @param {number} value
3988
+ * @returns {Float32Array}
3989
+ */
3990
+ export function sculpt_session_mask_fill(id, value) {
3991
+ const ret = wasm.sculpt_session_mask_fill(id, value);
3992
+ var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();
3993
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
3994
+ return v1;
3995
+ }
3996
+
3997
+ /**
3998
+ * Invert the sculpt mask. Undoable; returns the render patch (stride 8).
3999
+ * @param {number} id
4000
+ * @returns {Float32Array}
4001
+ */
4002
+ export function sculpt_session_mask_invert(id) {
4003
+ const ret = wasm.sculpt_session_mask_invert(id);
4004
+ var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();
4005
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
4006
+ return v1;
4007
+ }
4008
+
4009
+ /**
4010
+ * Current mesh as a standard f64 buffer (for committing back to a document).
4011
+ * @param {number} id
4012
+ * @returns {Float64Array}
4013
+ */
4014
+ export function sculpt_session_mesh_buffer(id) {
4015
+ const ret = wasm.sculpt_session_mesh_buffer(id);
4016
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
4017
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
4018
+ return v1;
4019
+ }
4020
+
4021
+ /**
4022
+ * Raycast the CURRENT (deforming) surface. Returns
4023
+ * `[px,py,pz, nx,ny,nz, distance, triangleIndex]` or empty on miss.
4024
+ * @param {number} id
4025
+ * @param {number} ox
4026
+ * @param {number} oy
4027
+ * @param {number} oz
4028
+ * @param {number} dx
4029
+ * @param {number} dy
4030
+ * @param {number} dz
4031
+ * @returns {Float64Array}
4032
+ */
4033
+ export function sculpt_session_raycast(id, ox, oy, oz, dx, dy, dz) {
4034
+ const ret = wasm.sculpt_session_raycast(id, ox, oy, oz, dx, dy, dz);
4035
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
4036
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
4037
+ return v1;
4038
+ }
4039
+
4040
+ /**
4041
+ * Redo the last undone stroke. Same contract as `sculpt_session_undo`.
4042
+ * @param {number} id
4043
+ * @returns {Float32Array}
4044
+ */
4045
+ export function sculpt_session_redo(id) {
4046
+ const ret = wasm.sculpt_session_redo(id);
4047
+ var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();
4048
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
4049
+ return v1;
4050
+ }
4051
+
4052
+ /**
4053
+ * Release a sculpt session and free its memory.
4054
+ * @param {number} id
4055
+ */
4056
+ export function sculpt_session_release(id) {
4057
+ wasm.sculpt_session_release(id);
4058
+ }
4059
+
4060
+ /**
4061
+ * Full render snapshot as f32:
4062
+ * `[vertexCount, triangleCount, positions..., normals..., mask..., indices...]`.
4063
+ * @param {number} id
4064
+ * @returns {Float32Array}
4065
+ */
4066
+ export function sculpt_session_render_data(id) {
4067
+ const ret = wasm.sculpt_session_render_data(id);
4068
+ var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();
4069
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
4070
+ return v1;
4071
+ }
4072
+
4073
+ /**
4074
+ * Uniform 1:4 shape-preserving subdivision (adds sculptable detail).
4075
+ * Clears session undo history. Returns 1 on success, 0 when refused
4076
+ * (session missing or the result would exceed the safety cap). Callers must
4077
+ * refetch `sculpt_session_render_data` afterwards.
4078
+ * @param {number} id
4079
+ * @returns {number}
4080
+ */
4081
+ export function sculpt_session_subdivide(id) {
4082
+ const ret = wasm.sculpt_session_subdivide(id);
4083
+ return ret >>> 0;
4084
+ }
4085
+
4086
+ /**
4087
+ * Locally refine the given triangles 1:4 with crack-free conforming
4088
+ * neighbor splits (red-green refinement). Returns 1 on success, 0 when
4089
+ * refused (bad input or safety cap). Clears session undo history; callers
4090
+ * must refetch `sculpt_session_render_data` afterwards.
4091
+ * @param {number} id
4092
+ * @param {Uint32Array} triangles
4093
+ * @returns {number}
4094
+ */
4095
+ export function sculpt_session_subdivide_faces(id, triangles) {
4096
+ const ptr0 = passArray32ToWasm0(triangles, wasm.__wbindgen_malloc);
4097
+ const len0 = WASM_VECTOR_LEN;
4098
+ const ret = wasm.sculpt_session_subdivide_faces(id, ptr0, len0);
4099
+ return ret >>> 0;
4100
+ }
4101
+
4102
+ /**
4103
+ * Undo the last stroke. Returns the render patch restoring the previous
4104
+ * positions; empty when there is nothing to undo.
4105
+ * @param {number} id
4106
+ * @returns {Float32Array}
4107
+ */
4108
+ export function sculpt_session_undo(id) {
4109
+ const ret = wasm.sculpt_session_undo(id);
4110
+ var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();
4111
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
4112
+ return v1;
4113
+ }
4114
+
3889
4115
  /**
3890
4116
  * Sweep a profile curve along a path curve using exact curve evaluation.
3891
4117
  * profile_data/path_data: encoded curve (see decode_curve)
@@ -4047,6 +4273,11 @@ function getArrayF64FromWasm0(ptr, len) {
4047
4273
  return getFloat64ArrayMemory0().subarray(ptr / 8, ptr / 8 + len);
4048
4274
  }
4049
4275
 
4276
+ function getArrayU32FromWasm0(ptr, len) {
4277
+ ptr = ptr >>> 0;
4278
+ return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);
4279
+ }
4280
+
4050
4281
  function getArrayU8FromWasm0(ptr, len) {
4051
4282
  ptr = ptr >>> 0;
4052
4283
  return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
@@ -4073,6 +4304,14 @@ function getStringFromWasm0(ptr, len) {
4073
4304
  return decodeText(ptr, len);
4074
4305
  }
4075
4306
 
4307
+ let cachedUint32ArrayMemory0 = null;
4308
+ function getUint32ArrayMemory0() {
4309
+ if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {
4310
+ cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);
4311
+ }
4312
+ return cachedUint32ArrayMemory0;
4313
+ }
4314
+
4076
4315
  let cachedUint8ArrayMemory0 = null;
4077
4316
  function getUint8ArrayMemory0() {
4078
4317
  if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {
@@ -4081,6 +4320,13 @@ function getUint8ArrayMemory0() {
4081
4320
  return cachedUint8ArrayMemory0;
4082
4321
  }
4083
4322
 
4323
+ function passArray32ToWasm0(arg, malloc) {
4324
+ const ptr = malloc(arg.length * 4, 4) >>> 0;
4325
+ getUint32ArrayMemory0().set(arg, ptr / 4);
4326
+ WASM_VECTOR_LEN = arg.length;
4327
+ return ptr;
4328
+ }
4329
+
4084
4330
  function passArray8ToWasm0(arg, malloc) {
4085
4331
  const ptr = malloc(arg.length * 1, 1) >>> 0;
4086
4332
  getUint8ArrayMemory0().set(arg, ptr / 1);
@@ -4167,6 +4413,7 @@ function __wbg_finalize_init(instance, module) {
4167
4413
  wasmModule = module;
4168
4414
  cachedFloat32ArrayMemory0 = null;
4169
4415
  cachedFloat64ArrayMemory0 = null;
4416
+ cachedUint32ArrayMemory0 = null;
4170
4417
  cachedUint8ArrayMemory0 = null;
4171
4418
  wasm.__wbindgen_start();
4172
4419
  return wasm;