Skip to content
a051edd
Compare
Choose a tag to compare

Features

🆕 Added interact() method to create synthetic touch gestures that move the model; ideal for creating custom interaction prompts for rotation, zoom, and pan. #3320
🆕 Added 'poster-dismissed` event. Technically it's not new, but was undocumented.

Bug fixes

  • Fixed ImageBitmap memory leak. #3399
  • Fixed model cache, which was not properly caching GPU memory. #3417
  • Fixed glTFs with unused extra texture coordinates rendering incorrectly. #3426
  • Ensure the camera-change event is also fired for camera-target changes. #3427
  • Updated criteria for detecting baked shadow planes (unlit no longer required). #3431

Examples

Added a custom prompt example to demonstrate interact() and the finger slots. #3320
Fixed zoom sensitivity in the camera views example. #3356

Other notable changes

2a31f2f
Compare
Choose a tag to compare

Bug fixes

  • Fixed a pause/play animation regression: #3349
  • Fixed a Windows morph target regression by pulling in three.js r139: #3350
  • Tap in pan mode still recenters, but no longer zooms, by popular demand: #3351
  • Keep pan sensitivity consistent across zoom levels: #3332
  • Don't override user's oncontextmenu function: #3333
  • Ensure the pan target appears and disappears correctly: #3354
b609a0f
Compare
Choose a tag to compare

Features

🆕 Added enable-pan attribute for two-finger or right/meta-click drag, as well as tap recentering. Note that enable-pan also changes the default framing, which will likely become the overall default in v2.0. #3286, #3319
🆕 Improved soft shadows! API is unchanged, but the look is significantly nicer (and softer). Note: you may want to regenerate poster images. #3182
🆕 Added hasBakedShadow() method and we now automatically remove these shadow planes from framing computations and disable them when shadow-intensity is set > 0 to avoid double shadows. Baked shadows are identified as axis-aligned planes with unlit, transparent material. #3295
🆕 Added render-scale event, to get analytics on when your users are GPU-throttling. #3307
🆕 Added timeScale to control speed of animation or play in reverse. Thanks @futahei! #3129, #3304
🆕 Allow textures to have their name set. Thanks @slightHYP! #3175
🆕 Fall back to selection of animation by index if name is not found. Thanks @prefrontalcortex! #3225
🆕 Added with-credentials attribute to load non-public models. Thanks @ymoriaud! #3239

Bug fixes

  • Turn off tone mapping for Unlit materials. #3152, #3232
  • Stop camera-target from shifting the model in WebXR AR mode. Thanks @futahei! #3171
  • Fix out of range mesh when assigning variant userData. Thanks @alexdaube! #3195
  • Remove unnecessary async/await in TextureUtils. Thanks @sukolsak! #3212
  • Various accessibility improvements, especially reducing distracting annoucements. #3262
  • Maintain texture transforms when new textures are set. #3263
  • Fixed bounding box computation for animated models. Only applies with bounds="tight", which will become default in v2.0. #3272
  • Fixed setAlphaMode for BLEND and MASK. #3306

Examples

Added a render-scale example so you can test in real time how our dynamic render scaling operates on different devices and experiment with controlling it. #3307
Dramatically simplified the panning example based on the now available attribute. #3286

Other notable changes

  • Hopefully(!) fixed types import for TS users. Note: you'll need to import our /lib rather than the bundle. #3200
  • Updated to Three.js r138. Includes an upstreamed improvement allowing any resolution of environment-image: mrdoob/three.js#23322
  • Added Dassault Systemes STELLAR path-traced renderer to our fidelity comparisons. Thanks @bsdorra! #3178
  • Added details on developing in WSL environment to our README. Thanks @prefrontalcortex! #3230

Editor

  • Added panning to the editor by default. #3286
  • Added dimensions to the validation report (under Model Details) to help check AR scale. #3247
  • Added an Alpha Factor slider to the materials editor. #3306
10f38a4
Compare
Choose a tag to compare

This is actually identical to v1.10.0, but a bad build was pushed to npm, so this is resolving that error.

2affd91
Compare
Choose a tag to compare

Features

🆕 Added glTF sheen extension support! We now support all of the released PBR extensions. See fidelity comparisons here. mrdoob/three.js#23069
🆕 Added repetitions and pingpong options to the play() method for better animation control. Thanks @futahei! #3021, #3104
🆕 Added uv coordinates to the output of positionAndNormalFromPoint(). Thanks @BR14Nx! #3043
🆕 Added a zoom() function to allow programmatic camera manipulation equivalent to keyboard/scroll/pinch zoom behavior. #3087
🆕 Default framing now accounts for non-default field of view. This means when you want a custom focal length, you no longer need to calculate and set a corresponding radius in camera-orbit. #3105

Bug fixes

  • Fixed slow loading for identical models in multiple elements. BREAKING CHANGE: the setURI method now changes a texture for all models that point to it. To individually change a texture when the same model has been reused, please use the newer createTexture API. #2935
  • Fixed setAlphaMode. Thanks @SrirachaSource! #2985
  • Reduced shader re-compilation to improve performance. #3045
  • Fixed clicks causing extra progress bar advancement. Thanks @mehak08g! #3077
  • Workaround for a Safari 15 bug that was causing textures to randomly show up black. #3082
  • Output now correctly uses sRGB encoding rather than gamma. This slightly lightened our renders, so you may want to regenerate seamless poster images. #3082
  • Fixed some subtle camera errors. #3087
  • Fixed variant switching error. Thanks @SrirachaSource! #3086
  • Fixed Windows loading performance regression (properly this time). #3004
  • Made progress bar advance more linearly. #3110, #3111

Examples

Added Thor camera views example. Thanks @hybridherbst! #3018
Fixed example strings. Thanks @benmbark! #3040
Updated transparency example to demonstrate glTF transmission support. #3112

Other notable changes

  • Updated to Three.js r136. Includes an upstreamed performance improvement for PBR: mrdoob/three.js#22998
  • Made a generic 3D Twitter player card and a generator for anyone to quickly customize their own. #3026, #3031, #3036, #3038
  • Improved developer experience by unpackaging shared-assets and shallow-cloning Khronos sample models. #3079

Editor

Compare
Choose a tag to compare

Bug fixes

  • Fixed scale/orientation attributes being ignored on load. #2904
  • Fixed raycasting in WebXR mode. Note, this is potentially a BREAKING CHANGE for users of the positionAndNormalFromPoint and materialFromPoint methods, as these now take absolute coordinates like clientX rather than relative coordinates like offsetX. Sorry for not quite following semver here, but these methods are only used by a small fraction of our users, the required change is very small, and this was the only way to fix this bug. #2905
  • Fixed raycasting for animated models. #2925
  • Fixed a major loading performance regression (as much as 10x on Windows). #2936
3f70a83
Compare
Choose a tag to compare

Bug fixes

  • Reverts #2936 as this caused render breakage on some Android phones: #2949. Unfortunately this means the performance regression is back: #2915. The underlying issue is mostly understood, but will require our next release cycle to get fixed upstream in three.js. Stay tuned.
b08e68f
Compare
Choose a tag to compare

Features

🆕 glTF variants now supported by the scene-graph material API. #2700, #2764, #2816
🆕 Added materialFromPoint and getMaterialByName methods. #2839
🆕 Support for EXT_meshopt_compression. Thanks @donmccurdy! #2706
🆕 Added generate-schema attribute. #2853
🆕 Added seamless-poster attribute for transparent posters with shadows. #2865

Bug fixes

  • Fixed several mouse/touch UX quirks. Thanks @lucadalli! #2691, #2722, #2724, #2728, #2730
  • Fixed shadow clipping when switching models during auto-rotate. #2765
  • Fixed material API for skinned meshes. #2799, #2801
  • Workaround for flaky black renders on Safari (WebGL corruption). #2832
  • xr-environment was being used always in WebXR mode instead of opt-in as intended. #2847
  • Improved loading performance by generating the environment in parallel with the model fetch. #2870
  • Fixed USDZ auto-generation for models with differently sized normal and roughness maps. #2878

Examples

Updated custom controls examples for improved UX. Thanks @lucadalli! #2760
Added material picking example. #2839, #2855
Updated Performance examples for the seamless-poster attribute and webP posters. #2865

Other notable changes

Editor

  • Automatic WebP poster generation. #2711
  • Added an animation scrubber. #2723
  • Tweaked the camera UI and fixed several bugs. #2701, #2712, #2789
  • Fixed file-open on mobile. #2770
  • Added joint count to validator output. #2779
  • Support glTF loading, including folders and zip archives. #2781
  • Default lighting switched to "neutral". #2805, #2819
  • Select material by clicking the model. #2879
f94c8c2
Compare
Choose a tag to compare

Features

🆕 You can now select your power preference for dual GPU machines (default is "high-performance"; choose "low-power" to avoid a slight UX hitch on tab switch if your element is small enough to not heavily tax the GPU): #2656
🆕 WebXR UX: now in AR the model can be interacted with before it is placed on the floor/wall: #2606
🆕 Added doubleSided, alphaMode, and alphaCutoff to the scene-graph API: #2616
🆕 Added createTexture() and setTexture() to the scene-graph API: #2505
🆕 Added createThumbnail(width, height) method to extract the contents of textures: #2566
🆕 We now properly export the glTF variants extension. Thanks @takahirox! #2544
🆕 You can now opt-in to use AR lighting estimation in WebXR mode. Thanks @takahirox! #2471

Bugfixes

  • Fixed black models on GL context loss: #2657
  • Don't show the AR button when there is no src: #2639
  • Fixed a long-standing memory leak. Thanks @ukito-pl! #2600
  • Fixed framing of quantized models: #2463

Other notable changes

  • Updated to Three.js r131.2
  • With the Three.js update we now support most of the new PBRNext glTF extensions. We're still working through some bugs, but you can check our current render fidelity status here.

Editor

  • Major refactor of the editor, removing a large chunk of the code base in favor of using <model-viewer>'s scene-graph API. As a part of this many bugs were fixed and several UX changes were made, notably you can now load glTF in addition to GLB and KTX2 textures don't throw an error. Also, thanks to auto-generation you can see your glTF in AR on iOS without uploading a separate USDZ. #2469
e2f6eb6
Compare
Choose a tag to compare

Bugfixes

  • Fixed certain models rendering black/shiny. Thanks @timmmeh! #2411
  • Removed two-finger rotation for wall-placed objects: #2412
  • Simplified the default progress bar to make CSS part styling easier: #2414
  • The scene-graph API now allows modification of a glTF default material: #2420
  • USDZ generation now triggers glTF model-load, avoiding an empty scene: #2421