- The
upgrade
command is now removing emptytile.children
arrays, setting thechildren
to beundefined
instead (via #73) - Fixed a bug that prevented the content of external tileset to be processed in certain operations (#76)
- Fixed a runtime error that could occur when encoding many textures to KTX (#77)
- Internal:
- Integrated a dedicated logging library (via #61)
- By default, only few, informative messages are logged to the console
- There are additional command-line arguments:
--logLevel
can be used to set the log level (trace
,debug
,info
,warn
,error
,fatal
, andsilent
)--logJson
to print log messages as JSON instead of pretty-printed
- The
convertI3dmToGlb
functionality has been added to the CLI (in addition to the existingconvertB3dmToGlb
andconvertPntsToGlb
) - Internal restructuring (mainly for the use of the
3d-tiles-tools
in the3d-tiles-validator
):- Exposed and generalized
GltfUtilities
: It now offers a functionextractDataFromGlb
that returns the JSON- and binary buffer from arbitrary glTF 1.0 or 2.0 buffers - Extracted a
BinaryMetadata
structure from the formerBinaryPropertyTable
- The different representations of
ENUM
values (namely, as numbers or as strings) had not been handled correctly (via #71) - Internal fixes for KTX encoding (via #40 - not yet part of a public functionality)
- Exposed and generalized
- Transparently decompress entries in
3tz
files when they are compressed withDEFLATE
(via #55)- The exact behavior in terms of entry compression is not specified yet. This is tracked in #56
- Extended the handling of tileset JSON files for the
convert
command (via #54)- The
convert
command did not anticipate that the.3dtiles
and.3tz
formats require the top-level tileset file to be calledtileset.json
. This is enforced now. For cases where the input is ambiguous (for example, for a ZIP file or a directory that contain multiple tileset JSON files, with none being calledtileset.json
), the name of the top-level tileset JSON file can be defined with the--inputTilesetJsonFileName
command line argument.
- The
- The
upgrade
command has been generalized (via #41 and #52)- The default behavior of the the
upgrade
command remained unaffected - When passing in the
--targetVersion 1.1
command line argument, then the upgrade will attempt to do a more extensive upgrade of the (legacy) PNTS, B3DM, and I3DM tile formats. It will convert these tile formats into glTF assets that use theEXT_structural_metadata
,EXT_mesh_features
, andEXT_instance_features
extensions, to represent the former batch- and feature table information. This is intended as a preview feature. The CMPT format can not yet be upgraded. There are corner cases (for example, animations in the glTF assets that are used for I3DM) that can not generically be translated into glTF assets with extensions. The scope and configurability of the command will be extended and specified more extensively in the future.
- The default behavior of the the
- The behavior of
b3dmToGlb
andi3dmToGlb
commands has changed: They originally upgraded any glTF 1.0 content that they encountered to glTF 2.0. Now, they only extract the actual glTF data as it is. - Operations that modified the content of tiles (for example, converting B3DM to GLB) only had been applied to the top-level input tileset. Now, these operations by default are also applied to the contents of external tilesets that are referred to from the top-level tileset (via #42 and #48)
- Certain operations on tilesets caused the output tileset to use a
tile.contents[]
array even when there only was a single content. This was fixed in #38, to make sure that a singletile.content
is used in these cases, and thetile.contents[]
array only when there actually are multiple contents. - Added further
structure
classes that are (largely) auto-generated from JSON schema (via #36)- The classes in the
structure/TileFormats
package represent the batch- and feature table JSON of the (legacy) tile formats - The classes in the
structure/Style
package represent the JSON structures for 3D Tiles styling
- The classes in the
- Internal refactorings and bugfixes for tileset processing and pipelines:
- The tileset JSON had been written in gzipped form if and only if it was read in gzipped form, to mimic the previous behavior of functions like
combineTilesets.js
. - This caused the tileset JSON to not be zipped even when the
gzip
command was applied (#22). - Now, the tileset JSON will always be written in unzipped form by default.
- The
gzip
andungzip
commands are implemented as 'tileset stages' that do not apply any special handling to the tileset JSON. - The filters for included- and excluded content types have been mored from the 'content stage' to the 'tileset stage' accordingly, because the content stages already are specific for certain content types, and will check these types internally.
- The default handling of the case that the included content types are
undefined
has changed: Content types will be included by default now. To not include anything, and empty array can be used.
- The tileset JSON had been written in gzipped form if and only if it was read in gzipped form, to mimic the previous behavior of functions like
- Allow passing options to the
upgrade
command that will be forwarded togltf-pipeline
- Added (auto-generated) TSDoc documentation to the 3D Tiles classes in the
structure
directory - Fixed a bug in the
analyze
command that caused a wrong payload length to be reported - Fixed a bug that caused single-element
contents
arrays to be created in tiles inBasicTilesetProcessor
- Rewrite
- Cleaned up project files and upgraded dependencies. #70
- Breaking changes
extractB3dm
andextractI3dm
now return the feature table JSON and batch table JSON instead of buffers.glbToB3dm
andglbToI3dm
now take feature table JSON and batch table JSON instead of buffers.
- Handle b3dm tiles with the legacy 24-byte header. #69
- Breaking changes
- Renamed
tileset2sqlite3
totilesetToDatabase
.
- Renamed
- Added
databaseToTileset
for unpacking a .3dtiles file to a tileset directory. #62 - Added
glbToI3dm
andoptimizeI3dm
command line tools. #46 - Handle b3dm tiles with the legacy 20-byte header. #45
- Added
extractCmpt
to extract inner tiles from a cmpt tile and thecmptToGlb
command line tool. #42
- Initial release.