@flighthq/mesh 0.3.0-next.906.07cea63 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/meshGeometry.d.ts +1 -0
- package/dist/meshGeometry.d.ts.map +1 -1
- package/dist/meshGeometry.js +14 -1
- package/dist/meshGeometry.js.map +1 -1
- package/dist/meshGeometryBuilders.d.ts.map +1 -1
- package/dist/meshGeometryBuilders.js +91 -6
- package/dist/meshGeometryBuilders.js.map +1 -1
- package/dist/meshGeometryCompute.d.ts.map +1 -1
- package/dist/meshGeometryCompute.js +328 -97
- package/dist/meshGeometryCompute.js.map +1 -1
- package/dist/meshGeometryLayout.d.ts.map +1 -1
- package/dist/meshGeometryLayout.js +8 -1
- package/dist/meshGeometryLayout.js.map +1 -1
- package/package.json +6 -4
- package/src/meshGeometry.test.ts +25 -0
- package/src/meshGeometryCompute.test.ts +191 -3
- package/src/meshGeometryLayout.test.ts +12 -1
|
@@ -4,8 +4,8 @@ import { EntityRuntimeKey } from '@flighthq/types/contract';
|
|
|
4
4
|
// tangent(4) + uv0(2) = 12 floats / 48 bytes, stride read from geometry.layout. These functions
|
|
5
5
|
// derive normals, tangents, and the local-space AABB from `geometry.vertices` (+ `geometry.indices`)
|
|
6
6
|
// and write into `out`. They read every input field they need into locals before writing, so each
|
|
7
|
-
// is safe when `out` aliases `geometry
|
|
8
|
-
//
|
|
7
|
+
// is safe when `out` aliases `geometry`. Normals write back in place; tangents do too unless an
|
|
8
|
+
// indexed UV-frame seam requires complete interleaved vertex records to be duplicated first.
|
|
9
9
|
// Writes the bounding sphere of all vertex positions into `out`. Uses the AABB midpoint as the
|
|
10
10
|
// center (fast, not minimal) and max-distance from that center as the radius. An empty vertex
|
|
11
11
|
// stream yields center = (0,0,0) and a negative radius (empty convention). The radius is always
|
|
@@ -154,6 +154,13 @@ export function computeMeshGeometryNormals(out, geometry) {
|
|
|
154
154
|
const vertexCount = floatsPerVertex > 0 ? Math.floor(vertices.length / floatsPerVertex) : 0;
|
|
155
155
|
const indices = geometry.indices;
|
|
156
156
|
const indexCount = indices ? indices.length : vertexCount;
|
|
157
|
+
const runtime = geometry[EntityRuntimeKey];
|
|
158
|
+
const recordedSmoothingSources = runtime?.tangentSmoothingSources;
|
|
159
|
+
const smoothingSources = recordedSmoothingSources !== null &&
|
|
160
|
+
recordedSmoothingSources !== undefined &&
|
|
161
|
+
recordedSmoothingSources.length === vertexCount
|
|
162
|
+
? recordedSmoothingSources
|
|
163
|
+
: null;
|
|
157
164
|
const accum = new Float64Array(vertexCount * 3);
|
|
158
165
|
for (let t = 0; t + 2 < indexCount; t += 3) {
|
|
159
166
|
const i0 = indices ? indices[t] : t;
|
|
@@ -172,19 +179,14 @@ export function computeMeshGeometryNormals(out, geometry) {
|
|
|
172
179
|
const nx = e1y * e2z - e1z * e2y;
|
|
173
180
|
const ny = e1z * e2x - e1x * e2z;
|
|
174
181
|
const nz = e1x * e2y - e1y * e2x;
|
|
175
|
-
accum[i0
|
|
176
|
-
accum
|
|
177
|
-
accum[
|
|
178
|
-
accum[i1 * 3] += nx;
|
|
179
|
-
accum[i1 * 3 + 1] += ny;
|
|
180
|
-
accum[i1 * 3 + 2] += nz;
|
|
181
|
-
accum[i2 * 3] += nx;
|
|
182
|
-
accum[i2 * 3 + 1] += ny;
|
|
183
|
-
accum[i2 * 3 + 2] += nz;
|
|
182
|
+
accumulateNormal(accum, smoothingSources ? smoothingSources[i0] : i0, nx, ny, nz);
|
|
183
|
+
accumulateNormal(accum, smoothingSources ? smoothingSources[i1] : i1, nx, ny, nz);
|
|
184
|
+
accumulateNormal(accum, smoothingSources ? smoothingSources[i2] : i2, nx, ny, nz);
|
|
184
185
|
}
|
|
185
186
|
const target = out.vertices;
|
|
186
187
|
for (let i = 0; i < vertexCount; i++) {
|
|
187
|
-
|
|
188
|
+
const source = smoothingSources ? smoothingSources[i] : i;
|
|
189
|
+
let nx = accum[source * 3], ny = accum[source * 3 + 1], nz = accum[source * 3 + 2];
|
|
188
190
|
const len = Math.sqrt(nx * nx + ny * ny + nz * nz);
|
|
189
191
|
if (len > 0) {
|
|
190
192
|
nx /= len;
|
|
@@ -197,100 +199,327 @@ export function computeMeshGeometryNormals(out, geometry) {
|
|
|
197
199
|
target[base + 2] = nz;
|
|
198
200
|
}
|
|
199
201
|
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
202
|
+
function accumulateNormal(accumulator, vertex, nx, ny, nz) {
|
|
203
|
+
const base = vertex * 3;
|
|
204
|
+
accumulator[base] += nx;
|
|
205
|
+
accumulator[base + 1] += ny;
|
|
206
|
+
accumulator[base + 2] += nz;
|
|
207
|
+
}
|
|
208
|
+
// Recomputes a tangent basis from positions, normals, and uv0 with Flight-owned, dependency-free
|
|
209
|
+
// vector math. Each corner contributes a normalized tangent weighted by its geometric corner angle,
|
|
210
|
+
// preventing a tiny or UV-stretched triangle from dominating its neighbours. Indexed corners are
|
|
211
|
+
// clustered by handedness and direction: a corner more than 60 degrees from a cluster's running frame
|
|
212
|
+
// starts another record, so the complete interleaved vertex is duplicated and the corner is remapped. This preserves
|
|
213
|
+
// joints0/weights0, colors, and secondary UVs while repairing both mirrored and folded UV seams.
|
|
214
|
+
//
|
|
215
|
+
// The runtime records which generated vertices came from the same authored vertex. A later normal
|
|
216
|
+
// recomputation therefore keeps those tangent-only seams geometrically smooth. Non-indexed streams
|
|
217
|
+
// already have one vertex per corner and require no topology edit. This is still an authoring operation:
|
|
218
|
+
// call it before morph targets or skin bind poses are captured.
|
|
206
219
|
export function computeMeshGeometryTangents(out, geometry) {
|
|
207
|
-
const
|
|
208
|
-
const
|
|
209
|
-
const
|
|
210
|
-
const
|
|
211
|
-
const
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
const i2 = indices ? indices[t + 2] : t + 2;
|
|
218
|
-
const p0 = i0 * floatsPerVertex + POSITION_OFFSET;
|
|
219
|
-
const p1 = i1 * floatsPerVertex + POSITION_OFFSET;
|
|
220
|
-
const p2 = i2 * floatsPerVertex + POSITION_OFFSET;
|
|
221
|
-
const e1x = vertices[p1] - vertices[p0];
|
|
222
|
-
const e1y = vertices[p1 + 1] - vertices[p0 + 1];
|
|
223
|
-
const e1z = vertices[p1 + 2] - vertices[p0 + 2];
|
|
224
|
-
const e2x = vertices[p2] - vertices[p0];
|
|
225
|
-
const e2y = vertices[p2 + 1] - vertices[p0 + 1];
|
|
226
|
-
const e2z = vertices[p2 + 2] - vertices[p0 + 2];
|
|
227
|
-
const u0 = i0 * floatsPerVertex + UV0_OFFSET;
|
|
228
|
-
const u1 = i1 * floatsPerVertex + UV0_OFFSET;
|
|
229
|
-
const u2 = i2 * floatsPerVertex + UV0_OFFSET;
|
|
230
|
-
const du1 = vertices[u1] - vertices[u0];
|
|
231
|
-
const dv1 = vertices[u1 + 1] - vertices[u0 + 1];
|
|
232
|
-
const du2 = vertices[u2] - vertices[u0];
|
|
233
|
-
const dv2 = vertices[u2 + 1] - vertices[u0 + 1];
|
|
234
|
-
const det = du1 * dv2 - du2 * dv1;
|
|
235
|
-
const r = det !== 0 ? 1 / det : 0;
|
|
236
|
-
const tx = (dv2 * e1x - dv1 * e2x) * r;
|
|
237
|
-
const ty = (dv2 * e1y - dv1 * e2y) * r;
|
|
238
|
-
const tz = (dv2 * e1z - dv1 * e2z) * r;
|
|
239
|
-
const bx = (du1 * e2x - du2 * e1x) * r;
|
|
240
|
-
const by = (du1 * e2y - du2 * e1y) * r;
|
|
241
|
-
const bz = (du1 * e2z - du2 * e1z) * r;
|
|
242
|
-
tan[i0 * 3] += tx;
|
|
243
|
-
tan[i0 * 3 + 1] += ty;
|
|
244
|
-
tan[i0 * 3 + 2] += tz;
|
|
245
|
-
tan[i1 * 3] += tx;
|
|
246
|
-
tan[i1 * 3 + 1] += ty;
|
|
247
|
-
tan[i1 * 3 + 2] += tz;
|
|
248
|
-
tan[i2 * 3] += tx;
|
|
249
|
-
tan[i2 * 3 + 1] += ty;
|
|
250
|
-
tan[i2 * 3 + 2] += tz;
|
|
251
|
-
bitan[i0 * 3] += bx;
|
|
252
|
-
bitan[i0 * 3 + 1] += by;
|
|
253
|
-
bitan[i0 * 3 + 2] += bz;
|
|
254
|
-
bitan[i1 * 3] += bx;
|
|
255
|
-
bitan[i1 * 3 + 1] += by;
|
|
256
|
-
bitan[i1 * 3 + 2] += bz;
|
|
257
|
-
bitan[i2 * 3] += bx;
|
|
258
|
-
bitan[i2 * 3 + 1] += by;
|
|
259
|
-
bitan[i2 * 3 + 2] += bz;
|
|
220
|
+
const sourceVertices = geometry.vertices;
|
|
221
|
+
const sourceStride = geometry.layout.stride / 4;
|
|
222
|
+
const sourceVertexCount = sourceStride > 0 ? Math.floor(sourceVertices.length / sourceStride) : 0;
|
|
223
|
+
const sourceIndices = geometry.indices;
|
|
224
|
+
const targetStride = out.layout.stride / 4;
|
|
225
|
+
if (sourceIndices === null) {
|
|
226
|
+
computeNonIndexedTangents(out.vertices, targetStride, sourceVertices, sourceStride, sourceVertexCount);
|
|
227
|
+
copyTangentSmoothingSources(out, geometry, sourceVertexCount);
|
|
228
|
+
out.version++;
|
|
229
|
+
return;
|
|
260
230
|
}
|
|
261
|
-
const
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
231
|
+
const elementCount = sourceIndices.length;
|
|
232
|
+
const triangleElementCount = elementCount - (elementCount % 3);
|
|
233
|
+
const primaryClusters = new Int32Array(sourceVertexCount);
|
|
234
|
+
primaryClusters.fill(-1);
|
|
235
|
+
const clusterHeads = new Int32Array(sourceVertexCount);
|
|
236
|
+
clusterHeads.fill(-1);
|
|
237
|
+
const clusterNext = new Int32Array(triangleElementCount);
|
|
238
|
+
clusterNext.fill(-1);
|
|
239
|
+
const clusterSources = new Uint32Array(triangleElementCount);
|
|
240
|
+
const clusterSigns = new Int8Array(triangleElementCount);
|
|
241
|
+
const clusterTangents = new Float64Array(triangleElementCount * 3);
|
|
242
|
+
const elementClusters = new Uint32Array(triangleElementCount);
|
|
243
|
+
let clusterCount = 0;
|
|
244
|
+
let splitCount = 0;
|
|
245
|
+
for (let triangle = 0; triangle < triangleElementCount; triangle += 3) {
|
|
246
|
+
const i0 = sourceIndices[triangle];
|
|
247
|
+
const i1 = sourceIndices[triangle + 1];
|
|
248
|
+
const i2 = sourceIndices[triangle + 2];
|
|
249
|
+
const p0 = i0 * sourceStride + POSITION_OFFSET;
|
|
250
|
+
const p1 = i1 * sourceStride + POSITION_OFFSET;
|
|
251
|
+
const p2 = i2 * sourceStride + POSITION_OFFSET;
|
|
252
|
+
const e1x = sourceVertices[p1] - sourceVertices[p0];
|
|
253
|
+
const e1y = sourceVertices[p1 + 1] - sourceVertices[p0 + 1];
|
|
254
|
+
const e1z = sourceVertices[p1 + 2] - sourceVertices[p0 + 2];
|
|
255
|
+
const e2x = sourceVertices[p2] - sourceVertices[p0];
|
|
256
|
+
const e2y = sourceVertices[p2 + 1] - sourceVertices[p0 + 1];
|
|
257
|
+
const e2z = sourceVertices[p2 + 2] - sourceVertices[p0 + 2];
|
|
258
|
+
const u0 = i0 * sourceStride + UV0_OFFSET;
|
|
259
|
+
const u1 = i1 * sourceStride + UV0_OFFSET;
|
|
260
|
+
const u2 = i2 * sourceStride + UV0_OFFSET;
|
|
261
|
+
const du1 = sourceVertices[u1] - sourceVertices[u0];
|
|
262
|
+
const dv1 = sourceVertices[u1 + 1] - sourceVertices[u0 + 1];
|
|
263
|
+
const du2 = sourceVertices[u2] - sourceVertices[u0];
|
|
264
|
+
const dv2 = sourceVertices[u2 + 1] - sourceVertices[u0 + 1];
|
|
265
|
+
const determinant = du1 * dv2 - du2 * dv1;
|
|
266
|
+
const reciprocal = determinant !== 0 ? 1 / determinant : 0;
|
|
267
|
+
const faceTx = (dv2 * e1x - dv1 * e2x) * reciprocal;
|
|
268
|
+
const faceTy = (dv2 * e1y - dv1 * e2y) * reciprocal;
|
|
269
|
+
const faceTz = (dv2 * e1z - dv1 * e2z) * reciprocal;
|
|
270
|
+
const faceBx = (du1 * e2x - du2 * e1x) * reciprocal;
|
|
271
|
+
const faceBy = (du1 * e2y - du2 * e1y) * reciprocal;
|
|
272
|
+
const faceBz = (du1 * e2z - du2 * e1z) * reciprocal;
|
|
273
|
+
for (let corner = 0; corner < 3; corner++) {
|
|
274
|
+
const element = triangle + corner;
|
|
275
|
+
const vertex = sourceIndices[element];
|
|
276
|
+
const normal = vertex * sourceStride + NORMAL_OFFSET;
|
|
277
|
+
const nx = sourceVertices[normal];
|
|
278
|
+
const ny = sourceVertices[normal + 1];
|
|
279
|
+
const nz = sourceVertices[normal + 2];
|
|
280
|
+
const normalDot = nx * faceTx + ny * faceTy + nz * faceTz;
|
|
281
|
+
let tx = faceTx - nx * normalDot;
|
|
282
|
+
let ty = faceTy - ny * normalDot;
|
|
283
|
+
let tz = faceTz - nz * normalDot;
|
|
284
|
+
const tangentLength = Math.sqrt(tx * tx + ty * ty + tz * tz);
|
|
285
|
+
let sign = 0;
|
|
286
|
+
if (tangentLength > 0) {
|
|
287
|
+
tx /= tangentLength;
|
|
288
|
+
ty /= tangentLength;
|
|
289
|
+
tz /= tangentLength;
|
|
290
|
+
const cx = ny * tz - nz * ty;
|
|
291
|
+
const cy = nz * tx - nx * tz;
|
|
292
|
+
const cz = nx * ty - ny * tx;
|
|
293
|
+
sign = cx * faceBx + cy * faceBy + cz * faceBz < 0 ? -1 : 1;
|
|
294
|
+
}
|
|
295
|
+
let cluster = clusterHeads[vertex];
|
|
296
|
+
let compatibleCluster = -1;
|
|
297
|
+
while (cluster !== -1) {
|
|
298
|
+
const clusterSign = clusterSigns[cluster];
|
|
299
|
+
const tangent = cluster * 3;
|
|
300
|
+
const clusterLength = Math.sqrt(clusterTangents[tangent] * clusterTangents[tangent] +
|
|
301
|
+
clusterTangents[tangent + 1] * clusterTangents[tangent + 1] +
|
|
302
|
+
clusterTangents[tangent + 2] * clusterTangents[tangent + 2]);
|
|
303
|
+
if (tangentLength === 0 ||
|
|
304
|
+
clusterLength === 0 ||
|
|
305
|
+
(clusterSign === sign &&
|
|
306
|
+
(tx * clusterTangents[tangent] + ty * clusterTangents[tangent + 1] + tz * clusterTangents[tangent + 2]) /
|
|
307
|
+
clusterLength >=
|
|
308
|
+
MIN_TANGENT_CLUSTER_DOT)) {
|
|
309
|
+
compatibleCluster = cluster;
|
|
310
|
+
break;
|
|
311
|
+
}
|
|
312
|
+
cluster = clusterNext[cluster];
|
|
313
|
+
}
|
|
314
|
+
if (compatibleCluster === -1) {
|
|
315
|
+
compatibleCluster = clusterCount++;
|
|
316
|
+
clusterSources[compatibleCluster] = vertex;
|
|
317
|
+
clusterSigns[compatibleCluster] = sign;
|
|
318
|
+
clusterNext[compatibleCluster] = clusterHeads[vertex];
|
|
319
|
+
clusterHeads[vertex] = compatibleCluster;
|
|
320
|
+
if (primaryClusters[vertex] === -1)
|
|
321
|
+
primaryClusters[vertex] = compatibleCluster;
|
|
322
|
+
else
|
|
323
|
+
splitCount++;
|
|
324
|
+
}
|
|
325
|
+
else if (clusterSigns[compatibleCluster] === 0 && sign !== 0) {
|
|
326
|
+
clusterSigns[compatibleCluster] = sign;
|
|
327
|
+
}
|
|
328
|
+
elementClusters[element] = compatibleCluster;
|
|
329
|
+
if (tangentLength > 0) {
|
|
330
|
+
const other1 = sourceIndices[triangle + ((corner + 1) % 3)];
|
|
331
|
+
const other2 = sourceIndices[triangle + ((corner + 2) % 3)];
|
|
332
|
+
const weight = getMeshCornerAngle(sourceVertices, sourceStride, vertex, other1, other2);
|
|
333
|
+
const tangent = compatibleCluster * 3;
|
|
334
|
+
clusterTangents[tangent] += tx * weight;
|
|
335
|
+
clusterTangents[tangent + 1] += ty * weight;
|
|
336
|
+
clusterTangents[tangent + 2] += tz * weight;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
const outputVertexCount = sourceVertexCount + splitCount;
|
|
341
|
+
const clusterOutputs = new Uint32Array(clusterCount);
|
|
342
|
+
let targetVertices = out.vertices;
|
|
343
|
+
if (splitCount > 0) {
|
|
344
|
+
const expanded = new Float32Array(outputVertexCount * targetStride);
|
|
345
|
+
expanded.set(targetVertices.subarray(0, sourceVertexCount * targetStride));
|
|
346
|
+
let nextVertex = sourceVertexCount;
|
|
347
|
+
for (let cluster = 0; cluster < clusterCount; cluster++) {
|
|
348
|
+
const source = clusterSources[cluster];
|
|
349
|
+
if (primaryClusters[source] === cluster) {
|
|
350
|
+
clusterOutputs[cluster] = source;
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
const output = nextVertex++;
|
|
354
|
+
clusterOutputs[cluster] = output;
|
|
355
|
+
const sourceOffset = source * targetStride;
|
|
356
|
+
expanded.set(targetVertices.subarray(sourceOffset, sourceOffset + targetStride), output * targetStride);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
targetVertices = expanded;
|
|
360
|
+
out.vertices = expanded;
|
|
361
|
+
const needsUint32 = sourceIndices instanceof Uint32Array || out.indices instanceof Uint32Array || outputVertexCount > UINT16_MAX;
|
|
362
|
+
const remappedIndices = needsUint32
|
|
363
|
+
? new Uint32Array(elementCount)
|
|
364
|
+
: new Uint16Array(elementCount);
|
|
365
|
+
for (let element = 0; element < triangleElementCount; element++) {
|
|
366
|
+
remappedIndices[element] = clusterOutputs[elementClusters[element]];
|
|
367
|
+
}
|
|
368
|
+
for (let element = triangleElementCount; element < elementCount; element++) {
|
|
369
|
+
remappedIndices[element] = sourceIndices[element];
|
|
370
|
+
}
|
|
371
|
+
out.indices = remappedIndices;
|
|
372
|
+
recordTangentSmoothingSources(out, geometry, clusterSources, clusterOutputs, clusterCount, sourceVertexCount, outputVertexCount);
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
for (let cluster = 0; cluster < clusterCount; cluster++)
|
|
376
|
+
clusterOutputs[cluster] = clusterSources[cluster];
|
|
377
|
+
copyTangentSmoothingSources(out, geometry, sourceVertexCount);
|
|
378
|
+
}
|
|
379
|
+
for (let cluster = 0; cluster < clusterCount; cluster++) {
|
|
380
|
+
const tangent = cluster * 3;
|
|
381
|
+
writeMeshTangent(targetVertices, targetStride, clusterOutputs[cluster], clusterTangents[tangent], clusterTangents[tangent + 1], clusterTangents[tangent + 2], clusterSigns[cluster] < 0 ? -1 : 1);
|
|
382
|
+
}
|
|
383
|
+
for (let vertex = 0; vertex < sourceVertexCount; vertex++) {
|
|
384
|
+
if (primaryClusters[vertex] === -1)
|
|
385
|
+
writeMeshTangent(targetVertices, targetStride, vertex, 0, 0, 0, 1);
|
|
386
|
+
}
|
|
387
|
+
out.version++;
|
|
388
|
+
}
|
|
389
|
+
function computeNonIndexedTangents(target, targetStride, source, sourceStride, vertexCount) {
|
|
390
|
+
for (let triangle = 0; triangle + 2 < vertexCount; triangle += 3) {
|
|
391
|
+
const p0 = triangle * sourceStride + POSITION_OFFSET;
|
|
392
|
+
const p1 = (triangle + 1) * sourceStride + POSITION_OFFSET;
|
|
393
|
+
const p2 = (triangle + 2) * sourceStride + POSITION_OFFSET;
|
|
394
|
+
const e1x = source[p1] - source[p0];
|
|
395
|
+
const e1y = source[p1 + 1] - source[p0 + 1];
|
|
396
|
+
const e1z = source[p1 + 2] - source[p0 + 2];
|
|
397
|
+
const e2x = source[p2] - source[p0];
|
|
398
|
+
const e2y = source[p2 + 1] - source[p0 + 1];
|
|
399
|
+
const e2z = source[p2 + 2] - source[p0 + 2];
|
|
400
|
+
const u0 = triangle * sourceStride + UV0_OFFSET;
|
|
401
|
+
const u1 = (triangle + 1) * sourceStride + UV0_OFFSET;
|
|
402
|
+
const u2 = (triangle + 2) * sourceStride + UV0_OFFSET;
|
|
403
|
+
const du1 = source[u1] - source[u0];
|
|
404
|
+
const dv1 = source[u1 + 1] - source[u0 + 1];
|
|
405
|
+
const du2 = source[u2] - source[u0];
|
|
406
|
+
const dv2 = source[u2 + 1] - source[u0 + 1];
|
|
407
|
+
const determinant = du1 * dv2 - du2 * dv1;
|
|
408
|
+
const reciprocal = determinant !== 0 ? 1 / determinant : 0;
|
|
409
|
+
const tx = (dv2 * e1x - dv1 * e2x) * reciprocal;
|
|
410
|
+
const ty = (dv2 * e1y - dv1 * e2y) * reciprocal;
|
|
411
|
+
const tz = (dv2 * e1z - dv1 * e2z) * reciprocal;
|
|
412
|
+
const bx = (du1 * e2x - du2 * e1x) * reciprocal;
|
|
413
|
+
const by = (du1 * e2y - du2 * e1y) * reciprocal;
|
|
414
|
+
const bz = (du1 * e2z - du2 * e1z) * reciprocal;
|
|
415
|
+
for (let corner = 0; corner < 3; corner++) {
|
|
416
|
+
const vertex = triangle + corner;
|
|
417
|
+
const normal = vertex * sourceStride + NORMAL_OFFSET;
|
|
418
|
+
const nx = source[normal];
|
|
419
|
+
const ny = source[normal + 1];
|
|
420
|
+
const nz = source[normal + 2];
|
|
421
|
+
const normalDot = nx * tx + ny * ty + nz * tz;
|
|
422
|
+
const tangentX = tx - nx * normalDot;
|
|
423
|
+
const tangentY = ty - ny * normalDot;
|
|
424
|
+
const tangentZ = tz - nz * normalDot;
|
|
425
|
+
const cx = ny * tangentZ - nz * tangentY;
|
|
426
|
+
const cy = nz * tangentX - nx * tangentZ;
|
|
427
|
+
const cz = nx * tangentY - ny * tangentX;
|
|
428
|
+
const sign = cx * bx + cy * by + cz * bz < 0 ? -1 : 1;
|
|
429
|
+
writeMeshTangent(target, targetStride, vertex, tangentX, tangentY, tangentZ, sign);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
for (let vertex = vertexCount - (vertexCount % 3); vertex < vertexCount; vertex++) {
|
|
433
|
+
writeMeshTangent(target, targetStride, vertex, 0, 0, 0, 1);
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
function getMeshCornerAngle(vertices, stride, center, other1, other2) {
|
|
437
|
+
const centerOffset = center * stride + POSITION_OFFSET;
|
|
438
|
+
const other1Offset = other1 * stride + POSITION_OFFSET;
|
|
439
|
+
const other2Offset = other2 * stride + POSITION_OFFSET;
|
|
440
|
+
const ax = vertices[other1Offset] - vertices[centerOffset];
|
|
441
|
+
const ay = vertices[other1Offset + 1] - vertices[centerOffset + 1];
|
|
442
|
+
const az = vertices[other1Offset + 2] - vertices[centerOffset + 2];
|
|
443
|
+
const bx = vertices[other2Offset] - vertices[centerOffset];
|
|
444
|
+
const by = vertices[other2Offset + 1] - vertices[centerOffset + 1];
|
|
445
|
+
const bz = vertices[other2Offset + 2] - vertices[centerOffset + 2];
|
|
446
|
+
const denominator = Math.sqrt((ax * ax + ay * ay + az * az) * (bx * bx + by * by + bz * bz));
|
|
447
|
+
if (denominator === 0)
|
|
448
|
+
return 1;
|
|
449
|
+
const cosine = (ax * bx + ay * by + az * bz) / denominator;
|
|
450
|
+
return Math.acos(Math.max(-1, Math.min(1, cosine)));
|
|
451
|
+
}
|
|
452
|
+
function writeMeshTangent(vertices, stride, vertex, sourceX, sourceY, sourceZ, sign) {
|
|
453
|
+
const normal = vertex * stride + NORMAL_OFFSET;
|
|
454
|
+
const nx = vertices[normal];
|
|
455
|
+
const ny = vertices[normal + 1];
|
|
456
|
+
const nz = vertices[normal + 2];
|
|
457
|
+
const normalDot = nx * sourceX + ny * sourceY + nz * sourceZ;
|
|
458
|
+
let tx = sourceX - nx * normalDot;
|
|
459
|
+
let ty = sourceY - ny * normalDot;
|
|
460
|
+
let tz = sourceZ - nz * normalDot;
|
|
461
|
+
let length = Math.sqrt(tx * tx + ty * ty + tz * tz);
|
|
462
|
+
if (length === 0) {
|
|
463
|
+
if (Math.abs(nx) <= Math.abs(ny) && Math.abs(nx) <= Math.abs(nz)) {
|
|
464
|
+
tx = 0;
|
|
465
|
+
ty = nz;
|
|
466
|
+
tz = -ny;
|
|
467
|
+
}
|
|
468
|
+
else if (Math.abs(ny) <= Math.abs(nz)) {
|
|
469
|
+
tx = -nz;
|
|
470
|
+
ty = 0;
|
|
471
|
+
tz = nx;
|
|
276
472
|
}
|
|
277
473
|
else {
|
|
278
|
-
|
|
474
|
+
tx = ny;
|
|
475
|
+
ty = -nx;
|
|
476
|
+
tz = 0;
|
|
477
|
+
}
|
|
478
|
+
length = Math.sqrt(tx * tx + ty * ty + tz * tz);
|
|
479
|
+
if (length === 0) {
|
|
279
480
|
tx = 1;
|
|
280
481
|
ty = 0;
|
|
281
482
|
tz = 0;
|
|
483
|
+
length = 1;
|
|
282
484
|
}
|
|
283
|
-
// Handedness: w = sign(dot(cross(n, t), accumulated bitangent)).
|
|
284
|
-
const cx = ny * tz - nz * ty;
|
|
285
|
-
const cy = nz * tx - nx * tz;
|
|
286
|
-
const cz = nx * ty - ny * tx;
|
|
287
|
-
const w = cx * bitan[i * 3] + cy * bitan[i * 3 + 1] + cz * bitan[i * 3 + 2] < 0 ? -1 : 1;
|
|
288
|
-
const base = i * floatsPerVertex + TANGENT_OFFSET;
|
|
289
|
-
target[base] = tx;
|
|
290
|
-
target[base + 1] = ty;
|
|
291
|
-
target[base + 2] = tz;
|
|
292
|
-
target[base + 3] = w;
|
|
293
485
|
}
|
|
486
|
+
const tangent = vertex * stride + TANGENT_OFFSET;
|
|
487
|
+
vertices[tangent] = tx / length;
|
|
488
|
+
vertices[tangent + 1] = ty / length;
|
|
489
|
+
vertices[tangent + 2] = tz / length;
|
|
490
|
+
vertices[tangent + 3] = sign;
|
|
491
|
+
}
|
|
492
|
+
function copyTangentSmoothingSources(out, geometry, vertexCount) {
|
|
493
|
+
if (out === geometry)
|
|
494
|
+
return;
|
|
495
|
+
const sourceRuntime = geometry[EntityRuntimeKey];
|
|
496
|
+
const targetRuntime = out[EntityRuntimeKey];
|
|
497
|
+
const sources = sourceRuntime?.tangentSmoothingSources;
|
|
498
|
+
if (targetRuntime !== undefined) {
|
|
499
|
+
targetRuntime.tangentSmoothingSources =
|
|
500
|
+
sources !== null && sources !== undefined && sources.length === vertexCount ? sources.slice() : null;
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
function recordTangentSmoothingSources(out, geometry, clusterSources, clusterOutputs, clusterCount, sourceVertexCount, outputVertexCount) {
|
|
504
|
+
const sourceRuntime = geometry[EntityRuntimeKey];
|
|
505
|
+
const targetRuntime = out[EntityRuntimeKey];
|
|
506
|
+
if (targetRuntime === undefined)
|
|
507
|
+
return;
|
|
508
|
+
const previous = sourceRuntime?.tangentSmoothingSources;
|
|
509
|
+
const sources = new Uint32Array(outputVertexCount);
|
|
510
|
+
for (let vertex = 0; vertex < sourceVertexCount; vertex++) {
|
|
511
|
+
sources[vertex] =
|
|
512
|
+
previous !== null && previous !== undefined && previous.length === sourceVertexCount ? previous[vertex] : vertex;
|
|
513
|
+
}
|
|
514
|
+
for (let cluster = 0; cluster < clusterCount; cluster++) {
|
|
515
|
+
const output = clusterOutputs[cluster];
|
|
516
|
+
if (output >= sourceVertexCount)
|
|
517
|
+
sources[output] = sources[clusterSources[cluster]];
|
|
518
|
+
}
|
|
519
|
+
targetRuntime.tangentSmoothingSources = sources;
|
|
520
|
+
targetRuntime.skinBindPose = null;
|
|
521
|
+
targetRuntime.morphBindPose = null;
|
|
522
|
+
targetRuntime.morphBlendedWeights = null;
|
|
294
523
|
}
|
|
295
524
|
// Returns the geometry's cached local bounds, recomputing them first if a vertex edit has invalidated
|
|
296
525
|
// them. THIS IS THE ONLY CORRECT WAY TO READ BOUNDS: `geometry.bounds` is a dirty-gated cache, so a
|
|
@@ -335,4 +564,6 @@ const NORMAL_OFFSET = 3;
|
|
|
335
564
|
const POSITION_OFFSET = 0;
|
|
336
565
|
const TANGENT_OFFSET = 6;
|
|
337
566
|
const UV0_OFFSET = 10;
|
|
567
|
+
const MIN_TANGENT_CLUSTER_DOT = 0.5;
|
|
568
|
+
const UINT16_MAX = 65_535;
|
|
338
569
|
//# sourceMappingURL=meshGeometryCompute.js.map
|
|
@@ -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":"meshGeometryLayout.d.ts","sourceRoot":"","sources":["../src/meshGeometryLayout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"meshGeometryLayout.d.ts","sourceRoot":"","sources":["../src/meshGeometryLayout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAuB,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAezG,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC9B,YAAY,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAC5C,YAAY,CAqEd;AAsFD,eAAO,MAAM,8BAA8B,EAAE,qBAQ5C,CAAC;AAUF,eAAO,MAAM,sCAAsC,EAAE,qBAUpD,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { EntityRuntimeKey } from '@flighthq/types/contract';
|
|
1
2
|
import { createMeshGeometry } from './meshGeometry';
|
|
2
3
|
// Re-packs a geometry's interleaved vertex stream into a new layout. Attributes present in both
|
|
3
4
|
// the source layout and `targetLayout` are copied by semantic into the corresponding slot of the
|
|
@@ -49,13 +50,19 @@ export function convertMeshGeometryLayout(source, targetLayout) {
|
|
|
49
50
|
}
|
|
50
51
|
}
|
|
51
52
|
}
|
|
52
|
-
|
|
53
|
+
const converted = createMeshGeometry({
|
|
53
54
|
indices: source.indices ?? undefined,
|
|
54
55
|
layout: targetLayout,
|
|
55
56
|
subsets: source.subsets,
|
|
56
57
|
topology: source.topology,
|
|
57
58
|
vertices: dstVertices,
|
|
58
59
|
});
|
|
60
|
+
const sourceRuntime = source[EntityRuntimeKey];
|
|
61
|
+
const smoothingSources = sourceRuntime?.tangentSmoothingSources;
|
|
62
|
+
if (smoothingSources !== null && smoothingSources !== undefined) {
|
|
63
|
+
converted[EntityRuntimeKey].tangentSmoothingSources = smoothingSources.slice();
|
|
64
|
+
}
|
|
65
|
+
return converted;
|
|
59
66
|
}
|
|
60
67
|
function getVertexFormatByteLength(format) {
|
|
61
68
|
switch (format) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meshGeometryLayout.js","sourceRoot":"","sources":["../src/meshGeometryLayout.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"meshGeometryLayout.js","sourceRoot":"","sources":["../src/meshGeometryLayout.ts"],"names":[],"mappings":"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"}
|