PLY in GLTF umwandeln

PLY kannst du hier kostenlos und ohne Konto in GLTF umwandeln: Datei oben ablegen, und ein, zwei Sekunden später steht das Ergebnis zum Herunterladen bereit. Die Umwandlung läuft in deinem eigenen Browser, die Datei wird also nie hochgeladen — das klappt unter Windows, macOS und Linux ebenso wie auf iPhone und Android, und es funktioniert selbst dann noch, wenn du das Netz abschaltest.

  • Wo es läuft In deinem Browser. Die Datei wird nicht hochgeladen.
  • Neu aufgebaut GLTF funktioniert anders als PLY. Es ist also nicht der schleichende Qualitätsverlust eines verlustbehafteten Codecs: Was GLTF ausdrücken kann, wird originalgetreu wiedergegeben — was dort keine Entsprechung hat, bleibt ganz weg.
  • Größenbegrenzung Bis 100 MB pro Datei, kostenlos und ohne Konto.
  • Gut zu wissen Nur die Geometrie. Materialien, Farben, Texturen und Animation kommen nicht mit, und ein mehrfach platziertes Modell kommt so zurück, dass jede Kopie fest an ihrer eigenen Position sitzt.

Bis zu 100 Dateien auf einmal. Gemischte Formate sind kein Problem.

Ein Museumsscan, der im Browser nichts anzeigt

Deutsche Museen und Archive digitalisieren zunehmend eigene Bestände als 3D-Scan — ein Exponat, das nicht ausgeliehen werden kann, eine archäologische Fundstelle, ein Objekt, das im Depot liegt und online zugänglich gemacht werden soll. Der Scan liegt danach fast immer als PLY vor, weil das Format genau das speichert, was ein Scanner ausgibt: Punkte oder Dreiecke mit einer Farbe je Punkt.

Ein Browser öffnet diese Datei nicht. Es gibt kein HTML-Element, keinen eingebauten Betrachter, der eine PLY-Datei anzeigt — der Aufruf lädt sie höchstens herunter. glTF ist das Format, auf das sich das Web für 3D geeinigt hat: three.js, Babylon.js und das `<model-viewer>`-Element laden es als erste Wahl. Ein Scan vor Besucherinnen und Besuchern auf einer Webseite zu zeigen bedeutet deshalb zuerst, ihn umzuwandeln.

Die Farbe, die aus der PLY-Datei ein PLY gemacht hat, erreicht das glTF nicht

Das muss zuerst gesagt werden, weil es darüber entscheidet, ob sich der nächste Schritt überhaupt lohnt. Ein photogrammetrischer oder strukturbasierter Scan wird meist deshalb als PLY gespeichert, weil das Format „red", „green" und „blue" als Eigenschaft an jedem Vertex trägt — genau so speichert ein Scan seine Erscheinung, ohne eine Texturatlas-Struktur zu brauchen. Der Leser hier nimmt x, y und z und ignoriert jede andere Eigenschaft, der Schreiber schreibt ausschließlich Positionen und Indizes.

Ein Scan einer bemalten Keramik erscheint im Betrachter also als texturloses Grau. Für einen geometrischen Scan — ein Ersatzteil, eine Gussform, eine Maßprüfung — ist das genau richtig, nichts geht dabei verloren. Für ein Museumsobjekt oder ein bemaltes Exponat war die Farbe der eigentliche Sinn der Digitalisierung, und diese Umwandlung liefert dann etwas, das in genau dem Punkt schlechter ist, den das Publikum wahrnimmt. In diesem Fall führt der Weg über einen Export mit gebackener Textur aus der Scansoftware oder aus MeshLab, nicht über eine reine Geometrieumwandlung.

Eine Punktwolke wird abgelehnt, nicht umgewandelt

Scanner erzeugen zuerst Punkte, erst danach eine Oberfläche, und eine PLY-Datei mit Vertices ohne Flächenelement ist eine Punktwolke. Die Umwandlung bricht dann mit einer klaren Begründung ab: Das ist eine Punktwolke, sie enthält Punkte, aber keine Flächen, und aus Punkten eine Oberfläche zu machen ist Rekonstruktion, keine Umwandlung, und braucht ein Modellierungswerkzeug.

Das ist eine bewusste Verweigerung und keine Fehlfunktion — Rekonstruktion trifft Entscheidungen über Glättung, Tiefe und das Schließen von Löchern, die das Ergebnis erheblich verändern, und kein Konverter sollte das stillschweigend übernehmen. MeshLabs Screened-Poisson-Oberflächenrekonstruktion ist der übliche Weg und braucht wenige Minuten; die meisten Scananwendungen exportieren auf Wunsch auch direkt ein rekonstruiertes Mesh. Genau dieses Ergebnis lässt sich dann hier umwandeln.

Scandichte gegen das, was eine Webseite tatsächlich laden kann

Rohe Scans sind naturgemäß dicht: Ein handgeführter Scanner erzeugt für ein schuhgroßes Objekt routinemäßig ein bis fünf Millionen Dreiecke, weil sich das Mesh aus der Abtastrate ergibt und nicht aus dem, was die Form eigentlich braucht. Eine Webseite hat ein völlig anderes Budget — ein Modell, das auf einem Mittelklasse-Telefon flüssig lädt, bewegt sich im Bereich von Zehntausenden Dreiecken, nicht Millionen.

Vereinfachen vor der Umwandlung, nicht danach. MeshLabs Quadric Edge Collapse Decimation mit einer Zieldreieckszahl oder Blenders Decimate-Modifikator erhalten beide die Silhouette gut und laufen in einem Durchgang. Am besten an der Größe orientieren, in der das Modell tatsächlich erscheinen wird — ein um fünfundneunzig Prozent reduzierter Scan ist bei 600 Pixeln Breite häufig nicht zu unterscheiden. Das macht auch jeden folgenden Schritt schneller, diesen hier eingeschlossen.

Das glTF-Dokument, das aus einer PLY-Datei entsteht

Ein Mesh, eine Primitive, Modus 4. Die Positionen werden zu einem VEC3-Fließkommazugriff, die Indizes zu einem ganzzahligen SCALAR-Zugriff, mit je einer Pufferansicht und einem gemeinsamen Puffer für beide. Der Positionszugriff trägt min und max, was die Spezifikation verlangt und was Betrachter nutzen, um das Modell einzurahmen — eine Datei ohne diese Werte öffnet in manchen Betrachtern auf nichts herangezoomt.

Diese sechs Grenzwerte sind auch die schnellste Kontrolle überhaupt. Die JSON-Datei öffnen, min und max am Positionszugriff ablesen, und schon steht die Bounding Box in den Einheiten der Quelle da, ohne dass irgendetwas geladen werden muss. Ist das Modell tausendmal größer oder kleiner als erwartet, oder liegt es weit vom Ursprung entfernt, zeigt sich das genau hier.

GLB für die Auslieferung, glTF zum Lesen

Diese Umwandlung erzeugt eine einzelne, in sich geschlossene Datei, weil eine Umwandlung einen Download ergibt und eine .gltf-Datei mit separater .bin-Datei daneben zwei wären. Die Vertexdaten werden deshalb als Base64 in eine Data-URI im Puffer kodiert, und Base64 kostet vier Zeichen für je drei Byte — rund dreiunddreißig Prozent mehr — zusätzlich zum eingerückten JSON.

Für eine Datei, die in einem Editor geöffnet wird, ist das ein fairer Preis. Für eine Datei, die eine Besucherin herunterlädt, ist es das nicht — die GLB-Umwandlung liefert dieselbe Geometrie als eine einzelne Binärdatei ohne diesen Kodierungsaufschlag. glTF eignet sich zum Lesen der Zugriffe, zum Validieren des Dokuments oder zur Weitergabe an `gltf-transform`; GLB gehört auf die Webseite.

Vertices werden nicht verschweißt, weil eine PLY-Datei bereits indiziert ankommt

Manche Quellformate hier werden beim Einlesen verschweißt — eine STL-Datei speichert drei unverbundene Vertices je Dreieck und würde ohne diesen Schritt eine viermal größere Datei ergeben als nötig. Eine PLY-Datei speichert bereits eine indizierte Vertexliste, Positionen und Flächen werden deshalb unverändert übernommen.

Die Vertexzahl im glTF stimmt damit exakt mit der Zahl im PLY-Kopfbereich überein, was die Umwandlung leicht überprüfbar macht. Das bedeutet auch, dass etwaige Duplikate aus dem Scanner oder der Rekonstruktion unverändert erhalten bleiben. Flächen mit mehr als drei Ecken werden fächerförmig trianguliert, was für die konvexen Vierecke aus einer Rekonstruktion korrekt ist und bei einem konkaven Vieleck aus einer Modellierungssoftware zu Fehlern führen kann.

Weder PLY noch glTF speichern eine Maßeinheit oder eine Ausrichtung

Eine PLY-Datei kennt keine Einheit und keine Ausrichtung. glTF kennt ebenfalls keine Einheit, obwohl sein gesamtes Ökosystem stillschweigend einen Meter als Einheit voraussetzt und jeder Betrachter Y-oben erwartet. Scansoftware ist dabei nicht einheitlich — Millimeter kommen häufig vor, Z-oben ebenfalls, und manche Programme zentrieren das Modell, während andere es dort belassen, wo der Scan zufällig stattfand.

Nach dem Laden ist deshalb mit Drehen und Skalieren zu rechnen, am besten in der Szene des Betrachters und nicht durch Bearbeiten der Datei — das hält die Quelle unverändert. In `<model-viewer>` erledigen ein `orientation`-Attribut und ein `scale`-Attribut das in zwei Zeilen; in three.js sind es zwei Aufrufe am geladenen Objekt. Die Werte einmal an einem in der Quelle nachprüfbaren Maß bestimmen und notieren — jeder weitere Scan desselben Geräts braucht dasselbe Paar.

Ein graues Mesh so beleuchten, dass es als Objekt lesbar bleibt

Weil das glTF kein Material trägt, kommt alles, was Besucherinnen und Besucher sehen, aus der Beleuchtung des Betrachters. Flaches Grau unter einem einzelnen Licht wirkt wie ein Klumpen; dasselbe Mesh unter einer Umgebungskarte mit etwas Ambient Occlusion wirkt wie ein plastisches Objekt — der Unterschied liegt vollständig in der Seite, nicht in der Datei.

`<model-viewer>` bringt neutrale Umgebungsbeleuchtung mit, und ein `shadow-intensity`-Attribut kostet eine Zeile und erledigt den Großteil der Arbeit. In three.js entspricht das einer Umgebungskarte plus einem Hemisphere-Licht. Weil das umgewandelte Mesh keine Vertexnormalen trägt, berechnet der Betrachter sie selbst, was bei einem vereinfachten Scan eine facettierte Schattierung ergibt — meist erwünscht, weil sie die Oberfläche zeigt, aber in der Beleuchtungseinstellung des Betrachters lässt sich auch weiche Schattierung erzwingen.

Wo die PLY-Datei gelesen wird, während sie zu glTF wird

In genau diesem Browser-Tab, mit gewöhnlichem JavaScript. Es wird kein WebAssembly-Modul geladen, nichts hochgeladen, es gibt kein Konto und kein Tageskontingent. Die Netzwerkansicht der Entwicklertools während einer Umwandlung zeigt das eher als dieser Satz.

Scans sind eine besonders sensible Kategorie von Daten. Der Scan eines Museumsobjekts liegt häufig unter einer Vereinbarung darüber, wohin die Daten gelangen dürfen, der Scan einer Person ist in fast jeder Hinsicht ein biometrisches Merkmal, und der Scan eines Bauteils ist fremdes geistiges Eigentum. Die kostenlose Grenze liegt bei 100 MB je Datei — ein Grund mehr, vor der Umwandlung zu vereinfachen statt danach.

PLY in GLTF umwandeln — so geht es

  1. Leg deine PLY-Datei auf dieser Seite ab, oder klick, um eine auszuwählen.
  2. Wähl GLTF als Ziel. Die Umwandlung läuft in deinem Browser, die Datei wird nicht hochgeladen.
  3. Lade die fertige GLTF-Datei herunter.

PLY und GLTF im Vergleich: was sich ändert

PLY im Vergleich zu GLTF
PLYGLTF
Vollständiger NamePolygon File FormatGL Transmission Format
Dateiendung.ply.gltf
Medientypmodel/plymodel/gltf+json
Erstmals veröffentlicht19942015
Herausgegeben vonStanford UniversityKhronos Group
SpezifikationglTF 2.0
LizenzlageOffener StandardOffener Standard
Heutiger StandAktuellAktuell
Öffnet im BrowserKein BrowserKein Browser
Stattdessen erwogenOBJ, STLGLB, OBJ

Das Ergebnis öffnen

Blender liest sowohl PLY als auch GLTF — du kannst das Ergebnis also gegen das Original prüfen, ohne ein zweites Programm zu brauchen.

Wofür die beiden Formate gedacht sind

Die beiden zielen auf verschiedene Arbeit: PLY auf das Scannen und den Austausch zwischen Programmen, GLTF auf das Web und die Weitergabe fertiger Dateien. Das lohnt sich vorher abzuwägen — der Grund, aus dem es das eine gibt, ist meist der Grund, aus dem das andere unpraktisch ist.

GLTF kommt von Khronos Group und stammt aus 2015, festgehalten in glTF 2.0. Blender, three.js und Babylon.js lesen das Format.

PLY wurde 1994 veröffentlicht, GLTF 2015. Das ältere ist in der Regel die sicherere Datei zum Weitergeben, das jüngere erledigt dieselbe Aufgabe mit weniger Bytes.

PLY zu GLTF: häufige Fragen

Werden meine PLY-Dateien irgendwo hochgeladen?

Nein. Diese Umwandlung läuft vollständig in deinem Browser, die Datei verlässt dein Gerät also nicht. Du kannst das selbst nachprüfen: Öffne den Netzwerk-Tab der Entwicklerwerkzeuge und wandle etwas um. Zu sehen sind die Seite selbst und die Statistik- und Werbeanfragen, mit denen dieser Dienst bezahlt wird — und keine einzige, die deine Datei trägt.

Ist das Umwandeln von PLY in GLTF kostenlos?

Ja. Kein Konto, kein Wasserzeichen und kein Tageskontingent, das sich verbraucht — es läuft auf deinem eigenen Rechner, du darfst also so oft wiederkommen, wie du willst. Dateien bis 100 MB verarbeitet der Browser, 100 auf einmal.

Geht beim Umwandeln von PLY in GLTF Qualität verloren?

PLY und GLTF beschreiben Inhalte auf grundverschiedene Weise. Die Umwandlung ist deshalb ein Nachbau und keine Kopie: originalgetreu, aber nicht Byte für Byte dasselbe. Nur die Geometrie. Materialien, Farben, Texturen und Animation kommen nicht mit, und ein mehrfach platziertes Modell kommt so zurück, dass jede Kopie fest an ihrer eigenen Position sitzt.

Muss ich etwas installieren, um GLTF-Dateien zu öffnen?

Für die Umwandlung selbst nicht — sie läuft in dem Browser, den du ohnehin offen hast. Zum Öffnen brauchst du danach das Programm, das auf deinem Gerät üblicherweise GL Transmission Format anzeigt.

Mehr über diese Formate