Das HTML-Element <model> kommt auf jedes Apple-Betriebssystem
Auf der WWDC 2026 ließ ein Safari-Ingenieur einen 3D-Campinghammer mit einem einzigen Tag, <model>, ohne JavaScript-Bibliothek, auf eine E-Commerce-Produktseite fallen und ließ Besucher ihn mit dem Finger drehen.1 Das Element, das dies möglich macht, wird auf visionOS schon seit einer Weile ausgeliefert. Die Neuigkeit von 2026 ist, dass dasselbe Markup nun in Safari auf iPhone, iPad und Mac rendert und die JavaScript-API drumherum erwachsen geworden ist. Apple brachte es auf den Punkt: „Wir haben das Model-Element auf visionOS eingeführt … Jetzt kommt das Model-Element auf iOS, iPadOS und macOS! Dasselbe Markup, dasselbe Element funktioniert über die Plattformen von Apple hinweg.”1
Die folgende Anleitung folgt dem Pfad für 3D zum direkten Einbinden, den die Session vorzeichnet — vom statischen <img>-Fallback über die Orbit-Interaktion, skriptgesteuerte Transformationen und die Wiedergabe gebackener Animationen bis hin zu AR Quick Look. Alles hier stammt direkt aus WWDC-2026-Session 215.
TL;DR
- Das
<model>-Element debütierte zuvor auf visionOS; die WWDC 2026 weitet es auf Safari unter iOS, iPadOS und macOS aus und lässt die JavaScript-API drumherum reifen.1 - Ein Modell wird wie Medien eingebettet: Richten Sie
srcauf eine USDZ-Datei, fügen Sie wie bei<video><source>-Tags mit MIME-Typen hinzu und verschachteln Sie ein<img>darin als Fallback für Browser, die das Element noch nicht unterstützen.1 - Das
ready-Promise teilt Ihnen mit, wann ein Modell geladen ist, sodass Sie einen Spinner austauschen können; eincatch-Block zeigt im Fehlerfall Fallback-Inhalte an.1 - Das Attribut
stagemode="orbit"ermöglicht mit einem einzigen Attribut interaktives Drehen; für skriptgesteuerte Kontrolle setzen Siestagemode="none"und steuernentityTransformmit einerDOMMatrix, die überrotateSelfaufgebaut wird.1 - Gebackene Animation wird über
playbackRateplusplay()wiedergegeben, eine negative Rate spielt sie rückwärts ab, und das Verschachteln des Modells in<a rel="ar">beschert Besuchern unter iOS und iPadOS ein vollständiges AR-Quick-Look-Erlebnis.1
Was tatsächlich ausgeliefert wurde
Aleksei vom Safari-Team ordnet die plattformübergreifende Ausweitung ab 0:37 ein.
Die ehrliche Einordnung ist hier wichtig. Das <model>-Element ist nicht brandneu. Apple hat es zuerst auf visionOS ausgeliefert, wo es ein integriertes stereoskopisches Rendering mitbrachte, sodass ein Produkt auf der Apple Vision Pro echte Tiefe vermitteln konnte.1 Die WWDC 2026 tut zwei Dinge auf dieser Grundlage: Sie bringt das Element in Safari unter iOS, iPadOS und macOS, sodass „Ihre 3D-Inhalte jeden Safari-Besucher erreichen, egal ob er unterwegs am iPhone, im Café am iPad oder am Schreibtisch am Mac sitzt”, und sie baut die JavaScript-API aus, die aus einem statischen Viewer einen interaktiven macht.1
Das Argument gegen den Status quo ist direkt. Das meiste 3D im Web läuft heute über model-viewer, die beliebte JavaScript-Bibliothek. Apples Argument: Das native Element benötigt keine zusätzliche Bibliothek, rendert „direkt durch die Plattform” und ist „ein aufkommender Webstandard, sodass Ihr Code zukunftssicher ist.”1 Apples Safari-Team sagt, es trage „aktiv zur Model-Spezifikation beim W3C bei” und lädt über die Immersive Web Community Group zu Feedback ein.1 Für Browser, die das Element noch nicht unterstützen, verweist die Session auf ein Polyfill, das „die API eines neuen Standards per JavaScript nachrüstet” — mit einem zitierenswerten Vorbehalt: „Einige Funktionen des Elements lassen sich nicht per Polyfill nachrüsten, etwa die stereoskopische Darstellung auf räumlichen Plattformen wie der Apple Vision Pro.”1
Das Inhaltsformat ist USDZ, „Universal Scene Description, in eine einzige Datei gezippt”, die „alles verpackt, was ein 3D-Modell braucht: Geometrie, Materialien, Texturen, Animationen.”1 Safari unterstützt andere Formate, doch die Session empfiehlt USDZ für das beste Erlebnis.1 Woher die Assets stammen, ist eine separate Frage. Apple empfiehlt einen Capture-, Convert-, Create-Ansatz: reale Objekte mit einem iPhone scannen, vorhandene Dateien konvertieren oder in Werkzeugen wie Blender von Grund auf neu bauen.1 Die Session merkt außerdem an, dass es generative Werkzeuge im Ökosystem gibt; die genannten Apps, Tripo3D und Meshy.ai, sind Drittanbieterdienste, keine Apple-Produkte.1
Ein Modell auf die Seite setzen
Das Element verhält sich wie die Medien-Tags, die jeder Webentwickler bereits kennt. „Genau wie beim <img>-Tag oder <video>-Tag richten Sie das <model>-Tag mit dem Source-Attribut auf eine Datei, und der Browser übernimmt den Rest. Keine Plugins erforderlich.”1 Sie können auch ein verschachteltes <source>-Tag mit einem MIME-Typ verwenden — dasselbe Muster wie bei <video> (die Session zeigt das Muster, ohne den Wert zu nennen; model/vnd.usdz+zip ist der Standard-Medientyp für USDZ). Der Fallback ist der Teil, der die Einführung heute sicher macht: Platzieren Sie ein <img> innerhalb des <model>, und ältere Safari-Versionen oder Browser ohne Unterstützung rendern stattdessen das Bild.1
<model src="mallet.usdz">
<source src="mallet.usdz" type="model/vnd.usdz+zip">
<img src="mallet.jpg" alt="Campinghammer" width="480" height="480">
</model>
3D-Modelle können „mehrere zehn Megabyte oder mehr” umfassen, sodass das Laden Zeit braucht.1 Das ready-Promise wird aufgelöst, wenn das Modell tatsächlich geladen und anzeigebereit ist. Zeigen Sie während des Wartens einen Spinner, blenden Sie ihn aus, wenn ready aufgelöst wird, und behandeln Sie Unerwartetes im catch-Block, indem Sie Fallback-Inhalte einblenden:
const model = document.querySelector("model");
try {
await model.ready;
spinner.hidden = true; // model is loaded and ready to display
} catch (error) {
spinner.hidden = true;
fallback.hidden = false; // show fallback content on failure
}
Ein Rendering-Detail bringt Leute aus dem Konzept. Das <model>-Element „wird in seinem eigenen virtuellen Raum gerendert, sodass es den Hintergrund der Seite nicht übernimmt.”1 Um es an Ihr Seitendesign anzupassen, setzen Sie background-color direkt auf das Modell. Die Session ergänzt eine Einschränkung: „Der Hintergrund wird immer deckend gerendert; selbst wenn Sie eine Farbe mit Transparenz angeben, wird sie umgewandelt.”1
Besucher es erkunden lassen
Die günstigste Interaktivität kostet ein Attribut. Mit stagemode="orbit" drehen Besucher „das Modell frei von Seite zu Seite, und wenn sie es nach oben oder unten kippen, federt es sanft in seinen ursprünglichen Winkel zurück.”1 Das Modell skaliert sich außerdem etwas kleiner, sodass beim Drehen keine Teile abgeschnitten werden.1 Für die meisten Produktseiten ist dieses eine Attribut bereits die ganze Funktion: „Die Orbit-Stagemode verschafft Ihnen interaktives 3D mit einem einzigen Attribut.”1
Wenn Sie exakte Winkel benötigen, steuern Sie das Modell stattdessen aus JavaScript. Die Eigenschaft entityTransform „lässt Sie exakte Betrachtungswinkel per JavaScript festlegen.”1 Um sie zu nutzen, deaktivieren Sie zuerst Orbit — entweder entfernen Sie das stagemode-Attribut oder setzen es auf "none".1 Die Session warnt, dass manuelle Transformationen Teile des Modells abschneiden oder verbergen können, wenn es aus dem sichtbaren Bereich herausgedreht wird, sodass Sie möglicherweise die Position anpassen müssen.1 Sie bauen die Ausrichtung mit einer DOMMatrix auf, die „die Ausrichtung des Modells im 3D-Raum repräsentiert”, rufen rotateSelf auf, um die Drehung zu definieren, und weisen sie dann zu:
// disable orbit: <model stagemode="none"> in the markup
// capture the original orientation up front, for Reset
const initialTransform = model.entityTransform;
// Side view: rotate 135 degrees around the Y axis
sideButton.addEventListener("click", () => {
const matrix = new DOMMatrix();
matrix.rotateSelf(0, 135, 0);
model.entityTransform = matrix;
});
// Reset to the original orientation
resetButton.addEventListener("click", () => {
model.entityTransform = initialTransform;
});
Das Zuweisen einer Transformation wechselt die Ansicht sofort. Um den Übergang zu glätten, animiert die Session die Drehung mit requestAnimationFrame, mit einer Animationsdauer von 500 Millisekunden, „einer halben Sekunde, die flott, aber dennoch weich wirkt”, glättet die Drehung über die Frames hinweg und aktualisiert entityTransform in jedem Frame mit einer frischen DOMMatrix.1 Der ehrliche Kompromiss, in Apples eigenen Worten: Benutzerdefinierte Transformationen „geben Ihnen volle Kontrolle, erfordern aber zusätzliche Arbeit: Bounding-Boxes, Clipping, manuellen Animationscode.”1 Greifen Sie zu skriptgesteuerten Transformationen, wenn Sie sie brauchen, und verlassen Sie sich auf stagemode="orbit", wenn nicht.
Gebackene Animation abspielen, dann zu AR wechseln
Modelle können auch ihre eigene Bewegung mitbringen. Animationen „werden typischerweise in 3D-Werkzeugen wie Blender oder Maya erstellt und in die USDZ-Datei gebacken”, und das Element „spielt die erste Animationsspur ab.”1 Zwei Zeilen JavaScript steuern die Wiedergabe: Setzen Sie playbackRate auf dem Modell und rufen Sie dann dessen play()-Methode auf. Ein positiver Wert spielt vorwärts ab, ein negativer Wert kehrt sie um, und die Session verwendet 5 und -5 für eine schnellere Wiedergabe:
function play(rate) {
model.playbackRate = rate; // positive plays forward, negative reverses
model.play();
}
play(5); // fast forward
play(-5); // fast reverse
Der letzte Schritt holt das Produkt vom Bildschirm in den Raum. „Verschachteln Sie das Modell in einem <a>-Tag mit dem Attribut rel="ar", richten Sie es auf dieselbe Ressource, und unter iOS und iPadOS erhalten Ihre Kunden ein vollständiges AR-Quick-Look-Erlebnis.”1
<a rel="ar" href="mallet.usdz">
<model src="mallet.usdz">
<img src="mallet.jpg" alt="Campinghammer">
</model>
</a>
Auf visionOS ließ das Element 3D bereits „wie einen natürlichen Teil des Webs wirken”, mit stereoskopischem Rendering, das Kunden erlaubt, „das Produkt aus der Seite zu ziehen und es so zu betrachten, als läge es direkt in ihren Händen”, und es treibt immersive Website-Umgebungen an, die einen Besucher aus Safari heraus in eine Szene versetzen.1
Kleiner ausliefern
Lokale Dateien sehen großartig aus; dieselben Dateien über das Internet laden langsam. Die Session führt ein Befehlszeilenwerkzeug, usdcrush, auf dem Modell aus: „Ohne Qualitätsverlust schrumpft die Datei von 7,9 MB auf 1,9 MB”, und die beiden Versionen, die in Safari nebeneinander geöffnet werden, sehen identisch aus.1 Ein begleitendes Werkzeug, usdrecord, erzeugt direkt aus einer 3D-Datei ein Vorschau- oder Fallback-Bild, wenn Sie noch keines haben, mit Optionen wie dem Ausgabeformat oder dem Rendern aus einer benutzerdefinierten Kamera in der Datei.1 Beide Werkzeuge „sind bereits auf Ihrem Mac installiert” als Teil einer größeren USD-Suite, und die Session merkt an, dass Sie usdrecord über einen gesamten Katalog hinweg skripten können.1 Für das Format selbst veröffentlicht die Alliance for OpenUSD die vollständige USDZ-Spezifikation als „klare, herstellerneutrale Referenz” zusammen mit Konvertierungswerkzeugen.1
Was die Labs zu Größe und Laden ergänzten
Die WWDC-Labs füllten einige Details aus, die die Session offenließ.
Zur Komprimierung: usdcrush kodiert Texturen nun nach AVIF; zuvor wurde JPEG verwendet.2 Apple sagte zudem, es stehe in Gesprächen mit der Alliance for Open Media über ein geeignetes Format zur Mesh-Komprimierung.2
Zur Größe: Das Panel nannte keine harten Grenzen, deutete aber an, dass maximale visuelle Qualität bei einem Modell auf der Seite um die 10 MB liegt. Immersive Umgebungen dürfen berechtigterweise größer sein.2
Zum Laden: Das Panel räumte eine Lücke ein — es gibt heute keine CSS-Pseudoklasse für den Ladezustand eines Modells, sodass das zuvor behandelte ready-Promise das Werkzeug für diese Aufgabe ist.2 Das Panel zog außerdem eine beachtenswerte zweiphasige Unterscheidung: heruntergeladene Bytes sind nicht dasselbe wie eine verarbeitete und nutzbare Ressource.2
Wichtigste Erkenntnisse
Für Webentwickler:
- Fügen Sie <model> schon heute mit einem darin verschachtelten <img>-Fallback hinzu, sodass nicht unterstützende Browser auf ein statisches Bild zurückfallen und unterstützende Safari-Versionen automatisch auf interaktives 3D umschalten.1
- Koppeln Sie die Anzeige an das ready-Promise und behandeln Sie Fehler im catch, denn ein mehrere Megabyte großes USDZ braucht echte Zeit zum Laden.1
Für 3D-Künstler:
- Backen Sie Ihre erste Animationsspur in Blender oder Maya in das USDZ; das Element spielt sie ab und stellt playbackRate plus play() für die Vorwärts- und Rückwärtssteuerung bereit.1
- Führen Sie vor dem Ausliefern usdcrush aus, um die Dateigröße ohne sichtbaren Qualitätsverlust zu reduzieren, und usdrecord, um den <img>-Fallback aus dem Modell selbst zu erzeugen.1
Für Produkt- und Commerce-Teams:
- Nutzen Sie stagemode="orbit" für interaktives Drehen mit nur einem Attribut, und reservieren Sie skriptgesteuertes entityTransform für Fälle, die exakte Winkel oder eine benutzerdefinierte UI erfordern.1
- Verschachteln Sie das Modell in <a rel="ar">, damit Käufer unter iOS und iPadOS das Produkt über AR Quick Look in ihrem eigenen Raum platzieren können.1
FAQ
Ist das HTML-Element <model> im Jahr 2026 brandneu?
Nein. Apple hat das <model>-Element zuerst auf visionOS ausgeliefert. Die WWDC 2026 weitet es mit demselben Markup auf Safari unter iOS, iPadOS und macOS aus und lässt die JavaScript-API drumherum reifen (das ready-Promise, entityTransform, die Wiedergabe gebackener Animationen und <a rel="ar">).1
Wie füge ich einen Fallback für Browser ohne <model>-Unterstützung hinzu?
Verschachteln Sie ein <img>-Tag innerhalb des <model>-Tags. Ältere Safari-Versionen und Browser, die das Element noch nicht unterstützen, rendern stattdessen das Bild, sodass Besucher das Produkt dennoch sehen. Es gibt auch ein Polyfill, wobei sich einige Funktionen wie die stereoskopische Darstellung auf visionOS nicht per Polyfill nachrüsten lassen.1
Welches Dateiformat verwendet das <model>-Element?
USDZ, Universal Scene Description, in eine einzige Datei gezippt, die Geometrie, Materialien, Texturen und Animationen verpackt. Safari unterstützt andere Formate, doch Apple empfiehlt USDZ für das beste Erlebnis, und die Alliance for OpenUSD veröffentlicht die vollständige Spezifikation.1
Wie mache ich ein Modell interaktiv?
Setzen Sie stagemode="orbit" für freies Drehen von Seite zu Seite mit einem einzigen Attribut. Für exakte Winkel setzen Sie stagemode="none", bauen eine DOMMatrix mit rotateSelf auf und weisen sie der Eigenschaft entityTransform des Modells zu — animiert über die Frames hinweg mit requestAnimationFrame, falls Sie einen weichen Übergang möchten.1
Wie überführe ich ein Web-Modell in Augmented Reality?
Verschachteln Sie das <model> in einem <a>-Tag mit dem Attribut rel="ar", das auf dieselbe USDZ-Ressource zeigt. Unter iOS und iPadOS verschafft das Besuchern ein vollständiges AR-Quick-Look-Erlebnis, sodass sie das Produkt in ihrer Umgebung platzieren können.1
Das <model>-Element baut auf demselben USD-Fundament auf, das Apple plattformübergreifend vorantreibt: siehe Apples neues Swift-natives USD-Framework, USDKit, und den räumlichen Kontext in Was ist neu in visionOS 27. Das Argument für ein Tag statt einer Bibliothek fügt sich in die umfassendere Argumentation in Das No-Build-Manifest und HTML ist das Format, das Agenten wollen. Der zentrale Hub der gesamten Reihe ist die Apple Ecosystem Series.
Quellenangaben
-
Apple, WWDC 2026 session 215, Get started with the HTML Model element. Source for the visionOS-first origin and cross-platform expansion to iOS, iPadOS, and macOS; the
model-viewercomparison and emerging W3C standard; the<model>/<source>/<img>-fallback markup with thesrcattribute; thereadypromise andcatchfallback handling; the opaquebackground-color;stagemode="orbit"andstagemode="none"; theentityTransformproperty driven by aDOMMatrixviarotateSelf(135 degrees around the Y axis) andrequestAnimationFrameanimation at 500 ms; baked first-track animation controlled byplaybackRateandplay()(using 5 and -5);<a rel="ar">AR Quick Look on iOS and iPadOS; visionOS stereoscopic rendering and immersive website environments; USDZ and the Alliance for OpenUSD specification; theusdcrush(7.9 MB to 1.9 MB) andusdrecordcommand-line tools; and the third-party generative apps Tripo3D and Meshy.ai named as ecosystem options. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Paraphrased from a locally transcribed recording of the WWDC 2026 Safari & Web Technologies Group Lab; official captions were partial. Apple, WWDC 2026, Safari & Web Technologies Group Lab. Source for
usdcrushnow compressing textures to AVIF (previously JPEG) and Apple’s discussions with the Alliance for Open Media about a mesh-compression format; the size guidance (no hard limits, but maximum visual quality lands around 10 MB for in-page models, with immersive environments legitimately larger); and the loading-state notes (no CSS pseudo-class for a model’s loading state today, with thereadypromise as the tool, plus the two-phase distinction that bytes downloaded is not the same as the resource being processed and usable). ↩↩↩↩↩