@flighthq/mesh 0.3.1-next.704.69286f6 → 0.3.1-next.733.f1845ac

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.
@@ -1 +1 @@
1
- {"version":3,"file":"meshGeometryBuilders.d.ts","sourceRoot":"","sources":["../src/meshGeometryBuilders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAyB,MAAM,0BAA0B,CAAC;AAepF,wBAAgB,qBAAqB,CAAC,KAAK,GAAE,MAAU,EAAE,MAAM,GAAE,MAAU,EAAE,KAAK,GAAE,MAAU,GAAG,YAAY,CA6C5G;AAMD,wBAAgB,yBAAyB,CACvC,MAAM,GAAE,MAAY,EACpB,MAAM,GAAE,MAAU,EAClB,cAAc,GAAE,MAAW,EAC3B,WAAW,GAAE,MAAU,GACtB,YAAY,CA6Dd;AAMD,wBAAgB,wBAAwB,CAAC,MAAM,GAAE,MAAY,EAAE,QAAQ,GAAE,MAAW,GAAG,YAAY,CAQlG;AAKD,wBAAgB,sBAAsB,CACpC,MAAM,GAAE,MAAY,EACpB,MAAM,GAAE,MAAU,EAClB,cAAc,GAAE,MAAW,EAC3B,MAAM,GAAE,OAAc,GACrB,YAAY,CAEd;AAMD,wBAAgB,0BAA0B,CACxC,SAAS,GAAE,MAAY,EACvB,YAAY,GAAE,MAAY,EAC1B,MAAM,GAAE,MAAU,EAClB,cAAc,GAAE,MAAW,EAC3B,MAAM,GAAE,OAAc,GACrB,YAAY,CAiDd;AAGD,wBAAgB,8BAA8B,CAAC,MAAM,GAAE,MAAY,EAAE,MAAM,GAAE,MAAU,GAAG,YAAY,CAErG;AAID,wBAAgB,6BAA6B,CAAC,MAAM,GAAE,MAAY,EAAE,MAAM,GAAE,MAAU,GAAG,YAAY,CAEpG;AAOD,wBAAgB,2BAA2B,CAAC,MAAM,GAAE,MAAY,EAAE,YAAY,GAAE,MAAU,GAAG,YAAY,CA2GxG;AAGD,wBAAgB,4BAA4B,CAAC,MAAM,GAAE,MAAY,EAAE,MAAM,GAAE,MAAU,GAAG,YAAY,CAEnG;AAKD,wBAAgB,uBAAuB,CACrC,KAAK,GAAE,MAAU,EACjB,KAAK,GAAE,MAAU,EACjB,aAAa,GAAE,MAAU,EACzB,aAAa,GAAE,MAAU,GACxB,YAAY,CAoCd;AAOD,wBAAgB,4BAA4B,CAC1C,eAAe,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,EAC/D,WAAW,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,EAC3D,MAAM,GAAE,MAAY,EACpB,MAAM,GAAE,MAAU,GACjB,YAAY,CA6Dd;AAKD,wBAAgB,sBAAsB,CAAC,KAAK,GAAE,MAAU,EAAE,MAAM,GAAE,MAAU,GAAG,YAAY,CAQ1F;AAKD,wBAAgB,sBAAsB,CACpC,WAAW,GAAE,MAAa,EAC1B,WAAW,GAAE,MAAY,EACzB,QAAQ,GAAE,MAAW,GACpB,YAAY,CA+Bd;AAKD,wBAAgB,wBAAwB,CACtC,MAAM,GAAE,MAAY,EACpB,aAAa,GAAE,MAAW,EAC1B,cAAc,GAAE,MAAW,GAC1B,YAAY,CAwCd;AAGD,wBAAgB,6BAA6B,CAAC,MAAM,GAAE,MAAY,EAAE,MAAM,GAAE,MAAU,GAAG,YAAY,CAEpG;AAKD,wBAAgB,2BAA2B,CACzC,MAAM,GAAE,MAAY,EACpB,IAAI,GAAE,MAAa,EACnB,eAAe,GAAE,MAAW,EAC5B,cAAc,GAAE,MAAU,EAC1B,CAAC,GAAE,MAAU,EACb,CAAC,GAAE,MAAU,GACZ,YAAY,CA4Ed;AAKD,wBAAgB,uBAAuB,CACrC,MAAM,GAAE,MAAY,EACpB,IAAI,GAAE,MAAY,EAClB,cAAc,GAAE,MAAW,EAC3B,eAAe,GAAE,MAAW,GAC3B,YAAY,CA+Cd"}
1
+ {"version":3,"file":"meshGeometryBuilders.d.ts","sourceRoot":"","sources":["../src/meshGeometryBuilders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAyB,MAAM,0BAA0B,CAAC;AAepF,wBAAgB,qBAAqB,CAAC,KAAK,GAAE,MAAU,EAAE,MAAM,GAAE,MAAU,EAAE,KAAK,GAAE,MAAU,GAAG,YAAY,CA6C5G;AAOD,wBAAgB,yBAAyB,CACvC,MAAM,GAAE,MAAY,EACpB,MAAM,GAAE,MAAU,EAClB,cAAc,GAAE,MAAW,EAC3B,WAAW,GAAE,MAAU,GACtB,YAAY,CAiEd;AAOD,wBAAgB,wBAAwB,CAAC,MAAM,GAAE,MAAY,EAAE,QAAQ,GAAE,MAAW,GAAG,YAAY,CAQlG;AAMD,wBAAgB,sBAAsB,CACpC,MAAM,GAAE,MAAY,EACpB,MAAM,GAAE,MAAU,EAClB,cAAc,GAAE,MAAW,EAC3B,MAAM,GAAE,OAAc,GACrB,YAAY,CAEd;AAQD,wBAAgB,0BAA0B,CACxC,SAAS,GAAE,MAAY,EACvB,YAAY,GAAE,MAAY,EAC1B,MAAM,GAAE,MAAU,EAClB,cAAc,GAAE,MAAW,EAC3B,MAAM,GAAE,OAAc,GACrB,YAAY,CAiDd;AAID,wBAAgB,8BAA8B,CAAC,MAAM,GAAE,MAAY,EAAE,MAAM,GAAE,MAAU,GAAG,YAAY,CAErG;AAKD,wBAAgB,6BAA6B,CAAC,MAAM,GAAE,MAAY,EAAE,MAAM,GAAE,MAAU,GAAG,YAAY,CAEpG;AAQD,wBAAgB,2BAA2B,CAAC,MAAM,GAAE,MAAY,EAAE,YAAY,GAAE,MAAU,GAAG,YAAY,CA2GxG;AAID,wBAAgB,4BAA4B,CAAC,MAAM,GAAE,MAAY,EAAE,MAAM,GAAE,MAAU,GAAG,YAAY,CAEnG;AAMD,wBAAgB,uBAAuB,CACrC,KAAK,GAAE,MAAU,EACjB,KAAK,GAAE,MAAU,EACjB,aAAa,GAAE,MAAU,EACzB,aAAa,GAAE,MAAU,GACxB,YAAY,CAoCd;AAQD,wBAAgB,4BAA4B,CAC1C,eAAe,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,EAC/D,WAAW,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,EAC3D,MAAM,GAAE,MAAY,EACpB,MAAM,GAAE,MAAU,GACjB,YAAY,CA6Dd;AAKD,wBAAgB,sBAAsB,CAAC,KAAK,GAAE,MAAU,EAAE,MAAM,GAAE,MAAU,GAAG,YAAY,CAQ1F;AAMD,wBAAgB,sBAAsB,CACpC,WAAW,GAAE,MAAa,EAC1B,WAAW,GAAE,MAAY,EACzB,QAAQ,GAAE,MAAW,GACpB,YAAY,CA+Bd;AAMD,wBAAgB,wBAAwB,CACtC,MAAM,GAAE,MAAY,EACpB,aAAa,GAAE,MAAW,EAC1B,cAAc,GAAE,MAAW,GAC1B,YAAY,CAwCd;AAID,wBAAgB,6BAA6B,CAAC,MAAM,GAAE,MAAY,EAAE,MAAM,GAAE,MAAU,GAAG,YAAY,CAEpG;AAMD,wBAAgB,2BAA2B,CACzC,MAAM,GAAE,MAAY,EACpB,IAAI,GAAE,MAAa,EACnB,eAAe,GAAE,MAAW,EAC5B,cAAc,GAAE,MAAU,EAC1B,CAAC,GAAE,MAAU,EACb,CAAC,GAAE,MAAU,GACZ,YAAY,CA8Ed;AAMD,wBAAgB,uBAAuB,CACrC,MAAM,GAAE,MAAY,EACpB,IAAI,GAAE,MAAY,EAClB,cAAc,GAAE,MAAW,EAC3B,eAAe,GAAE,MAAW,GAC3B,YAAY,CA+Cd"}
@@ -40,9 +40,10 @@ export function createBoxMeshGeometry(width = 1, height = 1, depth = 1) {
40
40
  // (excluding the caps) centered at the origin, with `radialSegments` around the axis and
41
41
  // `capSegments` latitudinal divisions per hemisphere. Normals are smooth across the seam between
42
42
  // the caps and the side wall. UVs run v from 0 (top) to 1 (bottom) along the full length.
43
+ // Segment counts must be finite; fractional values are floored after clamping to their minima.
43
44
  export function createCapsuleMeshGeometry(radius = 0.5, height = 1, radialSegments = 16, capSegments = 8) {
44
- const rSeg = Math.max(3, radialSegments);
45
- const cSeg = Math.max(1, capSegments);
45
+ const rSeg = normalizeMeshCount(radialSegments, 3);
46
+ const cSeg = normalizeMeshCount(capSegments, 1);
46
47
  const halfH = height * 0.5;
47
48
  const positions = [];
48
49
  const normals = [];
@@ -62,17 +63,20 @@ export function createCapsuleMeshGeometry(radius = 0.5, height = 1, radialSegmen
62
63
  }
63
64
  };
64
65
  const ringVertexCount = rSeg + 1;
65
- const vDivisor = 2 * cSeg + 1; // total number of rings minus 1
66
+ const ringCount = 2 * cSeg + 2;
67
+ const vDivisor = ringCount - 1;
66
68
  // Top hemisphere (phi from 0 to PI/2).
67
69
  for (let j = 0; j <= cSeg; j++) {
68
70
  addRing((j / cSeg) * (Math.PI * 0.5), halfH);
69
71
  }
72
+ // Duplicate the equator at the bottom of the cylindrical span. The two equators share radial
73
+ // normals but need distinct positions (and UV rows) to form the side wall between the caps.
74
+ addRing(Math.PI * 0.5, -halfH);
70
75
  // Bottom hemisphere (phi from PI/2 to PI).
71
76
  for (let j = 1; j <= cSeg; j++) {
72
77
  addRing(Math.PI * 0.5 + (j / cSeg) * (Math.PI * 0.5), -halfH);
73
78
  }
74
79
  // Fix up the v UV coordinate.
75
- const ringCount = 2 * cSeg + 1;
76
80
  for (let j = 0; j < ringCount; j++) {
77
81
  const v = j / vDivisor;
78
82
  for (let i = 0; i <= rSeg; i++) {
@@ -80,14 +84,15 @@ export function createCapsuleMeshGeometry(radius = 0.5, height = 1, radialSegmen
80
84
  }
81
85
  }
82
86
  // Connect rings into quads.
83
- const totalRings = 2 * cSeg + 1;
84
- for (let j = 0; j < totalRings - 1; j++) {
87
+ for (let j = 0; j < ringCount - 1; j++) {
85
88
  for (let i = 0; i < rSeg; i++) {
86
89
  const a = j * ringVertexCount + i;
87
90
  const b = a + 1;
88
91
  const c = a + ringVertexCount;
89
92
  const d = c + 1;
90
- indices.push(a, c, b, b, c, d);
93
+ // Reversed against the sphere's identical-looking line on purpose: this builder walks its
94
+ // rings the opposite way round, so the same index order faces the other way.
95
+ indices.push(a, b, c, b, d, c);
91
96
  }
92
97
  }
93
98
  return buildCanonicalMeshGeometry(positions, normals, uvs, indices);
@@ -96,8 +101,9 @@ export function createCapsuleMeshGeometry(radius = 0.5, height = 1, radialSegmen
96
101
  // `radius` is the outer radius; `segments` is the number of rim vertices. A center vertex fans
97
102
  // out to `segments` rim vertices via a triangle fan, so the result is `segments` triangles.
98
103
  // UVs map from the disc plane onto 0..1 with (0.5, 0.5) at the center.
104
+ // `segments` must be finite; a fractional value is floored after clamping to the minimum of 3.
99
105
  export function createCircleMeshGeometry(radius = 0.5, segments = 32) {
100
- const segs = Math.max(3, segments);
106
+ const segs = normalizeMeshCount(segments, 3);
101
107
  const positions = [];
102
108
  const normals = [];
103
109
  const uvs = [];
@@ -108,6 +114,7 @@ export function createCircleMeshGeometry(radius = 0.5, segments = 32) {
108
114
  // Builds a right circular cone of `radius` and `height` centered at the origin, apex at +Y, base
109
115
  // at -Y, with `radialSegments` around the axis. A capped base disc is included when `capped` is
110
116
  // true (default). Side normals are smooth around the ring and slanted by the cone half-angle.
117
+ // `radialSegments` must be finite; a fractional value is floored after clamping to 3.
111
118
  export function createConeMeshGeometry(radius = 0.5, height = 1, radialSegments = 32, capped = true) {
112
119
  return createCylinderMeshGeometry(0, radius, height, radialSegments, capped);
113
120
  }
@@ -115,15 +122,17 @@ export function createConeMeshGeometry(radius = 0.5, height = 1, radialSegments
115
122
  // top (`topRadius`) and bottom (`bottomRadius`) radii so it also serves as a truncated cone (a
116
123
  // zero top radius yields a cone). `radialSegments` rings around the axis; `capped` adds top and
117
124
  // bottom discs (skipping a zero-radius cap).
125
+ // `radialSegments` must be finite; a fractional value is floored after clamping to 3. A zero
126
+ // height is a valid collapsed cylinder and uses stable radial side normals.
118
127
  export function createCylinderMeshGeometry(topRadius = 0.5, bottomRadius = 0.5, height = 1, radialSegments = 32, capped = true) {
119
- const segments = Math.max(3, radialSegments);
128
+ const segments = normalizeMeshCount(radialSegments, 3);
120
129
  const halfHeight = height * 0.5;
121
130
  const positions = [];
122
131
  const normals = [];
123
132
  const uvs = [];
124
133
  const indices = [];
125
134
  // Side wall: slope of the silhouette feeds the radial normal tilt.
126
- const slope = (bottomRadius - topRadius) / height;
135
+ const slope = height !== 0 ? (bottomRadius - topRadius) / height : 0;
127
136
  const sideStart = positions.length / 3;
128
137
  for (let y = 0; y <= 1; y++) {
129
138
  const radius = y === 0 ? bottomRadius : topRadius;
@@ -160,11 +169,13 @@ export function createCylinderMeshGeometry(topRadius = 0.5, bottomRadius = 0.5,
160
169
  return buildCanonicalMeshGeometry(positions, normals, uvs, indices);
161
170
  }
162
171
  // Builds a regular dodecahedron (12 pentagonal faces, triangulated) inscribed in a sphere of `radius`.
172
+ // `detail` must be finite; a fractional value is floored after clamping to 0..5.
163
173
  export function createDodecahedronMeshGeometry(radius = 0.5, detail = 0) {
164
174
  return createPolyhedronMeshGeometry(DODECAHEDRON_VERTS, DODECAHEDRON_FACES, radius, detail);
165
175
  }
166
176
  // Builds a regular icosahedron (20 triangular faces) inscribed in a sphere of `radius`.
167
177
  // This is the base shape for createIcosphereMeshGeometry at detail=0.
178
+ // `detail` must be finite; a fractional value is floored after clamping to 0..5.
168
179
  export function createIcosahedronMeshGeometry(radius = 0.5, detail = 0) {
169
180
  return createPolyhedronMeshGeometry(ICOSAHEDRON_VERTS, ICOSAHEDRON_FACES, radius, detail);
170
181
  }
@@ -173,8 +184,9 @@ export function createIcosahedronMeshGeometry(radius = 0.5, detail = 0) {
173
184
  // from a regular icosahedron, each face is subdivided `subdivisions` times (0 = raw icosahedron,
174
185
  // 1 = 80 triangles, 2 = 320, etc.). Normals are the unit-sphere position direction; UVs are
175
186
  // spherical (longitude/latitude).
187
+ // `subdivisions` must be finite; a fractional value is floored after clamping to 0..6.
176
188
  export function createIcosphereMeshGeometry(radius = 0.5, subdivisions = 2) {
177
- const subs = Math.max(0, Math.min(subdivisions, 6)); // cap at 6 to prevent > 262k triangles
189
+ const subs = normalizeMeshCount(subdivisions, 0, 6); // cap at 6 to prevent > 262k triangles
178
190
  // Icosahedron base vertices (unit sphere).
179
191
  const phi = (1 + Math.sqrt(5)) * 0.5;
180
192
  const scale = 1 / Math.sqrt(1 + phi * phi);
@@ -269,15 +281,17 @@ export function createIcosphereMeshGeometry(radius = 0.5, subdivisions = 2) {
269
281
  return buildCanonicalMeshGeometry(positions, normals, uvs, faceIndices);
270
282
  }
271
283
  // Builds a regular octahedron (8 triangular faces) inscribed in a sphere of `radius`.
284
+ // `detail` must be finite; a fractional value is floored after clamping to 0..5.
272
285
  export function createOctahedronMeshGeometry(radius = 0.5, detail = 0) {
273
286
  return createPolyhedronMeshGeometry(OCTAHEDRON_VERTS, OCTAHEDRON_FACES, radius, detail);
274
287
  }
275
288
  // Builds a flat plane in the XZ plane (Y up, normal +Y) centered at the origin, subdivided into
276
289
  // `widthSegments` x `depthSegments` quads with a 0..1 UV grid. Suitable as a ground plane or a
277
290
  // textured "panel" mesh.
291
+ // Segment counts must be finite; fractional values are floored after clamping to 1.
278
292
  export function createPlaneMeshGeometry(width = 1, depth = 1, widthSegments = 1, depthSegments = 1) {
279
- const wSeg = Math.max(1, widthSegments);
280
- const dSeg = Math.max(1, depthSegments);
293
+ const wSeg = normalizeMeshCount(widthSegments, 1);
294
+ const dSeg = normalizeMeshCount(depthSegments, 1);
281
295
  const hw = width * 0.5, hd = depth * 0.5;
282
296
  const positions = [];
283
297
  const normals = [];
@@ -312,8 +326,9 @@ export function createPlaneMeshGeometry(width = 1, depth = 1, widthSegments = 1,
312
326
  // This is the shared backend for the Platonic solid builders and is also exported for custom
313
327
  // polyhedra. Vertices are projected onto the unit sphere before scaling so the output is a
314
328
  // geodesic sphere approximation.
329
+ // `detail` must be finite; a fractional value is floored after clamping to 0..5.
315
330
  export function createPolyhedronMeshGeometry(vertexPositions, faceIndices, radius = 0.5, detail = 0) {
316
- const subs = Math.max(0, Math.min(detail, 5));
331
+ const subs = normalizeMeshCount(detail, 0, 5);
317
332
  const verts = vertexPositions.map(([x, y, z]) => {
318
333
  const len = Math.sqrt(x * x + y * y + z * z);
319
334
  return [x / len, y / len, z / len];
@@ -380,8 +395,9 @@ export function createQuadMeshGeometry(width = 1, height = 1) {
380
395
  // Builds a flat ring (annulus) in the XZ plane centered at the origin. `innerRadius` is the
381
396
  // hole radius and `outerRadius` is the ring's outer edge. Normal is +Y. `segments` is the
382
397
  // number of vertices around the ring. UVs map inner radius to u=0 and outer to u=1.
398
+ // `segments` must be finite; a fractional value is floored after clamping to 3.
383
399
  export function createRingMeshGeometry(innerRadius = 0.25, outerRadius = 0.5, segments = 32) {
384
- const segs = Math.max(3, segments);
400
+ const segs = normalizeMeshCount(segments, 3);
385
401
  const positions = [];
386
402
  const normals = [];
387
403
  const uvs = [];
@@ -411,9 +427,10 @@ export function createRingMeshGeometry(innerRadius = 0.25, outerRadius = 0.5, se
411
427
  // Builds a UV sphere of `radius` centered at the origin, with `widthSegments` longitudinal and
412
428
  // `heightSegments` latitudinal divisions. Normals are the unit position direction; UVs map
413
429
  // longitude to u and latitude to v.
430
+ // Segment counts must be finite; fractional values are floored after clamping to 3x2.
414
431
  export function createSphereMeshGeometry(radius = 0.5, widthSegments = 32, heightSegments = 16) {
415
- const wSeg = Math.max(3, widthSegments);
416
- const hSeg = Math.max(2, heightSegments);
432
+ const wSeg = normalizeMeshCount(widthSegments, 3);
433
+ const hSeg = normalizeMeshCount(heightSegments, 2);
417
434
  const positions = [];
418
435
  const normals = [];
419
436
  const uvs = [];
@@ -447,15 +464,17 @@ export function createSphereMeshGeometry(radius = 0.5, widthSegments = 32, heigh
447
464
  return buildCanonicalMeshGeometry(positions, normals, uvs, indices);
448
465
  }
449
466
  // Builds a regular tetrahedron (4 triangular faces) inscribed in a sphere of `radius`.
467
+ // `detail` must be finite; a fractional value is floored after clamping to 0..5.
450
468
  export function createTetrahedronMeshGeometry(radius = 0.5, detail = 0) {
451
469
  return createPolyhedronMeshGeometry(TETRAHEDRON_VERTS, TETRAHEDRON_FACES, radius, detail);
452
470
  }
453
471
  // Builds a torus knot: a torus-shaped curve wound `p` times around the Z axis and `q` times
454
472
  // around the tube axis. `radius` is the distance from the center to the tube center line;
455
473
  // `tube` is the tube radius. Normals and UVs are generated per the standard torus knot geometry.
474
+ // Segment counts must be finite; fractional values are floored after clamping to 3.
456
475
  export function createTorusKnotMeshGeometry(radius = 0.5, tube = 0.15, tubularSegments = 64, radialSegments = 8, p = 2, q = 3) {
457
- const tSeg = Math.max(3, tubularSegments);
458
- const rSeg = Math.max(3, radialSegments);
476
+ const tSeg = normalizeMeshCount(tubularSegments, 3);
477
+ const rSeg = normalizeMeshCount(radialSegments, 3);
459
478
  const positions = [];
460
479
  const normals = [];
461
480
  const uvs = [];
@@ -516,7 +535,9 @@ export function createTorusKnotMeshGeometry(radius = 0.5, tube = 0.15, tubularSe
516
535
  const b = a + 1;
517
536
  const c = a + rowStride;
518
537
  const d = c + 1;
519
- indices.push(a, c, b, b, c, d);
538
+ // Reversed for the same reason as the capsule: this builder sweeps its tube rings the
539
+ // opposite way round from the sphere, so the same index order faced inward.
540
+ indices.push(a, b, c, b, d, c);
520
541
  }
521
542
  }
522
543
  return buildCanonicalMeshGeometry(positions, normals, uvs, indices);
@@ -524,9 +545,10 @@ export function createTorusKnotMeshGeometry(radius = 0.5, tube = 0.15, tubularSe
524
545
  // Builds a torus in the XY plane: a ring of `radius` (center to tube center) with a tube of
525
546
  // `tube` radius, divided into `radialSegments` around the ring and `tubularSegments` around the
526
547
  // tube. Normals point radially outward from the tube center.
548
+ // Segment counts must be finite; fractional values are floored after clamping to 3.
527
549
  export function createTorusMeshGeometry(radius = 0.5, tube = 0.2, radialSegments = 24, tubularSegments = 48) {
528
- const rSeg = Math.max(3, radialSegments);
529
- const tSeg = Math.max(3, tubularSegments);
550
+ const rSeg = normalizeMeshCount(radialSegments, 3);
551
+ const tSeg = normalizeMeshCount(tubularSegments, 3);
530
552
  const positions = [];
531
553
  const normals = [];
532
554
  const uvs = [];
@@ -583,14 +605,21 @@ function addDisc(positions, normals, uvs, indices, segments, radius, y, directio
583
605
  for (let s = 0; s < segments; s++) {
584
606
  const a = ringStart + s;
585
607
  const b = ringStart + s + 1;
608
+ // Right-hand rule over the winding: for an up-facing disc the ring must be walked b-then-a to
609
+ // put (p1 - p0) x (p2 - p0) along +Y, which is the direction the authored normals already point.
586
610
  if (direction > 0) {
587
- indices.push(center, a, b);
611
+ indices.push(center, b, a);
588
612
  }
589
613
  else {
590
- indices.push(center, b, a);
614
+ indices.push(center, a, b);
591
615
  }
592
616
  }
593
617
  }
618
+ function normalizeMeshCount(value, min, max = Number.POSITIVE_INFINITY) {
619
+ if (!Number.isFinite(value))
620
+ throw new RangeError('mesh segment and subdivision counts must be finite');
621
+ return Math.floor(Math.max(min, Math.min(value, max)));
622
+ }
594
623
  // Interleaves separate position/normal/uv0 arrays into the canonical 12-float record, allocates
595
624
  // the MeshGeometry (indices auto-promote past 65k), then fills tangents from the UV gradient and
596
625
  // the cached local bounds. The single finalize path every builder funnels through.
@@ -730,11 +759,14 @@ const DODECAHEDRON_VERTS = [
730
759
  [_phi, 0, -_d],
731
760
  [_phi, 0, _d],
732
761
  ];
762
+ // Nine of these faces were wound the opposite way from the other twenty-seven, which put their
763
+ // geometric face normals against the outward vertex normals the builder authors. Only those nine
764
+ // are reversed; the winding here is per-face data, not a convention the whole table shares.
733
765
  const DODECAHEDRON_FACES = [
734
766
  [3, 11, 7],
735
767
  [3, 7, 15],
736
768
  [3, 15, 13],
737
- [7, 19, 11],
769
+ [7, 11, 19],
738
770
  [7, 11, 9],
739
771
  [7, 9, 19],
740
772
  [15, 7, 19],
@@ -749,21 +781,21 @@ const DODECAHEDRON_FACES = [
749
781
  [11, 17, 1],
750
782
  [11, 1, 9],
751
783
  [9, 1, 5],
752
- [5, 1, 17],
784
+ [5, 17, 1],
753
785
  [5, 17, 4],
754
- [5, 4, 14],
755
- [9, 5, 14],
756
- [9, 14, 12],
757
- [9, 12, 0],
786
+ [5, 14, 4],
787
+ [9, 14, 5],
788
+ [9, 12, 14],
789
+ [9, 0, 12],
758
790
  [1, 0, 12],
759
791
  [1, 12, 4],
760
- [1, 4, 17],
792
+ [1, 17, 4],
761
793
  [6, 18, 8],
762
794
  [6, 8, 10],
763
795
  [6, 10, 2],
764
796
  [18, 19, 8],
765
- [19, 7, 8],
766
- [7, 15, 8],
797
+ [19, 8, 7],
798
+ [7, 8, 15],
767
799
  [2, 10, 16],
768
800
  [10, 8, 0],
769
801
  [0, 8, 12],
@@ -1 +1 @@
1
- {"version":3,"file":"meshGeometryBuilders.js","sourceRoot":"","sources":["../src/meshGeometryBuilders.ts"],"names":[],"mappings":"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EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACZ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACV,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;IACX,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACX,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACX,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACX,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACT,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACV,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACV,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACV,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACV,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACX,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACV,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACV,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACV,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACV,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACV,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACV,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACV,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACV,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACV,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACX,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACV,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;CACX,CAAC"}
1
+ {"version":3,"file":"meshGeometryBuilders.js","sourceRoot":"","sources":["../src/meshGeometryBuilders.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"meshGeometryCompute.d.ts","sourceRoot":"","sources":["../src/meshGeometryCompute.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,IAAI,EACJ,QAAQ,EACR,kBAAkB,EAClB,YAAY,EAGb,MAAM,0BAA0B,CAAC;AAiBlC,wBAAgB,iCAAiC,CAAC,GAAG,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI,CAoDjH;AAKD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI,CA+B/F;AASD,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI,CA+DxG;AAUD,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,YAAY,EACjB,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,EAChC,cAAc,GAAE,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,GAAG,IAAW,GAC/D,IAAI,CAsDN;AAKD,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,WAAW,CAAC,WAAW,CAAC,CAkC5G;AAgCD,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,YAAY,EACjB,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,EAChC,cAAc,GAAE,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,GAAG,IAAW,GAC/D,IAAI,CAgNN;AAsHD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAQtF;AAOD,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAStE"}
1
+ {"version":3,"file":"meshGeometryCompute.d.ts","sourceRoot":"","sources":["../src/meshGeometryCompute.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,IAAI,EACJ,QAAQ,EACR,kBAAkB,EAClB,YAAY,EAGb,MAAM,0BAA0B,CAAC;AAiBlC,wBAAgB,iCAAiC,CAAC,GAAG,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI,CAoDjH;AAKD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI,CA+B/F;AASD,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI,CA8DxG;AAUD,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,YAAY,EACjB,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,EAChC,cAAc,GAAE,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,GAAG,IAAW,GAC/D,IAAI,CAuDN;AAKD,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,WAAW,CAAC,WAAW,CAAC,CAkC5G;AAgCD,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,YAAY,EACjB,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,EAChC,cAAc,GAAE,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,GAAG,IAAW,GAC/D,IAAI,CAgNN;AAsHD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAQtF;AAOD,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAStE"}
@@ -202,6 +202,7 @@ export function computeMeshGeometryNormals(out, geometry, positionGroups = null)
202
202
  target[base + 1] = ny;
203
203
  target[base + 2] = nz;
204
204
  }
205
+ out.version++;
205
206
  }
206
207
  // Returns one canonical representative index per vertex, grouping only vertices whose three stored
207
208
  // Float32 position components are bit-identical. Other attributes do not participate, and no
@@ -1 +1 @@
1
- {"version":3,"file":"meshGeometryCompute.js","sourceRoot":"","sources":["../src/meshGeometryCompute.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"meshGeometryCompute.js","sourceRoot":"","sources":["../src/meshGeometryCompute.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"meshGeometryTransforms.d.ts","sourceRoot":"","sources":["../src/meshGeometryTransforms.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAW1E,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAY/D;AAKD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAElG;AAOD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,OAAO,CAEpG;AAOD,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC9B,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAC5B,OAAO,CAyET;AAID,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAqBnG"}
1
+ {"version":3,"file":"meshGeometryTransforms.d.ts","sourceRoot":"","sources":["../src/meshGeometryTransforms.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAc1E,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAY/D;AAMD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAGlG;AAOD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,OAAO,CAEpG;AAOD,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC9B,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAC5B,OAAO,CAmFT;AAID,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAqBnG"}
@@ -1,9 +1,12 @@
1
1
  import { createAabb } from '@flighthq/geometry/contract';
2
2
  import { getVertexAttributeFloatOffset } from './meshGeometryAttributes';
3
3
  import { computeMeshGeometryBounds } from './meshGeometryCompute';
4
- // Geometry transform operations: apply a Matrix4 to positions and the inverse-transpose to
5
- // normals and tangent.xyz (tangent.w handedness sign is preserved). All in-place operations
6
- // bump geometry.version. Out-parameter variants are alias-safe (out === source is valid).
4
+ // Geometry transform operations: apply a Matrix4 to positions, the inverse-transpose to normals,
5
+ // and the plain upper 3x3 to tangent.xyz — a normal is a covector and a tangent is a true vector,
6
+ // so they follow different matrices and only coincide under rotation and uniform scale. A transform
7
+ // that mirrors (determinant < 0) also reverses triangle winding and negates tangent.w, because a
8
+ // baked transform leaves no determinant for a renderer to detect. All in-place operations bump
9
+ // geometry.version. Out-parameter variants are alias-safe (out === source is valid).
7
10
  // Centers the geometry so that the cached AABB's center moves to the origin. If bounds have
8
11
  // not been computed yet, they are computed first. Bumps geometry.version.
9
12
  export function centerMeshGeometry(geometry) {
@@ -20,11 +23,13 @@ export function centerMeshGeometry(geometry) {
20
23
  return;
21
24
  translateMeshGeometry(geometry, -cx, -cy, -cz);
22
25
  }
23
- // Scales all vertex positions in-place by (sx, sy, sz). Normals and tangents are transformed
24
- // via the inverse-transpose of the pure scale matrix (i.e. (1/sx, 1/sy, 1/sz)) and
25
- // re-normalized. Bumps geometry.version.
26
+ // Scales all vertex positions in-place by (sx, sy, sz). Normals are transformed by the
27
+ // inverse-transpose of the scale (1/sx, 1/sy, 1/sz) and tangents by the scale itself, both
28
+ // re-normalized. A negative-determinant scale mirrors the mesh, so triangle winding is reversed and
29
+ // tangent.w negated to keep front faces front-facing. Bumps geometry.version.
26
30
  export function scaleMeshGeometry(geometry, sx, sy, sz) {
27
31
  transformMeshGeometryPositions(geometry, geometry, sx, sy, sz, 0, 0, 0);
32
+ restoreMirroredWindingAndHandedness(geometry, sx * sy * sz);
28
33
  }
29
34
  // Applies a Matrix4 to the geometry's vertices in place. Positions are transformed as points
30
35
  // (w=1); normals and tangent.xyz are transformed by the inverse-transpose of the matrix's
@@ -85,10 +90,15 @@ export function transformMeshGeometryInto(out, source, matrix) {
85
90
  if (tanFloatOffset >= 0) {
86
91
  const tb = vertBase + tanFloatOffset;
87
92
  const tx = srcVerts[tb], ty = srcVerts[tb + 1], tz = srcVerts[tb + 2];
88
- const tw = srcVerts[tb + 3]; // preserve handedness sign
89
- let ttx = invT[0] * tx + invT[3] * ty + invT[6] * tz;
90
- let tty = invT[1] * tx + invT[4] * ty + invT[7] * tz;
91
- let ttz = invT[2] * tx + invT[5] * ty + invT[8] * tz;
93
+ const tw = srcVerts[tb + 3]; // handedness, a sign rather than a direction
94
+ // A tangent lies ALONG the surface, so it is a true vector and follows the plain upper 3x3,
95
+ // the same matrix a position follows. Only the normal is a covector needing the
96
+ // inverse-transpose. The two coincide under rotation and uniform scale, which is why sharing
97
+ // one matrix looked right; under non-uniform scale it tilts the tangent off the surface and
98
+ // out of perpendicular with its own normal. `skinTangents` draws the same distinction.
99
+ let ttx = m[0] * tx + m[4] * ty + m[8] * tz;
100
+ let tty = m[1] * tx + m[5] * ty + m[9] * tz;
101
+ let ttz = m[2] * tx + m[6] * ty + m[10] * tz;
92
102
  const len = Math.sqrt(ttx * ttx + tty * tty + ttz * ttz);
93
103
  if (len > 0) {
94
104
  ttx /= len;
@@ -101,6 +111,7 @@ export function transformMeshGeometryInto(out, source, matrix) {
101
111
  dstVerts[tb + 3] = tw;
102
112
  }
103
113
  }
114
+ restoreMirroredWindingAndHandedness(out, m[0] * (m[5] * m[10] - m[6] * m[9]) - m[4] * (m[1] * m[10] - m[2] * m[9]) + m[8] * (m[1] * m[6] - m[2] * m[5]));
104
115
  out.version++;
105
116
  // Recompute bounds if they were cached, since all positions have changed.
106
117
  if (out.bounds) {
@@ -172,6 +183,58 @@ function computeMatrix3x3InverseTranspose(matrix) {
172
183
  }
173
184
  // Applies a pure-scale transform to positions. Normals/tangents are transformed by the
174
185
  // inverse scale and re-normalized. Internal helper used by scaleMeshGeometry.
186
+ // Restores the counter-clockwise-front / outward-normal invariant after a transform that mirrors the
187
+ // geometry (determinant < 0). A reflection turns every triangle inside out and flips the handedness
188
+ // of every tangent frame, and a BAKED transform leaves no determinant behind for a renderer to notice
189
+ // — the mesh simply uploads inside-out under an identity model matrix. So the correction has to
190
+ // happen here, at the point the mirror is applied.
191
+ //
192
+ // Mirroring is a legitimate request, not an error, so this never rejects a negative determinant.
193
+ //
194
+ // `tangent.w` is handedness (B = w * cross(N, T)), so a reflection negates it. That part is
195
+ // topology-independent and always applied. The winding reversal is not: swapping two corners of a
196
+ // triple is only meaningful for a triangle list. A triangle STRIP shares each vertex between up to
197
+ // three triangles, so per-triple swaps do not describe it, and this repository has no established
198
+ // strip winding reversal to follow — the one in `scene3d-formats` (`reverseTriangleWinding`) steps by
199
+ // three and is list-only. Rather than invent one, strips are left unreversed and the gap is reported.
200
+ // A line or point stream has no winding to reverse at all.
201
+ function restoreMirroredWindingAndHandedness(geometry, determinant) {
202
+ if (determinant >= 0)
203
+ return;
204
+ const tanFloatOffset = getVertexAttributeFloatOffset(geometry.layout, 'tangent');
205
+ const floatsPerVertex = geometry.layout.stride / 4;
206
+ const vertices = geometry.vertices;
207
+ if (tanFloatOffset >= 0 && floatsPerVertex > 0) {
208
+ const vertexCount = Math.floor(vertices.length / floatsPerVertex);
209
+ for (let i = 0; i < vertexCount; i++) {
210
+ const wIndex = i * floatsPerVertex + tanFloatOffset + 3;
211
+ vertices[wIndex] = -vertices[wIndex];
212
+ }
213
+ }
214
+ if (geometry.topology !== 'triangle-list')
215
+ return;
216
+ const indices = geometry.indices;
217
+ if (indices !== null) {
218
+ for (let i = 0; i + 2 < indices.length; i += 3) {
219
+ const swap = indices[i + 1];
220
+ indices[i + 1] = indices[i + 2];
221
+ indices[i + 2] = swap;
222
+ }
223
+ return;
224
+ }
225
+ // Non-indexed: the records themselves carry the order, so the second and third of each triple swap.
226
+ if (floatsPerVertex <= 0)
227
+ return;
228
+ const vertexCount = Math.floor(vertices.length / floatsPerVertex);
229
+ const scratch = new Float32Array(floatsPerVertex);
230
+ for (let triangle = 0; triangle + 2 < vertexCount; triangle += 3) {
231
+ const second = (triangle + 1) * floatsPerVertex;
232
+ const third = (triangle + 2) * floatsPerVertex;
233
+ scratch.set(vertices.subarray(second, second + floatsPerVertex));
234
+ vertices.copyWithin(second, third, third + floatsPerVertex);
235
+ vertices.set(scratch, third);
236
+ }
237
+ }
175
238
  function transformMeshGeometryPositions(out, source, sx, sy, sz, tx, ty, tz) {
176
239
  const posFloatOffset = getVertexAttributeFloatOffset(source.layout, 'position');
177
240
  const normFloatOffset = getVertexAttributeFloatOffset(source.layout, 'normal');
@@ -214,7 +277,9 @@ function transformMeshGeometryPositions(out, source, sx, sy, sz, tx, ty, tz) {
214
277
  const tb = vertBase + tanFloatOffset;
215
278
  const ttx = srcVerts[tb], tty = srcVerts[tb + 1], ttz = srcVerts[tb + 2];
216
279
  const tw = srcVerts[tb + 3];
217
- let ntx = ttx * invSx, nty = tty * invSy, ntz = ttz * invSz;
280
+ // Plain scale, not the inverse: a tangent lies along the surface and follows the same
281
+ // transform a position does. See the note on `transformMeshGeometryInto`.
282
+ let ntx = ttx * sx, nty = tty * sy, ntz = ttz * sz;
218
283
  const len = Math.sqrt(ntx * ntx + nty * nty + ntz * ntz);
219
284
  if (len > 0) {
220
285
  ntx /= len;
@@ -1 +1 @@
1
- {"version":3,"file":"meshGeometryTransforms.js","sourceRoot":"","sources":["../src/meshGeometryTransforms.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"meshGeometryTransforms.js","sourceRoot":"","sources":["../src/meshGeometryTransforms.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"meshGeometryUvs.d.ts","sourceRoot":"","sources":["../src/meshGeometryUvs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAW7D,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAY1F;AAID,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAYzF;AAKD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAYhE"}
1
+ {"version":3,"file":"meshGeometryUvs.d.ts","sourceRoot":"","sources":["../src/meshGeometryUvs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAW7D,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAY1F;AAcD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAYzF;AAKD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAYhE"}
@@ -22,6 +22,16 @@ export function offsetMeshGeometryUvs(geometry, du, dv) {
22
22
  }
23
23
  // Scales every uv0 coordinate by (su, sv) around the origin: u' = u * su, v' = v * sv. Useful
24
24
  // for tiling — e.g. scaleMeshGeometryUvs(geo, 2, 2) tiles the texture 2× in each direction.
25
+ //
26
+ // ★ A NEGATIVE SCALE MIRRORS THE SAMPLING BUT NOT THE STORED TANGENT FRAME. Tangents are derived
27
+ // from the UV gradient, so mirroring u or v reverses the direction a tangent should point and the
28
+ // handedness that goes with it, while the tangent records already in the vertex stream keep their
29
+ // old values. Any normal-mapped material then reconstructs its bitangent from a frame that no
30
+ // longer matches the coordinates it samples, which reads as lighting flipped across the mirrored
31
+ // axis. The remedy is the caller's: run `computeMeshGeometryTangents` afterwards to re-derive the
32
+ // frame from the new coordinates. This operation deliberately does NOT do that for you — a UV edit
33
+ // that silently rewrote the tangent attribute would be exactly the hidden side effect this codebase
34
+ // rules out, and callers that only ever scale positively should not pay for a recompute.
25
35
  export function scaleMeshGeometryUvs(geometry, su, sv) {
26
36
  const floatOffset = getVertexAttributeFloatOffset(geometry.layout, 'uv0');
27
37
  if (floatOffset < 0)
@@ -1 +1 @@
1
- {"version":3,"file":"meshGeometryUvs.js","sourceRoot":"","sources":["../src/meshGeometryUvs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAEzE,gGAAgG;AAChG,8FAA8F;AAC9F,+FAA+F;AAC/F,8FAA8F;AAE9F,+FAA+F;AAC/F,wCAAwC;AACxC,MAAM,UAAU,qBAAqB,CAAC,QAAsB,EAAE,EAAU,EAAE,EAAU;IAClF,MAAM,WAAW,GAAG,6BAA6B,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1E,IAAI,WAAW,GAAG,CAAC;QAAE,OAAO;IAC5B,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrG,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,CAAC,GAAG,eAAe,GAAG,WAAW,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IACD,IAAI,WAAW,GAAG,CAAC;QAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC1C,CAAC;AAED,8FAA8F;AAC9F,4FAA4F;AAC5F,MAAM,UAAU,oBAAoB,CAAC,QAAsB,EAAE,EAAU,EAAE,EAAU;IACjF,MAAM,WAAW,GAAG,6BAA6B,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1E,IAAI,WAAW,GAAG,CAAC;QAAE,OAAO;IAC5B,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrG,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,CAAC,GAAG,eAAe,GAAG,WAAW,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IACD,IAAI,WAAW,GAAG,CAAC;QAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC1C,CAAC;AAED,iGAAiG;AACjG,6FAA6F;AAC7F,iFAAiF;AACjF,MAAM,UAAU,mBAAmB,CAAC,QAAsB;IACxD,MAAM,WAAW,GAAG,6BAA6B,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1E,IAAI,WAAW,GAAG,CAAC;QAAE,OAAO;IAC5B,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrG,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,CAAC,GAAG,eAAe,GAAG,WAAW,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,WAAW,GAAG,CAAC;QAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"meshGeometryUvs.js","sourceRoot":"","sources":["../src/meshGeometryUvs.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/mesh",
3
- "version": "0.3.1-next.704.69286f6",
3
+ "version": "0.3.1-next.733.f1845ac",
4
4
  "author": "Joshua Granick and other contributors",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,9 +38,9 @@
38
38
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@flighthq/entity": "0.3.1-next.704.69286f6",
42
- "@flighthq/geometry": "0.3.1-next.704.69286f6",
43
- "@flighthq/types": "0.3.1-next.704.69286f6"
41
+ "@flighthq/entity": "0.3.1-next.733.f1845ac",
42
+ "@flighthq/geometry": "0.3.1-next.733.f1845ac",
43
+ "@flighthq/types": "0.3.1-next.733.f1845ac"
44
44
  },
45
45
  "devDependencies": {
46
46
  "typescript": "^5.3.0"
@@ -20,6 +20,7 @@ import {
20
20
  createTorusKnotMeshGeometry,
21
21
  createTorusMeshGeometry,
22
22
  } from './meshGeometryBuilders';
23
+ import { validateMeshGeometry } from './meshGeometryOperations';
23
24
 
24
25
  function expectUnitNormals(geometry: Readonly<MeshGeometry>): void {
25
26
  const count = getMeshGeometryVertexCount(geometry);
@@ -42,6 +43,10 @@ function expectUnitTangents(geometry: Readonly<MeshGeometry>): void {
42
43
  }
43
44
  }
44
45
 
46
+ function expectFiniteCanonicalRecord(geometry: Readonly<MeshGeometry>): void {
47
+ for (const value of geometry.vertices) expect(Number.isFinite(value)).toBe(true);
48
+ }
49
+
45
50
  // Asserts a triangle's geometric face normal agrees with its vertices' averaged shading normal, so
46
51
  // the winding (CCW front-facing) matches the outward-pointing normals the builder emits. A back-
47
52
  // facing wind would be culled and expose the interior surface instead. Scans from the first triangle
@@ -91,9 +96,23 @@ describe('createBoxMeshGeometry', () => {
91
96
  describe('createCapsuleMeshGeometry', () => {
92
97
  it('builds a capsule that spans -(height/2+radius)..(height/2+radius) on Y', () => {
93
98
  const geometry = createCapsuleMeshGeometry(0.5, 1, 8, 4);
94
- expect(getMeshGeometryVertexCount(geometry)).toBeGreaterThan(0);
99
+ expect(getMeshGeometryVertexCount(geometry)).toBe(90);
100
+ expect(getMeshGeometryIndexCount(geometry)).toBe(432);
95
101
  expect(geometry.bounds!.min.y).toBeCloseTo(-1, 1);
96
102
  expect(geometry.bounds!.max.y).toBeCloseTo(1, 1);
103
+
104
+ const stride = 12;
105
+ const ringVertexCount = 9;
106
+ const topEquator = 4 * ringVertexCount * stride;
107
+ const bottomEquator = 5 * ringVertexCount * stride;
108
+ expect(geometry.vertices[topEquator]).toBeCloseTo(0.5);
109
+ expect(geometry.vertices[topEquator + 1]).toBeCloseTo(0.5);
110
+ expect(geometry.vertices[topEquator + 4]).toBeCloseTo(0);
111
+ expect(geometry.vertices[topEquator + 11]).toBeCloseTo(4 / 9);
112
+ expect(geometry.vertices[bottomEquator]).toBeCloseTo(0.5);
113
+ expect(geometry.vertices[bottomEquator + 1]).toBeCloseTo(-0.5);
114
+ expect(geometry.vertices[bottomEquator + 4]).toBeCloseTo(0);
115
+ expect(geometry.vertices[bottomEquator + 11]).toBeCloseTo(5 / 9);
97
116
  expectUnitNormals(geometry);
98
117
  });
99
118
  });
@@ -126,6 +145,15 @@ describe('createCylinderMeshGeometry', () => {
126
145
  expectUnitNormals(geometry);
127
146
  expectUnitTangents(geometry);
128
147
  });
148
+
149
+ it('keeps cylinder and cone records finite when height is zero', () => {
150
+ const cylinder = createCylinderMeshGeometry(0.5, 0.5, 0, 8);
151
+ const cone = createConeMeshGeometry(0.5, 0, 8);
152
+ expectFiniteCanonicalRecord(cylinder);
153
+ expectFiniteCanonicalRecord(cone);
154
+ expect(validateMeshGeometry(cylinder)).toBe(true);
155
+ expect(validateMeshGeometry(cone)).toBe(true);
156
+ });
129
157
  });
130
158
 
131
159
  describe('createDodecahedronMeshGeometry', () => {
@@ -253,3 +281,72 @@ describe('createTorusMeshGeometry', () => {
253
281
  expectWindingMatchesNormals(geometry);
254
282
  });
255
283
  });
284
+
285
+ describe('mesh builder count inputs', () => {
286
+ const polyhedronVertices: ReadonlyArray<readonly [number, number, number]> = [
287
+ [0, 1, 0],
288
+ [-1, -1, 0],
289
+ [1, -1, 0],
290
+ ];
291
+ const polyhedronFaces: ReadonlyArray<readonly [number, number, number]> = [[0, 1, 2]];
292
+
293
+ it.each([
294
+ ['capsule', () => createCapsuleMeshGeometry(0.5, 1, 3.5, 1.5), () => createCapsuleMeshGeometry(0.5, 1, 3, 1)],
295
+ ['circle', () => createCircleMeshGeometry(0.5, 3.5), () => createCircleMeshGeometry(0.5, 3)],
296
+ ['cone', () => createConeMeshGeometry(0.5, 1, 3.5), () => createConeMeshGeometry(0.5, 1, 3)],
297
+ ['cylinder', () => createCylinderMeshGeometry(0.5, 0.5, 1, 3.5), () => createCylinderMeshGeometry(0.5, 0.5, 1, 3)],
298
+ ['dodecahedron', () => createDodecahedronMeshGeometry(0.5, 1.5), () => createDodecahedronMeshGeometry(0.5, 1)],
299
+ ['icosahedron', () => createIcosahedronMeshGeometry(0.5, 1.5), () => createIcosahedronMeshGeometry(0.5, 1)],
300
+ ['icosphere', () => createIcosphereMeshGeometry(0.5, 1.5), () => createIcosphereMeshGeometry(0.5, 1)],
301
+ ['octahedron', () => createOctahedronMeshGeometry(0.5, 1.5), () => createOctahedronMeshGeometry(0.5, 1)],
302
+ ['plane', () => createPlaneMeshGeometry(1, 1, 1.5, 1.5), () => createPlaneMeshGeometry(1, 1, 1, 1)],
303
+ [
304
+ 'polyhedron',
305
+ () => createPolyhedronMeshGeometry(polyhedronVertices, polyhedronFaces, 0.5, 1.5),
306
+ () => createPolyhedronMeshGeometry(polyhedronVertices, polyhedronFaces, 0.5, 1),
307
+ ],
308
+ ['ring', () => createRingMeshGeometry(0.25, 0.5, 3.5), () => createRingMeshGeometry(0.25, 0.5, 3)],
309
+ ['sphere', () => createSphereMeshGeometry(0.5, 3.5, 2.5), () => createSphereMeshGeometry(0.5, 3, 2)],
310
+ [
311
+ 'torus knot',
312
+ () => createTorusKnotMeshGeometry(0.5, 0.15, 3.5, 3.5),
313
+ () => createTorusKnotMeshGeometry(0.5, 0.15, 3, 3),
314
+ ],
315
+ ['torus', () => createTorusMeshGeometry(0.5, 0.2, 3.5, 3.5), () => createTorusMeshGeometry(0.5, 0.2, 3, 3)],
316
+ ])('floors every fractional %s count and produces a valid mesh', (_name, fractional, floored) => {
317
+ const actual = fractional();
318
+ const expected = floored();
319
+ expect(validateMeshGeometry(actual)).toBe(true);
320
+ expect(getMeshGeometryVertexCount(actual)).toBe(getMeshGeometryVertexCount(expected));
321
+ expect(getMeshGeometryIndexCount(actual)).toBe(getMeshGeometryIndexCount(expected));
322
+ });
323
+
324
+ it.each([
325
+ ['capsule radialSegments', (value: number) => createCapsuleMeshGeometry(0.5, 1, value, 1)],
326
+ ['capsule capSegments', (value: number) => createCapsuleMeshGeometry(0.5, 1, 3, value)],
327
+ ['circle segments', (value: number) => createCircleMeshGeometry(0.5, value)],
328
+ ['cone radialSegments', (value: number) => createConeMeshGeometry(0.5, 1, value)],
329
+ ['cylinder radialSegments', (value: number) => createCylinderMeshGeometry(0.5, 0.5, 1, value)],
330
+ ['dodecahedron detail', (value: number) => createDodecahedronMeshGeometry(0.5, value)],
331
+ ['icosahedron detail', (value: number) => createIcosahedronMeshGeometry(0.5, value)],
332
+ ['icosphere subdivisions', (value: number) => createIcosphereMeshGeometry(0.5, value)],
333
+ ['octahedron detail', (value: number) => createOctahedronMeshGeometry(0.5, value)],
334
+ ['plane widthSegments', (value: number) => createPlaneMeshGeometry(1, 1, value, 1)],
335
+ ['plane depthSegments', (value: number) => createPlaneMeshGeometry(1, 1, 1, value)],
336
+ [
337
+ 'polyhedron detail',
338
+ (value: number) => createPolyhedronMeshGeometry(polyhedronVertices, polyhedronFaces, 0.5, value),
339
+ ],
340
+ ['ring segments', (value: number) => createRingMeshGeometry(0.25, 0.5, value)],
341
+ ['sphere widthSegments', (value: number) => createSphereMeshGeometry(0.5, value, 2)],
342
+ ['sphere heightSegments', (value: number) => createSphereMeshGeometry(0.5, 3, value)],
343
+ ['tetrahedron detail', (value: number) => createTetrahedronMeshGeometry(0.5, value)],
344
+ ['torus knot tubularSegments', (value: number) => createTorusKnotMeshGeometry(0.5, 0.15, value, 3)],
345
+ ['torus knot radialSegments', (value: number) => createTorusKnotMeshGeometry(0.5, 0.15, 3, value)],
346
+ ['torus radialSegments', (value: number) => createTorusMeshGeometry(0.5, 0.2, value, 3)],
347
+ ['torus tubularSegments', (value: number) => createTorusMeshGeometry(0.5, 0.2, 3, value)],
348
+ ])('rejects non-finite %s', (_name, build) => {
349
+ expect(() => build(Number.NaN)).toThrow(RangeError);
350
+ expect(() => build(Number.POSITIVE_INFINITY)).toThrow(RangeError);
351
+ });
352
+ });
@@ -224,6 +224,16 @@ describe('computeMeshGeometryNormals', () => {
224
224
  expect(out.vertices[5]).toBeCloseTo(1);
225
225
  });
226
226
 
227
+ it('bumps the output version after rewriting normals', () => {
228
+ const source = makeTriangle();
229
+ const out = makeTriangle();
230
+ const previousVersion = out.version;
231
+
232
+ computeMeshGeometryNormals(out, source);
233
+
234
+ expect(out.version).toBe(previousVersion + 1);
235
+ });
236
+
227
237
  it('keeps duplicated positions independent when position groups are omitted', () => {
228
238
  const geometry = makeUvSeamFold();
229
239
 
@@ -1,4 +1,4 @@
1
- import { createMatrix4, setMatrix4Identity } from '@flighthq/geometry/contract';
1
+ import { createMatrix4, setMatrix4, setMatrix4Identity } from '@flighthq/geometry/contract';
2
2
  import type { Aabb, VertexAttributeLayout } from '@flighthq/types/contract';
3
3
 
4
4
  import { createMeshGeometry } from './meshGeometry';
@@ -66,6 +66,108 @@ describe('centerMeshGeometry', () => {
66
66
  });
67
67
  });
68
68
 
69
+ describe('mirror and non-uniform scale invariants', () => {
70
+ // ★ THE FIXTURE IS THE POINT. `makeVertex` above is axis-aligned — normal (1,0,0), tangent
71
+ // (0,1,0) — and under scale(2,1,1) the correct tangent transform and the inverse-transpose one
72
+ // produce the SAME vector, so it cannot tell them apart. That is why a tangent transformed by the
73
+ // wrong matrix survived here. These use a diagonal frame in the XY plane, where the two answers
74
+ // differ. Do not "simplify" this fixture back to an axis-aligned one.
75
+ function makeDiagonalFrameVertex() {
76
+ const r = Math.SQRT1_2;
77
+ const vertices = new Float32Array(12);
78
+ vertices[0] = 1;
79
+ vertices[3] = r;
80
+ vertices[4] = r; // normal ( .707, .707, 0)
81
+ vertices[6] = r;
82
+ vertices[7] = -r; // tangent ( .707, -.707, 0)
83
+ vertices[9] = 1; // handedness
84
+ return createMeshGeometry({ layout: CANONICAL_LAYOUT, vertices });
85
+ }
86
+
87
+ function normalDotTangent(geometry: ReturnType<typeof makeDiagonalFrameVertex>) {
88
+ const v = geometry.vertices;
89
+ return v[3] * v[6] + v[4] * v[7] + v[5] * v[8];
90
+ }
91
+
92
+ it('keeps the tangent on the surface under a non-uniform scale', () => {
93
+ // A tangent is a true vector and follows the model matrix; a normal is a covector and follows
94
+ // the inverse-transpose. Transform both with the inverse-transpose and the tangent tilts off
95
+ // the surface — it stops being perpendicular to its own normal, which is what breaks the TBN
96
+ // frame every normal-mapped material reconstructs.
97
+ const geometry = makeDiagonalFrameVertex();
98
+ const matrix = createMatrix4();
99
+ setMatrix4(matrix, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
100
+ transformMeshGeometry(geometry, matrix);
101
+ expect(normalDotTangent(geometry)).toBeCloseTo(0, 5);
102
+ });
103
+
104
+ it('keeps the tangent on the surface under scaleMeshGeometry too', () => {
105
+ const geometry = makeDiagonalFrameVertex();
106
+ scaleMeshGeometry(geometry, 2, 1, 1);
107
+ expect(normalDotTangent(geometry)).toBeCloseTo(0, 5);
108
+ });
109
+
110
+ it('reverses indexed triangle winding and flips handedness when the transform mirrors', () => {
111
+ // A baked mirror leaves no determinant behind for a renderer to detect, so the geometry would
112
+ // upload inside-out under an identity model matrix. The correction has to happen at bake time.
113
+ const vertices = new Float32Array(3 * 12);
114
+ for (let v = 0; v < 3; v++) vertices[v * 12 + 9] = 1; // handedness on every vertex
115
+ const geometry = createMeshGeometry({
116
+ indices: new Uint16Array([0, 1, 2]),
117
+ layout: CANONICAL_LAYOUT,
118
+ vertices,
119
+ });
120
+ scaleMeshGeometry(geometry, -1, 1, 1);
121
+ expect(Array.from(geometry.indices!)).toEqual([0, 2, 1]);
122
+ for (let v = 0; v < 3; v++) expect(geometry.vertices[v * 12 + 9]).toBe(-1);
123
+ });
124
+
125
+ it('reverses non-indexed triangle winding by swapping the records themselves', () => {
126
+ // With no index array the record ORDER is the winding, so the second and third records of each
127
+ // triple exchange places — and they must exchange whole, not just their positions.
128
+ const vertices = new Float32Array(3 * 12);
129
+ for (let v = 0; v < 3; v++) {
130
+ vertices[v * 12] = v; // position.x identifies the record
131
+ vertices[v * 12 + 10] = v; // uv0.u rides along to prove the whole record moved
132
+ }
133
+ const geometry = createMeshGeometry({ layout: CANONICAL_LAYOUT, vertices });
134
+ scaleMeshGeometry(geometry, -1, 1, 1);
135
+ expect([geometry.vertices[0], geometry.vertices[12], geometry.vertices[24]]).toEqual([0, -2, -1]);
136
+ expect([geometry.vertices[10], geometry.vertices[22], geometry.vertices[34]]).toEqual([0, 2, 1]);
137
+ });
138
+
139
+ it('leaves winding and handedness alone when the transform does not mirror', () => {
140
+ const vertices = new Float32Array(3 * 12);
141
+ for (let v = 0; v < 3; v++) vertices[v * 12 + 9] = 1;
142
+ const geometry = createMeshGeometry({
143
+ indices: new Uint16Array([0, 1, 2]),
144
+ layout: CANONICAL_LAYOUT,
145
+ vertices,
146
+ });
147
+ scaleMeshGeometry(geometry, 2, 3, 4);
148
+ expect(Array.from(geometry.indices!)).toEqual([0, 1, 2]);
149
+ for (let v = 0; v < 3; v++) expect(geometry.vertices[v * 12 + 9]).toBe(1);
150
+ });
151
+
152
+ it('flips strip handedness but leaves strip indices untouched', () => {
153
+ // Handedness is per-vertex and topology-independent, so it is corrected here as everywhere.
154
+ // The winding is NOT: a strip shares each vertex between up to three triangles, so a per-triple
155
+ // swap does not describe it, and there is no established strip reversal in this repository to
156
+ // follow. This pins the current, deliberate gap rather than claiming strips are handled.
157
+ const vertices = new Float32Array(4 * 12);
158
+ for (let v = 0; v < 4; v++) vertices[v * 12 + 9] = 1;
159
+ const geometry = createMeshGeometry({
160
+ indices: new Uint16Array([0, 1, 2, 3]),
161
+ layout: CANONICAL_LAYOUT,
162
+ topology: 'triangle-strip',
163
+ vertices,
164
+ });
165
+ scaleMeshGeometry(geometry, -1, 1, 1);
166
+ expect(Array.from(geometry.indices!)).toEqual([0, 1, 2, 3]);
167
+ for (let v = 0; v < 4; v++) expect(geometry.vertices[v * 12 + 9]).toBe(-1);
168
+ });
169
+ });
170
+
69
171
  describe('scaleMeshGeometry', () => {
70
172
  it('scales positions by the given factors', () => {
71
173
  const geo = makeVertex(1, 2, 3);