Skip to content

Commit

Permalink
Merge pull request #205 from Geodan/fix_skip_create_tiles_option
Browse files Browse the repository at this point in the history
fix skip create tiles option
  • Loading branch information
bertt authored Aug 28, 2024
2 parents d8325b9 + ab0d719 commit f0061b8
Showing 1 changed file with 33 additions and 30 deletions.
63 changes: 33 additions & 30 deletions src/b3dm.tileset/QuadtreeTiler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -104,41 +104,44 @@ public List<Tile> GenerateTiles(BoundingBox bbox, Tile tile, List<Tile> tiles, i

byte[] bytes = null;

if (!skipCreateTiles) {
var geometries = GeometryRepository.GetGeometrySubset(conn, table, geometryColumn, tile.BoundingBox, source_epsg, target_srs, colorColumn, attributesColumn, where, radiusColumn);
// var scale = new double[] { 1, 1, 1 };
if (geometries.Count > 0) {

var geometries = GeometryRepository.GetGeometrySubset(conn, table, geometryColumn, tile.BoundingBox, source_epsg, target_srs, colorColumn, attributesColumn, where, radiusColumn);
// var scale = new double[] { 1, 1, 1 };
bytes = TileWriter.ToTile(geometries, translation, copyright: copyright, addOutlines: addOutlines, defaultColor: defaultColor, defaultMetallicRoughness: defaultMetallicRoughness, doubleSided: doubleSided, defaultAlphaMode: defaultAlphaMode, createGltf: createGltf);
if (bytes != null) {

tile.Lod = lod;
tile.Lod = lod;

if (!skipCreateTiles) {
bytes = TileWriter.ToTile(geometries, translation, copyright: copyright, addOutlines: addOutlines, defaultColor: defaultColor, defaultMetallicRoughness: defaultMetallicRoughness, doubleSided: doubleSided, defaultAlphaMode: defaultAlphaMode, createGltf: createGltf);
File.WriteAllBytes($"{outputFolder}{Path.AltDirectorySeparatorChar}{file}", bytes);

if (lodColumn != String.Empty) {
if (lod < lods.Max()) {
// take the next lod
var currentIndex = lods.FindIndex(p => p == lod);
var nextIndex = currentIndex + 1;
var nextLod = lods[nextIndex];
// 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<Tile>(), nextLod, addOutlines, defaultColor, defaultMetallicRoughness, doubleSided, defaultAlphaMode, createGltf);
tile.Children = lodNextTiles;
};
}

// next code is used to fix geometries that have centroid in the tile, but some parts outside...
var bbox_geometries = GeometryRepository.GetGeometriesBoundingBox(conn, table, geometryColumn, source_epsg, tile, where);
var bbox_tile = new double[] { bbox_geometries[0], bbox_geometries[1], bbox_geometries[2], bbox_geometries[3] };
tile.BoundingBox = bbox_tile;
tile.ZMin = bbox_geometries[4];
tile.ZMax = bbox_geometries[5];
}
}
if (lodColumn != String.Empty) {
if (lod < lods.Max()) {
// take the next lod
var currentIndex = lods.FindIndex(p => p == lod);
var nextIndex = currentIndex + 1;
var nextLod = lods[nextIndex];
// 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<Tile>(), nextLod, addOutlines, defaultColor, defaultMetallicRoughness, doubleSided, defaultAlphaMode, createGltf);
tile.Children = lodNextTiles;
};
}

tile.Available = bytes != null ? true : false;
// next code is used to fix geometries that have centroid in the tile, but some parts outside...
var bbox_geometries = GeometryRepository.GetGeometriesBoundingBox(conn, table, geometryColumn, source_epsg, tile, where);
var bbox_tile = new double[] { bbox_geometries[0], bbox_geometries[1], bbox_geometries[2], bbox_geometries[3] };
tile.BoundingBox = bbox_tile;
tile.ZMin = bbox_geometries[4];
tile.ZMax = bbox_geometries[5];

tile.Available = true;

if (skipCreateTiles) { tile.Available = true; }
}
else {
tile.Available = false;
}
tiles.Add(tile);
}

Expand Down

0 comments on commit f0061b8

Please sign in to comment.