All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Added
- SVF/F2D downloads can now be configured for different regions
- Fixed
- Bug in URN resolution on Windows (petrbroz#84)
- Added
- Cleaning up error logs for Axios-related errors
- Modified
- Upgraded to newer version of APS SDK
- Modified
- Increased the minimum required Node.js version to 16
- Modified
- [BREAKING CHANGE] Library has been renamed from
forge-convert-utils
tosvf-utils
- [BREAKING CHANGE] SVF readers and downloaders now expect an
IAuthenticationProvider
interface for specifying how the requests to the Model Derivative service will be authenticated - Changed branding from Forge to APS everywhere
- Migrated to the official APS SDKs
- [BREAKING CHANGE] Library has been renamed from
- Added
- SVF materials that are not referenced by anything are excluded from the glTF output
- Added
- Support for gltf output filtering based on fragment IDs.
- Support for svf input filtering based on dbID or fragment ID.
- Fixed
- Solved an issue with glTF geometry being broken in certain scenarios (kudos to henrikbuchholz!)
- Added
- Support for custom serialization of the glTF manifest
- Fixed
- Parsing of properties for the very last object (kudos to johannesheesterman!)
- Fixed
- Deduplication of geometries now using maps instead of arrays, bringing dramatic speed improvements (kudos to VFedyk!)
- Removed
- Support for the (experimental) OTG format download and parsing
- Fixed
- Conversion of SVF 3x3 matrix + translation into glTF 4x4 matrix
- Fixed
- Failing TypeScript build due to changes in
adm-zip
dependency
- Failing TypeScript build due to changes in
- Fixed
- Updated dependencies
- Added URL-encoding when downloading SVF viewables
- Added
- Re-introduced code docs generator
- Fixed
- Updated dependencies
- Changed
- CI/CD now in Github Actions
- Fixed
- Added
- New version of forge-server-utils
- Support for chunked download of Model Derivative assets
- Added
- Mapping SVF/OTG glossiness to glTF roughness (need to confirm that the mapping is correct)
- Fixed
- SVF parser property db config from 3.4.4
- Added
- SVF parser can now be configured to skip property DB
- Fixed
- Travis config
- Added
- SVF downloader can now be initialized with custom host URL and region
- SVF parser can now be initialized with custom host URL and region
- Removed
- Docs generator (due to audit warnings and lack of updates); will continue generating the docs manually.
- Added
- Support for meshes with vertex colors
- Fixed
- Npm dependency vulnerability
- Added
- F2D downloader
- Changed
- SVF/OTG/F2D downloaders can now accept existing auth tokens
- SVF/OTG/F2D downloaders can now be configured to ignore missing assets
- Added
- SVF and OTG downloader classes
- Fixed
- When converting to gltf, empty
textures
orimages
are removed to prevent validation errors (thanks @AlexPiro!)
- When converting to gltf, empty
- Added
- Dev utility for validating gltf manifests (to be used in CI/CD)
- Fixed
- Alpha blending only enabled when opacity is less than 1.0 (#21)
- Added
- [experimental] OTG parser
- Fixed
- Flipped V component of texture coords (#18, kudos to @dykarohora!)
- Changed
- Updated to TypeScript version 3.7
- [BREAKING CHANGE] loaders/writers now load/write a centralized intermediate file format
- Fixed
- Extended fix from version 2.0.1: 1x1 black pixel images now used also when materials reference non-existent texture URIs
- Fixed
- Missing SVF textures no longer cause the conversion to fail, and are instead replaced with 1x1 black pixel images
- Changed
- [BREAKING CHANGE] removed post-processing options (Draco compression and binary output)
- We encourage users to post-process the raw glTFs generated by this library in their own pipelines, using Node.js modules and CLI tools like gltf-pipeline or gltfpack
- See test/remote-svf-to-gltf.sh for an example of such integration
- [BREAKING CHANGE] removed post-processing options (Draco compression and binary output)
- Added
- Scaling the output model based on SVF distance units (added by @dykarohora)
- Fixed
- Sanitizing URNs (removing trailing '='s)
- Fixed
- Missing folders when post-processing (#11, fixed by @AlexPiro)
- Added
- Filtering of objects to be included in the output glTF
- Fixed
- Multi-byte characters in derivative URNs (thanks @dykarohora!)
- Changed
- When exporting to glTF+Draco, resources are no longer embedded into the manifest (#7)
- Added
- Opt-in feature to move the model to origin
- Changed
- Forge models are now reoriented based on their metadata to align with the glTF coordinate system (X=left, Y=up, Z=front)
Note: scene hierarchies in the generated glTFs now contain two additional levels: all scene objects are grouped into an xform node that applies additional transformations (for example, moving the model to origin), and the xform node is a child of a root node which transforms the entire scene to the glTF coordinate system.
- Removed
- Support for sqlite output
- Since sqlite3 is a native Node.js module, it was a pain to use this library in vscode-forge-tools
- The experimental serialization/deserialization to/from sqlite is now developed in forge-convert-sqlite
- Support for sqlite output
- Fixed
- Calls to
GltfWriter.prototype.write
now await postprocessing (if there's any)
- Calls to
- Changed
- [BREAKING] gltf/glb is now written with a single call (
await writer.write(svf, outputDir)
)
- [BREAKING] gltf/glb is now written with a single call (
- Removed
debug
dependency (usingconsole.log
instead)
- Added
- The
sqlite
flag now generates a sqlite manifest with both the glTF data and the property database - When deserializing sqlite back to glTF, you can now pass in a filter of dbids
- The filter can be either a
SELECT dbid FROM properties WHERE ...
, or a list of dbids
- The filter can be either a
- The
- Fixed
- Iterating of object properties
- Changed
- Adding multiple SVFs into single glTF is now considered unsupported
- Trying to do so will cause an exception in the
GltfWriter.write
method
- Trying to do so will cause an exception in the
- Adding multiple SVFs into single glTF is now considered unsupported
- Added
- deserialization of sqlite manifest back to glTF
- Fixed
- glTF deduplication (incl. performance improvement)
- sqlite serialization when ignoring mesh, line, or point geometries
- Added
- More deduplication, now also on the glTF accessor and mesh level
- Additional CLI options for ignoring mesh, line, or point geometry
- (experimental) serialization of glTF manifest into sqlite
- Can only be used when texture/buffer data is referenced and not embedded
- Potentially could be used for dynamically generating glTF variants with subsets of the original model
- Additional CLI option for serializing glTF manifest into sqlite
- Note that the schema of the sqlite database might change
- Added
- Skipping texture UVs when there's no material using them
- Fixed
- Computing position bounds
- Changed
- Geometry deduplication now on BufferView (instead of Mesh) level
- Sample scripts now using proper error catching
- Added
- Opt-in deduplication of materials
- Fixed
- Caching of meshes
- Added
- Progress logging when parsing SVF and writing glTF
- Fixed
- Typo in reference to package.json in CLI tool
- Typo in CLI when accessing Forge credentials
- Added
- Opt-in deduplication of exported geometries
- Opt-in output to GLB
- Opt-in output with Draco compression
- Fixed
- Normalizing windows/posix paths of SVF assets
- Added
- Listing IDs of object children from SVF property database
- Changed
- Excluding internal attributes when parsing SVF property database
- Added
- Access to internal SVF manifest
- Fixed
- Gltf schema now included in build output
- Added
- Support for converting both remote and local SVFs using the CLI tool
- Support for configuring glTF output (max. size of binary files, ignoring line/point geometries, ...)
- Outputting multiple scenes in one glTF
- Changed
- Moved to new version of forge-server-utils
- Added
- TypeScript definition files with glTF and SVF schemas
- Changed
- Code restructure
- SVF parsing code moved from forge-server-utils back here
- Fixed
- Images now extracted with both lower-cased and unmodified URIs
- Added
- Support for line/point geometry, incl. colors
- Added
- Parsing individual SVF assets in parallel
- CI/CD pipeline setup
- Support for basic material textures (texture transforms not yet supported)
- Changed
- Moved to TypeScript for additional type security, incl. official typings for the glTF 2.0 schema
- Moved to yarn
- Reusing SVF parser from forge-server-utils module
- Fixed
- Crash when no materials are available
- Fixed
- CLI script
- First release