Releases: google/model-viewer
v1.10.0
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 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
✨ 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
v1.9.1
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
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
v1.9.2
v1.9.0
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
- 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
v1.8.0
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
v1.7.2
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
v1.7.1
Bugfixes
- Work-around for a Scene Viewer bug that's preventing launch on Android 11. The fix in Scene Viewer is also rolling out, but this will save a couple weeks of down-time: #2399
- Fixed regression where the second model instance was rendering black on Firefox & Safari: #2398
- Fixed a transparent material transform regression: #2390
v1.7.0
Features
🆕 ios-src
is now optional for AR Quick Look on iOS! If you only include quick-look
in ar-modes
, <model-viewer>
will now generate a USDZ on the fly when the user clicks the Enter AR button, and it will include any modifications done through our scene-graph API, like choosing a variant. ios-src
will still take precendence if you need to provide a better model than our auto-generation (for instance we don't yet support animation). Thanks @kolodi! #2374
🆕 Updated the WebXR UX based on user feedback. Now the object is immediately placed, world-locked based on the last camera position from 3D mode, then when the floor is found, it is moved up or down to land on it: #2279
🆕 Added two-finger rotation to the WebXR UX, allowing large models to be rotated when you cannot touch outside their bounding box: #2355
🆕 Added an ar-tracking
read-only attribute to indicate the state of ARCore world tracking in order to surface error messages: #2363
🆕 Added an interpolation-decay
attribute to control the speed of camera and target interpolation, see the modified example. Thanks @timmmeh! #2286
🆕 Added CSS part
to our default UI elements to allow them to be easily styled. This takes the place of most of our CSS custom properties, which have now been deprecated and will be removed when v2.0 comes. Thanks @mrdoob! #2370
🆕 Added support for external renderers. This is an early-phase feature and the idea is to make it possible to control a cloud-based or non-glTF renderer with <model-viewer>
's camera and annotation APIs: #2328
Bugfixes
- Fixed transparent objects not animating properly: #2267
- Fixed occasional strangely resized renders: #2300
- Fixed shadows being improperly scaled when models were switched and rescaled in WebXR mode: #2317
- Ensure animations play in WebXR mode even if the poster has not been dismissed yet: #2364
- Now surfacing WebXR error messages in the console, along with messages about which AR modes were requested and/or failed: #2372
Other notable changes
- Updated to Three.js r128
- Improved aethetics of the neutral lighting. Thanks @thomastgt! #2249
v1.6.0
Bugfixes
- Fixed model-viewer iframes that were swallowing scroll events. Now you must explicitly set
touch-action:none
if you want all scroll events swallowed, even for fullscreen elements: #2058 - Workaround for Chrome WebXR rendering bug which caused intermittent artifacts on some devices: #2091
- Fixed a memory leak so that
ModelCacheSize
works as intended. Thanks @mqg734! #2092 - Handle relative URL parameters in Scene Viewer: #2096
- Proper encoding of Cloudfront, etc. URLs for Scene Viewer. Thanks @kanthiganesh! #2099
Other notable changes
- Updated to Three.js r126
- Fixed documentation typos. Thanks @devbridie! #2050
Editor
- Fix progress bar removal error. Thanks @hjeldin! #2084
- Clean up TS types. Thanks @wafuwafu13! #2061
v1.5.0
New features
🆕 Added support for the KHR_texture_basisu extension of glTF, for reduced GPU memory footprint; see the example, #1989
Bugfixes
- Fixed normal maps for glTF variants and metallic-looking renders on some mobile GPUs, #1984
- Fixed glTF variant selection when using the attribute, #1967
Other notable changes
- Deprecated IE11: In line with Microsoft's deprecation, we are no longer publishing model-viewer-legacy.js on NPM and IE-specific code is now being removed. We have also updated our examples as polyfills are not required anymore to support all modern browsers. The focus-visible polyfill is the only one we now recommend, and only for improved UI.
- Updated to Three.js r125
Editor
- The Khronos glTF Validator is now built into our editor and automatically checks each model and can display the list of errors, warnings, and info, #1992
- Our editor now includes several custom slotted elements including a nicer progress bar, AR button, and AR prompt. The ZIP you download includes everything you need and makes it easy to modify instead of starting from scratch. They can also be disabled if you prefer the default UX, #1983
- Generic error handling and raising of model parsing problems, thanks @hjeldin! #1972