← Wszystkie wpisy

USDKit: natywny dla Swifta OpenUSD na platformach Apple

Na WWDC 2026 inżynier Apple otworzył scenę 3D w Swifcie, zauważył brakujący oscyloskop na stole roboczym, wciągnął asset jako lekkie odwołanie, przesunął go na miejsce, opatrzył etykietą na potrzeby technologii wspomagających i wyeksportował całość siedmiokrotnie mniejszą — a wszystko to w zaledwie kilku wierszach kodu.1 Ta prezentacja stanowi sedno USDKit: Apple dostarcza teraz framework systemowy, który czyni OpenUSD pełnoprawnym API Swifta, a nie biblioteką C++, z którą trzeba wiązać się ręcznie. Wczytuje się scenę, komponuje assety ze sobą, dodaje dane do primów i eksportuje skompresowany pakiet — przy użyciu wzorców, które programiści Swifta już znają.

Niniejszy wpis przedstawia historię USDKit na podstawie sesji 285 z WWDC 2026 „Discover USDKit and what’s new in OpenUSD”. Wszystko, co poniżej, pochodzi bezpośrednio z tej sesji.

TL;DR

  • USDKit wnosi do aplikacji Swifta pełnoprawne wsparcie dla USD, „z głęboką integracją z RealityKit i Spatial Preview wbudowaną od podstaw”, i wychodzi naprzeciw zarówno doświadczonym deweloperom USD, jak i nowicjuszom w Swifcie — każdemu tam, gdzie się znajduje.1
  • Centralna pętla to otwórz, zmodyfikuj, wyeksportuj: utwórz scenę za pomocą inicjalizatora USDStage albo otwórz istniejącą za pomocą USDStage.open (rzuca on wyjątek, więc stosuje się try), odwołaj się do assetów przez kompozycję, ustaw je za pomocą addTransformOperation, a następnie zapisz skompresowany exportPackage.1
  • Jedno uczciwie nazwane ograniczenie: USDKit „nie udostępnia wszystkich API właściwych dla poszczególnych schematów”, przez co tworzenie danych dostępności sprowadza się do zastosowania schematu AccessibilityAPI, a następnie utworzenia atrybutów etykiety i opisu po nazwie, przy użyciu nazw zdefiniowanych w specyfikacji.1
  • Nowy typ prymitywu USD, Particle Fields, „jest w stanie opisywać Gaussian Splats, a także inne reprezentacje”, po raz pierwszy wprowadzając splaty do tej samej sceny co siatki i materiały.1
  • Kompresja siatki w połączeniu z kompresją tekstur AVIF sprawia, że przeciętny asset jest siedmiokrotnie mniejszy; uzyskuje się to przez API exportPackage, w Preview albo za pomocą narzędzia wiersza poleceń usdcrush.1

Co zmieniło się w OpenUSD w tym roku

Watch on Apple Developer ↗

Lee z zespołu Spatial Standards w Apple przedstawia USDKit od 7:00, po aktualizacjach dotyczących fundamentów OpenUSD.

USD to szkielet doświadczeń przestrzennych, które buduje Apple, a stojący za nim projekt open source, OpenUSD, został pierwotnie zapoczątkowany przez Pixara.1 USD nie działa w pojedynkę. Integruje się z MaterialX, wywodzącym się pierwotnie z Lucasfilm i służącym do opisu materiałów, a w tym roku — co nowe — z OpenVDB wywodzącym się z DreamWorks, który wnosi do całości dane wolumetryczne.1 Apple zaktualizowało w tym roku wszystkie trzy technologie na swoich platformach, a jako członek Academy Software Foundation bezpośrednio współtworzy projekty takie jak MaterialX i OpenVDB.1

Prace nad standaryzacją sięgają głębiej niż sam kod. Jako członek założyciel Alliance for OpenUSD Apple „pomogło opublikować pierwszą formalną specyfikację rdzenia USD, a specyfikacje dziedzinowe dla geometrii, materiałów i fizyki są już w toku”.1 Te grupy robocze są otwarte, a przesłanie sesji skierowane do deweloperów brzmi jasno: włącz się, jeśli chcesz mieć głos w tym, jak branża wymienia treści 3D.

Najbardziej uderzającą nowością na poziomie prymitywów jest Particle Fields. Gaussian Splats ujmują scenę „jako miliony rozmytych, nakładających się cząstek, z których każda koduje położenie, kolor i nieprzezroczystość, aby wiernie odtworzyć złożone środowiska ze świata rzeczywistego”.1 We współpracy z partnerami z Alliance for OpenUSD, w tym NVIDIA, Adobe i Pixarem, Apple wprowadziło Particle Fields jako nowy typ prymitywu USD, który „jest w stanie opisywać Gaussian Splats, a także inne reprezentacje z tej szybko rozwijającej się dziedziny badań”.1 Praktyczna korzyść: splaty żyją teraz „w tej samej scenie co siatki, materiały i pozostałe tradycyjne dane 3D — po raz pierwszy”.1 Ujęcie to jest celowo skromne. Particle Fields opisuje splaty i podobne reprezentacje; jest kontenerem dla rozwijającej się dziedziny badań, a nie specyfikacją gotowego silnika renderującego splaty.

Model myślowy USDKit

USDKit wnosi do aplikacji Swifta pełnoprawne wsparcie dla USD z głęboką integracją z RealityKit i Spatial Preview wbudowaną od podstaw, a cel projektowy działa w obie strony: deweloperzy, którzy znają już USD, odnajdują znajome pojęcia, a programiści Swifta dopiero zaczynający z USD otrzymują wzorce i paradygmaty, które już rozpoznają.1

Kilka pojęć USD stanowi fundament tego API. Layer to pojedynczy plik danych. Warstwy łączą się za pomocą funkcji zwanej kompozycją, a Stage to „skomponowany wynik jednej lub wielu warstw”, okno na całą scenę.1 Wszystko, co znajduje się w scenie, jest USD Prim. Każdy prim ma Schema, który definiuje jego typ, a także Attributes, które „przechowują właściwe dane”, oraz Metadata, które „opisują informacje o samym primie”.1 Te cztery słowa — layer, stage, prim, schema — niosą na sobie resztę procesu pracy.

Otwórz, zmodyfikuj, wyeksportuj

Sesja prowadzi przez jedną konkretną pętlę: wczytaj scenę, wprowadź zmiany i wyeksportuj wynik.1

Świeżą scenę w pamięci można utworzyć za pomocą „prostego inicjalizatora USDStage”.1 Aby pracować z istniejącą sceną, otwiera się ją, przekazując URL pliku do USDStage.open. Ponieważ wiąże się to z dostępem do pliku, „może to rzucić wyjątek, dlatego używam try”.1 Po wczytaniu sceny inżynier przemierza jej hierarchię w poszukiwaniu brakującego oscyloskopu, niczego nie znajduje i definiuje „nowy prim transformacji w ścieżce, w której chcę go umieścić”.1

To właśnie w kompozycji projekt udowadnia swoją wartość. Zamiast kopiować dane assetu do sceny, „dodaje się do niego lekkie odwołanie”.1 Asset żyje we własnym pliku, czyli warstwie, utworzonej przez kogoś innego, a my go wciągamy: „Każdy pracuje nad własną częścią sceny, a USD scala to wszystko w całość”, i każda aktualizacja wprowadzona przez pierwotnego autora „automatycznie pojawia się także w mojej scenie, bo po prostu odwołuję się do jego pliku”.1

Do ustawienia assetu, do którego się odwołano, służy addTransformOperation, które „zajmuje się utworzeniem właściwych atrybutów na primie i automatyczną aktualizacją kolejności transformacji”.1 Następnie inżynier ustawia wartość translacji i asset przesuwa się na stół roboczy. Ten wzorzec ma znaczenie, ponieważ oddziela intencję (przesuń ten prim) od księgowości tego, które atrybuty transformacji istnieją i w jakiej kolejności.

Tworzenie danych dostępności i uczciwie nazwane ograniczenie

Apple „przewodziło standaryzacji metadanych dostępności bezpośrednio w USD”, ustalając w skali całej branży, jak definiuje się wspomagające etykiety i opisy na obiektach 3D, i zbudowało to z myślą o elastyczności, aby mogło się rozwijać.1 Ponieważ te metadane są natywne dla USD, „można je tworzyć za pomocą dowolnego API USD”, a Apple dodało bezpośrednie wsparcie w Blenderze i Mayi, aby ułatwić przyjęcie tego rozwiązania.1

Oto zastrzeżenie, które warto wyrazić wprost. Aby dodać dane dostępności, najpierw stosuje się do prima schemat AccessibilityAPI, co dodaje metadane sygnalizujące obecność tego schematu. Następnie, mówiąc słowami z sesji: „Ponieważ USDKit nie udostępnia wszystkich API właściwych dla poszczególnych schematów, tworzę atrybuty etykiety i opisu bezpośrednio, dbając o użycie prawidłowych nazw atrybutów zdefiniowanych w specyfikacji”.1 USDKit daje więc natywny dla Swifta sposób sięgnięcia do USD, lecz nie opakowuje każdego schematu w typowane API. W przypadku schematów, których nie obejmuje, atrybuty tworzy się po nazwie, a odpowiedzialność za poprawne dopasowanie tych nazw do specyfikacji spoczywa na deweloperze. USDKit należy traktować jako pełnoprawne drzwi do USD, a nie jako gwarancję pełnego typowanego pokrycia dla każdego schematu.

Kompresja dostarczana w samym wywołaniu eksportu

Wysokiej jakości produkcyjne sceny USD „mogą rozrastać się do wielu gigabajtów”, a scena ALab z prezentacji jest tego działającym przykładem.1 We współpracy z Alliance for Open Media Apple dodało „najnowocześniejszy kodek kompresji siatki, zdolny zmniejszyć rozmiary siatek nawet o 90%”.1 W połączeniu z istniejącą kompresją tekstur AVIF „przeciętny asset jest teraz siedmiokrotnie mniejszy, bez utraty jakości wizualnej”.1

Kodek mieści się wewnątrz procesu pracy, a nie obok niego. Wsparcie kompresji jest „wbudowane wprost w API exportPackage”: przekazuje się URL wyjściowy do metody exportPackage sceny, a następnie włącza kompresję tekstur i siatek za pomocą opcji eksportu.1 Jeśli nie pisze się kodu, „te same wyniki można uzyskać bezpośrednio w Preview albo za pomocą narzędzia wiersza poleceń usdcrush”.1 Apple współpracuje z Pixarem, aby wprowadzić tę kompresję do projektu OpenUSD, tak by skorzystał na tym cały ekosystem.1

Tam, gdzie USDKit spotyka się z resztą platformy

Ten framework napędza doświadczenia sięgające daleko poza pojedynczą aplikację. Preview na Macu realizuje teraz podstawową edycję 3D, a Preview i Quick Look „dają wybór silnika renderującego”: RealityKit „zapewnia spójność między Makiem, iPhone’em, iPadem i Vision Pro”, Storm „pozostaje dostępny dla tych, którzy mają potrzeby związane z istniejącymi pipeline’ami produkcyjnymi”, a zupełnie nowy Raytracer celuje w najbardziej złożone sceny, oferując dokładne odbicia, precyzyjne cienie i fizycznie poprawne oświetlenie.1 Wszystkie trzy silniki obsługują OpenPBR, „znaczący krok naprzód w stosunku do USDPreviewSurface, który wnosi do procesu pracy bogatsze i bardziej fizycznie wierne materiały”.1

Preview integruje się z nowym frameworkiem Spatial Preview w macOS 27, tworząc bezpośrednie połączenie między Makiem a Quick Look na Vision Pro, dzięki czemu zmiany pojawiają się na żywo w przestrzeni użytkownika, a SharePlay wprowadza cały zespół do tej samej sceny.1 W sieci Safari wprowadza znacznik Model, który osadza model USD renderowany interaktywnie na macOS i iOS, a w visionOS „wyłamuje się z karty strony i jest prezentowany, przestrzennie, wprost w przestrzeni użytkownika”.1

USDKit to zalecana droga dla deweloperów aplikacji na platformach Apple, ponieważ jest dostarczany przez system i głęboko zintegrowany, a pozostałe doświadczenia z sesji są na nim zbudowane.1 W przypadku zaawansowanych lub wieloplatformowych potrzeb, które wykraczają poza to, co obejmuje USDKit, SwiftUSD zapewnia otwartoźródłowe powiązania Swifta poprzez Swift Package Manager, a bazy kodu w C++ mogą osadzić OpenUSD bezpośrednio jako framework. Wszystkie trzy opierają się na tym samym fundamencie, dzięki czemu „pliki USD swobodnie przemieszczają się między nimi”.1

Rozróżnienie warte zapamiętania: to jest droga programistyczna. Ręczne tworzenie scen w narzędziu wizualnym to zadanie Reality Composer Pro (zobacz model myślowy RealityKit i Reality Composer Pro); USDKit to API, po które się sięga, gdy pracę wykonuje kod, a nie płótno.

Jak zacząć

Sesja składa się w krótką ścieżkę, którą można podążać już dziś:

  1. Otwórz scenę. Utwórz ją w pamięci za pomocą inicjalizatora USDStage albo otwórz istniejącą scenę, przekazując URL pliku do USDStage.open wewnątrz try, ponieważ dostęp do pliku może rzucić wyjątek.1
  2. Komponuj, nie kopiuj. Zdefiniuj prim transformacji w wybranej ścieżce, a następnie dodaj lekkie odwołanie do warstwy zewnętrznej, aby aktualizacje pierwotnego autora automatycznie spływały do twojej sceny.1
  3. Ustawiaj z intencją. Wywołaj addTransformOperation, aby utworzyć właściwe atrybuty i kolejność transformacji, a następnie ustaw wartość translacji.1
  4. Twórz dane dostępności uczciwie. Zastosuj schemat AccessibilityAPI, a następnie utwórz atrybuty etykiety i opisu pod nazwami zdefiniowanymi w specyfikacji, ponieważ USDKit nie udostępnia wszystkich API właściwych dla poszczególnych schematów.1
  5. Eksportuj małe. Wywołaj exportPackage na scenie z włączoną kompresją tekstur i siatek albo uruchom usdcrush, jeśli nie piszesz kodu.1

FAQ

Czym jest USDKit?

USDKit to nowy framework systemowy Apple, który wnosi do aplikacji Swifta pełnoprawne wsparcie dla OpenUSD, z głęboką integracją z RealityKit i Spatial Preview wbudowaną od podstaw. Udostępnia pojęcia USD (warstwy, sceny, primy, schematy) poprzez wzorce Swifta, dzięki czemu można otworzyć scenę, komponować assety, tworzyć dane i eksportować, bez ręcznego wiązania się z biblioteką C++. Apple zaleca go jako punkt wyjścia dla deweloperów aplikacji na swoich platformach.1

Jak wczytać i zmodyfikować scenę USD za pomocą USDKit?

Otwórz scenę, przekazując URL pliku do USDStage.open wewnątrz try (dostęp do pliku może rzucić wyjątek), albo utwórz świeżą scenę za pomocą inicjalizatora USDStage. Aby dodać zewnętrzny asset, zdefiniuj prim transformacji i dodaj lekkie odwołanie do jego warstwy, zamiast kopiować jego dane. Ustaw go, wywołując addTransformOperation, które konfiguruje właściwe atrybuty i kolejność transformacji, a następnie ustaw wartość translacji.1

Czy USDKit obejmuje każdy schemat USD?

Nie. Sesja stwierdza wprost, że USDKit „nie udostępnia wszystkich API właściwych dla poszczególnych schematów”. Na przykład w przypadku dostępności stosuje się schemat AccessibilityAPI, a następnie tworzy bezpośrednio atrybuty etykiety i opisu, używając dokładnych nazw atrybutów zdefiniowanych w specyfikacji. USDKit to pełnoprawne drzwi Swifta do USD, a nie typowane opakowanie wokół każdego schematu.1

Czym są Particle Fields i Gaussian Splats w OpenUSD?

Particle Fields to nowy typ prymitywu USD, który Apple wprowadziło wraz z partnerami z Alliance for OpenUSD, w tym NVIDIA, Adobe i Pixarem. „Jest w stanie opisywać Gaussian Splats, a także inne reprezentacje” z tej dziedziny badań. Gaussian Splats ujmują scenę jako miliony nakładających się cząstek kodujących położenie, kolor i nieprzezroczystość. Particle Fields pozwala splatom po raz pierwszy żyć w tej samej scenie co siatki i materiały.1

Jak mały może stać się asset USD dzięki USDKit?

Kodek kompresji siatki zbudowany wraz z Alliance for Open Media może zmniejszyć rozmiary siatek nawet o 90 procent, a w połączeniu z kompresją tekstur AVIF przeciętny asset jest około siedmiokrotnie mniejszy bez utraty jakości wizualnej. Kompresję tekstur i siatek włącza się przez API exportPackage, w Preview albo za pomocą narzędzia wiersza poleceń usdcrush.1


USDKit to programistyczny odpowiednik opowieści o wizualnym tworzeniu scen z modelu myślowego RealityKit i Reality Composer Pro i zasila te same sceny, które napędzają nowości w visionOS 27 oraz szerszy przestrzenny model myślowy RealityKit. Po stronie sieci te same assety USD renderują się poprzez natywny element HTML <model>, który Safari wprowadziło w tym roku. Centrum całej serii stanowi Apple Ecosystem Series.

References


  1. Apple, WWDC 2026 session 285, Discover USDKit and what’s new in OpenUSD. Source for the OpenUSD foundation updates (MaterialX, OpenVDB, the first formal core USD specification and Alliance for OpenUSD membership), the Particle Fields primitive type describing Gaussian Splats and similar representations, the USDKit framework and its RealityKit and Spatial Preview integration, the layer/stage/prim/schema concepts, the open-modify-export loop (USDStage initializer, USDStage.open with try, Composition references, addTransformOperation, exportPackage), the accessibility workflow (AccessibilityAPI schema, authoring label and description attributes by name, and the statement that USDKit “does not provide all the schema-specific APIs”), mesh and AVIF texture compression (up to 90 percent mesh reduction, average asset seven times smaller, via exportPackage, Preview, or usdcrush), the Preview renderer choices (RealityKit, Storm, Raytracer) and OpenPBR over USDPreviewSurface, the Spatial Preview framework on macOS 27, the Safari Model tag, and the SwiftUSD and C++ framework alternatives. 

Powiązane artykuły

Co zespół Swift z Apple powiedział podczas labu na WWDC26

Swift Group Lab Apple na WWDC26 odbył się bez napisów. Transkrypcję wykonano lokalnie. Szczere odpowiedzi inżynierów o w…

11 min czytania

RealityKit i Reality Composer Pro 3 w 2026 roku

WWDC26 dojrzało przestrzenny pipeline Apple: oświetlenie i tkanina w RealityKit oraz samodzielny Reality Composer Pro 3 …

12 min czytania

The Robots Are Taking Exams in My Search Console

First-party GSC data: 91% of 3.8M impressions fail a human-query filter. Exam questions, pasted errors, and agent sweeps…

10 min czytania