From ea33e061dd31a2a38dce51f373eb10b975ae7983 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 5 Feb 2026 10:48:52 +0000 Subject: [PATCH 1/3] Initial plan From 4ea012d444e7e4f69b58395405f73ee5faabc009 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 5 Feb 2026 10:54:25 +0000 Subject: [PATCH 2/3] Pass processedGeometries to LOD child tiles to maintain deduplication Co-authored-by: bertt <538812+bertt@users.noreply.github.com> --- src/b3dm.tileset/QuadtreeTiler.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/b3dm.tileset/QuadtreeTiler.cs b/src/b3dm.tileset/QuadtreeTiler.cs index 95a0c6cb..a7e07fdc 100644 --- a/src/b3dm.tileset/QuadtreeTiler.cs +++ b/src/b3dm.tileset/QuadtreeTiler.cs @@ -131,7 +131,7 @@ private HashSet CreateTileForLargestGeometries(BoundingBox bbox, Tile ti var outputPath = $"{outputFolder}{Path.AltDirectorySeparatorChar}{file}"; TileCreationHelper.WriteTileIfNeeded(geometriesToProcess, translation, stylingSettings, copyright, createGltf, skipCreateTiles, outputPath, file); - ProcessLodLevels(bbox, tile, lod, createGltf, keepProjection); + ProcessLodLevels(bbox, tile, lod, createGltf, keepProjection, localProcessedGeometries); // todo: check the updateTileBoundingBox if (!useImplicitTiling) { UpdateTileBoundingBox(tile, tileHashes, where, keepProjection); @@ -175,7 +175,7 @@ private void CreateTile(BoundingBox bbox, Tile tile, List tiles, string wh var outputPath = $"{outputFolder}{Path.AltDirectorySeparatorChar}{file}"; TileCreationHelper.WriteTileIfNeeded(geometries, translation, stylingSettings, copyright, createGltf, skipCreateTiles, outputPath, file); - ProcessLodLevels(bbox, tile, lod, createGltf, keepProjection); + ProcessLodLevels(bbox, tile, lod, createGltf, keepProjection, processedGeometries); if (!useImplicitTiling) { UpdateTileBoundingBox(tile, tileHashes, where, keepProjection); } @@ -188,7 +188,7 @@ private void CreateTile(BoundingBox bbox, Tile tile, List tiles, string wh tiles.Add(tile); } - private void ProcessLodLevels(BoundingBox bbox, Tile tile, int lod, bool createGltf, bool keepProjection) + private void ProcessLodLevels(BoundingBox bbox, Tile tile, int lod, bool createGltf, bool keepProjection, HashSet processedGeometries) { if (inputTable.LodColumn != String.Empty && lod < lods.Max()) { // take the next lod @@ -198,7 +198,7 @@ private void ProcessLodLevels(BoundingBox bbox, Tile tile, int lod, bool createG // make a copy of the tile var t2 = new Tile(tile.Z, tile.X, tile.Y); t2.BoundingBox = tile.BoundingBox; - var lodNextTiles = GenerateTiles(bbox, t2, new List(), nextLod, createGltf, keepProjection); + var lodNextTiles = GenerateTiles(bbox, t2, new List(), nextLod, createGltf, keepProjection, processedGeometries); tile.Children = lodNextTiles; } } From 48aa3076e7a4193757709897448f5d9eb69ff0cc Mon Sep 17 00:00:00 2001 From: Bert Temme Date: Thu, 5 Feb 2026 12:01:54 +0100 Subject: [PATCH 3/3] Update QuadtreeTiler.cs --- src/b3dm.tileset/QuadtreeTiler.cs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/b3dm.tileset/QuadtreeTiler.cs b/src/b3dm.tileset/QuadtreeTiler.cs index 64897d8b..1862d115 100644 --- a/src/b3dm.tileset/QuadtreeTiler.cs +++ b/src/b3dm.tileset/QuadtreeTiler.cs @@ -131,12 +131,7 @@ private HashSet CreateTileForLargestGeometries(BoundingBox bbox, Tile ti var outputPath = $"{outputFolder}{Path.AltDirectorySeparatorChar}{file}"; TileCreationHelper.WriteTileIfNeeded(geometriesToProcess, translation, stylingSettings, copyright, createGltf, skipCreateTiles, outputPath, file); -<<<<<<< copilot/sub-pr-244-again ProcessLodLevels(bbox, tile, lod, createGltf, keepProjection, localProcessedGeometries); - // todo: check the updateTileBoundingBox -======= - ProcessLodLevels(bbox, tile, lod, createGltf, keepProjection); ->>>>>>> md5_implementation if (!useImplicitTiling) { UpdateTileBoundingBox(tile, tileHashes, where, keepProjection); }