Features
interact()
method to create synthetic touch gestures that move the model; ideal for creating custom interaction prompts for rotation, zoom, and pan. #3320
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 forcamera-target
changes. #3427 - Updated criteria for detecting baked shadow planes (unlit no longer required). #3431
Examples
interact()
and the finger
slots. #3320
Other notable changes
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
Features
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
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
render-scale
event, to get analytics on when your users are GPU-throttling. #3307
timeScale
to control speed of animation or play in reverse. Thanks @futahei! #3129, #3304
name
set. Thanks @slightHYP! #3175
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
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
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
This is actually identical to v1.10.0, but a bad build was pushed to npm, so this is resolving that error.
Features
repetitions
and pingpong
options to the play()
method for better animation control. Thanks @futahei! #3021, #3104
uv
coordinates to the output of positionAndNormalFromPoint()
. Thanks @BR14Nx! #3043
zoom()
function to allow programmatic camera manipulation equivalent to keyboard/scroll/pinch zoom behavior. #3087
camera-orbit
. #3105
Bug fixes
- Fixed slow loading for identical models in multiple elements.
✋ BREAKING CHANGE: thesetURI
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 newercreateTexture
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
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
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 thepositionAndNormalFromPoint
andmaterialFromPoint
methods, as these now take absolute coordinates likeclientX
rather than relative coordinates likeoffsetX
. 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
Features
materialFromPoint
and getMaterialByName
methods. #2839
generate-schema
attribute. #2853
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
Other notable changes
- Updated to Three.js r133, which pulled several fixes including rendering transparent materials properly without a skybox.
- Updated DRACO decoder version. #2705
- Updated Fidelity Results page. #2677, #2685, #2741, #2749, #2752, #2757, #2829, #2851
- Updated Fidelity path tracer. Thanks @bsdorra! #2806, #2820, #2854
- Removed the old interactive example, redirecting to the Editor instead. #2782
- Use Trusted Types for better static analysis of security. #2875
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
Features
doubleSided
, alphaMode
, and alphaCutoff
to the scene-graph API: #2616
createTexture()
and setTexture()
to the scene-graph API: #2505
createThumbnail(width, height)
method to extract the contents of textures: #2566
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
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