UNPKG

@needle-tools/gltf-progressive

Version:

three.js support for loading glTF or GLB files that contain progressive loading data

211 lines (152 loc) 7.68 kB
# Changelog All notable changes to this package will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). ## [2.1.4] - 2025-04-13 - Fix: Don't minify internal exports (e.g. class names of three.js) ## [2.1.3] - 2025-03-19 - Fix: DracoLoader cache busting due to range request ## [2.1.2] - 2025-03-10 - Chore: Update examples ## [2.1.1] - 2025-02-20 - Fix: Handle failed progressive texture loading due to e.g. offline or missing files - Fix: Regression causing custom KTX2Transcoder location not working for e.g. offline usage ## [2.1.0] - 2025-02-13 - Bump version ## [2.1.0-alpha.6] - 2025-02-12 - Fix: `?debugprogressive` now also switches texture LODs ## [2.1.0-alpha.5] - 2025-01-30 - Add: initial support for Orthographic cameras ## [2.1.0-alpha.4] - 2025-01-29 - Fix: LOD not loading if the max texture resolution is too small ## [2.1.0-alpha.3] - 2025-01-21 - Change: Load Draco and KTX loaders as soon as possible - Fix: Make `GET` request to draco endpoint with 1 byte range instead of HEAD request. The HEAD request did return the whole draco loader. ## [2.1.0-alpha.2] - 2025-01-17 - Add: expose methods in globalThis/window at `Needle.gltfProgressive` ## [2.1.0-alpha.1] - 2025-01-15 - Fix: issue where `getMeshLOD` for multi-material meshes would not return the correct index if called multiple times at the same time ## [2.1.0-alpha] - 2025-01-14 - Bump three types to r169 ## [2.0.0-alpha.3] - 2025-01-02 - Change: Load higher texture resolution by default ## [2.0.0-alpha.1] - 2024-12-09 - Add: `Accept` header options for Needle Cloud requests ## [1.2.15] - 2024-10-21 - Fix: internal window parameter access causing issue with SSR ## [1.2.13] - 2024-10-06 - Update README ## [1.2.12] - 2024-09-23 - Add: `assignTextureLOD` now also accepts mesh as parameter - Change: improved `assignTextureLOD` typing ## [1.2.11] - 2024-09-11 - Fix: draco and KTX decoder path handling when gstatic can not be reached and user set path ## [1.2.10] - 2024-09-10 - Fix: loading and assigning texture LOD for ShaderMaterial and RawShaderMaterial ## [1.2.9] - 2024-07-29 - Fix: server side rendering fixes ## [1.2.8] - 2023-07-19 - Add: repository url ## [1.2.7] - 2023-07-18 - Fix: include `type: module` ## [1.2.5] - 2023-07-16 - Remove: Frustum cull check because we're already operating on the latest renderlist ## [1.2.5-beta] - 2023-07-09 - Change: Update skinned mesh bounding box every 30 frames using the lowres mesh version ## [1.2.4-beta.1] - 2023-07-09 - Add: LODsManager `manual` property which can be used to manually update the LODs in the scene by calling `LODsManager.update(scene, camera)` - Fix: updating LODs in WebXR ## [1.2.4-beta] - 2023-07-05 - Change: `createLoaders` now returns created loaders and decoders to be re-used ## [1.2.3-beta] - 2023-07-04 - Add: support for transmissive objects ## [1.2.3-alpha.3] - 2023-07-01 - Add: prevent loading highres textures when user has enabled data-save mode ## [1.2.3-alpha.2] - 2023-06-27 - Fix: error caused by parser associations containing `undefined` value ## [1.2.3-alpha.1] - 2023-06-25 - Internal: rename `setRaycastMesh` to `registerRaycastMesh` ## [1.2.3-alpha] - 2023-06-24 - Change: automatically change LOD update interval based on framerate ## [1.2.2-alpha.4] - 2023-06-20 - Add: Register version in global "GLTF_PROGRESSIVE_VERSION" variable - Add: `<model-viewer>` elements added document at any time are now properly registered - Fix: LOD updates for multiple `<model-viewer>` elements - Fix: Initial render tick for a few frames for `<model-viewer>` to trigger LOD updates when the model-viewer element is not animated or interacted with - Change: `<model-viewer>` elements will fetch a slightly higher texture LOD ## [1.2.1-alpha.4] - 2023-06-19 - Fix: SkinnedMesh bounds calculation ## [1.2.1-alpha.3] - 2023-06-15 - update the README ## [1.2.1-alpha.2] - 2023-06-15 - fix: Ortographic camera causing LODs being falsely updated - fix: regression introduced in 1.2.1-alpha - fix: error when trying to load a LOD glTF directly - fix: issues caused by instanceof in local development environments ## [1.2.0-alpha.9] - 2023-06-13 - fix: issue where skinned mesh matrix was falsely applied to calculate screen size - fix: use bounding box from SkinnedMesh object ## [1.2.0-alpha.6] - 2023-06-12 - fix: minor bug where opened glTF has `NEEDLE_progressive` extension but no lods array because the glTF is a LOD variant ## [1.2.0-alpha.5] - 2023-06-10 - fix: safeguard when `registerMesh` or `registerTexture` are being called with invalid data - examples: update vanilla threejs example ## [1.2.0-alpha.4] - 2023-06-07 - add: `useRaycastMeshes` method: ```ts // call to enable raycasting with low poly raycast meshes // this can be done once in your project useRaycastMeshes(true); // then use the raycaster as usual const raycaster = new Raycaster(); raycaster.setFromCamera(mouse, camera); const intersects = raycaster.intersectObjects(scene.children, true); // call to disable raycasting with low polwy meshes useRaycastMeshes(false); ``` ## [1.2.0-alpha.3] - 2023-06-06 - add: automatically load the highest LOD first to show a slightly better quality level as soon as possible - fix: improve Texture LOD selection by taking LOD level height into account - fix: correctly assign LOD level information to initially loaded texture ## [1.1.0-alpha.2] - 2023-06-05 - fix: register LOD information for meshes that don't have associations ## [1.1.0-alpha] - 2023-06-03 - add: loading of multiple texture LOD levels - fix: issue where material LODs where not updated when the material was cloned - change: clamp screen coverage when near plane intersects with the object bounds - change: skip CubeCamera setup - change: handle cases where an object has only texture LODs ## [1.0.0-alpha.19] - 2023-05-31 - add `LODsManager.plugins` getter ## [1.0.0-alpha.18] - 2023-05-30 - update README ## [1.0.0-alpha.16] - 2023-05-29 - fix: LODs manager now clamps to LOD 0 if the near plane is inside the bounds - change: Ignore certain material in lods update loop ## [1.0.0-alpha.15] - 2023-05-25 - add: `getRaycastMesh` method - add: LODsManager does now expose `targetTriangleDensity`. The target triangle density is the desired max amount of triangles on screen when the mesh is filling the screen. - change: create LODsManager via `LODsManager.get(renderer)` ## [1.0.0-alpha.13] - 2023-05-24 - fix: modelviewer error when trying to access undefined texture extensions ## [1.0.0-alpha.13] - 2023-05-24 - add: vanilla three.js example - fix: texture LODs losing filter setting ## [1.0.0-alpha.12] - 2023-05-19 - fix: update LODs when using postprocessing ## [1.0.0-alpha.11] - 2023-05-17 - add: expose `setDracoDecoderLocation` and `setKTX2TranscoderLocation` - fix: allow using draco decoder and ktx2 transcoder from local filepath ## [1.0.0-alpha.10] - 2023-05-07 - fix: progressive assets are now only updated during the main canvas render call and not e.g. when rendering to a texture ## [1.0.0-alpha.9] - 2023-05-03 - fix: handle loading of ShaderMaterial for VRM progressive textures ## [1.0.0-alpha.8] - 2023-05-03 - fix: handle transparent materials ## [1.0.0-alpha.7] - 2023-05-01 - fix: Handle modelviewer `src` set as property but not as attribute - change: Remove sourcemap ## [1.0.0-alpha.6] - 2023-05-01 - fix: LOD mesh assignment for multi-material meshes (meshes with multiple primitives) ## [1.0.0-alpha.5] - 2023-04-30 - initial version