Cesium für Unity: Erstellen Sie 3D-Geodaten-Apps für das Web

Brendan Duncan ist ein Mitarbeiteringenieur bei Unity Technologies, der sich auf Webgrafik konzentriert und den WebGL- und WebGPU-Grafiktreiber implementiert, der vom Unity Web Player verwendet wird.
Was ist Cesium für Unity?
Cesium für Unity ist ein leistungsstarkes Plugin, das die geospatialen Plattform von Cesium in die Unity-Engine integriert. Es ermöglicht Entwicklern, hochauflösende 3D-Gelände, Bilder und Gebäude von Cesium ion oder anderen Quellen zu streamen. Das Ergebnis ist die Fähigkeit, fotorealistische virtuelle Globen und detaillierte geografische Visualisierungen innerhalb eines Unity-Projekts zu erstellen.
Entwickler können ihre geospatial genau 3D-Anwendungen direkt im Web erstellen und bereitstellen. Dieses große Update, beginnend mit Cesium für Unity 1.20.0, kombiniert die Leistung von Cesiums globalen 3D-Inhalten mit der Zugänglichkeit von Unitys Webbereitstellung, wodurch die Notwendigkeit für App-Stores oder Benutzerinstallationen entfällt.
Im Kern verwendet das Plugin den 3D Tiles OGC Community Standard, der von Cesium entwickelt wurde. Dieser offene Standard ist speziell für das Streaming massiver 3D-geospatialer Datensätze konzipiert. Damit können Sie ganze Städte, Länder oder sogar einen maßstabsgetreuen digitalen Zwilling der Erde rendern, ohne den Speicher Ihres Systems oder die Bandbreite Ihrer Benutzer zu überlasten.
Die Kombination von Cesium für Unity mit der Webbereitstellung eröffnet bemerkenswerte Möglichkeiten. Benutzer können komplexe, reale 3D-Umgebungen mit nichts weiter als einer URL erkunden, was die Hürden für breit genutzte Anwendungen und Erfahrungen senkt. Das macht es zu einer idealen Lösung für Schulungswerkzeuge, städtische Planungsvisualisierungen, interaktive Kartenerlebnisse und vieles mehr.

Wichtige Funktionen für die Webbereitstellung
Cesium für Unity umfasst Funktionen, die in Webumgebungen besonders effektiv sind:
- Streaming-Architektur bedeutet, dass Benutzer nicht ganze Datensätze zu Beginn herunterladen müssen. Stattdessen werden Terrain- und Bildkacheln progressiv geladen, während die Benutzer die Szene navigieren. Dieser Ansatz hält die anfänglichen Ladezeiten kurz und die Leistung reibungslos.
- Einfacher Zugang zu kuratierten 3D-geospatialen Inhalten und 3D-Kachel-Pipelines, über die Integration mit den Cesium ion Cloud-Diensten. Benutzer können auf globales Terrain zugreifen, einschließlich Cesium World Terrain und Google Photorealistic 3D Tiles, sowie auf Bilder, Gebäude und Photogrammetrie-Datensätze. Alles verfügbar über den Ein-Klick-Zugang mit der integrierten Cesium ion UI im Unity Editor und kann direkt an Benutzer im Web bereitgestellt werden.
Anwendungen in der realen Welt
Die Kombination von Cesium für Unity und Web öffnet Türen für viele geospatialen Anwendungen, wie zum Beispiel:
- Stadtplaner können interaktive 3D-Stadtmodelle mit Interessengruppen über einfache Weblinks teilen.
- Bildungseinrichtungen können erkundbare geografische Lektionen erstellen, auf die Schüler von jedem Gerät aus zugreifen können.
- Notfallmanagement-Teams können Katastrophenszenarien in genauem Terrain visualisieren, ohne spezielle Softwareinstallationen.
- Tourismus-Anwendungen können es Benutzern ermöglichen, Reiseziele in fotorealistischem 3D virtuell zu erkunden.
- Immobilienentwickler können Immobilien im geografischen Kontext präsentieren.
- Forscher können interaktive Datenvisualisierungen erstellen, die wissenschaftliche Datensätze mit genauer geografischer Darstellung kombinieren.
Erste Schritte mit Cesium für Unity für das Web
Wenn dies Ihre erste Einführung in Cesium für Unity ist, folgen Sie dem Schnellstartleitfaden. Nach der Installation des Plugins konfigurieren Sie Ihr Cesium ion Zugangs-Token, fügen Sie die CesiumGeoreference-Komponente hinzu, um das Koordinatensystem Ihrer Welt zu definieren, und beginnen Sie mit dem Hinzufügen von Kachelsets.
Für den Bau für das Web folgen Sie diesen wesentlichen Schritten:
Aktualisieren auf v1.20.0+: Stellen Sie sicher, dass Sie die neueste Version des Cesium für Unity-Pakets haben.
Verwenden Sie Unity 6+: Diese Versionen sind für moderne WebGL- und WebGPU-Standards optimiert.
Multithreading aktivieren: Sie müssen das native C/C++-Multithreading in Ihren Player-Einstellungen für den Web-Build aktivieren.
Speichergrenzen erhöhen: Cesium-Tilesets können speicherintensiv sein. Möglicherweise müssen Sie das Speicherlimit des Web-Players erhöhen, das auf bis zu 4 GB eingestellt werden kann.
Server-Header konfigurieren: Beim Bereitstellen Ihres Projekts auf einem Webserver muss Ihr Server spezifische COOP- und COEP-Header enthalten, um Multithreading zu aktivieren. Dies ist eine Sicherheitsanforderung.
Es ist wichtig zu beachten, dass die Webunterstützung derzeit als "experimentell" kategorisiert ist. Einige erweiterte Funktionen oder speicherintensive Tilesets erfordern möglicherweise eine sorgfältige Optimierung, um innerhalb der Speicherbeschränkungen des Browsers gut zu funktionieren.
Technischer tiefgehender Einblick: Portierung ins Web
Für WebAssembly kompilieren
Der Kern von Cesium Native ist in C++ geschrieben. Um diesen Code in einem Browser auszuführen, muss er mit einem Toolchain namens Emscripten in WebAssembly kompiliert werden. Eine der größten Herausforderungen besteht darin, dass der Cesium-Code typischerweise auf 64-Bit-Plattformen abzielt, während die WebAssembly-Unterstützung von Unity derzeit 32-Bit ist. Dies erfordert eine Codeänderung, um architekturunabhängig zu sein. Darüber hinaus benötigen einige von Cesium verwendete Drittanbieterbibliotheken Patches, um die Kompatibilität sicherzustellen.
Reengineering für Multithreading
Cesium für Unity verlässt sich stark auf Multithreading, um 3D-Tiles zu streamen, ohne den Hauptanwendungsthread zu beeinträchtigen. Die Webplattform von Unity unterstützt jedoch Multithreading nur für nativen C++-Code, nicht für verwalteten C#-Code. Ein benutzerdefinierter C++-Thread-Pool wurde speziell für Web-Bauten implementiert, um diese Einschränkung zu bewältigen. Arbeiten, die mit Unity interagieren müssen, wie das Erstellen von Meshes, werden in eine Warteschlange gestellt und im Hauptthread ausgeführt, um Speicherfehler zu vermeiden, wobei Hintergrundarbeiten in nativem C++ gehalten werden und die Auswirkungen auf den Hauptthread minimiert werden.
Grafik-APIs: WebGL und WebGPU
Browser bieten zwei Haupt-3D-Grafik-APIs: das etablierte WebGL und das neuere WebGPU. Cesium für Unity funktioniert, indem es sowohl Standard-Unity-Mesh- als auch Texturobjekte erstellt und die Renderarbeit der Engine überlässt. Obwohl sie für das Cesium-Rendering weitgehend gleichwertig sind, gibt es geringfügige Unterschiede. Zum Beispiel verwendet der Cesium-Punkt-Shader Funktionen, die nur in WebGPU verfügbar sind, was bedeutet, dass das Rendern von Punktwolken es erfordert. WebGPU öffnet auch die Tür für andere fortschrittliche Unity-Funktionen wie das VFX-Graph.
Leistungsüberlegungen im Web
Web-Bauten haben natürlich andere Leistungsprofile als native Anwendungen. Cesium ist bereits gut für diese Einschränkungen geeignet, mit Detailgrad-Systemen, die die Qualität automatisch anpassen, um flüssige Bildraten aufrechtzuerhalten. Sein Streaming-Ansatz ist ebenfalls ein großer Vorteil, da nur sichtbare Daten geladen werden.
Entwickler sollten jedoch die Einschränkungen von WebAssembly im Auge behalten. Die Ausführungsgeschwindigkeit ist nahezu nativ, aber nicht identisch aufgrund der Sicherheitsisolierung. Web-Bauten können nicht direkt auf das Dateisystem zugreifen, und der Speicher ist derzeit auf 32-Bit (4 GB) begrenzt. Ein Projekt, das auf einem Desktop gut läuft, benötigt möglicherweise Optimierungen, wie z.B. die Reduzierung der Qualitätseinstellungen oder des Umfangs, um im Web reibungslos zu funktionieren.

Die Zukunft der Geodaten im Web
Da sich die Browsertechnologie und WebAssembly weiterentwickeln, wird die Kluft zwischen der Leistung von Web- und nativen Anwendungen kleiner. Cesium für Unity steht an der Spitze dieser Entwicklung und ermöglicht es Entwicklern, geodätische Erlebnisse zu schaffen, die sowohl leistungsstark als auch universell zugänglich sind.
Diese Kombination aus Unitys Kreativsuite, Cesiums Geodatenplattform und der Reichweite des Webs eröffnet überzeugende neue Möglichkeiten für Entwickler. Von professionellen Visualisierungstools bis hin zu immersiven Bildungserlebnissen bietet dies die Grundlage, um präzise, schöne 3D-Welten in Browsern auf der ganzen Welt zu bringen.




