{"$schema": "https://raw.githubusercontent.com/guitaripod/wwdc-sessions/master/schema/transcript.schema.json", "id": "wwdc2026-215", "language": "eng", "source": "https://developer.apple.com/videos/play/wwdc2026/215", "wordCount": 2127, "segments": [{"start": 7.0, "text": "Hi, my name is Aleksei an engineer from the Safari team."}, {"start": 11.0, "text": "Today I'm thrilled to tell you about the HTML Model element,"}, {"start": 16.0, "text": "and how we're making it easier for developers to bring 3D content"}, {"start": 21.0, "text": "to the web across Apple platforms and beyond."}, {"start": 25.0, "text": "Whether you're a web developer exploring 3D for the first time,"}, {"start": 29.0, "text": "or an experienced 3D artist looking to bring your work to the web,"}, {"start": 34.0, "text": "I've got everything you need to get started."}, {"start": 37.0, "text": "We pioneered the Model element in visionOS —"}, {"start": 40.0, "text": "a native HTML element that makes adding a 3D model as simple as adding an image."}, {"start": 48.0, "text": "Now the Model element comes to iOS, iPadOS, and macOS!"}, {"start": 54.0, "text": "The same markup, the same element works across Apple's platforms."}, {"start": 60.0, "text": "Your 3D content reaches every Safari visitor"}, {"start": 64.0, "text": "whether they are on iPhone on the go,"}, {"start": 68.0, "text": "on iPad at the coffee shop,"}, {"start": 72.0, "text": "or on Mac at their desk."}, {"start": 75.0, "text": "You might be familiar with \"model-viewer\", the go-to JavaScript library for 3D today."}, {"start": 81.0, "text": "It's served developers well,"}, {"start": 84.0, "text": "but the Model element is native: no extra library,"}, {"start": 88.0, "text": "rendered directly by the platform,"}, {"start": 90.0, "text": "with built-in stereoscopic rendering on visionOS."}, {"start": 94.0, "text": "It's also an emerging web standard, so your code is future-proof."}, {"start": 100.0, "text": "To reach all platforms across the web, a polyfill is available for browsers"}, {"start": 105.0, "text": "that don't natively support the Model element yet."}, {"start": 109.0, "text": "I'll cover that in more detail later."}, {"start": 112.0, "text": "Let's say I'm working on"}, {"start": 113.0, "text": "an e-commerce platform for outdoor adventures"}, {"start": 117.0, "text": "and I already have images for the products."}, {"start": 119.0, "text": "Today, I'll walk you through adding 3D models to the product pages."}, {"start": 124.0, "text": "First, I'll show you how to get assets ready."}, {"start": 128.0, "text": "Then, we'll dive into the Model element"}, {"start": 131.0, "text": "building up the experience one feature at a time."}, {"start": 134.0, "text": "And finally, I'll show you command-line tools to optimize models for production."}, {"start": 140.0, "text": "Let's get into it."}, {"start": 142.0, "text": "What if you don't have 3D assets in the first place?"}, {"start": 146.0, "text": "We recommend a Capture, Convert, Create approach"}, {"start": 149.0, "text": "using your iPhone to scan real-world objects, converting existing files,"}, {"start": 155.0, "text": "or building from scratch in tools like Blender."}, {"start": 159.0, "text": "But there's also been a revolution in generative AI"}, {"start": 162.0, "text": "and with it an entirely new way to make the content you want."}, {"start": 167.0, "text": "You can use images to generate a model that matches a real-world object,"}, {"start": 171.0, "text": "or a text prompt for more creative generation."}, {"start": 175.0, "text": "Apps like Tripo3D and Meshy.ai are only a couple to choose from."}, {"start": 180.0, "text": "My store already has a few products, but I want to add an essential:"}, {"start": 185.0, "text": "a camping mallet."}, {"start": 186.0, "text": "I started with several images of a mallet"}, {"start": 190.0, "text": "and after a few minutes, my model was ready to use."}, {"start": 194.0, "text": "I exported it as a USDZ file."}, {"start": 197.0, "text": "The Model element supports USDZ —"}, {"start": 200.0, "text": "Universal Scene Description, zipped into a single file."}, {"start": 204.0, "text": "It packages everything a 3D model needs:"}, {"start": 207.0, "text": "geometry, materials, textures, animations."}, {"start": 212.0, "text": "Safari supports other formats too, but for the best experience,"}, {"start": 217.0, "text": "I would recommend starting with USDZ."}, {"start": 220.0, "text": "It's time to put a model on the page."}, {"start": 223.0, "text": "Now, the mallet is ready as a USDZ file."}, {"start": 226.0, "text": "I'll cover different ways of presenting the Model element."}, {"start": 230.0, "text": "I'll talk about how to embed a model,"}, {"start": 233.0, "text": "know when it's ready to display, and handle fallbacks."}, {"start": 237.0, "text": "How to match the model to my page design."}, {"start": 240.0, "text": "Let visitors interact and explore."}, {"start": 243.0, "text": "I'll guide you on how to implement custom transforms and play animations."}, {"start": 249.0, "text": "And bring models into the real world with AR Quick Look and spatial computing."}, {"start": 255.0, "text": "OK, starting with loading a model."}, {"start": 258.0, "text": "Just like tag or