15 KiB
15 KiB
Change Log
v0.11.0 - 2022-01-03
Breaking Changes 📣
- The
CesiumGltfReaderproject now uses theCesiumGltfReadernamespace instead of theCesiumGltfnamespace. - The
CesiumGltfWriterproject now uses theCesiumGltfWriternamespace instead of theCesiumGltfnamespace. - The
Cesium3DTilesReaderproject now uses theCesium3DTilesReadernamespace instead of theCesium3DTilesnamespace.
Additions 🎉
- Added
Cesium3DTilesWriterlibrary.
Fixes 🔧
- Fixed a bug in
QuadtreeRasterOverlayTileProviderthat caused incorrect level-of-detail selection for overlays that use a global (or otherwise large) tiling scheme but have non-global (or otherwise smaller) coverage.
v0.10.0 - 2021-12-01
Breaking Changes 📣
QuadtreeRasterOverlayTileProvider::computeLevelFromGeometricErrorhas been removed.computeLevelFromTargetScreenPixelsmay be useful as a replacement.- The constructor of
RasterOverlayTileProvidernow requires a coverage rectangle. RasterOverlayTileProvider::getTilenow takes atargetScreenPixelsinstead of atargetGeometricError.- The constructor of
RasterMappedTo3DTilenow requires a texture coordinate index. - The constructor of
RasterOverlayTilenow takes atargetScreenPixelsinstead of atargetGeometricError. And the correspondinggetTargetGeometricErrorhas been removed. - Removed
TileContentLoadResult::rasterOverlayProjections. This field is now found in theoverlayDetails. - Removed
obtainGlobeRectanglefromTileUtilities.h. UseestimateGlobeRectangleinBoundingVolume.hinstead. - cesium-native now uses the following options with the
glmlibrary:GLM_FORCE_XYZW_ONLYGLM_FORCE_EXPLICIT_CTORGLM_FORCE_SIZE_T_LENGTH
Additions 🎉
- Added support for the 3DTILES_implicit_tiling extension.
- Added support for the 3DTILES_bounding_volume_S2 extension.
- Added support for raster overlays, including clipping polygons, on any 3D Tiles tileset.
- Added support for external glTF buffers and images.
- Raster overlay level-of detail is now selected using "target screen pixels" rather than the hard-to-interpret geometric error value.
- A
RasterOverlaycan now be configured with amaximumScreenSpaceErrorindependent of the screen-space error used for the geometry. RasterOverlay::loadTileProvidernow returns aSharedFuture, making it easy to attach a continuation to run when the load completes.- Added
GltfContent::applyRtcCenterandapplyGltfUpAxisTransform. - Clipping polygon edges now remain sharp even when zooming in past the available geometry detail.
- Added
DebugColorizeTilesRasterOverlay. - Added
BoundingRegionBuildertoCesiumGeospatial. - Added
GlobeRectangle::EMPTYstatic field andGlobeRectangle::isEmptymethod. - Added the ability to set the coordinates of a
GlobeRectangleafter construction.
Fixes 🔧
- Improved the computation of bounding regions and overlay texture coordinates from geometry, particularly for geometry that crosses the anti-meridian or touches the poles.
- Fixed a bug that would result in incorrect geometry when upsampling a glTF with a position accessor pointing to a bufferView that did not start at the beginning of its buffer.
- Fixed a problem that could cause incorrect distance computation for a degenerate bounding region that is a single point with a min/max height.
- Improved the numerical stability of
GlobeRectangle::computeCenterandGlobeRectangle::contains. - Error messages are no longer printed to the Output Log when an upsampled tile happens to have a primitive with no vertices.
- Fixed a bug that could cause memory corruption when a decoded Draco mesh was larger than indicated by the corresponding glTF accessor.
- Fixed a bug that could cause the wrong triangle indices to be used for a Draco-encoded glTF.
v0.9.0 - 2021-11-01
Breaking Changes 📣
- Changed the following properties in CesiumGltf:
BufferView::targetnow defaults tostd::nulloptinstead ofTarget::ARRAY_BUFFER.ClassProperty::typenow defaults toType::INT8instead of empty string.ClassProperty::componentTypeis now an optional string instead of aJsonValue.FeatureTexture::classPropertyis no longer optional, consistent with changes to the extension spec.Image::mimeTypenow defaults to empty string instead ofMimeType::image_jpeg.Sampler::magFilterandSampler::minFilternow default tostd::nulloptinstead ofMagFilter::NEAREST.
- The version of
ExtensibleObjectin theCesiumGltflibrary and namespace has been removed. Use the one in theCesiumUtilitylibrary and namespace instead. - Renamed the following glTF extension classes:
KHR_draco_mesh_compression->ExtensionKhrDracoMeshCompression.MeshPrimitiveEXT_feature_metadata->ExtensionMeshPrimitiveExtFeatureMetadataModelEXT_feature_metadata->ExtensionModelExtFeatureMetadata
CesiumGltf::ReaderContexthas been removed. It has been replaced with eitherCesiumJsonReader::ExtensionReaderContextorGltfReader.
Additions 🎉
- Added new
Cesium3DTilesandCesium3DTilesReaderlibraries. They are useful for reading and working with 3D Tiles tilesets.
Fixes 🔧
- Fixed a bug that could cause crashes or incorrect behavior when using raster overlays.
- Fixed a bug that caused 3D Tiles content to fail to load when the status code was zero. This code is used by libcurl for successful read of
file://URLs, so the bug prevented loading from such URLs in some environments. - Errors and warnings that occur while loading glTF textures are now include in the model load errors and warnings.
- Fixes how
generate-classesdeals with reserved C++ keywords. Property names that are C++ keywords should be appended with "Property" as was already done, but when parsing JSONs the original property name string should be used.
v0.8.0 - 2021-10-01
Breaking Changes 📣
- glTF enums are now represented in CesiumGltf as their underlying type (int32 or string) rather than as an enum class.
- Tile content loaders now return a
Future, which allows them to be asynchronous and make further network requests.
Fixes 🔧
- Fixed a bug that caused the
RTC_CENTERsemantic in a B3DM feature table to be ignored if any of the values happened to be integers rather than floating-point numbers. This caused these tiles to render in the wrong location.
v0.7.2 - 2021-09-14
Fixes 🔧
- Fixed a bug where the "forbidHoles" option was not working with raster overlays and external tilesets.
v0.7.1 - 2021-09-14
Fixes 🔧
- Fixed a bug introduced in v0.7.0 where credits from a
QuadtreeRasterOverlayTileProviderwere not collected and reported. - Fixed a bug where disabling frustum culling caused external tilesets to not load.
v0.7.0 - 2021-09-01
Breaking Changes 📣
- Renamed the
Cesium3DTilesnamespace and library toCesium3DTilesSelection. - Deleted
Cesium3DTilesSelection::Gltfand moved functionality intoCesiumGltf::Model. - Renamed
Rectangle::intersectandGlobeRectangle::intersecttocomputeIntersection. RasterOverlayand derived classes now require anameparameter to their constructors.- Changed the type of texture coordinate IDs used in the raster overlay system from
uint32_ttoint32_t. RasterOverlayTileProvideris no longer quadtree-oriented. Instead, it requires derived classes to provide an image for a particular requested rectangle and geometric error. Classes that previously derived fromRasterOverlayTileProvidershould now derive fromQuadtreeRasterOverlayTileProviderand implementloadQuadtreeTileImageinstead ofloadTileImage.- Removed
TilesetOptions::enableWaterMask, which didn't have any effect anyway.TilesetContentOptions::enableWaterMaskstill exists and works.
Additions 🎉
- Added
Future<T>::isReady. - Added
Future<T>::share, which returns aSharedFuture<T>and allows multiple continuations to be attached. - Added an option in
TilesetOptions::ContentOptionsto generate smooth normals when the original glTFs were missing normals. - Added
ImageManipulationclass toCesiumGltfReader. - Added
Math::roundUpandMath::roundDown. - Added
Rectangle::computeUnion.
Fixes 🔧
- Fixed a bug that caused CesiumGltfWriter to write a material's normal texture info into a property named
normalTextureInforather thannormalTexture. - Fixed a bug in
TileMapServiceRasterOverlaythat caused it to show only the lowest resolution tiles if missing atilemapresource.xmlfile.
v0.6.0 - 2021-08-02
Breaking Changes 📣
Future<T>::waitnow returns the resolved value and throws if the Future rejected, rather than returning astd::variantand slicing the exception tostd::exception.Tileset::updateViewandTileset::updateViewOfflinenow takestd::vector<ViewState>instead of a singleViewState.
Additions 🎉
- Added support for the
EXT_feature_metadataglTF extension. - Added automatic conversion of the B3DM batch table to the
EXT_feature_metadataextension. - Added
CESIUM_COVERAGE_ENABLEDoption to the build system. - Added
AsyncSystem::dispatchOneMainThreadTaskto dispatch a single task, rather than all the tasks that are waiting. - Added
AsyncSystem::createPromiseto create a Promise directly, rather than via a callback as inAsyncSystem::createFuture. - Added
AsyncSystem::catchImmediatelyto catch a Future rejection immediately in any thread. - Added
AsyncSystem::allto create a Future that resolves when a list of Futures resolve. - Added support for multiple frustums in the
Tilesetselection algorithm.
Fixes 🔧
- Fixed a bug that prevented
.thenfunctions from being used on aFuture<void>when CESIUM_TRACING_ENABLED was ON.
v0.5.0 - 2021-07-01
Breaking Changes 📣
TilesetExternalsnow has anAsyncSysteminstead of a shared pointer to anITaskProcessor.
Additions 🎉
- Added a performance tracing framework via
CESIUM_TRACE_*macros. - Added
Future<T>::thenImmediately. - Added
AsyncSystem::createThreadPoolandFuture<T>::thenInThreadPool. Future<T>::thenInWorkerThreadandFuture<T>::thenInMainThreadnow arrange for their continuations to be executed immediately when the Future is resolved, if the Future is resolved in the correct thread.- Moved all request cache database access to a dedicated thread, in order to free up worker threads for parallelizable work.
v0.4.0 - 2021-06-01
Additions 🎉
- Added
Cesium3DTiles::TileIdUtilitieswith acreateTileIdStringfunction to create logging/debugging strings forTileIDobjects. - Accessing the same Bing Maps layer multiple times in a single application run now reuses the same Bing Maps session instead of starting a new one each time.
- Added a configure-time build option,
PRIVATE_CESIUM_SQLITE, to rename allsqlite3*symbols tocesium_sqlite3*.
Fixes 🔧
- Matched draco's decoded indices to gltf primitive if indices attribute does not match with the decompressed indices.
createAccessorViewnow creates an (invalid)AccessorViewwith a standard numeric type on error, rather than creatingAccessorView<nullptr_t>. This makes it easier to use a simple lambda as the callback.- Disabled
HTTPLIB_USE_ZLIB_IF_AVAILABLEandHTTPLIB_USE_OPENSSL_IF_AVAILABLEbecause these libraries are not required for our use for cpp-httplib and they cause problems on some systems.
v0.3.1 - 2021-05-13
Fixes 🔧
- Fixed a memory leak when loading textures from a glTF model.
- Fixed a use-after-free bug that could cause a crash when destroying a
RasterOverlay.
v0.3.0 - 2021-05-03
Breaking Changes 📣
- Converted
magic_enum/CodeCoverage.cmakedependencies to external submodules. - Replaced
CesiumGltf::WriteFlagsbitmask withCesiumGltf::WriteModelOptionsstruct.CesiumGltf::writeModelAsEmbeddedBytesandCesiumGltf::writeModelAndExternalfilesnow use this struct for configuration. - Removed all exceptions in
WriterException.h, warnings / errors are now reported inWriteModelResult, which is returned fromCesiumGltf::writeModelAsEmbeddedBytesandCesiumGltf::writeModelAndExternalFilesinstead.
Additions 🎉
- Added support for loading the water mask from quantized-mesh terrain tiles.
Fixes 🔧
- Let a tile be renderable if all its raster overlays are ready, even if some are still loading.
v0.2.0 - 2021-04-19
Breaking Changes 📣
- Moved
JsonValuefrom theCesiumGltflibrary to theCesiumUtilitylibrary and changes some of its methods. - Renamed
CesiumGltf::ReadertoCesiumGltf::GltfReader. - Made the
readModelandreadImagemethods onGltfReaderinstance methods instead of static methods.
Additions 🎉
- Added
CesiumGltfWriterlibrary. - Added
CesiumJsonReaderlibrary. - Added diagnostic details to error messages for invalid glTF inputs.
- Added diagnostic details to error messages for failed OAuth2 authorization with
CesiumIonClient::Connection. - Added an
Axisenum andAxisTransformsclass for coordinate system transforms - Added support for the legacy
gltfUpVectorstring property in theassetpart of tilesets. The up vector is read and passed as anAxisin theextras["gltfUpVector"]property, so that receivers may rotate the glTF model's up-vector to match the Z-up convention of 3D Tiles. - Unknown glTF extensions are now deserialized as a
JsonValue. Previously, they were ignored. - Added the ability to register glTF extensions for deserialization using
GltReader::registerExtension. - Added
GltfReader::setExtensionState, which can be used to request that an extension not be deserialized or that it be deserialized as aJsonValueeven though a statically-typed class is available for the extension.
Fixes 🔧
- Gave glTFs created from quantized-mesh terrain tiles a more sensible material with a
metallicFactorof 0.0 and aroughnessFactorof 1.0. Previously the default glTF material was used, which has ametallicFactorof 1.0, leading to an undesirable appearance. - Reported zero-length images as non-errors as
BingMapsRasterOverlaypurposely requests that the Bing servers return a zero-length image for non-existent tiles. - 3D Tiles geometric error is now scaled by the tile's transform.
- Fixed a bug that that caused a 3D Tiles tile to fail to refine when any of its children had an unsupported type of content.
v0.1.0 - 2021-03-30
- Initial release.