@ifc-lite/renderer 1.2.0 → 1.2.1

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.
@@ -3,10 +3,30 @@ export var SnapType;
3
3
  (function (SnapType) {
4
4
  SnapType["VERTEX"] = "vertex";
5
5
  SnapType["EDGE"] = "edge";
6
- SnapType["EDGE_MIDPOINT"] = "edge_midpoint";
7
6
  SnapType["FACE"] = "face";
8
7
  SnapType["FACE_CENTER"] = "face_center";
9
8
  })(SnapType || (SnapType = {}));
9
+ // Magnetic snapping configuration constants
10
+ const MAGNETIC_CONFIG = {
11
+ // Edge attraction zone = base radius × this multiplier
12
+ EDGE_ATTRACTION_MULTIPLIER: 3.0,
13
+ // Corner attraction zone = edge zone × this multiplier
14
+ CORNER_ATTRACTION_MULTIPLIER: 2.0,
15
+ // Confidence boost per connected edge at corner
16
+ CORNER_CONFIDENCE_BOOST: 0.15,
17
+ // Must move perpendicular × this factor to escape locked edge
18
+ EDGE_ESCAPE_MULTIPLIER: 2.5,
19
+ // Corner escape requires even more movement
20
+ CORNER_ESCAPE_MULTIPLIER: 3.5,
21
+ // Lock strength growth per frame while locked
22
+ LOCK_STRENGTH_GROWTH: 0.05,
23
+ // Maximum lock strength
24
+ MAX_LOCK_STRENGTH: 1.5,
25
+ // Minimum edges at vertex for corner detection
26
+ MIN_CORNER_VALENCE: 2,
27
+ // Distance threshold for corner detection (percentage of edge length)
28
+ CORNER_THRESHOLD: 0.08,
29
+ };
10
30
  export class SnapDetector {
11
31
  raycaster = new Raycaster();
12
32
  defaultOptions = {
@@ -50,6 +70,340 @@ export class SnapDetector {
50
70
  // Return best target
51
71
  return this.getBestSnapTarget(targets, intersection.point);
52
72
  }
73
+ /**
74
+ * Detect snap target with magnetic edge locking behavior
75
+ * This provides the "stick and slide along edges" experience
76
+ */
77
+ detectMagneticSnap(ray, meshes, intersection, camera, screenHeight, currentEdgeLock, options = {}) {
78
+ const opts = { ...this.defaultOptions, ...options };
79
+ // Default result when no intersection
80
+ if (!intersection) {
81
+ return {
82
+ snapTarget: null,
83
+ edgeLock: {
84
+ edge: null,
85
+ meshExpressId: null,
86
+ edgeT: 0,
87
+ shouldLock: false,
88
+ shouldRelease: true,
89
+ isCorner: false,
90
+ cornerValence: 0,
91
+ },
92
+ };
93
+ }
94
+ const distanceToCamera = this.distance(camera.position, intersection.point);
95
+ const worldSnapRadius = this.screenToWorldRadius(opts.screenSnapRadius, distanceToCamera, camera.fov, screenHeight);
96
+ const intersectedMesh = meshes[intersection.meshIndex];
97
+ if (!intersectedMesh) {
98
+ return {
99
+ snapTarget: null,
100
+ edgeLock: {
101
+ edge: null,
102
+ meshExpressId: null,
103
+ edgeT: 0,
104
+ shouldLock: false,
105
+ shouldRelease: true,
106
+ isCorner: false,
107
+ cornerValence: 0,
108
+ },
109
+ };
110
+ }
111
+ const cache = this.getGeometryCache(intersectedMesh);
112
+ // If edge snapping is disabled, skip edge logic entirely
113
+ if (!opts.snapToEdges) {
114
+ // Just return face/vertex snap as fallback
115
+ const targets = [];
116
+ if (opts.snapToFaces) {
117
+ targets.push(...this.findFaces(intersectedMesh, intersection, worldSnapRadius));
118
+ }
119
+ if (opts.snapToVertices) {
120
+ targets.push(...this.findVertices(intersectedMesh, intersection.point, worldSnapRadius));
121
+ }
122
+ return {
123
+ snapTarget: this.getBestSnapTarget(targets, intersection.point),
124
+ edgeLock: {
125
+ edge: null,
126
+ meshExpressId: null,
127
+ edgeT: 0,
128
+ shouldLock: false,
129
+ shouldRelease: true, // Release any existing lock when edge snapping disabled
130
+ isCorner: false,
131
+ cornerValence: 0,
132
+ },
133
+ };
134
+ }
135
+ // Track whether we're releasing from a previous lock
136
+ let wasLockReleased = false;
137
+ // If we have an active edge lock, try to maintain it
138
+ if (currentEdgeLock.edge && currentEdgeLock.meshExpressId === intersectedMesh.expressId) {
139
+ const lockResult = this.maintainEdgeLock(intersection.point, currentEdgeLock, cache, worldSnapRadius, intersectedMesh.expressId);
140
+ if (!lockResult.edgeLock.shouldRelease) {
141
+ // Still locked - return the sliding position
142
+ return lockResult;
143
+ }
144
+ // Lock was released - continue to find new edges but remember we released
145
+ wasLockReleased = true;
146
+ }
147
+ // No active lock or lock released - find best snap target with magnetic behavior
148
+ const edgeRadius = worldSnapRadius * MAGNETIC_CONFIG.EDGE_ATTRACTION_MULTIPLIER;
149
+ const cornerRadius = edgeRadius * MAGNETIC_CONFIG.CORNER_ATTRACTION_MULTIPLIER;
150
+ // Compute view direction for visibility filtering
151
+ const viewDir = {
152
+ x: intersection.point.x - camera.position.x,
153
+ y: intersection.point.y - camera.position.y,
154
+ z: intersection.point.z - camera.position.z,
155
+ };
156
+ const viewLen = Math.sqrt(viewDir.x * viewDir.x + viewDir.y * viewDir.y + viewDir.z * viewDir.z);
157
+ if (viewLen > 0) {
158
+ viewDir.x /= viewLen;
159
+ viewDir.y /= viewLen;
160
+ viewDir.z /= viewLen;
161
+ }
162
+ // Find all nearby edges (filtered for visibility)
163
+ const nearbyEdges = [];
164
+ for (const edge of cache.edges) {
165
+ const result = this.closestPointOnEdgeWithT(intersection.point, edge.v0, edge.v1);
166
+ if (result.distance < edgeRadius) {
167
+ // Visibility check: edge should be on front-facing side
168
+ // Compute vector from intersection point to edge closest point
169
+ const toEdge = {
170
+ x: result.point.x - intersection.point.x,
171
+ y: result.point.y - intersection.point.y,
172
+ z: result.point.z - intersection.point.z,
173
+ };
174
+ // Check if edge point is roughly on the visible side (dot with normal should be <= small positive)
175
+ // Edges that are clearly behind the surface are filtered out
176
+ const dotWithNormal = toEdge.x * intersection.normal.x + toEdge.y * intersection.normal.y + toEdge.z * intersection.normal.z;
177
+ // Allow edges that are on the surface or slightly in front (tolerance for edge proximity)
178
+ // Filter out edges that are clearly behind the intersected surface
179
+ if (dotWithNormal <= edgeRadius * 0.5) {
180
+ nearbyEdges.push({
181
+ edge,
182
+ closestPoint: result.point,
183
+ distance: result.distance,
184
+ t: result.t,
185
+ });
186
+ }
187
+ }
188
+ }
189
+ // No nearby edges - use best available snap (faces/vertices)
190
+ if (nearbyEdges.length === 0) {
191
+ const candidates = [];
192
+ if (opts.snapToFaces) {
193
+ candidates.push(...this.findFaces(intersectedMesh, intersection, worldSnapRadius));
194
+ }
195
+ if (opts.snapToVertices) {
196
+ candidates.push(...this.findVertices(intersectedMesh, intersection.point, worldSnapRadius));
197
+ }
198
+ return {
199
+ snapTarget: this.getBestSnapTarget(candidates, intersection.point),
200
+ edgeLock: {
201
+ edge: null,
202
+ meshExpressId: null,
203
+ edgeT: 0,
204
+ shouldLock: false,
205
+ shouldRelease: wasLockReleased, // Propagate release signal from maintainEdgeLock
206
+ isCorner: false,
207
+ cornerValence: 0,
208
+ },
209
+ };
210
+ }
211
+ // Sort by distance - prefer closest edge
212
+ nearbyEdges.sort((a, b) => a.distance - b.distance);
213
+ const bestEdge = nearbyEdges[0];
214
+ // Check if we're at a corner (near edge endpoint with high valence)
215
+ const cornerInfo = this.detectCorner(bestEdge.edge, bestEdge.t, cache, cornerRadius, intersection.point);
216
+ // Determine snap target
217
+ let snapTarget;
218
+ if (cornerInfo.isCorner && cornerInfo.valence >= MAGNETIC_CONFIG.MIN_CORNER_VALENCE) {
219
+ // Corner snap - snap to vertex
220
+ const cornerVertex = bestEdge.t < 0.5 ? bestEdge.edge.v0 : bestEdge.edge.v1;
221
+ snapTarget = {
222
+ type: SnapType.VERTEX,
223
+ position: cornerVertex,
224
+ expressId: intersectedMesh.expressId,
225
+ confidence: Math.min(1, 0.99 + cornerInfo.valence * MAGNETIC_CONFIG.CORNER_CONFIDENCE_BOOST),
226
+ metadata: { vertices: [bestEdge.edge.v0, bestEdge.edge.v1] },
227
+ };
228
+ }
229
+ else {
230
+ // Edge snap - snap to closest point on edge
231
+ snapTarget = {
232
+ type: SnapType.EDGE,
233
+ position: bestEdge.closestPoint,
234
+ expressId: intersectedMesh.expressId,
235
+ confidence: 0.999 * (1.0 - bestEdge.distance / edgeRadius),
236
+ metadata: { vertices: [bestEdge.edge.v0, bestEdge.edge.v1], edgeIndex: bestEdge.edge.index },
237
+ };
238
+ }
239
+ return {
240
+ snapTarget,
241
+ edgeLock: {
242
+ edge: { v0: bestEdge.edge.v0, v1: bestEdge.edge.v1 },
243
+ meshExpressId: intersectedMesh.expressId,
244
+ edgeT: bestEdge.t,
245
+ shouldLock: true,
246
+ shouldRelease: false,
247
+ isCorner: cornerInfo.isCorner,
248
+ cornerValence: cornerInfo.valence,
249
+ },
250
+ };
251
+ }
252
+ /**
253
+ * Maintain an existing edge lock - slide along edge or release if moved away
254
+ */
255
+ maintainEdgeLock(point, currentLock, cache, worldSnapRadius, meshExpressId) {
256
+ if (!currentLock.edge) {
257
+ return {
258
+ snapTarget: null,
259
+ edgeLock: {
260
+ edge: null,
261
+ meshExpressId: null,
262
+ edgeT: 0,
263
+ shouldLock: false,
264
+ shouldRelease: true,
265
+ isCorner: false,
266
+ cornerValence: 0,
267
+ },
268
+ };
269
+ }
270
+ const { v0, v1 } = currentLock.edge;
271
+ // Project point onto the locked edge
272
+ const result = this.closestPointOnEdgeWithT(point, v0, v1);
273
+ // Calculate perpendicular distance (distance from point to edge line)
274
+ const perpDistance = result.distance;
275
+ // Calculate escape threshold based on lock strength
276
+ const escapeMultiplier = MAGNETIC_CONFIG.EDGE_ESCAPE_MULTIPLIER * (1 + currentLock.lockStrength * 0.5);
277
+ const escapeThreshold = worldSnapRadius * escapeMultiplier;
278
+ // Check if we should release the lock
279
+ if (perpDistance > escapeThreshold) {
280
+ return {
281
+ snapTarget: null,
282
+ edgeLock: {
283
+ edge: null,
284
+ meshExpressId: null,
285
+ edgeT: 0,
286
+ shouldLock: false,
287
+ shouldRelease: true,
288
+ isCorner: false,
289
+ cornerValence: 0,
290
+ },
291
+ };
292
+ }
293
+ // Still locked - calculate position along edge
294
+ const edgeT = Math.max(0, Math.min(1, result.t));
295
+ // Check for corner at current position
296
+ const cornerRadius = worldSnapRadius * MAGNETIC_CONFIG.EDGE_ATTRACTION_MULTIPLIER * MAGNETIC_CONFIG.CORNER_ATTRACTION_MULTIPLIER;
297
+ // Find the matching edge in cache to get proper index
298
+ let matchingEdge = cache.edges.find(e => (this.vecEquals(e.v0, v0) && this.vecEquals(e.v1, v1)) ||
299
+ (this.vecEquals(e.v0, v1) && this.vecEquals(e.v1, v0)));
300
+ const edgeForCorner = matchingEdge || { v0, v1, index: -1 };
301
+ const cornerInfo = this.detectCorner(edgeForCorner, edgeT, cache, cornerRadius, point);
302
+ // Calculate snap position (on the edge)
303
+ const snapPosition = {
304
+ x: v0.x + (v1.x - v0.x) * edgeT,
305
+ y: v0.y + (v1.y - v0.y) * edgeT,
306
+ z: v0.z + (v1.z - v0.z) * edgeT,
307
+ };
308
+ // Determine snap type
309
+ let snapType;
310
+ let confidence;
311
+ if (cornerInfo.isCorner && cornerInfo.valence >= MAGNETIC_CONFIG.MIN_CORNER_VALENCE) {
312
+ snapType = SnapType.VERTEX;
313
+ confidence = Math.min(1, 0.99 + cornerInfo.valence * MAGNETIC_CONFIG.CORNER_CONFIDENCE_BOOST);
314
+ // Snap to exact corner vertex
315
+ if (edgeT < MAGNETIC_CONFIG.CORNER_THRESHOLD) {
316
+ snapPosition.x = v0.x;
317
+ snapPosition.y = v0.y;
318
+ snapPosition.z = v0.z;
319
+ }
320
+ else if (edgeT > 1 - MAGNETIC_CONFIG.CORNER_THRESHOLD) {
321
+ snapPosition.x = v1.x;
322
+ snapPosition.y = v1.y;
323
+ snapPosition.z = v1.z;
324
+ }
325
+ }
326
+ else {
327
+ snapType = SnapType.EDGE;
328
+ // Clamp confidence to 0-1 range (can go negative if perpDistance exceeds attraction radius)
329
+ const rawConfidence = 0.999 * (1.0 - perpDistance / (worldSnapRadius * MAGNETIC_CONFIG.EDGE_ATTRACTION_MULTIPLIER));
330
+ confidence = Math.max(0, Math.min(1, rawConfidence));
331
+ }
332
+ return {
333
+ snapTarget: {
334
+ type: snapType,
335
+ position: snapPosition,
336
+ expressId: meshExpressId,
337
+ confidence,
338
+ metadata: { vertices: [v0, v1] },
339
+ },
340
+ edgeLock: {
341
+ edge: { v0, v1 },
342
+ meshExpressId,
343
+ edgeT,
344
+ shouldLock: true,
345
+ shouldRelease: false,
346
+ isCorner: cornerInfo.isCorner,
347
+ cornerValence: cornerInfo.valence,
348
+ },
349
+ };
350
+ }
351
+ /**
352
+ * Detect if position is at a corner (vertex with multiple edges)
353
+ */
354
+ detectCorner(edge, t, cache, radius, point) {
355
+ // Check if we're near either endpoint
356
+ const nearV0 = t < MAGNETIC_CONFIG.CORNER_THRESHOLD;
357
+ const nearV1 = t > 1 - MAGNETIC_CONFIG.CORNER_THRESHOLD;
358
+ if (!nearV0 && !nearV1) {
359
+ return { isCorner: false, valence: 0, vertex: null };
360
+ }
361
+ const vertex = nearV0 ? edge.v0 : edge.v1;
362
+ const vertexKey = `${vertex.x.toFixed(4)}_${vertex.y.toFixed(4)}_${vertex.z.toFixed(4)}`;
363
+ // Get valence from cache
364
+ const valence = cache.vertexValence.get(vertexKey) || 0;
365
+ // Also check distance to vertex
366
+ const distToVertex = this.distance(point, vertex);
367
+ const isCloseEnough = distToVertex < radius;
368
+ return {
369
+ isCorner: isCloseEnough && valence >= MAGNETIC_CONFIG.MIN_CORNER_VALENCE,
370
+ valence,
371
+ vertex,
372
+ };
373
+ }
374
+ /**
375
+ * Get closest point on edge segment with parameter t (0-1)
376
+ */
377
+ closestPointOnEdgeWithT(point, v0, v1) {
378
+ const dx = v1.x - v0.x;
379
+ const dy = v1.y - v0.y;
380
+ const dz = v1.z - v0.z;
381
+ const lengthSq = dx * dx + dy * dy + dz * dz;
382
+ if (lengthSq < 0.0000001) {
383
+ // Degenerate edge
384
+ return { point: v0, distance: this.distance(point, v0), t: 0 };
385
+ }
386
+ // Project point onto line
387
+ const t = Math.max(0, Math.min(1, ((point.x - v0.x) * dx + (point.y - v0.y) * dy + (point.z - v0.z) * dz) / lengthSq));
388
+ const closest = {
389
+ x: v0.x + dx * t,
390
+ y: v0.y + dy * t,
391
+ z: v0.z + dz * t,
392
+ };
393
+ return {
394
+ point: closest,
395
+ distance: this.distance(point, closest),
396
+ t,
397
+ };
398
+ }
399
+ /**
400
+ * Check if two vectors are approximately equal
401
+ */
402
+ vecEquals(a, b, epsilon = 0.0001) {
403
+ return (Math.abs(a.x - b.x) < epsilon &&
404
+ Math.abs(a.y - b.y) < epsilon &&
405
+ Math.abs(a.z - b.z) < epsilon);
406
+ }
53
407
  /**
54
408
  * Get or compute geometry cache for a mesh
55
409
  */
@@ -62,7 +416,12 @@ export class SnapDetector {
62
416
  const positions = mesh.positions;
63
417
  // Validate input
64
418
  if (!positions || positions.length === 0) {
65
- const emptyCache = { vertices: [], edges: [] };
419
+ const emptyCache = {
420
+ vertices: [],
421
+ edges: [],
422
+ vertexValence: new Map(),
423
+ vertexEdges: new Map(),
424
+ };
66
425
  this.geometryCache.set(mesh.expressId, emptyCache);
67
426
  return emptyCache;
68
427
  }
@@ -82,12 +441,36 @@ export class SnapDetector {
82
441
  vertexMap.set(key, vertex);
83
442
  }
84
443
  const vertices = Array.from(vertexMap.values());
85
- // Compute and cache edges
444
+ // Compute and cache edges + vertex valence for corner detection
445
+ // Filter out internal triangulation edges (diagonals) - only keep real model edges
86
446
  const edges = [];
447
+ const vertexValence = new Map();
448
+ const vertexEdges = new Map();
87
449
  const indices = mesh.indices;
88
450
  if (indices) {
89
- const edgeMap = new Map();
451
+ // First pass: collect edges and their adjacent triangle normals
452
+ const edgeData = new Map();
453
+ // Helper to compute triangle normal
454
+ const computeTriangleNormal = (i) => {
455
+ const i0 = indices[i] * 3;
456
+ const i1 = indices[i + 1] * 3;
457
+ const i2 = indices[i + 2] * 3;
458
+ const ax = positions[i1] - positions[i0];
459
+ const ay = positions[i1 + 1] - positions[i0 + 1];
460
+ const az = positions[i1 + 2] - positions[i0 + 2];
461
+ const bx = positions[i2] - positions[i0];
462
+ const by = positions[i2 + 1] - positions[i0 + 1];
463
+ const bz = positions[i2 + 2] - positions[i0 + 2];
464
+ // Cross product
465
+ const nx = ay * bz - az * by;
466
+ const ny = az * bx - ax * bz;
467
+ const nz = ax * by - ay * bx;
468
+ // Normalize
469
+ const len = Math.sqrt(nx * nx + ny * ny + nz * nz);
470
+ return len > 0 ? { x: nx / len, y: ny / len, z: nz / len } : { x: 0, y: 1, z: 0 };
471
+ };
90
472
  for (let i = 0; i < indices.length; i += 3) {
473
+ const triNormal = computeTriangleNormal(i);
91
474
  const triangleEdges = [
92
475
  [indices[i], indices[i + 1]],
93
476
  [indices[i + 1], indices[i + 2]],
@@ -108,14 +491,64 @@ export class SnapDetector {
108
491
  };
109
492
  // Create canonical edge key (smaller index first)
110
493
  const key = idx0 < idx1 ? `${idx0}_${idx1}` : `${idx1}_${idx0}`;
111
- if (!edgeMap.has(key)) {
112
- edgeMap.set(key, { v0, v1, index: edgeMap.size });
494
+ if (!edgeData.has(key)) {
495
+ edgeData.set(key, { v0, v1, idx0, idx1, normals: [triNormal] });
496
+ }
497
+ else {
498
+ edgeData.get(key).normals.push(triNormal);
113
499
  }
114
500
  }
115
501
  }
116
- edges.push(...edgeMap.values());
502
+ // Second pass: filter to only real edges (boundary or crease edges)
503
+ // Skip internal triangulation edges (shared by coplanar triangles)
504
+ const COPLANAR_THRESHOLD = 0.98; // Dot product threshold for coplanar check
505
+ for (const [key, data] of edgeData) {
506
+ const { v0, v1, normals } = data;
507
+ // Boundary edge: only one triangle uses it - always a real edge
508
+ if (normals.length === 1) {
509
+ const edgeIndex = edges.length;
510
+ edges.push({ v0, v1, index: edgeIndex });
511
+ // Track vertex valence
512
+ const v0Key = `${v0.x.toFixed(4)}_${v0.y.toFixed(4)}_${v0.z.toFixed(4)}`;
513
+ const v1Key = `${v1.x.toFixed(4)}_${v1.y.toFixed(4)}_${v1.z.toFixed(4)}`;
514
+ vertexValence.set(v0Key, (vertexValence.get(v0Key) || 0) + 1);
515
+ vertexValence.set(v1Key, (vertexValence.get(v1Key) || 0) + 1);
516
+ if (!vertexEdges.has(v0Key))
517
+ vertexEdges.set(v0Key, []);
518
+ if (!vertexEdges.has(v1Key))
519
+ vertexEdges.set(v1Key, []);
520
+ vertexEdges.get(v0Key).push(edgeIndex);
521
+ vertexEdges.get(v1Key).push(edgeIndex);
522
+ continue;
523
+ }
524
+ // Shared edge: check if triangles are coplanar (internal triangulation edge)
525
+ if (normals.length >= 2) {
526
+ const n1 = normals[0];
527
+ const n2 = normals[1];
528
+ const dot = Math.abs(n1.x * n2.x + n1.y * n2.y + n1.z * n2.z);
529
+ // If normals are nearly parallel, triangles are coplanar - skip this edge
530
+ // (it's an internal triangulation diagonal, not a real model edge)
531
+ if (dot > COPLANAR_THRESHOLD) {
532
+ continue; // Skip internal edge
533
+ }
534
+ // Crease edge: triangles meet at an angle - this is a real edge
535
+ const edgeIndex = edges.length;
536
+ edges.push({ v0, v1, index: edgeIndex });
537
+ // Track vertex valence
538
+ const v0Key = `${v0.x.toFixed(4)}_${v0.y.toFixed(4)}_${v0.z.toFixed(4)}`;
539
+ const v1Key = `${v1.x.toFixed(4)}_${v1.y.toFixed(4)}_${v1.z.toFixed(4)}`;
540
+ vertexValence.set(v0Key, (vertexValence.get(v0Key) || 0) + 1);
541
+ vertexValence.set(v1Key, (vertexValence.get(v1Key) || 0) + 1);
542
+ if (!vertexEdges.has(v0Key))
543
+ vertexEdges.set(v0Key, []);
544
+ if (!vertexEdges.has(v1Key))
545
+ vertexEdges.set(v1Key, []);
546
+ vertexEdges.get(v0Key).push(edgeIndex);
547
+ vertexEdges.get(v1Key).push(edgeIndex);
548
+ }
549
+ }
117
550
  }
118
- const cache = { vertices, edges };
551
+ const cache = { vertices, edges, vertexValence, vertexEdges };
119
552
  this.geometryCache.set(mesh.expressId, cache);
120
553
  return cache;
121
554
  }
@@ -162,23 +595,6 @@ export class SnapDetector {
162
595
  confidence: 0.999 * (1.0 - dist / edgeRadius), // Nearly perfect priority for edges
163
596
  metadata: { vertices: [edge.v0, edge.v1], edgeIndex: edge.index },
164
597
  });
165
- // Edge midpoint snap - only when very close to midpoint
166
- const midpoint = {
167
- x: (edge.v0.x + edge.v1.x) / 2,
168
- y: (edge.v0.y + edge.v1.y) / 2,
169
- z: (edge.v0.z + edge.v1.z) / 2,
170
- };
171
- const midDist = this.distance(midpoint, point);
172
- // Only snap to midpoint when within 1/3 of snap radius
173
- if (midDist < radius * 0.33) {
174
- targets.push({
175
- type: SnapType.EDGE_MIDPOINT,
176
- position: midpoint,
177
- expressId: mesh.expressId,
178
- confidence: 1.0 * (1.0 - midDist / (radius * 0.33)), // Very high when close
179
- metadata: { vertices: [edge.v0, edge.v1], edgeIndex: edge.index },
180
- });
181
- }
182
598
  }
183
599
  }
184
600
  return targets;
@@ -251,10 +667,9 @@ export class SnapDetector {
251
667
  getBestSnapTarget(targets, cursorPoint) {
252
668
  if (targets.length === 0)
253
669
  return null;
254
- // Priority order: vertex > edge_midpoint > edge > face_center > face
670
+ // Priority order: vertex > edge > face_center > face
255
671
  const priorityMap = {
256
- [SnapType.VERTEX]: 5,
257
- [SnapType.EDGE_MIDPOINT]: 4,
672
+ [SnapType.VERTEX]: 4,
258
673
  [SnapType.EDGE]: 3,
259
674
  [SnapType.FACE_CENTER]: 2,
260
675
  [SnapType.FACE]: 1,
@@ -1 +1 @@
1
- {"version":3,"file":"snap-detector.js","sourceRoot":"","sources":["../src/snap-detector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snap-detector.js","sourceRoot":"","sources":["../src/snap-detector.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -75,10 +75,14 @@ export interface BatchedMesh {
75
75
  max: [number, number, number];
76
76
  };
77
77
  }
78
+ export type SectionPlaneAxis = 'down' | 'front' | 'side';
78
79
  export interface SectionPlane {
79
- axis: 'x' | 'y' | 'z';
80
+ axis: SectionPlaneAxis;
80
81
  position: number;
81
82
  enabled: boolean;
83
+ flipped?: boolean;
84
+ min?: number;
85
+ max?: number;
82
86
  }
83
87
  export interface RenderOptions {
84
88
  clearColor?: [number, number, number, number];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/renderer",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "description": "WebGPU renderer for IFC-Lite",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -12,9 +12,9 @@
12
12
  }
13
13
  },
14
14
  "dependencies": {
15
- "@ifc-lite/geometry": "^1.2.0",
16
- "@ifc-lite/spatial": "^1.1.7",
17
- "@ifc-lite/wasm": "^1.2.0"
15
+ "@ifc-lite/geometry": "^1.2.1",
16
+ "@ifc-lite/spatial": "^1.2.1",
17
+ "@ifc-lite/wasm": "^1.2.1"
18
18
  },
19
19
  "devDependencies": {
20
20
  "@webgpu/types": "^0.1.69",