@flighthq/mesh 0.3.1-next.733.f1845ac → 0.3.1-next.780.12e6944
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":"meshGeometryOperations.d.ts","sourceRoot":"","sources":["../src/meshGeometryOperations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,iCAAiC,EAEjC,yBAAyB,EAE1B,MAAM,0BAA0B,CAAC;AAelC,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,QAAQ,CAAC,iCAAiC,CAAC,GAAG,YAAY,CAgDnH;AAKD,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,MAAM,CAUrF;AAMD,wBAAgB,oCAAoC,CAClD,GAAG,EAAE,yBAAyB,EAC9B,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,EAChC,aAAa,EAAE,MAAM,GACpB,OAAO,CA4BT;
|
|
1
|
+
{"version":3,"file":"meshGeometryOperations.d.ts","sourceRoot":"","sources":["../src/meshGeometryOperations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,iCAAiC,EAEjC,yBAAyB,EAE1B,MAAM,0BAA0B,CAAC;AAelC,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,QAAQ,CAAC,iCAAiC,CAAC,GAAG,YAAY,CAgDnH;AAKD,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,MAAM,CAUrF;AAMD,wBAAgB,oCAAoC,CAClD,GAAG,EAAE,yBAAyB,EAC9B,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,EAChC,aAAa,EAAE,MAAM,GACpB,OAAO,CA4BT;AAWD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,SAAS,QAAQ,CAAC,YAAY,CAAC,EAAE,GAAG,YAAY,GAAG,IAAI,CA4EtG;AAKD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,OAAO,CAgC9E"}
|
|
@@ -105,18 +105,25 @@ export function getMeshGeometryTriangleVertexIndices(out, geometry, triangleInde
|
|
|
105
105
|
return true;
|
|
106
106
|
}
|
|
107
107
|
// Concatenates multiple geometries into a single MeshGeometry. All source geometries must share
|
|
108
|
-
// the same layout (checked by matching stride and attribute count, semantic, and format)
|
|
109
|
-
//
|
|
110
|
-
//
|
|
111
|
-
//
|
|
108
|
+
// the same layout (checked by matching stride and attribute count, semantic, and format) AND the
|
|
109
|
+
// same topology — returns null on either mismatch. Topology is not merely metadata here: the merged
|
|
110
|
+
// result carries ONE topology, so concatenating a line-list into a triangle-list would reinterpret
|
|
111
|
+
// the line mesh's elements as face corners, turning pairs of endpoints into triangles nobody
|
|
112
|
+
// authored. There is no correct single topology for such a merge, which is why it is refused rather
|
|
113
|
+
// than resolved. Index buffers are offset so each source's indices remain valid within the merged
|
|
114
|
+
// vertex stream. Subsets are re-based so each source's draw ranges are individually addressable.
|
|
115
|
+
// Bounds are recomputed. An empty array returns null.
|
|
112
116
|
export function mergeMeshGeometries(geometries) {
|
|
113
117
|
if (geometries.length === 0)
|
|
114
118
|
return null;
|
|
115
119
|
const reference = geometries[0];
|
|
116
120
|
const layout = reference.layout;
|
|
121
|
+
const topology = reference.topology;
|
|
117
122
|
for (let i = 1; i < geometries.length; i++) {
|
|
118
123
|
if (!layoutsMatch(layout, geometries[i].layout))
|
|
119
124
|
return null;
|
|
125
|
+
if (geometries[i].topology !== topology)
|
|
126
|
+
return null;
|
|
120
127
|
}
|
|
121
128
|
const floatsPerVertex = layout.stride / 4;
|
|
122
129
|
let totalVertexFloats = 0;
|
|
@@ -175,7 +182,7 @@ export function mergeMeshGeometries(geometries) {
|
|
|
175
182
|
indices: mergedIndices ?? undefined,
|
|
176
183
|
layout: layout,
|
|
177
184
|
subsets: mergedSubsets,
|
|
178
|
-
topology
|
|
185
|
+
topology,
|
|
179
186
|
vertices: mergedVertices,
|
|
180
187
|
});
|
|
181
188
|
refreshMeshGeometryBounds(merged);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meshGeometryOperations.js","sourceRoot":"","sources":["../src/meshGeometryOperations.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"meshGeometryOperations.js","sourceRoot":"","sources":["../src/meshGeometryOperations.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.
|
|
3
|
+
"version": "0.3.1-next.780.12e6944",
|
|
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.
|
|
42
|
-
"@flighthq/geometry": "0.3.1-next.
|
|
43
|
-
"@flighthq/types": "0.3.1-next.
|
|
41
|
+
"@flighthq/entity": "0.3.1-next.780.12e6944",
|
|
42
|
+
"@flighthq/geometry": "0.3.1-next.780.12e6944",
|
|
43
|
+
"@flighthq/types": "0.3.1-next.780.12e6944"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"typescript": "^5.3.0"
|
|
@@ -139,6 +139,29 @@ describe('mergeMeshGeometries', () => {
|
|
|
139
139
|
const b = createMeshGeometry({ layout: POSITION_ONLY_LAYOUT, vertices: new Float32Array(9) });
|
|
140
140
|
expect(mergeMeshGeometries([a, b])).toBeNull();
|
|
141
141
|
});
|
|
142
|
+
it('returns null on topology mismatch', () => {
|
|
143
|
+
// The merged result carries ONE topology, so concatenating a line-list into a triangle-list
|
|
144
|
+
// would reinterpret pairs of line endpoints as face corners — triangles nobody authored, from
|
|
145
|
+
// a call that reported success. There is no correct single topology for that merge, so it is
|
|
146
|
+
// refused, the same way a layout mismatch is.
|
|
147
|
+
const faces = createQuadMeshGeometry();
|
|
148
|
+
const lines = createMeshGeometry({
|
|
149
|
+
layout: faces.layout,
|
|
150
|
+
topology: 'line-list',
|
|
151
|
+
vertices: new Float32Array(faces.vertices.length),
|
|
152
|
+
});
|
|
153
|
+
expect(mergeMeshGeometries([faces, lines])).toBeNull();
|
|
154
|
+
expect(mergeMeshGeometries([lines, faces])).toBeNull();
|
|
155
|
+
});
|
|
156
|
+
it('merges geometries that share a non-default topology', () => {
|
|
157
|
+
// The check is mismatch, not triangle-list-only: two line meshes still merge.
|
|
158
|
+
const layout = createQuadMeshGeometry().layout;
|
|
159
|
+
const a = createMeshGeometry({ layout, topology: 'line-list', vertices: new Float32Array(24) });
|
|
160
|
+
const b = createMeshGeometry({ layout, topology: 'line-list', vertices: new Float32Array(24) });
|
|
161
|
+
const merged = mergeMeshGeometries([a, b]);
|
|
162
|
+
expect(merged).not.toBeNull();
|
|
163
|
+
expect(merged!.topology).toBe('line-list');
|
|
164
|
+
});
|
|
142
165
|
it('concatenates vertices from two geometries', () => {
|
|
143
166
|
const a = createQuadMeshGeometry();
|
|
144
167
|
const b = createQuadMeshGeometry();
|