{"$schema": "https://raw.githubusercontent.com/guitaripod/wwdc-sessions/master/schema/transcript.schema.json", "id": "wwdc2026-285", "language": "eng", "source": "https://developer.apple.com/videos/play/wwdc2026/285", "wordCount": 2248, "segments": [{"start": 7.0, "text": "Welcome to Discover USDKit, and what's new in OpenUSD."}, {"start": 11.0, "text": "I'm Lee, an engineer on Apple's Spatial Standards team."}, {"start": 15.0, "text": "USD is the backbone of the spatial experiences Apple creates"}, {"start": 19.0, "text": "and how we represent spatial scenes."}, {"start": 22.0, "text": "From the apps you create,"}, {"start": 23.0, "text": "to the content you see across our platforms,"}, {"start": 25.0, "text": "all these spatial experiences are built on top of USD."}, {"start": 29.0, "text": "USD was created by Pixar,"}, {"start": 31.0, "text": "and Apple was early to recognize its potential."}, {"start": 34.0, "text": "We've been collaborating with them ever since."}, {"start": 37.0, "text": "Today, we're taking that even further."}, {"start": 40.0, "text": "I'll be covering the latest advancements in USD on our platforms"}, {"start": 44.0, "text": "and a powerful new framework called USDKit"}, {"start": 47.0, "text": "and how it can bridge between Mac and Vision Pro for seamless 3D experiences."}, {"start": 53.0, "text": "Lets start off by looking at the foundational updates"}, {"start": 55.0, "text": "we've made to USD on our platforms."}, {"start": 59.0, "text": "USD has become the common 3D language across many industries."}, {"start": 63.0, "text": "Award-winning films, AAA games, factory floors, surgical suites,"}, {"start": 68.0, "text": "autonomous vehicles, AI-driven simulations; and the reach continues to expand."}, {"start": 74.0, "text": "Apple is leading the charge in making USD the foundation"}, {"start": 77.0, "text": "for the next generation of spatial experiences."}, {"start": 80.0, "text": "The open source project behind USD is called OpenUSD,"}, {"start": 84.0, "text": "the industry-standard library for describing 3D scenes"}, {"start": 87.0, "text": "originally pioneered by Pixar."}, {"start": 89.0, "text": "But USD doesn't work alone."}, {"start": 92.0, "text": "It integrates with MaterialX, originally from Lucasfilm"}, {"start": 95.0, "text": "for rich material descriptions,"}, {"start": 97.0, "text": "and new this year, OpenVDB, originally from DreamWorks,"}, {"start": 101.0, "text": "bringing volumetric data into the mix."}, {"start": 103.0, "text": "Each of these technologies was built"}, {"start": 105.0, "text": "by world-class visual effects and animation studios,"}, {"start": 108.0, "text": "and together, they form a powerful, composable foundation for 3D."}, {"start": 113.0, "text": "Across all our platforms this year, we've updated all three,"}, {"start": 116.0, "text": "so you can take advantage of the latest improvements in each."}, {"start": 120.0, "text": "Apple is a member of the Academy Software Foundation,"}, {"start": 123.0, "text": "the home of open source projects like MaterialX and OpenVDB."}, {"start": 127.0, "text": "Through the Foundation, we actively contribute to these projects,"}, {"start": 130.0, "text": "ensuring they evolve in ways that benefit developers and creators across"}, {"start": 134.0, "text": "not just our platforms, but the 3D ecosystem as a whole."}, {"start": 138.0, "text": "Beyond the code,"}, {"start": 139.0, "text": "Apple is a founding member of the Alliance for OpenUSD,"}, {"start": 143.0, "text": "working to make USD a true industry standard,"}, {"start": 146.0, "text": "not just in practice, but on paper."}, {"start": 149.0, "text": "This year, we helped release the first formal specification for the core of USD,"}, {"start": 154.0, "text": "with domain specifications for geometry, materials, and physics already underway."}, {"start": 160.0, "text": "This is an open effort,"}, {"start": 161.0, "text": "and these working groups are where the future of USD gets decided."}, {"start": 165.0, "text": "If you want a voice in shaping how the industry builds"}, {"start": 167.0, "text": "and exchanges 3D content, we encourage you to get involved."}, {"start": 171.0, "text": "Gaussian Splats are one of the most exciting"}, {"start": 174.0, "text": "recent breakthroughs in 3D representation."}, {"start": 177.0, "text": "Rather than using traditional geometry,"}, {"start": 179.0, "text": "splats capture a scene as millions of fuzzy, overlapping particles,"}, {"start": 184.0, "text": "each encoding position, color, and opacity"}, {"start": 187.0, "text": "to faithfully reconstruct complex real-world environments."}, {"start": 192.0, "text": "As you can see in this visualization, splats are able to capture"}, {"start": 196.0, "text": "incredibly subtle lighting responses"}, {"start": 198.0, "text": "and are capable of bringing real-world scenes to life."}, {"start": 202.0, "text": "Working with our Alliance for OpenUSD partners,"}, {"start": 205.0, "text": "including NVIDIA, Adobe, and Pixar,"}, {"start": 207.0, "text": "we are introducing a new USD primitive type, Particle Fields,"}, {"start": 212.0, "text": "which is capable of describing Gaussian Splats"}, {"start": 214.0, "text": "as well as other representations from this rapidly evolving area of research."}, {"start": 219.0, "text": "This brings Gaussian Splats into the same scene as your meshes, materials,"}, {"start": 223.0, "text": "and other traditional 3D data for the very first time."}, {"start": 227.0, "text": "Let's take a look at powerful new experiences across our platforms"}, {"start": 231.0, "text": "and the new USDKit framework built to power them."}, {"start": 235.0, "text": "USDKit takes care of the heavy lifting,"}, {"start": 237.0, "text": "so you can stay focused on your content and applications."}, {"start": 241.0, "text": "All of this is made possible"}, {"start": 242.0, "text": "by the standardization work we have been building towards."}, {"start": 246.0, "text": "Preview has long been the go-to place on Mac"}, {"start": 249.0, "text": "for viewing images, PDFs, and 3D content,"}, {"start": 252.0, "text": "and for images and PDFs,"}, {"start": 253.0, "text": "it has always offered a powerful set of editing tools"}, {"start": 256.0, "text": "right out of the box - no extra software needed."}, {"start": 259.0, "text": "This year, we are bringing that same philosophy to 3D."}, {"start": 264.0, "text": "Preview now brings essential 3D editing to your Mac,"}, {"start": 267.0, "text": "covering the operations you reach for most."}, {"start": 271.0, "text": "You can manipulate objects directly in the scene,"}, {"start": 273.0, "text": "edit properties and lighting,"}, {"start": 276.0, "text": "work with full scene hierarchies, and convert and compress assets,"}, {"start": 280.0, "text": "all without needing to learn a dedicated 3D application."}, {"start": 284.0, "text": "While it's simple on the surface,"}, {"start": 285.0, "text": "it's all backed by a production quality rendering and processing pipeline."}, {"start": 291.0, "text": "Preview and Quick Look on Mac now give you a choice of renderer."}, {"start": 295.0, "text": "RealityKit brings consistency across Mac, iPhone, iPad, and Vision Pro,"}, {"start": 300.0, "text": "and Storm remains available for those with existing production pipelines needs."}, {"start": 306.0, "text": "For your most complex scenes,"}, {"start": 307.0, "text": "Preview adds a brand new Raytracer for stunning, high fidelity results."}, {"start": 313.0, "text": "All three support OpenPBR,"}, {"start": 315.0, "text": "a significant upgrade over USDPreviewSurface"}, {"start": 318.0, "text": "that brings richer, more physically accurate materials to your workflow."}, {"start": 323.0, "text": "The new Raytracer in Preview is built for scenes that demand more."}, {"start": 327.0, "text": "Whether you are visualizing architectural spaces"}, {"start": 330.0, "text": "or preparing product imagery, it delivers accurate reflections,"}, {"start": 334.0, "text": "precise shadows, and physically correct lighting."}, {"start": 337.0, "text": "A production quality ground-truth renderer on every Mac."}, {"start": 342.0, "text": "Preview integrates with the new Spatial Preview framework on macOS 27,"}, {"start": 347.0, "text": "creating a direct connection between your Mac and Quick Look on Vision Pro."}, {"start": 352.0, "text": "As you work on your USD scene in Preview,"}, {"start": 354.0, "text": "changes are visible live in Quick Look on the Vision Pro, right in your own space,"}, {"start": 359.0, "text": "and through SharePlay, you can bring an entire team in at once."}, {"start": 362.0, "text": "Creative directors and artists can walk around the same scene together,"}, {"start": 366.0, "text": "reviewing lighting, composition, and spatial scale in real time."}, {"start": 371.0, "text": "And now, with the Spatial Preview framework,"}, {"start": 373.0, "text": "this kind of collaborative spatial workflow is easier than ever"}, {"start": 377.0, "text": "to bring to your own Mac apps."}, {"start": 379.0, "text": "Check out the Spatial Preview session to learn how."}, {"start": 385.0, "text": "USD is now part of the web too."}, {"start": 387.0, "text": "Safari introduces the Model tag, bringing 3D content to web pages"}, {"start": 392.0, "text": "as naturally as images or video."}, {"start": 395.0, "text": "Embed a USD model in your page, and on macOS and iOS,"}, {"start": 399.0, "text": "your users get a fully interactive 3D experience right in the browser."}, {"start": 404.0, "text": "And on visionOS, it goes even further."}, {"start": 407.0, "text": "That same model breaks out of the page and is presented,"}, {"start": 410.0, "text": "spatially, right in the user's space."}, {"start": 413.0, "text": "Everything we have shown you today is powered by a brand new system framework:"}, {"start": 417.0, "text": "USDKit."}, {"start": 418.0, "text": "Let's take a look."}, {"start": 420.0, "text": "USDKit brings first class USD support to your Swift apps,"}, {"start": 424.0, "text": "with deep integration for RealityKit and Spatial Preview built right in."}, {"start": 429.0, "text": "We designed USDKit to work for everyone."}, {"start": 431.0, "text": "Developers who already know USD"}, {"start": 433.0, "text": "will find the concepts immediately feel familiar,"}, {"start": 436.0, "text": "and for Swift developers coming to USD for the first time,"}, {"start": 439.0, "text": "USDKit meets you where you are,"}, {"start": 441.0, "text": "with patterns and paradigms you already know."}, {"start": 444.0, "text": "Before I dive in to an example, let's cover a few key USD concepts."}, {"start": 450.0, "text": "In USD, a Layer is a single data file."}, {"start": 454.0, "text": "Layers can be combined together through a powerful feature called Composition."}, {"start": 458.0, "text": "And a Stage is the composed result of one or more layers."}, {"start": 463.0, "text": "This is your window into the full scene."}, {"start": 465.0, "text": "Everything in a scene is represented as a USD Prim."}, {"start": 469.0, "text": "Each prim has a Schema, which defines its type."}, {"start": 473.0, "text": "Prims also carry Attributes, which hold the actual data"}, {"start": 477.0, "text": "and Metadata, which describes information about the prim itself."}, {"start": 481.0, "text": "Now I've covered some key concepts;"}, {"start": 483.0, "text": "let's walk through an example of how to use USDKit in practice."}, {"start": 487.0, "text": "I will load a stage, make some modifications,"}, {"start": 490.0, "text": "and export the result."}, {"start": 492.0, "text": "Getting started with USDKit begins with a stage."}, {"start": 495.0, "text": "I can create a fresh one in memory with a simple USDStage initializer."}, {"start": 500.0, "text": "For this demo though,"}, {"start": 501.0, "text": "I have an existing scene I want to work with."}, {"start": 503.0, "text": "I can open it by passing in a file URL to USDStage.open."}, {"start": 508.0, "text": "Since this involves file access, it can throw,"}, {"start": 511.0, "text": "so I use try."}, {"start": 513.0, "text": "And there it is."}, {"start": 514.0, "text": "My scene loads up and it's already looking great."}, {"start": 517.0, "text": "I thought there was supposed to be an oscilloscope on the bench."}, {"start": 520.0, "text": "Let's see if it's in the scene somewhere, and if not, I can add it in."}, {"start": 524.0, "text": "First, let me traverse the stage hierarchy"}, {"start": 527.0, "text": "to see if the oscilloscope is already in there."}, {"start": 530.0, "text": "No luck!"}, {"start": 531.0, "text": "So I define a new transform prim at the path I want it to live at."}, {"start": 535.0, "text": "Now here is where things get really useful."}, {"start": 538.0, "text": "Rather than copying all the data for the asset directly into my stage,"}, {"start": 543.0, "text": "I can add a light-weight reference to it."}, {"start": 545.0, "text": "The asset lives in its own file, or layer, authored by someone else entirely,"}, {"start": 550.0, "text": "and I am simply pulling it in."}, {"start": 552.0, "text": "This is the power of composition."}, {"start": 554.0, "text": "Everyone works on their own piece of the scene,"}, {"start": 557.0, "text": "and USD brings it all together."}, {"start": 559.0, "text": "And the best part?"}, {"start": 560.0, "text": "Any updates they make automatically show up in my stage too,"}, {"start": 564.0, "text": "because I am just referencing in their file."}, {"start": 566.0, "text": "Great!"}, {"start": 567.0, "text": "The asset is in the scene,"}, {"start": 569.0, "text": "but as you can see, it's not quite where I want it to be."}, {"start": 573.0, "text": "Let me show you how I can move it into the right place."}, {"start": 577.0, "text": "To move the prim, I first call addTransformOperation,"}, {"start": 581.0, "text": "which takes care of creating the correct attributes on the prim"}, {"start": 584.0, "text": "and updating the transform order automatically."}, {"start": 588.0, "text": "After that all I need to do is to set the translation value,"}, {"start": 591.0, "text": "and the asset moves up on to the workbench,"}, {"start": 593.0, "text": "right where I want it to be."}, {"start": 596.0, "text": "Perfect!"}, {"start": 597.0, "text": "This is looking much better already,"}, {"start": 599.0, "text": "but before I share this with the world,"}, {"start": 600.0, "text": "I want to make sure it's ready"}, {"start": 602.0, "text": "for as wide an audience as possible."}, {"start": 605.0, "text": "Great 3D experiences should be accessible to everyone."}, {"start": 608.0, "text": "At Apple, accessibility is a core value, and that includes spatial content too."}, {"start": 614.0, "text": "That is why we have driven"}, {"start": 615.0, "text": "the standardization of accessibility metadata directly in USD,"}, {"start": 619.0, "text": "establishing how assistive labels"}, {"start": 621.0, "text": "and descriptions are defined on 3D objects across the industry."}, {"start": 625.0, "text": "We have designed it with flexibility built in, so it can evolve in the future."}, {"start": 631.0, "text": "Since it is native to USD, you can author it through any USD API,"}, {"start": 636.0, "text": "and to make it as easy as possible to adopt,"}, {"start": 638.0, "text": "we have added direct support right in Blender and Maya."}, {"start": 642.0, "text": "To add the accessibility data to my new asset,"}, {"start": 645.0, "text": "I first apply the AccessibilityAPI schema to the prim."}, {"start": 649.0, "text": "This adds the necessary metadata to signal that the schema is present."}, {"start": 654.0, "text": "Since USDKit does not provide all the schema-specific APIs,"}, {"start": 658.0, "text": "I create the label and description attributes directly,"}, {"start": 661.0, "text": "making sure to use the correct attribute names"}, {"start": 664.0, "text": "as defined in the specification."}, {"start": 667.0, "text": "With those in place, I can set their values:"}, {"start": 670.0, "text": "a concise label and a rich description that gives assistive technologies"}, {"start": 674.0, "text": "everything they need to understand the object in context."}, {"start": 678.0, "text": "The asset is now ready,"}, {"start": 679.0, "text": "but high quality production USD scenes can grow to many gigabytes in size."}, {"start": 684.0, "text": "The ALab scene we have been working with today is a great example of that."}, {"start": 688.0, "text": "Sharing something this large is not always practical,"}, {"start": 691.0, "text": "so let me show you how I can shrink it down."}, {"start": 695.0, "text": "In collaboration with the Alliance for Open Media,"}, {"start": 698.0, "text": "we have added support for a state of the art mesh compression codec"}, {"start": 701.0, "text": "capable of reducing mesh sizes by up to 90%."}, {"start": 706.0, "text": "Combined with our existing texture compression using AVIF,"}, {"start": 710.0, "text": "the numbers speak for themselves."}, {"start": 712.0, "text": "The average asset is now seven times smaller,"}, {"start": 714.0, "text": "without compromising visual quality."}, {"start": 717.0, "text": "Smaller assets mean faster delivery, lower storage costs,"}, {"start": 721.0, "text": "and a better experience for users across every platform."}, {"start": 725.0, "text": "USDKit support for compression is built right into the exportPackage API."}, {"start": 731.0, "text": "I pass in the output URL to the exportPackage method on my stage,"}, {"start": 735.0, "text": "and then I enable the texture and mesh compression through the export options."}, {"start": 739.0, "text": "A couple of lines and I am done."}, {"start": 741.0, "text": "And if you're not writing code,"}, {"start": 743.0, "text": "you can get the same results directly in Preview"}, {"start": 746.0, "text": "or through the usdcrush command line tool."}, {"start": 749.0, "text": "We are working with Pixar"}, {"start": 750.0, "text": "to bring this compression support to the OpenUSD project,"}, {"start": 753.0, "text": "so the whole ecosystem can benefit."}, {"start": 756.0, "text": "Because integrating USD can be complex,"}, {"start": 758.0, "text": "there are a number of different ways to access the technology."}, {"start": 762.0, "text": "For app developers on our platforms, USDKit is the way to go."}, {"start": 766.0, "text": "It is system provided, deeply integrated,"}, {"start": 769.0, "text": "and everything we have shown today is built on top of it."}, {"start": 773.0, "text": "For those with more advanced needs"}, {"start": 774.0, "text": "or cross-platform workflows that go beyond what USDKit covers,"}, {"start": 778.0, "text": "we have you taken care of too."}, {"start": 780.0, "text": "SwiftUSD brings open source Swift"}, {"start": 782.0, "text": "bindings available right through the Swift Package Manager,"}, {"start": 786.0, "text": "and for cross-platform C++ codebases,"}, {"start": 789.0, "text": "we have made it easier than ever to embed OpenUSD directly as a framework."}, {"start": 794.0, "text": "Whatever path fits your workflow,"}, {"start": 796.0, "text": "they are all built on top of the same foundation."}, {"start": 799.0, "text": "That means your USD files move freely between all of them."}, {"start": 804.0, "text": "Let's recap what we've covered."}, {"start": 806.0, "text": "USD on Apple platforms has taken a big step forward this year."}, {"start": 810.0, "text": "Preview now brings essential 3D editing"}, {"start": 813.0, "text": "and powerful rendering options to your Mac."}, {"start": 815.0, "text": "Spatial Preview allows you to easily immerse yourself in your content"}, {"start": 819.0, "text": "and share it with others,"}, {"start": 820.0, "text": "and the new Model tag in Safari brings USD natively to the web."}, {"start": 825.0, "text": "At the center of it all is USDKit,"}, {"start": 828.0, "text": "a new system framework that makes working with USD in Swift"}, {"start": 831.0, "text": "a first class experience."}, {"start": 833.0, "text": "If you are looking to author and work with 3D content in your app,"}, {"start": 837.0, "text": "USDKit is the best place to start."}, {"start": 840.0, "text": "There's a lot more to explore this year."}, {"start": 842.0, "text": "We have sessions diving deeper into Spatial Preview,"}, {"start": 845.0, "text": "bringing USD to the web,"}, {"start": 847.0, "text": "and building rich spatial experiences with RealityKit and Reality Composer Pro."}, {"start": 852.0, "text": "Whatever your workflow, there is something here for you."}, {"start": 855.0, "text": "Check out the linked resources for more information."}, {"start": 859.0, "text": "USD has never been more powerful,"}, {"start": 861.0, "text": "and we cannot wait to see what you create with it."}, {"start": 863.0, "text": "Thank you for watching!"}]}