Releases: 3DGI/tyler
Releases · 3DGI/tyler
Release list
v0.4.1 - Native glTF
The main features of the new version:
- The dependency on geoflow is completely removed, and the glTF conversion was ported to Rust.
- Tyler can now read regular CityJSON files, CityJSONSeq files, and the legacy feature-files as input.
- Improved parallelism so Tyler scales better with the available CPU cores.
- Several existing bugs have been fixed in the glTF conversion and tileset generation, so implicit tilesets are fully functional.
- Performance improvements throughout the codebase, resulting in significant speedups.
Added
- Native GLB generation in Rust through
cityjson-convert, so Tyler no longer depends on an externalgeoflowinstallation for export. - Optional intermediary tile materialization in CityJSONSeq format for debugging.
- First-class
cjindexinput support forcityjsonseq,cityjson, andfeature-filesdatasets. --include-parent-attributesfor 3DBAG/roofer-style parent-child datasets.- A
just ci-checkrecipe and the GitHub Actions workflow that runs it. - ADRs and supporting documentation for the
cjindexinput model, CityJSONSeq exchange, and grid traversal changes. - A repo-local profiling workflow driven by
just profile,scripts/profile-tyler.sh, and Geodepot-backed profile-by-name resolution. - Per-run profiling artifacts under
docs/performance/runs/, including structured summaries forperf statand Valgrind Massif. - Retention of raw profiling artifacts and Tyler output under the gitignored
docs/performance/runs/raw/tree for later analysis. - Runner selection for profiling sessions so
perfand Massif can be run independently or together, with failed runs preserved for later inspection. - A focused CLI/debug regression test suite for intermediary tile preparation, debug data replay, grid export/load, tileset-only runs, and object-attribute mapping.
- A
just coveragerecipe backed bycargo tarpaulin, plus a recorded baseline underdocs/testing/coverage-baseline.md.
Changed
- Tyler now resolves every input through
cjindex; the oldmetadata.city.json+**/*.city.jsonlparser is gone. Tyler now takes a single dataset root input instead of separate--metadataand
--featuresarguments. - Tile-model building now relies on
cityjson_lib::ops::mergeto reconcile mixed input transforms, so cjindex inputs with differing transforms no longer need local normalization. - Large
cjindexruns are handled in page-sized chunks with thread-local index reuse, which cuts repeated reads during extent and tile processing. - Grid indexing for
cjindexinputs now consumes decoded scan pages directly instead of paging references and issuing per-feature reads. - Grid vertex counting now accumulates directly into per-cell counts, avoiding per-feature vertex-cell sorting except for thresholded large-feature parallelism.
- Tile conversion now uses thread-local
CityIndexhandles for cjindex reads and defers normal per-feature cleanup until after tile model merging. - The CityJSON-to-GLB pre-write path now skips redundant cleanup and filtering work where the GLB output would not change, and records extra timing information around the remaining hot spots.
- Tyler no longer depends on an external
geoflow-bundleinstallation for GLB export. - For implicit 3D Tiles, tiling is now performed in geographic coordinates.
- 3D Tiles now use
regionbounding volumes instead of boxes. --debug-dump-datanow dumps bincode snapshots and intermediary per-tile CityJSONFeature streams underdebug/, andRUST_LOG=debugfollows the same dump path while also enabling debug logging.--debug-load-datanow continues to support partial replay from any available subset of dumped debug data, and--debug-load-gridnow actively reloads exportedgrid.tsvandfeatures.tsvdata
for quadtree recomputation.- The CLI debug/export surface was consolidated:
--debug-tile-inputsbecame--debug-dump-data,--grid-exportbecame--debug-dump-grid,--grid-export-featuresbecame
--debug-dump-grid-features,--grid-filebecame--debug-load-grid,--3dtiles-tileset-onlybecame--debug-3dtiles-tileset-only, and--geometric-error-factorbecame
--3dtiles-geometric-error-factorwith the-eshorthand removed. --object-attributesnow accepts comma-separatedname:typemappings and still subsets and coerces CityObject attributes before GLB export.--include-parent-attributesnow copies inherited parent attributes even when the parent object type itself is not selected.--3dtiles-metadata-classnow defaults tocitymodel.- When no
--lod-*override is supplied, Tyler now keeps the highest available LoD per CityObject by default. - CityObject type and LoD filtering now run once through the shared
cjindexfiltering path before extent, grid, tile, and export decisions, so tile bounds and output content use the same retained
geometry. - README, Dockerfiles, Nix, and bundled resources were updated for the new pipeline.
v0.3.14
Fixed
- Median calculation in compute_grid_statistics was incorrect. The case when 0-2 grid cells had vertices was not
handled correctly.
v0.3.13
- Add
--verbose-geofflag to run geof in verbose mode - Update to geoflow-bundle to
2025.07.15 - Do not write empty tiles
v0.3.12
- Fix bbox update that causes index out of bounds
- Update to geoflow-bundle
2025.02.12
v0.3.11
Fixed
- If there is only a single tile, the root contains the content and the tileset geometricError is
0.00. (#45)
v0.3.10
Changed
- Update geoflow-bundle docker image
Added
- The
smooth-normalsandsimplification-max-erroroptions
v0.3.9
Fixed
- Parsing CityObjects without a
geometrymember - Median vertex count from a single CityObject
Added
- A python script to adjust the
geometric_errorin an existing tileset (resources/python/adjust_geometric_error.py)
v0.3.8
Changed
- Remove debug info from release build
- Geometric error above the leafs defaults to 12
- Update geoflow-bundle docker image
v0.3.7
Fixed
- Geometric error calculation for the parents of the deepest leaves, where the leaf has an edge length of the grid cellsize.
- Replace maxz in leaf content if minz is greater than maxz.
- Tile bounding volume when tile is empty.
- Fixed the hardcoded timeout.
Added
- Set content bounding volume from tile bounding volume with the
--3dtiles-content-bv-from-tileoption. Required when the tile content is clipped to the tile's extent, for example for terrain. - Write quadtree content bounding box to .tsv with
--grid-export. - Log all arguments in debug.
- Split an explicit tileset to external tilesets if the tree is deep.
- GitHub Action for publishing to DockerHub to
3dgi/tyler(#40), see https://hub.docker.com/r/3dgi/tyler
Changed
- Debug data, incl.
--grid-export, is written to thedebugdirectory within the--outputdirectory. - Remove logging from geof. Speeds up the conversion and fixes the extreme memory consumption when geof emits a large amount of messages.
- Use BufWriter for writing the input paths.
- Implement parallel computation for the extent, where the direct subdirectories of
--featuresare visited in parallel (but their contents are processed sequentially). - Floats in the 3D Tiles tileset.json are written with 2 decimals
- Implement parallel indexing of the features, where the direct subdirectories of
--featuresare visited in parallel (but their contents are processed sequentially). - The grid is centered at the computed extent, instead of matching their origin.
- Rename
tilesdirectory totto save space in the tileset.json - The tile content bounding volume,
content.boundingVolume, is not added to the tile content anymore. You need to enable this option if you want to include the content bounding volumes. Enable it with--3dtiles-content-add-bv. - The grid's cell size is adjusted so that it is possible to construct a tightly fit square of 4^n cells. The final cell size will be larger than what is set with
--grid-cellsize.
v0.3.6
tyler 0.3.6 (2023-07-17)
Changed
- The
--grid-exportswitch does not export the feature centroids anymore. Use the--grid-export-featuresif you want to export the feature centroids together with the grid cells. - Write both pruned and unpruned tilesets. Unpruned tiles are only written in debug mode.
- Reduced the logging in debug mode.
Fixed
- Invalid subtree for implicit tiling, in case of very large areas (eg. the Netherlands).
Added
- Write the
world,quadtreeandtiles_failedinstances to bincode when running in debug mode. The instances can be loaded for debugging with the--debug-load-data, in which case tyler will load the instance data instead of generating it. - Describe how to generate debug data.