<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <id>https://web.dev/</id>
  <title>Rob Kochman on web.dev</title>
  <updated>2026-04-15T23:21:06Z</updated>
  <author>
    <name>Rob Kochman</name>
  </author>
  <link href="https://web.dev/authors/rkochman/feed.xml" rel="self"/>
  <link href="https://web.dev/"/>
  <icon>https://web-dev.imgix.net/image/admin/2TCATL7dglEFzZZWnXo0.jpg?auto=format</icon>
  <logo>https://web.dev/images/shared/rss-banner.png</logo>
  <subtitle>Our latest news, updates, and stories by Rob Kochman.</subtitle>
  
  
  <entry>
    <title>Introducing &lt;model-viewer&gt; 1.1</title>
    <link href="https://web.dev/introducing-model-viewer/"/>
    <updated>2020-09-03T00:00:00Z</updated>
    <id>https://web.dev/introducing-model-viewer/</id>
    <content type="html" mode="escaped">&lt;p&gt;3D models are more relevant than ever. Retailers bring in-store shopping
experiences to customers&#39; homes. Museums are making 3D models of their artifacts
available to everyone on the web. Unfortunately, it can be difficult to add a 3D
model to a website in a way that provides a great user experience without a deep
knowledge of 3D technologies or resorting to hosting 3D content on a third-party
site. The &lt;code&gt;&amp;lt;model-viewer&amp;gt;&lt;/code&gt; web component, &lt;a href=&quot;https://web.dev/model-viewer&quot;&gt;introduced in early
2019&lt;/a&gt;, seeks to make putting 3D models on the web as easy as
writing a few lines of HTML. Since then, the team has been working to address
feedback and requests from the community. The culmination of that work was
&lt;code&gt;&amp;lt;model-viewer&amp;gt;&lt;/code&gt; version 1.0, released earlier this year. We&#39;re now announcing
the release of &lt;code&gt;&amp;lt;model-viewer&amp;gt;&lt;/code&gt; 1.1. You can &lt;a href=&quot;https://github.com/google/model-viewer/releases/tag/v1.1.0&quot; rel=&quot;noopener&quot;&gt;read the release
notes&lt;/a&gt; in GitHub.&lt;/p&gt;
&lt;h2 id=&quot;whats-new-since-last-year&quot;&gt;What&#39;s new since last year? &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/introducing-model-viewer/#whats-new-since-last-year&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Version 1.1 includes built-in support for augmented reality (AR) on the web,
improvements to speed and fidelity, and other frequently-requested features.&lt;/p&gt;
&lt;h3 id=&quot;augmented-reality&quot;&gt;Augmented reality &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/introducing-model-viewer/#augmented-reality&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Viewing a 3D model on a blank canvas is great, but being able to view it in your
space is even better. For an entirely-within-the-browser 3D and AR Chrome
Android supports &lt;a href=&quot;https://modelviewer.dev/examples/augmented-reality.html&quot; rel=&quot;noopener&quot;&gt;augmented
reality&lt;/a&gt; using WebXR .&lt;/p&gt;
&lt;figure&gt;
  &lt;video controls=&quot;&quot; muted=&quot;&quot;&gt;
    &lt;source src=&quot;https://storage.googleapis.com/web-dev-assets/introducing-model-viewer/modelviewer1-0.webm&quot; type=&quot;video/webm&quot; /&gt;
    &lt;source src=&quot;https://storage.googleapis.com/web-dev-assets/introducing-model-viewer/modelviewer1-0.mp4&quot; type=&quot;video/mp4&quot; /&gt;
  &lt;/video&gt;
  &lt;figcaption&gt;
    A demonstration of the &lt;code&gt;&amp;lt;model-viewer&gt;&lt;/code&gt; AR capability.
  &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;When it&#39;s ready, you&#39;ll be able to use it by add an &lt;code&gt;ar&lt;/code&gt; attribute to the
&lt;code&gt;&amp;lt;model-viewer&amp;gt;&lt;/code&gt; tag. Other attributes allow you to customize the WebXR AR
experience, as shown in &lt;a href=&quot;https://modelviewer.dev/examples/webxr.html&quot; rel=&quot;noopener&quot;&gt;the WebXR sample on
modelviewer.dev&lt;/a&gt;. The code sample
below shows what this might look like.&lt;/p&gt;
&lt;div&gt;&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;model-viewer&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;Chair.glb&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token attr-name&quot;&gt;ar&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;ar-scale&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;auto&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token attr-name&quot;&gt;camera-controls&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token attr-name&quot;&gt;alt&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;A 3D model of an office chair.&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;model-viewer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- Hide until model-viewer&#39;s iframe bug is fixed --&gt;
&lt;!-- &lt;iframe style=&quot;width:100%; height: 100%;position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%);&quot; src=&quot;https://modelviewer.dev/examples/webxr.html&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt; --&gt;
&lt;p&gt;It looks something like the embedded video shown under this heading.&lt;/p&gt;
&lt;h3 id=&quot;camera-controls&quot;&gt;Camera controls &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/introducing-model-viewer/#camera-controls&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;model-viewer&amp;gt;&lt;/code&gt; now gives full control over the view&#39;s virtual camera (the
perspective of the viewer). This includes the camera target, orbit (position
relative to the model), and field of view. You can also enable auto-rotation and
set limits on user interaction (e.g. maximum and minimum fields of view).&lt;/p&gt;
&lt;h3 id=&quot;annotations&quot;&gt;Annotations &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/introducing-model-viewer/#annotations&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;You can also annotate your models using HTML and CSS. This capability is often
used to &amp;quot;attach&amp;quot; labels to parts of the model in a way that moves with the model
as it&#39;s manipulated. The annotations are customizable, including their
appearance and the extent to which they&#39;re hidden by
the model. Annotations also work in AR.&lt;/p&gt;
&lt;div&gt;&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;style&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token style&quot;&gt;&lt;span class=&quot;token language-css&quot;&gt;&lt;br /&gt;  &lt;span class=&quot;token selector&quot;&gt;button&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; block&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 6px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 6px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 3px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 3px solid blue&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; blue&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;box-sizing&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; border-box&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class=&quot;token selector&quot;&gt;#annotation&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #dddddd&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; absolute&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;translate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;10px&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 10px&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 10px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 10px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;style&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;model-viewer&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;https://modelviewer.dev/assets/ShopifyModels/ToyTrain.glb&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;alt&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;A 3D model of a Toy Train&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;camera-controls&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;button&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;slot&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;hotspot-hand&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;data-position&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;-0.023 0.0594 0.0714&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;data-normal&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;-0.3792 0.0004 0.9253&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;annotation&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Whistle&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;button&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;model-viewer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- Hide until model-viewer&#39;s iframe bug is fixed --&gt;
&lt;!-- &lt;iframe style=&quot;width:100%; height: 100%;position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%);&quot; src=&quot;https://modelviewer.dev/webdotdev/annotations.html&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt; --&gt;
&lt;figure data-float=&quot;right&quot;&gt;
  &lt;img alt=&quot;A space suit with an annotation.&quot; decoding=&quot;async&quot; height=&quot;839&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 800px) 800px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/admin/CG1JQXZP9Gncr7qLz5JZ.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/admin/CG1JQXZP9Gncr7qLz5JZ.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/admin/CG1JQXZP9Gncr7qLz5JZ.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/admin/CG1JQXZP9Gncr7qLz5JZ.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/admin/CG1JQXZP9Gncr7qLz5JZ.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/admin/CG1JQXZP9Gncr7qLz5JZ.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/admin/CG1JQXZP9Gncr7qLz5JZ.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/admin/CG1JQXZP9Gncr7qLz5JZ.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/admin/CG1JQXZP9Gncr7qLz5JZ.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/admin/CG1JQXZP9Gncr7qLz5JZ.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/admin/CG1JQXZP9Gncr7qLz5JZ.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/admin/CG1JQXZP9Gncr7qLz5JZ.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/admin/CG1JQXZP9Gncr7qLz5JZ.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/admin/CG1JQXZP9Gncr7qLz5JZ.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/admin/CG1JQXZP9Gncr7qLz5JZ.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/admin/CG1JQXZP9Gncr7qLz5JZ.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/admin/CG1JQXZP9Gncr7qLz5JZ.png?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/admin/CG1JQXZP9Gncr7qLz5JZ.png?auto=format&amp;w=1600 1600w&quot; width=&quot;800&quot; /&gt;
  &lt;figcaption&gt;A space suit with an annotation.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;See the &lt;a href=&quot;https://modelviewer.dev/examples/annotations.html&quot; rel=&quot;noopener&quot;&gt;annotations documentation
page&lt;/a&gt; for more information.&lt;/p&gt;
&lt;h3 id=&quot;editor&quot;&gt;Editor &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/introducing-model-viewer/#editor&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Version 1.1 introduces and hosts a &lt;code&gt;&amp;lt;model-viewer&amp;gt;&lt;/code&gt; &lt;a href=&quot;https://modelviewer.dev/editor/&quot; rel=&quot;noopener&quot;&gt;&amp;quot;editing&amp;quot;
tool&lt;/a&gt;, which enables you to
quickly preview your model, try out different &lt;code&gt;&amp;lt;model-viewer&amp;gt;&lt;/code&gt; configurations
(e.g. exposure and shadow softness), generate a poster image, and interactively
get coordinates for annotations.&lt;/p&gt;
&lt;h3 id=&quot;rendering-and-performance-improvements&quot;&gt;Rendering and performance improvements &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/introducing-model-viewer/#rendering-and-performance-improvements&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Rendering fidelity is greatly improved, especially for high dynamic range (HDR)
environments. &lt;code&gt;&amp;lt;model-viewer&amp;gt;&lt;/code&gt; now also uses a direct render path when only one
&lt;code&gt;&amp;lt;model-viewer&amp;gt;&lt;/code&gt; element is in the viewport, which increases performance
(especially on Firefox). Lastly, dynamically scaling the render resolution
improved frame rate dramatically. The example below shows off some of these
recent improvements.&lt;/p&gt;
&lt;div&gt;&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;model-viewer&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;camera-controls&lt;/span&gt;&lt;br /&gt;              &lt;span class=&quot;token attr-name&quot;&gt;skybox-image&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;spruit_sunrise_1k_HDR.hdr&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;              &lt;span class=&quot;token attr-name&quot;&gt;alt&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;A 3D model of a well-worn  helmet&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;              &lt;span class=&quot;token attr-name&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;DamagedHelmet.glb&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;model-viewer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- Hide until model-viewer&#39;s iframe bug is fixed --&gt;
&lt;!-- &lt;iframe style=&quot;width:100%; height: 100%;position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%);&quot; src=&quot;https://modelviewer.dev/webdotdev/rendering.html&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt; --&gt;
&lt;figure data-float=&quot;right&quot;&gt;
  &lt;img alt=&quot;A 3D model of a well-worn  helmet.&quot; decoding=&quot;async&quot; height=&quot;809&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 800px) 800px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/admin/ZAID4J5TsJTcJs3qPNTp.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/admin/ZAID4J5TsJTcJs3qPNTp.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/admin/ZAID4J5TsJTcJs3qPNTp.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/admin/ZAID4J5TsJTcJs3qPNTp.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/admin/ZAID4J5TsJTcJs3qPNTp.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/admin/ZAID4J5TsJTcJs3qPNTp.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/admin/ZAID4J5TsJTcJs3qPNTp.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/admin/ZAID4J5TsJTcJs3qPNTp.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/admin/ZAID4J5TsJTcJs3qPNTp.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/admin/ZAID4J5TsJTcJs3qPNTp.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/admin/ZAID4J5TsJTcJs3qPNTp.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/admin/ZAID4J5TsJTcJs3qPNTp.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/admin/ZAID4J5TsJTcJs3qPNTp.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/admin/ZAID4J5TsJTcJs3qPNTp.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/admin/ZAID4J5TsJTcJs3qPNTp.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/admin/ZAID4J5TsJTcJs3qPNTp.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/admin/ZAID4J5TsJTcJs3qPNTp.png?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/admin/ZAID4J5TsJTcJs3qPNTp.png?auto=format&amp;w=1600 1600w&quot; width=&quot;800&quot; /&gt;
  &lt;figcaption&gt;A 3D model of a well-worn  helmet.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id=&quot;stability&quot;&gt;Stability &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/introducing-model-viewer/#stability&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;With &lt;code&gt;&amp;lt;model-viewer&amp;gt;&lt;/code&gt; reaching its first major version, API stability is a
priority, so breaking changes will be avoided until version 2.0 is released.&lt;/p&gt;
&lt;h2 id=&quot;whats-next&quot;&gt;What&#39;s next? &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/introducing-model-viewer/#whats-next&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;model-viewer&amp;gt;&lt;/code&gt; version 1.0 includes the most-requested capabilities, but the
team is not done yet. More features will be added, as will improvements in
performance, stability, documentation, and tooling. If you have suggestions,
file an &lt;a href=&quot;https://github.com/google/model-viewer/issues&quot; rel=&quot;noopener&quot;&gt;issue in GitHub&lt;/a&gt;; also,
PRs are always welcome. You can stay connected by following &lt;a href=&quot;https://twitter.com/modelviewer&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;&amp;lt;model-viewer&amp;gt;&lt;/code&gt; on
Twitter&lt;/a&gt; and checking out the &lt;a href=&quot;https://spectrum.chat/model-viewer?tab=posts&quot; rel=&quot;noopener&quot;&gt;community chat
on Spectrum&lt;/a&gt;.&lt;/p&gt;
</content>
    <author>
      <name>Rob Kochman</name>
    </author><author>
      <name>Joe Medley</name>
    </author>
  </entry>
</feed>
